nanopi NEOを無線にしてみたぞ

nanopi NEOを5台購入してみたのですが、有線NICを使うとLANケーブルと電源ケーブルを繋がないといけないのでケーブルのスパゲティが出来上がってしまう。

ということで、USBに無線NICをさして設定してみました。
こんな感じになりました。

![IMG_20161201_183925.jpg](https://qiita-image-store.s3.amazonaws.com/0/136777/8af28935-82f6-d1db-1f8d-688fd3f0ca82.jpeg)


# 無線NICの購入

小さいドングルみたいなのがいいなと思って、安かったのでebayあたりで5個とか10個セットが売っているので購入しました。
別にamazonとかでバッファローとかのやつでもいいと思う。

# WNIC設定

## nanopi NEOに刺して起動

さしてnanopiを起動したところ、下記の通りとなった。

```:lsusb結果
root@FriendlyARM1:/etc/udev/rules.d# lsusb
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapter
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
```

`Ralink Technology, Corp. MT7601U Wireless Adapter`でした。

昔のkernelだとMT7601Uのドライバがkernel modulesになくて頑張って入れないといけなかったらしいが、今は入っていた。ラッキー。

```
root@FriendlyARM1:/etc/udev/rules.d# uname -a 
Linux FriendlyARM1 3.4.39-h3 #1 SMP PREEMPT Thu Aug 4 12:41:33 CST 2016 armv7l armv7l armv7l GNU/Linux
```

`#ifconfig`や`#ip address`コマンドで見るとMACアドレスが出ているはず。下のはもうSSIDなどを設定しているのでIPアドレスが取れていますが、この段階では取れていないはずです。

```
root@FriendlyARM1:/etc/udev/rules.d# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether b6:fa:80:3e:2c:86 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::b4fa:80ff:fe3e:2c86/64 scope link 
       valid_lft forever preferred_lft forever
3: tunl0: <NOARP> mtu 1480 qdisc noop state DOWN group default 
    link/ipip 0.0.0.0 brd 0.0.0.0
4: gre0: <NOARP> mtu 1476 qdisc noop state DOWN group default 
    link/gre 0.0.0.0 brd 0.0.0.0
5: sit0: <NOARP> mtu 1480 qdisc noop state DOWN group default 
    link/sit 0.0.0.0 brd 0.0.0.0
6: ip6tnl0: <NOARP> mtu 1452 qdisc noop state DOWN group default 
    link/tunnel6 :: brd ::
7: wlx0036786bd310: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:36:78:6b:d3:10 brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.5/24 brd 192.168.11.255 scope global wlx0036786bd310
    inet6 fe80::236:78ff:fe6b:d310/64 scope link 
       valid_lft forever preferred_lft forever
```


## 無線AP側設定

- SSID: PONPONPAIN
- WPA2-PSK: XXXXXX

で設定しました。今回はバッファローの無線ルータを利用しました。DHCPサーバも兼ねてくれるので楽ちん。

## nanopi NEO側設定

SSIDなどの設定を行っていく。有線で設定しないとダメネ。

debian系のOSで`wpa_supplicant`というものを使う。入っていない場合には`# apt-get install うにゃうにゃ`してください。(デフォルトで入っていた気がしましたが忘れました。)

`/etc/network/interfaces` を下記のように編集します。
`wlx0036786bd310`の部分はNICによって変わるので適時`ip a`などから持ってきてください。
`/etc/udev/rules.d/`にMACアドレスと名前を設定すれば固定にできるかもです。

```
root@FriendlyARM1:/etc/udev/rules.d# cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

allow-hotplug eth0
	iface eth0 inet dhcp

allow-hotplug wlx0036786bd310
iface wlx0036786bd310 inet dhcp
	wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
```


次に、上記で設定したwpa-confを設定します。`/etc/wpa_supplicant/wpa_supplicant.conf` 

```
root@FriendlyARM1:/etc/udev/rules.d# cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
        ssid="PONPONPAIN"
        key_mgmt=WPA-PSK
        proto=WPA2
        psk="XXXXXX"
}
```

- psk部分は””でくくらない場合にはHEXになる模様です。逆に文字列で入れたい場合には””でくくらないとダメっぽい。

一応`# sync` コマンドを流してファイルをSDカードに書き込んでおきます。

DHCPサーバの仕様によっては、ホスト名を変えないとダメだったりする無線ルータがあるみたいなので、`/etc/hostname`を適当なものに変えておきます。

## リブート

書き込んだらLANケーブルを抜いてリブートします。(電源入れ直してもOK)

## sshで繋がるかな

今回はルータの設定画面でつながっているクライアントのIPアドレスが確認できましたので、そのままSSHでつなぎました。
自分の環境ではそんなにレスポンスも悪くなかったので、psshやansibleなどで設定を流す分には問題ないと思います。

```
╭─murata@derori-x1c  ~  
╰─$ ssh root@192.168.11.5                                                                                                                                                                                                         130 ↵
Welcome to Ubuntu 15.10 (GNU/Linux 3.4.39-h3 armv7l)

 * Documentation:  https://help.ubuntu.com/
root@FriendlyARM1:~# 
```

## 繰り返し

んで、これを台数分やりましょう。


## つながらない時

もしつながらない場合には無線の設定がおかしい可能性があるので、有線をつなげて設定を確認してください。
プロセスにはwpa_supplicantがいるはずです。

```
root@FriendlyARM1:~# ps aux 

snip;

root       245  0.0  0.2   7352  1360 ?        Ss   18:18   0:00 /sbin/wpa_supplicant -s -B -P /run/wpa_supplicant.wlx0036786bd310.pid -i wlx0036786bd310 -D nl80211,wext -c /etc/wpa_supplicant/wpa_supplicant.conf
root       284  0.0  0.4   8252  2368 ?        Ss   18:18   0:00 /usr/sbin/sshd -D
message+   286  0.0  0.3   4960  1584 ?        Ss   18:18   0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root       287  0.0  0.2   2924  1184 ?        Ss   18:18   0:00 /lib/systemd/systemd-logind
root       303  0.0  0.1   1968   692 tty2     Ss+  18:18   0:00 /sbin/agetty --noclear tty2 linux
root       309  0.0  0.1   1788   640 ttyS0    Ss+  18:18   0:00 /sbin/agetty --keep-baud 115200 38400 9600 ttyS0 vt220
root       370  0.0  1.0   7656  5188 ?        Ss   18:19   0:00 dhclient -1 -v -pf /run/dhclient.wlx0036786bd310.pid -lf /var/lib/dhcp/dhclient.wlx0036786bd310.leases wlx0036786bd310
root       420  0.0  1.0   7656  5156 ?        Ss   18:19   0:00 dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
root       475  0.0  0.0      0     0 ?        S    18:26   0:02 [kworker/u:1]


snip;
```



# まとめ

- これで電源ケーブルのみで5台のnanpi NEOがつながった。
- 無線NICは日本の技適が通ってないと日本で使っちゃいけないので注意である。
- 利用目的は、、、まだ決まってない。