Raspberry Pi用OSインストーラー、NOOBS v1.4.1(2015-05-11)でインストールされるRaspbian Wheezy(2015-05-05)では、Bonjourのオープンソース実装Avahi
が最初から稼働しているなど、Raspberry Piの実運用に即した更新がされています。時期的にRaspberry Pi用Debian 8 Jessieの登場も見えてきているので、Raspbian Wheezyを使った場合の定番のWi-Fiセットアップになるよう、まとめました。
(2015-09-30追記)
Debian 8 JessieベースのRaspbianリリースの発表がありました。
Raspberry Pi's Raspbian Rebased To Debian 8 "Jessie" - Phoronix
忙しい人のためのWi-Fi設定方法まとめ
- Raspberry Piに①HDMIモニタ②USBキーボード③USB Wi-Fiアダプタ バッファロー WLI-UC-GNMまたはプラネックス GW-USNANO2Aをつなぐ
-
NOOBS v1.4.1
で**Raspbian Wheezy(2015-05-05)**をインストール - 初回表示される**
raspi-config
をいきなり[Finish]**してコンソールへ - Wi-FiルータのWPSプッシュボタンを押す
- Raspberry Pi側で**
sudo wpa_cli wps_pbc
を実行してWPS認証**をする - 1分ぐらい待ち
ifconfig
でwlan0にDHCPでIPアドレスが振られたことを確認 - 一巻の終わり(この時点で他のホストからSSHログインできるようになっている)
追加作業として、
- 他のホストからsshを使い
pi
ユーザでログイン - Wi-Fiアダプタの省電力防止設定を以下で入れます
sudo sed /etc/network/interfaces -i -e '/wpa-conf \/etc\/wpa_supplicant\/wpa_supplicant.conf/i wireless-power off'
echo "options 8192cu rtw_power_mgnt=0 rtw_enusbss=1 rtw_ips_mode=1" | sudo tee /etc/modprobe.d/8192cu.conf
-
sudo raspi-config
で先ほど飛ばした設定作業を続行してもいいですね
せっかちな人のための従来の方法との違い
従来のやり方と比較して、
-
/etc/network/interfaces
に、よくわからない記述をする必要が無い -
/etc/wpa_supplicant/wpa_supplicant.conf
に、よくわからない記述をする必要が無い - 使用するUSB無線LANアダプタがバッファロー WLI-UC-GNMまたはプラネックス GW-USNANO2Aに決め打ち
- Wi-FiルータがWPS認証できることが前提
というあたりが違います。
ほかのUSB Wi-Fiアダプタはダメなの?
USB無線LANアダプタは、Raspbian Wheezy側にドライバがあること、ドライバがアダプタの同定ができることで、接続するだけで利用できます。そうでない場合は、ドライバにアダプタの情報を教えてあげたり、ドライバを用意したりする必要があります。
挿すだけで認識するアダプタ(今回取り上げた、検証済みのもの)
-
Buffalo WLI-UC-GNMシリーズ(rt2800usb)
WLI-UC-GNM/WLI-UC-GNM2/WLI-UC-GNM2T/WLI-UC-GNMEと何世代かあり、WLI-UC-GNMは当方で利用、WLI-UC-GNM2はネット上で接続実績があります。2015/8から現行製品のWLI-GNMEは他の方のレポートを見ると同じ方法で行けるらしい。http://qiita.com/nownabe/items/a6ec3dfcfcb6ab37ea1e 消費電流は通常時で200mA流れるので大量に通信するようとだと熱で自己破壊を起こすかも。当方も1機壊れた。 -
プラネックス GW-USNANO2A(rtl8192cu)
挿すだけで認識する。WLI-GNMとは低速化回避方法が違う(後述)。消費電流は通常時で50mAと比較的少ないので多い日も安心。
挿すだけで認識するアダプタ(当方では未検証)
-
ロジテック LAN-WH300NU2・アイ・オー・データ IO-DATA WN-G300UA(rtl8192cu)
挿すだけで認識するとあるので、プラネックス GW-USNANO2Aとみなして今回の方法でセットアップできると思うが、持っていないので試していない。低速化回避方法は後述のプラネックス GW-USNANO2Aの場合を参照。
追加設定が必要なアダプタ
Wi-Fiアダプタ購入前ならRaspberry Piに挿すだけでは使えないアダプタはなるべく避けるべきですが、手持ちのアダプタを使ってみた場合もあるよね……
-
バッファロー WLI-UC-GNP(rt2800usb)
ドライバは存在しているが、ドライバがそのUSBデバイスを知らないので動かない。使えるようにするにはUSBアダプタのベンダID・デバイスIDを設定する必要がある http://qiita.com/github0013@github/items/e78577039c29447b2235 -
IO-DATA WN-G150UM(rtl8192cu)
ドライバは存在しているが、ドライバがそのUSBデバイスを知らないので動かない。使えるようにするにはUSBアダプタのベンダID・デバイスIDを設定する必要がある http://marm.cocolog-nifty.com/jokanaan/2012/12/wn-g150um-on-ra.html Interface誌2015/9でも書いてた -
エレコム WDC-150SU2M(rtl8188eu)
ドライバをビルドしなくちゃならん http://qiita.com/amutake/items/8f0e23c59442379a05bf -
プラネックス GW-450D(mt7650u_sta)
プラネックス自身がドライバビルド方法を書いているのだが工程がけっこうマゾいし現行Raspberry Piだと動かないとかで別の方法があるみたい http://qiita.com/tsukaman/items/44abe042d2184c021b4b
最速Wi-Fiセットアップのための機材
- Raspberry Pi A+
- ちいさい。うすい。省電力。
- USBが1ポート。
- Raspberry Pi B+でもいいよ。
- 2ポートUSBハブ
- Raspberry Pi A/A+だと、Wi-Fiとキーボードでどうしても2ポート必要。
- Raspberry Pi BやB+なら、本体に2ポート以上あるので、いらない。
- USBキーボード
- ポインティングデバイス付だとなおよいですね。
- HDMIモニタ
- 1920x1080が表示できる実モニタがベスト。
- HDMI⇒VGAアダプタはインストール直後だとほぼ表示できないのでNG(マゾならそれはそれでがんばれ)。
- USB Wi-Fiアダプタ バッファロー WLI-UC-GNM or プラネックス GW-USNANO2A
- 今回は2機種で決め打ち。
- Wi-FiアダプタについてはInterface誌 2015年9月号がなぜか詳しい。
- 4GB microSDカード
- セットアップ直後のフリーエリアは155MB。
- sudo apt-get upgradeするとフリーエリアが22MBになって詰む。
- SonicPiなどGUI用のアプリ消せば何とか。
- 4GBはインストールテスト用だよね……
NOOBSセットアップ時のTips
NOOBSのグラフィカルインストーラー操作の際、HDMIモニタや、HDMI⇒VGAアダプタで画面表示ができない場合は、フルキーボード側の1
もしくは2
を押すと、HDMIポートの再ネゴシエーションが働き、モニタ表示ができるようになることがあります1。
当方、VGA入力の液晶モニタCentury LCD-8000V+謎のHDMI⇒VGAアダプタで確認しています。
謎、ていうよりも、雑ではないだろうか……さすがにその位置の水晶は設計とは違うんじゃないだろうか……
[本題]Raspbian ブートアップ後の作業
作業は、NOOBSによるグラフィカルインストーラにより、Raspbianのインストールが終了した後の初回ブートアップ完了直後から始めます。
Raspbian初回ブートアップ時は、自動的にフルスクリーン設定メニューraspi-config
が起動するようになっていますが、これをおもむろに[Finish]で終わらせます(/etc/inittab が書き換わり、/etc/profile.d/raspi-config.sh が削除され、二回目以降のブートでは表示されなくなります2)。
画面は、pi
ユーザのコンソールに切り替わります。
/etc/network/interfaceはいつものmanual⇒dhcpやwpa-conf⇒wpa-romeの書き換えは不要
よく「/etc/network/interface の iface default inet manual
をiface default inet dhcp
に書き換える」というふうに書いている記事がありますが、Raspbianでは、ネットワークインタフェースの有効化の時点ではなく、バックグラウンドで動いている別のデーモンであとからDHCPで配られたIPをネットワークアダプタに割り当てる方式なので、/etc/network/interface にてDHCPから割り振りを受ける仕組みを利用する必要はありません。
また、wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
を wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
に書き換えるという記事も多いですが、現Raspbianでは、wpa_supplicant.confの中にwpa-roam
が存在せず、あらかじめすべてwpa-conf
になっていますので、これも作業は不要です。
それらの代わりに、Wi-Fiアダプタが省電力モードに入って通信が切れがちになる不具合を解消するオプションを、SSH接続が可能になったあとに入れます。
WPSによるWi-Fi接続認証の自動設定
現在販売されているWi-Fiルータは、WPSによる接続認証の自動化ができるようになっています。これは、接続認証をしたいときだけ一時的にWi-Fiルータのモードを切り替えてWPS認証受け入れ態勢にして、Wi-Fi機器側でWPS認証を要求して接続認証のネゴシエーションを行うというものです。
この仕組みにより、Wi-Fiルータが提供するアクセスポイントのSSID名、パスフレーズ、認証方式など複雑な設定を手入力せずに認証が可能となります。
さて、今回利用したバッファロー WLI-UC-GNMは、Raspbianでは最初からドライバが入っているので、USBポートに挿すだけで既に動作しているのですが、Wi-Fiルータのアクセスポイントとの接続認証がまだ行われていない状態なので、ネットワークに参加できていない状態でいます。
よって、ここでWi-FiルータをWPS認証受け入れモードに切り替えて、Raspbeery PiからWPS認証を実行することで、ネットワークに参加できるということになります。
A. ルータのWPSプッシュボタンを押す場合
まず、ルータのWPSプッシュボタンを押して(長押しで動作開始になる機種が多い)、プッシュボタン式WPS認証受け入れモードへ切り替えます。
つぎに、Raspberry Piのコンソールから以下のように入力します。
sudo wpa_cli wps_pbc
OKと表示され、バックグラウンドでWPS認証が進み、認証ができたら、/etc/wpa-supplicant/wpa-supplicant.conf にアクセスポイントの設定が追加されています。
B. ルータのPIN発行によるPINコード式WPS認証の場合
ルータ側で認証用PINを4桁または8桁設定し、もしくはあらかじめPINコードが印刷されていて、機材側でWPS認証するときPINを使う方法です。
まず、ルータに何らかの方法でPINを設定した後にPINコード式WPS認証受け入れモードにします。このルータはPINをユーザが自分で入力できるタイプなので、例えばPINとして"0123"を設定したとします。
つぎに、Raspberry Piのコンソールから以下のように入力します。"0123"はルータ側に設定されたPINです。
sudo wpa_cli wps_pin any 0123
OKと表示され、バックグラウンドでWPS認証が進み、認証ができたら、/etc/wpa-supplicant/wpa-supplicant.conf にアクセスポイントの設定が追加されています。
Wi-Fi認証が終わったら dhcpcd wlan0 の入力は不要
wpa_supplicant
デーモンによるWi-Fiネットワークアダプタ接続のマネージメントが、DHCPの処理もしてくれるので、手動でDHCPのIP配信リクエストをする必要はありません。
ifconfigで確認してみよう
ifconfig
でwlan0
にIPアドレスが割り当てられているか確認します。
pi@raspberrypi ~ $ ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:40 errors:0 dropped:0 overruns:0 frame:0
TX packets:40 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3696 (3.6 KiB) TX bytes:3696 (3.6 KiB)
wlan0 Link encap:Ethernet HWaddr dc:fb:02:XX:XX:XX
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:132 errors:0 dropped:16 overruns:0 frame:0
TX packets:104 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15103 (14.7 KiB) TX bytes:16749 (16.3 KiB)
pi@raspberrypi ~ $
なお、Raspbian Wheezy(2015-05-05)からBonjourサービスデーモンAvahi
が最初から動いているので、この時点でraspberrypi.local
というホスト名がネットワーク内に広告されています。Bonjourデーモンは、それぞれのホストで動いていれば、ブロードキャストされたホスト名を受信して、自ホストの名前解決に割り込んで名前解決をします3。なので、Mac OS XならRendezvous
改めBonjour
サービスが最初から動いているためそのままホスト名を使いSSHでつなげることができますし、LinuxならAvahi
、WindowsならAppleのBonjourサービス
4を入れておくことでホスト名でアクセスできます。
他ホストからSSHログインしてみよう
NOOBS v1.4.1からインストールしたRaspbian Wheezy(2015-5-5)では、あらかじめSSHデーモンが動いていますので5、この時点で他のホストからSSHで接続できます。
Bonjourサービス環境下
[www-data@linux ~]$ ssh pi@raspberry.local
The authenticity of host 'raspberrypi.local (192.168.0.2)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.2' (RSA) to the list of known hosts.
password: raspberry
Linux raspberrypi 3.18.11+ #781 PREEMPT Tue Apr 21 18:02:18 BST 2015 armv6l
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Aug 30 15:02:34 2015 from tty1
pi@raspberrypi ~ $
IPアドレスによる接続
[www-data@linux ~]$ ssh pi@192.168.0.2
Finger Print? y
The authenticity of host 'raspberrypi.local (192.168.0.2)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.2' (RSA) to the list of known hosts.
password: raspberry
Linux raspberrypi 3.18.11+ #781 PREEMPT Tue Apr 21 18:02:18 BST 2015 armv6l
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Aug 30 15:02:34 2015 from tty1
pi@raspberrypi ~ $
最初に公開鍵転送しちゃうと以降パスワードいりませんね
[www-data@linux ~]$ ssh-copy-id pi@raspberrypi.local
The authenticity of host 'raspberrypi.local (192.168.0.2)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'raspberrypi.local' (RSA) to the list of known hosts.
pi@raspberrypi.local's password: raspberry
Now try logging into the machine, with "ssh 'pi@raspberrypi.local'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[www-data@linux ~]$
[www-data@linux ~]$ ssh pi@raspberrypi.local
Linux raspberrypi 3.18.11+ #781 PREEMPT Tue Apr 21 18:02:18 BST 2015 armv6l
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Aug 30 15:10:52 2015 from linux.local
pi@raspberrypi ~ $
SSH接続後の作業
SSH接続ができてしまったら、テキストファイルからのコピペなどお手のものなので、設定が捗ります。
WLI-UC-GNM(rt2800usb)省電力モード禁止設定
/etc/network/interfaces
に、今回利用するWi-Fiアダプタのバッファロー WLI-UC-GNMが省電力モードに入って通信が切れがちになる不具合を解消するオプションwireless-power off
を入れます。
sudo sed /etc/network/interfaces -i -e '/wpa-conf \/etc\/wpa_supplicant\/wpa_supplicant.conf/i wireless-power off'
see also : http://lowreal.net/2014/01/09/1
GW-USNANO2A(rtl8192cu)省電力モード禁止設定
GW-USNANO2Aを使った時の省電力モード禁止設定は、以下の通りです。
echo "options 8192cu rtw_power_mgnt=0 rtw_enusbss=1 rtw_ips_mode=1" | sudo tee /etc/modprobe.d/8192cu.conf
see also : http://denshikousaku.net/fix-sluggish-response-of-raspberry-pi-wifi-adaptor
sudo raspi-config で設定続行
sudo raspi-config
で初回ブート時に表示された全画面設定メニューがSSHコンソールで表示できます。SSHクライアントの状態によっては画面が崩れる場合もありますが、リモートで設定ができますよ。
まとめ
- ネット上にある資料の謎のファイル書き換えが割と不要
- なるべくデフォルト設定で行きたい人におすすめ
- Wi-Fi認証はWPSを使うならコマンド一行で完了
Wi-Fiさえつながってしまえば、自動構築スクリプトは構築し放題ですよね。sudo raspi-config
で設定する内容でさえ全部シェルスクリプトでできてしまう6ので、プロビジョニングが捗ることうけあいです!
つらい
いまの2015-08の時点でsudo rpi-update
をすると、kernelバージョンが4.0系のやつが落ちてくるのでいろいろ変わっていそうでつらい。
脚注
-
NOOBSでしか効かないので、初回ブート時にHDMIに謎モニタがつながっている場合はやっぱり表示できません。 ↩
-
raspi-config
をエスケープキーで終わらせると、書き換えが起こらないので、次回ブート時もraspi-configが実行される。 ↩ -
Avahiを入れることで、
/etc/nsswitch.conf
内でhosts: files mdns4_minimal [NOTFOUND=return] dns
と書き換えられ、名前解決シーケンスの途中でAvahiにおける名前解決を担うmdns4
(マルチキャストDNS)に引き込みされます。 ↩ -
Windows用Bonjourサービスは、iTunesを使っているとインストール済みになっている可能性がある。もしくは、Bonjour - Apple サポート から、「Bonjour Print Services for Windows」を選んでダウンロード・インストールする。 ↩
-
raspi-config
のメニュー内にSSHを起動するオプションがあるが特に操作は不要 ↩ -
sudo dpkg-reconfigure --frontend noninteractive locales
sudo dpkg-reconfigure --frontend noninteractive tzdata
sudo dpkg-reconfigure --frontend noninteractive keyboard-configuration
などを駆使しましょう ↩