Raspberry PiでUSB無線LANアダプタを使う
こんにちは。那由多屋の加藤です。
大人気のカードサイズLinuxマシン「Raspberry Pi」でUSB無線LANアダプタ(WiFiドングル)を使ってみました。簡単にメモを残しておきます。
準備
自宅近くの家電量販店にてPLANEX GW-USHyper300を購入しました。価格は約2000円でした。
本当は、Linuxでの動作実績のあるUSB無線LANアダプタにしたかったのですが、そのお店には見当たらなかったため、比較的情報の多いPLANEX製品にしました。
結果としては、問題なく動作しました。
環境
使用したRaspberry PiはType B、OSはDebian(Raspbian "wheezy"、2012年7月15日版)です。
uname、lsmod、lsmodコマンドの実行結果を以下に示します。なお、これらはUSB無線LANアダプタを接続する前の結果です。
$ uname -a Linux raspberrypi 3.1.9+ #168 PREEMPT Sat Jul 14 18:56:31 BST 2012 armv6l GNU/Linux $ lsmod Module Size Used by snd_bcm2835 21485 0 snd_pcm 82208 1 snd_bcm2835 snd_seq 59808 0 snd_timer 21905 2 snd_seq,snd_pcm snd_seq_device 6920 1 snd_seq snd 57668 5 snd_seq_device,snd_timer,snd_seq,snd_pcm,snd_bcm2835 snd_page_alloc 5383 1 snd_pcm evdev 8922 0 $ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB Bus 001 Device 005: ID 045e:0065 Microsoft Corp. Wireless Natural MultiMedia Keyboard (106/109)
接続
USB無線LANアダプタは、Raspberry PiのUSBポートにそのまま接続するのでは無く、電源付きUSBハブを介して接続しました。
なお、USBハブにはELECOM U2H-TZS420SBKを使用しました。ポート毎にON/OFFスイッチがあり、Raspberry Piの電源としても便利です。
USB無線LANアダプタを接続すると、/var/log/messagesに以下のメッセージが出力されました。USBデバイスとしての認識され、ドライバのロードが行われていることが分かります。
$ sudo tail -f /var/log/messages Aug 23 17:05:00 raspberrypi kernel: [ 177.057692] usb 1-1.3.4: new high speed USB device number 6 using dwc_otg Aug 23 17:05:00 raspberrypi kernel: [ 177.160279] usb 1-1.3.4: New USB device found, idVendor=2019, idProduct=ed18 Aug 23 17:05:00 raspberrypi kernel: [ 177.160328] usb 1-1.3.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Aug 23 17:05:00 raspberrypi kernel: [ 177.160350] usb 1-1.3.4: Product: GW-USH300N Aug 23 17:05:00 raspberrypi kernel: [ 177.160367] usb 1-1.3.4: Manufacturer: PLANEX COMMUNICATIONS INC. Aug 23 17:05:00 raspberrypi kernel: [ 177.160385] usb 1-1.3.4: SerialNumber: 00e04c000001 Aug 23 17:05:00 raspberrypi kernel: [ 177.225964] r8712u: module is from the staging directory, the quality is unknown, you have been warned. Aug 23 17:05:00 raspberrypi kernel: [ 177.247721] r8712u: DriverVersion: v7_0.20100831 Aug 23 17:05:00 raspberrypi kernel: [ 177.247862] r8712u: register rtl8712_netdev_ops to netdev_ops Aug 23 17:05:00 raspberrypi kernel: [ 177.247925] r8712u: USB_SPEED_HIGH with 4 endpoints Aug 23 17:05:00 raspberrypi kernel: [ 177.249352] r8712u: Boot from EFUSE: Autoload OK Aug 23 17:05:01 raspberrypi kernel: [ 178.260477] r8712u: CustomerID = 0x0000 Aug 23 17:05:01 raspberrypi kernel: [ 178.260511] r8712u: MAC Address from efuse = 00:22:cf:46:48:a9 Aug 23 17:05:01 raspberrypi kernel: [ 178.265711] usbcore: registered new interface driver r8712u Aug 23 17:05:01 raspberrypi kernel: [ 178.749720] r8712u: Loading firmware from "rtlwifi/rtl8712u.bin" Aug 23 17:05:02 raspberrypi kernel: [ 179.508130] r8712u: 1 RCR=0x153f00e Aug 23 17:05:02 raspberrypi kernel: [ 179.508987] r8712u: 2 RCR=0x553f00e
USB無線LANアダプタの接続後のlsmod、lsusbコマンドの実行結果は下記の通りです。「r8712u」、「ID 2019:ed18 PLANEX」が増えているのが分かります。
$ lsmod Module Size Used by r8712u 182646 0 snd_bcm2835 21485 0 snd_pcm 82208 1 snd_bcm2835 snd_seq 59808 0 snd_timer 21905 2 snd_seq,snd_pcm snd_seq_device 6920 1 snd_seq snd 57668 5 snd_seq_device,snd_timer,snd_seq,snd_pcm,snd_bcm2835 snd_page_alloc 5383 1 snd_pcm evdev 8922 0 $ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB Bus 001 Device 005: ID 045e:0065 Microsoft Corp. Wireless Natural MultiMedia Keyboard (106/109) Bus 001 Device 006: ID 2019:ed18 PLANEX
USB無線LANアダプタを接続するだけで、あっさりとwlan0として認識されました。(MACアドレスはマスクしています)
$ ifconfig wlan0 wlan0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX UP BROADCAST RUNNING 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) $ iwconfig wlan0 wlan0 unassociated Nickname:"rtl_wifi" Mode:Auto Access Point: Not-Associated Sensitivity:0/0 Retry:off RTS thr:off Fragment thr:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
また、iwlistコマンドでアクセスポイントの一覧も確認することができました。(詳細は省略)
$ sudo iwlist scan lo Interface doesn't support scanning. eth0 Interface doesn't support scanning. wlan0 Scan completed : ... Cell 01 - Address: XX:XX:XX:XX:XX:XX ESSID:"XXXXXXXX" ...
WPAの設定
自宅の無線LAN環境はWPAなので、その設定を行いました。編集前と編集後の設定ファイルの内容を以下に示します。
$ cat /etc/network/interfaces auto lo iface lo inet loopback iface eth0 inet dhcp $ sudo chmod 600 /etc/network/interfaces $ sudo vi /etc/network/interfaces $ sudo cat /etc/network/interfaces auto lo iface lo inet loopback iface eth0 inet dhcp auto wlan0 allow-hotplug wlan0 iface wlan0 inet dhcp wpa-ssid [SSID] wpa-psk [PASSWORD]
設定ファイルを書き換えたあと、wlan0インタフェースを有効化しました。(MACアドレス、IPアドレス、SSIDはマスクしています)
$ sudo ifup wlan0 Internet Systems Consortium DHCP Client 4.2.2 Copyright 2004-2011 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/wlan0/XX:XX:XX:XX:XX:XX Sending on LPF/wlan0/XX:XX:XX:XX:XX:XX Sending on Socket/fallback DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 6 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 11 DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 13 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 DHCPOFFER from 192.168.XXX.XXX DHCPACK from 192.168.XXX.XXX bound to 192.168.XXX.XXX -- renewal in 68654 seconds. $ ifconfig wlan0 wlan0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX inet addr:192.168.XXX.XXX Bcast:192.168.XXX.XXX Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:942 errors:0 dropped:791 overruns:0 frame:0 TX packets:17 errors:0 dropped:2 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:96157 (93.9 KiB) TX bytes:5792 (5.6 KiB) $ iwconfig wlan0 wlan0 IEEE 802.11bgn ESSID:"XXXXXXXX" Nickname:"rtl_wifi" Mode:Managed Frequency:2.442 GHz Access Point: XX:XX:XX:XX:XX:XX Bit Rate:150 Mb/s Sensitivity:0/0 Retry:off RTS thr:off Fragment thr:off Power Management:off Link Quality=96/100 Signal level=94/100 Noise level=0/100 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
再起動しても自動的にDHCPによるIPアドレスの取得が行われ、正常に動作しました。
$ sudo reboot
参考: 動作確認済みのハードウェア
現状までにRaspberry Piでの動作を確認しているのは、以下のハードウェアです。(Amazonへのリンクです)