家で監視カメラ代わりに使用しているRaspberry Pi 2 Model B + Arch Linuxですが、最近急に冷え込んだせいで部屋の中に結露が発生して、部屋の隅にポタポタと落ちていた模様です。その滴が運悪くRaspberry Piにあたり、ショートしたのかなんなのかよくわかりませんが、起動できなくなりました。
SDカードを交換することで復帰することは確認できて一安心。
今までの設定とか全部吹っ飛んだけど・・・まぁ・・・致命傷で済んでよかったよ。
有線LANだとどうしても置く場所が部屋の隅のほうになってしまうので、新規インストール(Raspbian)のついでに、無線LAN化することにしました。

無線LANアダプタは安くて設定が簡単なものが多く出ていますが、今回は一刻も早く復帰させたかったので
近くのEDIONに行ってパパッと買ってきました。
ELECOMのWDC-433DU2HBKです。
いやぁ・・・これがまた設定がしんどいんだ・・・。
NOOBSからRaspbianのインストール
もうこれは超簡単なのでパス。
Raspbianの初期設定とか
日本語化とか新規モジュールのインストールとかいらないサービスの切除とか。
ArchLinuxだと全部自分でやらないといけないけど、Raspbianがある程度ブロック化されてるから楽だ・・・。
結局・・・Pacmanとはなんだったんだろうか?
WDC-433DU2Hのドライバインストールの準備
今回購入したWDC-433DU2Hは、差し込んだだけでは認識するものの、ランプが点灯せず動作しません。
内部のチップは蟹(Realtek)のRTL8811AUらしい。
ドライバを検索すると、後継(互換?)のRTL8812AUというものが見つかり、そのドライバを組み込むことで使用可能になる模様。
そのドライバを組み込むためにアレコレインストールしないといけない。
- Raspbianのアップデート(rpi-updateやapt-get upgrade) もちろん有線LANで
- apt-getでbuild-essentialをインストール
- wgetとかそのあたりのWEBからダウンロードする系のアレをインストール
- gccを4.8系にしてドライバをビルドできるようにする。
http://qiita.com/tsukaman/items/44abe042d2184c021b4b
ここの、「カーネルバージョンの確認」から「Linuxソースの取得とビルド」まで。
RTL8812AUドライバーのコンパイルと動作確認
- RTL8812AUのドライバーの元となるファイルを取得。
~ $ wget https://github.com/gnab/rtl8812au/archive/master.zip ~ $ unzip master.zip ~ $ cd rtl8812au-master
- MakefileのCONFIG_PLATFORM_I386_PCとかを編集。詳しくは配布元の「Building」。
~/rtl8812au-master $ vi Makefile #nanoとかvimとか編集できりゃなんでもいい CONFIG_PLATFORM_I386_PC = n #yからnへ ... CONFIG_PLATFORM_ARM_RPI = y #nからyへ
あと、ELECOMのベンダーIDとWDC-433DU2HBKのプロダクトIDを認識できるようにするために、
os_dep下のlinux下の、usb_intf.cのところで
#ifdef CONFIG_RTL8821Aの下を編集。
いいか?CONFIG_RTL8812Aじゃねぇ。CONFIG_RTL8821Aだ。わかったか?にー いち えーだぞ!!~/rtl8812au-master $ cd os_dep/linux/ ~/rtl8812au-master/os_dep/linux $ vi usb_intf.c #ifdef CONFIG_RTL8821A /*=== Realtek demoboard ===*/ {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0811),.driver_info = RTL8821},/* Default ID */ {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0821),.driver_info = RTL8821},/* Default ID */ {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8822),.driver_info = RTL8821},/* Default ID */ /*=== Customer ID ===*/ {USB_DEVICE(0x7392, 0xA811),.driver_info = RTL8821}, /* Edimax - Edimax */ {USB_DEVICE(0x7392, 0xA812),.driver_info = RTL8821}, /* Edimax - EW-7811UTC */ {USB_DEVICE(0x7392, 0xA813),.driver_info = RTL8821}, /* Edimax - EW-7811UAC */ {USB_DEVICE(0x2001, 0x3314),.driver_info = RTL8821}, /* D-Link - Cameo */ {USB_DEVICE(0x0846, 0x9052),.driver_info = RTL8821}, /* Netgear - A6100 */ {USB_DEVICE(0x2019, 0xAB32),.driver_info = RTL8821}, /* Planex - GW-450S */ {USB_DEVICE(0x0411, 0x0242),.driver_info = RTL8821}, /* BUFFALO - Edimax */ {USB_DEVICE(0x056E, 0x4007),.driver_info = RTL8821}, /* この行を自分で追加する ELECOM WDC433DU2H */ #endifちなみにベンダーIDとプロダクトIDは、USB機器をRasPiに差し込んだ状態でlsusbを実行すればわかる。
- masterのディレクトリに戻って、sudo makeとsudo make installを実行する
~/rtl8812au-master/os_dep/linux $ cd ../.. ~/rtl8812au-master $ sudo make ~/rtl8812au-master $ sudo make install
多分出来の悪い子はmakeの段階で何か足りないとか怒られるから、足りないものを入れなおしてmakeをやり直し。
make installまでうまくいけたら、RasPiを再起動(USBは挿しっぱなしでも抜いてても問題ないっぽい)
2016/08/07追記:現在この手順を踏んでも、最新ファームウェアではうまく動作しないようです。以前まではraspberry piをアップデートしてから、再コンパイルでうまく動作していましたが、今回はうまくいかないようです。原因は不明です。(クリーンインストール時なら動作可能との連絡あり。) - ここまでが万事うまくいけば再起動の段階で勝手にmodprobeで8812auってのを読み込んで、
WDC-433DU2Hのランプがチカチカ光るはず。lsmodコマンドで8812auが出てくるはず。 - あとはifconfig wlan0で認識を確認できるので、WPAとかWiFi固有の設定をすればOK
私も先人の記事を見て解決したので貼っとく。
LinuxでWDC-433DU2HBK : http://washimemo.blogspot.jp/2014/11/linuxwdc-433du2hbk.html
まぁ初心者はこんなメンドクサいのを買わないで、
誰かが買ってて、完璧に使えるやつを調べて買えってことだね。
勉強になりました。

ちなみにこれ、けっこう膨らんでるんで、USBポートの上下が使えなくなります。