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へのリンクです)

参考: 写真

最後に、セットアップ途中の写真を載せておきます。とても散らかっていますが。(笑)