Transformer Primeで有線LAN

dmesgを見ていたらUSB Hostモジュールとして

<6>[    8.162292] usbcore: registered new interface driver asix

が登録されていた。USBイーサの石。ということで、ビックカメラで下記を購入。



早速、家に帰ってつないでみたら、dmesgに

<6>[  100.845783] tegra_usb_resume+
<6>[  100.889849] tegra_usb_resume-
<6>[  101.181095] usb 1-1.2: new high speed USB device using tegra-ehci and address 3
<6>[  101.241086] usb 1-1.2: New USB device found, idVendor=0b95, idProduct=7720
<6>[  101.242163] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
<6>[  101.242764] usb 1-1.2: Product: AX88772 
<6>[  101.243787] usb 1-1.2: Manufacturer: ASIX Elec. Corp.
<6>[  101.244357] usb 1-1.2: SerialNumber: 556D27
<6>[  102.133280] asix 1-1.2:1.0: eth0: register 'asix' at usb-tegra-ehci.2-1.2, ASIX AX88772 USB 2.0 Ethernet, 4c:e6:76:xx:xx:xx
<6>[  102.184767] eth0: link down
<6>[  102.190679] ADDRCONF(NETDEV_UP): eth0: link is not ready
<6>[  103.795184] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
<6>[  103.807939] eth0: link up, 100Mbps, full-duplex, lpa 0xC5E1


logcatに

D/ConnectivityService(  177): ConnectivityChange for ETHERNET: CONNECTED/CONNECTED
D/ConnectivityService(  177): Setting TCP values: [4095,87380,110208,4096,16384,110208] which comes from [net.tcp.buffersize.wifi]
D/ConnectivityService(  177): adding dns /192.168.62.200 for ETHERNET
D/ConnectivityService(  177): adding dns /8.8.8.8 for ETHERNET
D/ConnectivityService(  177): changing default proxy to 
D/ConnectivityService(  177): sending Proxy Broadcast for 
D/ConnectivityService(  177): addDefaultRoute for ETHERNET (eth0), GatewayAddr=192.168.62.200
D/Tethering(  177): Tethering got CONNECTIVITY_ACTION
D/Tethering(  177): MasterInitialState.processMessage what=3
V/TweetDeck(  771): ETHERNET CONNECTION UP
I/MediaUploader(  820): No need to wake up
D/GTalkService(  352): [ReonnectMgr] ### report Inet condition: status=false, networkType=9
I/ActivityManager(  177): Start proc com.asus.cm for broadcast com.asus.cm/.push.PushControlReceiver: pid=950 uid=1000 gids={3003, 1015, 3002, 3001}
D/ConnectivityService(  177): reportNetworkCondition(9, 0)
D/ConnectivityService(  177): Inet connectivity change, net=9, condition=0,mActiveDefaultNetwork=9
D/ConnectivityService(  177): starting a change hold
D/GTalkService(  352): [RawStanzaProvidersMgr] ##### searchProvidersFromIntent
D/CMC->CMConfig(  950): DMConfig.init()
D/CMC->CMConfig(  950): mFumoHandlerName=DefaultFumoHandler
D/GTalkService(  352): [ReonnectMgr] ### report Inet condition: status=false, networkType=9
D/ConnectivityService(  177): reportNetworkCondition(9, 0)
D/ConnectivityService(  177): Inet connectivity change, net=9, condition=0,mActiveDefaultNetwork=9
D/ConnectivityService(  177): currently in hold - not setting new end evt


netcfgの結果は

$ netcfg
lo       UP                                   127.0.0.1/8   0x00000049 00:00:00:00:00:00
dummy0   DOWN                                   0.0.0.0/0   0x00000082 aa:02:9a:xx:xx:xx
usb0     DOWN                                   0.0.0.0/0   0x00001002 62:80:3d:xx:xx:xx
sit0     DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00
ip6tnl0  DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00
wlan0    UP                                     0.0.0.0/0   0x00001003 c8:60:00:xx:xx:xx
eth0     UP                                192.168.62.3/24  0x00001043 4c:e6:76:xx:xx:xx


ブラウザやマーケットも有線LAN経由でアクセス出来る。ConnectivityManagerに手を入れないと、マーケットは「ネットワークの回復を待っています」というダイアログが出て使えないと思っていたのだが、いつの間にか TYPE_ETHERNET としてイーサネットのサポートが入っていた。 ConnectivityManager.TYPE_ETHERNET のようなフレームワークで使用されている。ethデバイスが追加されるとDHCPなどの面倒を見てくれるようだ。root権限は不要。


有線LANでも使えると嬉しい人も中には居るのではなかろうか。ただし、 ro.sercure=1 かつ ro.debuggable=0 なので、充電しつつLAN経由でのadb接続は残念ながら出来ない。またTetheringデバイスからeth0が除外されているので、簡易WiFiルータとしても使えない。


モジュールがカーネルにスタティックリンクされているせいか、一度接続してからUSBアダプタを抜いて再接続すると、リブートするまでイーサネットに接続できなくなる。ここは認識が間違っていた。


ueventでUSBイーサの接続を検出しているので、/initが終了していないとUSBイーサを発見しない。電源ONする時はUSBイーサを抜いておいて、完全に起動してからUSBイーサを接続する。その後は抜き差ししても正常につながる。