Armadilloフォーラム

起動時の3Gインタフェース有効化について

shasegawa

2015年3月24日 20時03分

長谷川です。
お世話になっております。

Armadillo-IoTにて起動時に自動的に3Gインタフェースを有効化しようとしているのですが、エラーが発生してしまっています。

Starting basic firewall:                                        done
Setting hostname:                                               done
Configuring network interfaces: fec: PHY @ 0x0, ID 0x0007c0f1 -- LAN8720
eth0: link down
The system has no more ptys.  Ask your system administrator to create more.
    while executing
"spawn tip -s 115200 -l /dev/ttyUSB3 -c -f"
    (procedure "serial_connect" line 4)
    invoked from within
"serial_connect 30"
    (file "/usr/share/3g/3g-connect.exp" line 13)
                                                                failed
Starting inetd:                                                 done

/etc/config/interfaces は以下のように設定しています。

[root@armadillo-iotg (ttymxc1) ~]# cat /etc/config/interfaces
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
 
auto lo eth0 usb0
iface lo inet loopback
 
#iface eth0 inet dhcp
iface eth0 inet static
        address 192.168.10.30
        netmask 255.255.255.0
 
iface usb0 inet dhcp
        pre-up 3g-connect
        post-down 3g-disconnect

また、起動後に有効化すると問題なく接続できます。

[root@armadillo-iotg (ttymxc1) ~]# ifup usb0
3G connect
success
ADDRCONF(NETDEV_UP): usb0: link is not ready
ADDRCONF(NETDEV_CHANGE): usb0: link becomes ready
udhcpc (v1.20.2) started
Sending discover...
Sending select for 153.140.224.252...
Lease of 153.140.224.252 obtained, lease time 268435455

どのような原因が考えられますでしょうか?

よろしくお願いします。

コメント

at_kojiro.yamada

2015年3月25日 20時07分

お手数おかけしますが、
以下、4点を確認していただけないでしょうか?

・Atmark Distのバージョン
・再現頻度(5回に1回再現するなど)
・シリアルケーブル、アンテナ、ACアダプター以外を接続せずに起動した場合、再現するか
・標準のユーザーランド及びLinuxカーネルイメージで起動させ、
 「6.2.5.5. 自動で3Gインターフェースを有効化する」の手順だけ実施した場
 合に再現するか

■Atmark Distのバージョン確認方法
以下のコマンドで確認できます。

[Armadillo]# cat /etc/DISTNAME
atmark-dist v1.39.0 (AtmarkTechno/Armadillo-IoTG-Std)

■リンク
ダウンロードサイト
http://armadillo.atmark-techno.com/armadillo-iot/downloads

Armadillo-IoT ゲートウェイ スタンダードモデル製品マニュアル
「8.3.5. 3G」
http://manual.atmark-techno.com/armadillo-iot/armadillo-iotg-std_produc…

> ・Atmark Distのバージョン
v1.38.0です。
atmark-dist v1.38.0 (AtmarkTechno/Armadillo-IoTG-SSEGW)

> ・再現頻度(5回に1回再現するなど)
100%です。

> ・シリアルケーブル、アンテナ、ACアダプター以外を接続せずに起動した場合、再現するか
再現しました。

> ・標準のユーザーランド及びLinuxカーネルイメージで起動させ、
>  「6.2.5.5. 自動で3Gインターフェースを有効化する」の手順だけ実施した場
>  合に再現するか
linux-aiotg-std-v1.02.bin.gz と romfs-aiotg-std-v1.02.img.gz のイメージで再現しました。

/etc/config/interfaces の設定によって再現の有無が変わるようです。

eth0 を有効化して DHCP 設定にする → 再現しない

Configuring network interfaces: fec: PHY @ 0x0, ID 0x0007c0f1 -- LAN8720
eth0: link down
udhcpc (v1.20.2) started
Sending discover...
Sending discover...
Sending discover...
No lease, failing
3G connect
success
ADDRCONF(NETDEV_UP): usb0: link is not ready
ADDRCONF(NETDEV_CHANGE): usb0: link becomes ready
udhcpc (v1.20.2) started
Sending discover...
Sending select for 153.140.65.151...
Lease of 153.140.65.151 obtained, lease time 268435455
                                                                failed
Starting inetd:                                                 done

※ 有線ネットワーク上にDHCPサーバーがいないので、eth0 はタイムアウトで IP の取得失敗しています。

eth0 を有効化して固定IP設定にする → 再現する
eth0 を有効化しない → 再現する

Starting basic firewall:                                        done
Setting hostname:                                               done
Configuring network interfaces: The system has no more ptys.  Ask your system administrator to create more.
    while executing
"spawn tip -s 115200 -l /dev/ttyUSB3 -c -f"
    (procedure "serial_connect" line 4)
    invoked from within
"serial_connect 30"
    (file "/usr/share/3g/3g-connect.exp" line 13)
                                                                failed
Starting inetd:                                                 done

3Gモジュールを初期化するタイミングが早いと発生するような感じです。
その他、確認すべきポイントがあればお知らせください。

以上、よろしくお願いします。

at_kojiro.yamada

2015年3月30日 11時45分

eth0 でDHCPを使わず、3G接続のタイミングが早まったことで、
3G接続の処理でうまくいかない箇所がありました。

修正パッチを添付しますので試してみてください。
ユーザーランドのビルド方法については、以下のマニュアルを参照してください。

Armadillo-IoT ゲートウェイ スタンダードモデル製品マニュアル
第11章 ビルド手順
http://manual.atmark-techno.com/armadillo-iot/armadillo-iotg-std_produc…

■パッチのあて方

[ATDE]$ cd atmark-dist-[VERSION]
[ATDE]$ patch -p1 < 0001-iotg-3g-connect-waiting-for-dev-ptmx-creation.patch

■原因とパッチの内容
具体的には、
/dev/ptmx が作られる前に/usr/bin/3g-connectが実行され、
expectでtipコマンドをspawnさせて実行する箇所で
擬似端末を作成できずに失敗していました。

そのため、修正パッチでは、
/usr/bin/3g-connectに
/dev/ptmx が作成されるまで待つ処理を
追加しています。

ファイル ファイルの説明
0001-iotg-3g-connect-waiting-for-dev-ptmx-creation.patch 3g-connect 修正パッチ

長谷川です。お世話になっております。

いただいたパッチを適応したところ、atmark-dist v1.39.0 (AtmarkTechno/Armadillo-IoTG-Std) で問題が解決することを確認しました。
Atmark Distには次のリリースで反映される感じでしょうか?

迅速な対応、ありがとうございました。

at_kojiro.yamada

2015年3月31日 13時31分

> Atmark Distには次のリリースで反映される感じでしょうか?

パッチの内容は変更になるかもしれませんが、
次回のアップデートでこの不具合を修正する予定です。