NanoPi NEO2で無線LAN

NanoPi NEO2で無線LAN

簡単そうで意外とそうでもなさそうでやっぱりそうでもないのがNanoPi NEO/NanoPi NEO2での無線LAN有効化。(結局どっち?)
OSはarmbian (Debian Jessie)。

NanoPi NEO2にUSB無線LANアダプタを挿す

USB無線LANアダプタが認識されたか確認する。

$ lsusb
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 2019:ab2b PLANEX GW-USEco300 802.11bgn Wireless Adapter [Realtek RTL8192CU]
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

今回挿したのはPLANEX GW-USEco300 802.11bgn Wireless Adapterとして認識されている。(正解)
続いて、現在のネットワークの状態を確認する。

# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 00:xx:xx:xx:xx:xx  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

無線LANインターフェースのwlan0は存在はしているが何にも使われていない。
無線LANを有効化する設定が必要なようだ。
なお、システムにifconfigが入っていないならapt-getでインストールするか代わりにip addrで見る。また、ip addrは一般ユーザー権限で実行できるがifconfigは管理者権限で実行してやらないとダメかも。

設定

ネットワークの設定にはメニューでポンポン選んでやるnmtuiが簡単そうだけどこれまでの経験では使わないほうが無難。
そこで以下。

/etc/network/interfacesを編集する。

# Wired adapter #1
allow-hotplug eth0
#no-auto-down eth0
iface eth0 inet dhcp
#address 192.168.0.100
#netmask 255.255.255.0
#gateway 192.168.0.1
#dns-nameservers 8.8.8.8 8.8.4.4
#       hwaddress ether # if you want to set MAC manually
#       pre-up /sbin/ifconfig eth0 mtu 3838 # setting MTU for DHCP, static just: mtu 3838

# Wireless adapter #1
# Armbian ships with network-manager installed by default. To save you time
# and hassles consider using 'sudo nmtui' instead of configuring Wi-Fi settings
# manually. The below lines are only meant as an example how configuration could
# be done in an anachronistic way:
#
#allow-hotplug wlan0
#iface wlan0 inet dhcp
#iface wlan0 inet static
#address 192.168.0.100
#netmask 255.255.255.0
#gateway 192.168.0.1
#dns-nameservers 8.8.8.8 8.8.4.4
#wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
# Disable power saving on compatible chipsets (prevents SSH/connection dropouts over WiFi)
#wireless-mode Managed
wireless-power off

# Local loopback
auto lo
iface lo inet loopback

固定IPで設定するなら18, 20〜25行目の行頭の#を外す。19行目はコメントのまま。IPアドレス、サブネット、デフォルトゲートウェイ、DNSサーバの情報を設定する。
DHCPで設定させるなら18, 19, 25行目の行頭の#を外す。20〜24行目はコメントのまま。

無線LANアクセスポイントに接続するための認証情報ファイルを作成する。

# wpa_passphrase 無線LANアクセスポイントのSSID 無線LANアクセスポイントの暗号キー > /etc/wpa_supplicant/wpa_supplicant.conf
$ cat /etc/wpa_supplicant/wpa_supplicant.conf

network={
        ssid="無線LANアクセスポイントのSSID"
        #psk="無線LANアクセスポイントの暗号鍵" ←平文で入っているので危険 下の行が使われるのでこの行は削除
        psk=abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789
}

動作確認

システムを再起動してから確認。

# ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 00:xx:xx:xx:xx:xx  
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: abcd:abcd:abcd:abcd:abcd/64 Scope:Global
          inet6 addr: fe80:dcba:dcba:dcba::dcba/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:153 errors:0 dropped:1 overruns:0 frame:0
          TX packets:125 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:19301 (18.8 KiB)  TX bytes:23344 (22.7 KiB)

システムにifconfigが入っていないならapt-getでインストールするか代わりにip addrで見る。っていうか、Linuxの世界ではifconfig使うっていうとジジイ扱いされるって本当?

$ ip addr
1: lo: 省略
2: eth0: 省略
3: wlan0: <broadcast ,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.100/24 brd 192.168.0.255 scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 abcd:abcd:abcd:abcd:abcd::abcd/64 scope global mngtmpaddr dynamic 
       valid_lft 2591891sec preferred_lft 604691sec
    inet6 fe80:dcba:dcba:dcba::dcba/64 scope link 
       valid_lft forever preferred_lft forever

無事通信もできた。
めでたし、めでたし。

蛇足

ところでiwconfigで見るとどうだろう。

# iwconfig
eth0      no wireless extensions.

lo        no wireless extensions.

wlan0     no wireless extensions.

無線LANが無効みたいに見えるじゃん、嘘つきかよ。
こんなんだから、もちろんiwconfigによる制御もできない。役立たずねぇ。

# iw dev
phy#0
        Interface wlan0
                ifindex 3
                wdev 0x1
                addr 00:xx:xx:xx:xx:xx
                type managed
                channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz

# iw dev wlan0 link
Connected to 00:xx:xx:xx:xx:xx (on wlan0)
        SSID: hoge-hoge
        freq: 2412
        RX: 2205889 bytes (17689 packets)
        TX: 80230 bytes (571 packets)
        signal: -45 dBm
        tx bitrate: 1.0 MBit/s

        bss flags:      short-slot-time
        dtim period:    1
        beacon int:     100

# iw dev wlan0 scan
 これは表示が多いので省略

iwconfig効かないけどiwは使えるのかな。

# iw dev wlan0 get power_save
Power save: off

コマンドも通る?現在はパワーセーブモードではないらしい。この値はoffでいいんだけど切り替えできるか確認したいのでonにしてみる。(次)

# iw dev wlan0 set power_save on
command failed: Operation not supported (-95)

ぅおっとぉ、油断できない(笑)
パワーマネージメント使えないのはiwがヘン?それともUSBネットワークアダプタが非対応?