Intel EdisonをUSB Ethernet経由で有線LAN接続

Intel Edisonはチップ上にデュアルチャネルのWi-Fiモジュールを内蔵しているが、Wifi APが利用できない場面もある。このような場合、USB Ethernetアダプタを用いることで有線LAN経由でネットワークに接続することができる。

# 動作検証したEdison

<table>
<tbody>
<tr><th>borad</th><td>Arduino Board</td></tr>
<tr><th>/etc/version</th><td>weekly-146</td></tr>
<tr><th>uname -r</th><td>3.10.17-poky-edison+</td></tr>
</tbody>
</table>

# Edison起動直後の状態

wlan0（内蔵Wi-fi）はネットワークに接続していない。

```text:ネットワークインタフェースの状態
root@edison01:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: sit0: <NOARP> mtu 1480 qdisc noop 
    link/sit 0.0.0.0 brd 0.0.0.0
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 78:4b:87:a0:18:fd brd ff:ff:ff:ff:ff:ff
    inet6 fe80::7a4b:87ff:fea0:18fd/64 scope link 
       valid_lft forever preferred_lft forever
4: usb0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
    link/ether 02:00:86:f0:02:f1 brd ff:ff:ff:ff:ff:ff
```

USBデバイスは何も接続されていない。

```text:USBデバイスの状態
root@edison01:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
```

# USB Ethernetアダプタの挿入

USB Ethernetアダプタに給電する必要があるため、ホストモードでUSBを動作させなければならない。なお今回はUSB Ethernetアダプタとして、手元にあったLogitecの3Port HUB + Ethernet Adapterの[LAN-TX/U2H3S](http://www.logitec.co.jp/products/lan/lantxu2h3/)を利用した。


![DSC_0211.JPG](https://qiita-image-store.s3.amazonaws.com/0/37648/d44960d1-6633-6d6d-8583-1b3e4ea2496e.jpeg)

Arduino BoradのUSB-AにLAN-TX/U2H3Sを接続すると、何もせずともUSB Ethernetデバイスとして認識される。

```text:LAN-TX/U2H3Sの挿入
root@edison01:~# lsusb
Bus 001 Device 002: ID 0409:005a NEC Corp. HighSpeed Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0b95:772a ASIX Electronics Corp. AX88772A Fast Ethernet
```

このバージョンのEdison YoctoOSでは、 `enp0s17u1u4` というネットワークインタフェースとして自動認識された。

```text:ネットワークインタフェースの状態
root@edison01:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: sit0: <NOARP> mtu 1480 qdisc noop 
    link/sit 0.0.0.0 brd 0.0.0.0
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 78:4b:87:a0:18:fd brd ff:ff:ff:ff:ff:ff
    inet6 fe80::7a4b:87ff:fea0:18fd/64 scope link 
       valid_lft forever preferred_lft forever
4: usb0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
    link/ether 02:00:86:f0:02:f1 brd ff:ff:ff:ff:ff:ff
6: enp0s17u1u4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
    link/ether 00:01:8e:b8:5c:20 brd ff:ff:ff:ff:ff:ff
```

# 有線LANへの接続

自動認識されたネットワークインタフェースを有効化する。今回有線接続したLANではDHCPが動作しているため、 `udhcpc` を用いてIPアドレスを取得することができた。

```text:有線LANへの接続
root@edison01:~# ip link set dev enp0s17u1u4 up
root@edison01:~# udhcpc -i enp0s17u1u4
udhcpc (v1.22.1) started
Sending discover...
Sending select for 192.168.0.5...
Lease of 192.168.0.5 obtained, lease time 3600
/etc/udhcpc.d/50default: Adding DNS 192.168.0.1
```

今回はDHCPより192.168.0.5が配布された。

```text:ネットワークインタフェースの状態
root@edison01:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: sit0: <NOARP> mtu 1480 qdisc noop 
    link/sit 0.0.0.0 brd 0.0.0.0
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 78:4b:87:a0:18:fd brd ff:ff:ff:ff:ff:ff
    inet6 fe80::7a4b:87ff:fea0:18fd/64 scope link 
       valid_lft forever preferred_lft forever
4: usb0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
    link/ether 02:00:86:f0:02:f1 brd ff:ff:ff:ff:ff:ff
6: enp0s17u1u4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:01:8e:b8:5c:20 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.5/24 scope global enp0s17u1u4
       valid_lft forever preferred_lft forever
```

# 接続確認

同一LAN内のマシン（192.168.0.4）に通信できた（あたりまえ）。

```text:同一LAN内への通信
root@edison01:~# ping 192.168.0.4
PING 192.168.0.4 (192.168.0.4): 56 data bytes
64 bytes from 192.168.0.4: seq=0 ttl=64 time=0.718 ms
64 bytes from 192.168.0.4: seq=1 ttl=64 time=1.306 ms
```

また今回実験した有線LANはインターネットゲートウェイに接続されているため、ゲートウェイ経由でインターネットにも通信できた。

```text:インターネットへの通信
root@edison01:~# curl www.google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.co.jp/?gfe_rd=cr&amp;ei=-oiQVcGbF-X98wfI8pXQBA">here</A>.
</BODY></HTML>
```