前の記事で、無事にWebカメラとRaspberry Piを接続することができたので、次は無線LANにつなぐ作業をします。有線LANで接続すれば話は簡単なのですが、設置場所の都合でLANケーブルを引き回せないため使っていない無線LANアダプタを探し出して繋いでみることにしました。
本日の主役 GW-US54GXS について
さて、今回引っ張り出してきた無線LANアダプタ「GW-US54GXS」は、私がモンスターハンターポータブル3G(略して MHP3G)で、狩友(=インターネット経由で国内の(不特定多数の)お友達)と遊ぶために導入したものでしたが、仕事や育児や地域での活動(お祭りとかPTAとか・・)に忙しくなってしまったためお蔵入りしたものでした。
さて、そんな感傷にひたる暇もないので、このアダプタに新たなミッションを任命することにします。事務所には無線LAN環境(アクセスポイント)は設定済みなので、手順としては
- Raspberry Pi (厳密にはUSB ハブ)に無線LANアダプタを接続する。
- Raspberry Pi のOSに無線LANアダプタを認識させる。今時のものなら自動認識ですが、2006年物ということでどうなるか?
- 無線LANアダプタにIPアドレスなどネットワーク設定を行う。
という段取りです。というわけで、1.からサクサクと進めていきましょう!今回は無線LANアダプターにグローバルIPアドレスを割り当てるので、ブロードバンドルーター側の設定はありません。
ドライバが必要だよ、GW-US54GXS!
さて、上の写真とおり、USB ハブにサクッと差し込んで、 /var/log/message を眺めます・・。
なんかエラーが出てました。”zd1211 のドライバーがありません”、的なメッセージです。製品仕様のページでも、ZYDAS ZD1211Bというコントローラーを使っていると書かれているので、ZD1211用のドライバーをインストールすれば良さげというところまでわかりました。
Google 先生に相談したところ、以下の記事が参考になりました。
http://ganchi.doorblog.jp/archives/7655019.html
手順としてはSTEP1~4までとなります。
STEP1 アダプタ自身が認識されているのを確認します (以下は全てのデバイスが正常に認識された状態での結果です)。7行目にPLANEX GW-US64GXSという表示が出ていますので、一応USB デバイスとしては認識されているようです。
$ lsusb Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 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 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB Bus 001 Device 006: ID 2019:5303 PLANEX GW-US54GXS 802.11bg Bus 001 Device 007: ID 0ac8:0332 Z-Star Microelectronics Corp. $
STEP2 zd1211 デバイスドライバーのパッケージがあるか検索します。
$ apt-cache search zd1211 zd1211-firmware - Firmware images for the zd1211rw wireless driver $
STEP3 無事に zd1211-firmwareが見つかるので該当ドライバーをインストール
$ sudo apt-get install zd1211-firmware
STEP4 以下のコマンドでzd1211関連のモジュールが正しくインストールされたのを確認します。ここでは、6行目に「zd1211rw 63158 0」と表示されています。
$ lsmod Module Size Used by snd_bcm2835 22339 0 arc4 1972 2 evdev 11370 2 zd1211rw 63158 0 mac80211 623160 1 zd1211rw cfg80211 501663 2 mac80211,zd1211rw rfkill 22491 2 cfg80211 snd_usb_audio 138972 0 snd_usbmidi_lib 22308 1 snd_usb_audio snd_hwdep 6343 1 snd_usb_audio snd_seq_midi 5114 0 snd_seq_midi_event 7847 1 snd_seq_midi uio_pdrv_genirq 3690 0 uio 10009 1 uio_pdrv_genirq snd_rawmidi 23746 2 snd_usbmidi_lib,snd_seq_midi snd_pcm 92573 2 snd_bcm2835,snd_usb_audio snd_seq 62040 2 snd_seq_midi_event,snd_seq_midi snd_seq_device 5130 3 snd_seq,snd_rawmidi,snd_seq_midi snd_timer 23456 2 snd_pcm,snd_seq uvcvideo 78206 1 videobuf2_vmalloc 5840 1 uvcvideo videobuf2_memops 2373 1 videobuf2_vmalloc videobuf2_core 42654 1 uvcvideo v4l2_common 6103 1 videobuf2_core videodev 157685 4 uvcvideo,v4l2_common,videobuf2_core snd 68161 9 snd_bcm2835,snd_usb_audio,snd_hwdep,snd_timer,snd_pcm,snd_seq,snd_rawmidi,snd_usbmidi_lib,snd_seq_device media 16168 2 uvcvideo,videodev $
無線LANの設定
無線LANアクセスポイントへの接続
無事、OSレベルで無線LANアダプターを認識できたので、あとは普通に無線LAN設定を行います。
GUI環境で、デスクトップにある「Wifi Config」のアイコンをダブルクリックして、アプリケーションを起動します。アプリケーションを起動すると、設定を行う無線LANアダプタを選択するウィンドウが開くので “wlan0” を選びます。
次に、”Manage Networks” のタブを開き、”Scan”ボタンを押します。すると、無線LANアダプタが受信するアクセスポイントの一覧(SSID)が表示されるので、接続したいアクセスポイントを選んでダブルクリックします。
認証設定画面が表示されるので、認証方法やパスワードを設定して、”Add” ボタンを押します。
無線LANアクセスポイントでDHCPの設定がされていれば(基本的にDHCPでNW設定していると思います)、IPアドレスやDefault Gateway、DNSサーバーの設定などがされます。
無線LANアクセスポイントに接続できているか確認します。
$ iwconfig wlan0 IEEE 802.11bg ESSID:"15BXXXXXXXXXXXXXXXXXXXXXXXXX" Mode:Managed Frequency:2.462 GHz Access Point: 00:XX:XX:XX:XX:XX Bit Rate=54 Mb/s Tx-Power=20 dBm Retry short limit:7 RTS thr:off Fragment thr:off Power Management:off Link Quality=38/100 Signal level=38/100 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:3211 Invalid misc:20933 Missed beacon:0 lo no wireless extensions. (後略) $
ESSID が15Bで始まるアクセスポイントに接続できていることがわかりました。次にIPアドレスが設定されているかどうかを確認します。
$ ifconfig eth0 Link encap:イーサネット ハードウェアアドレス b8:XX:XX:XX:XX:XX UP BROADCAST MULTICAST MTU:1500 メトリック:1 RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RXバイト:0 (0.0 B) TXバイト:0 (0.0 B) lo Link encap:ローカルループバック inetアドレス:127.0.0.1 マスク:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 メトリック:1 RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:0 RXバイト:0 (0.0 B) TXバイト:0 (0.0 B) wlan0 Link encap:イーサネット ハードウェアアドレス 00:XX:XX:XX:XX:XX inetアドレス:192.168.XXX.XXX ブロードキャスト:192.168.XXX.XXX マスク:255.255.255.XXX UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1 RXパケット:1320927 エラー:0 損失:949 オーバラン:0 フレーム:0 TXパケット:2773159 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RXバイト:81943032 (78.1 MiB) TXバイト:4094025019 (3.8 GiB) $ ping www.google.com PING www.google.com (173.194.126.208) 56(84) bytes of data. 64 bytes from nrt04s07-in-f16.1e100.net (173.194.126.208): icmp_req=2 ttl=56 time=5.29 ms 64 bytes from nrt04s07-in-f16.1e100.net (173.194.126.208): icmp_req=3 ttl=56 time=9.33 ms $
ifconfig コマンドで、wlan0 で、IPアドレスが設定されていることがわかりました。ping コマンドで google.com につながるかも確認できました。というわけで、アダプタへのIPアドレスの設定にすすみます。
無線LANアダプタへの固定IPアドレスの設定
クライアント用途なら、上記までの設定で完了なのですがストリーミングサーバーがゴールなので、無線LANアダプタへの固定IPを割り振る必要があります。今回は、このサーバーにグローバルIPアドレスを割り当てて、インターネットから直接アクセスできるようにします。
手順 /etc/network/interfaces のファイルを編集します。
$ sudo vi /etc/network/interfaces
interfaces では、lo と eth0 (有線LAN)とwlan0(無線LAN)の設定を記述します。初期設定時は有線LANもDHCPだったのですが、 inet static と固定IPアドレス(プライベート)を割り当てています。これを参考に wlan0 も固定IPアドレス(グローバル)を割り当てます。address、 network、 netmask、broadcast、gateway、dns-servers を適切に設定してファイルを保存します。(dns-servers についてはGoogleのものをサンプルで記載していますが、それぞれのプロバイダーに合わせて変更してください)
auto lo iface lo inet loopback #iface eth0 inet dhcp iface eth0 inet static address 192.168.XX.XX network 192.168.XX.0 netmask 255.255.255.0 broadcast 192.168.XX.255 gateway 192.168.XX.1 dns-nameservers 192.168.XX.1 allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf #iface default inet dhcp iface wlan0 inet static address A.B.C.D network XX.XX.XX.XX netmask 255.255.255.XXX broadcast XX.XX.XX.XX gateway XX.XX.XX.XX dns-nameservers 8.8.8.8
さて、これでためしにサーバーを再起動して、外部サーバーから A.B.C.D にpingが飛ぶか検証しましょう。
うまくいけば、ネットワーク設定の完了です。
ピンバック: Raspberry Pi でWebカメラ (1) はじめに | ラット渡辺ブログ