RaspberryPi(Debian)で標準対応品以外のUSB WLAN(WDC-433DU2H)を使用する

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


NOOBSからRaspbianのインストール

もうこれは超簡単なのでパス。

Raspbianの初期設定とか

日本語化とか新規モジュールのインストールとかいらないサービスの切除とか。
ArchLinuxだと全部自分でやらないといけないけど、Raspbianがある程度ブロック化されてるから楽だ・・・。
結局・・・Pacmanとはなんだったんだろうか?

WDC-433DU2Hのドライバインストールの準備

今回購入したWDC-433DU2Hは、差し込んだだけでは認識するものの、ランプが点灯せず動作しません。
内部のチップは蟹(Realtek)RTL8811AUらしい。
ドライバを検索すると、後継(互換?)のRTL8812AUというものが見つかり、そのドライバを組み込むことで使用可能になる模様。
そのドライバを組み込むためにアレコレインストールしないといけない。

  1. Raspbianのアップデート(rpi-updateやapt-get upgrade) もちろん有線LANで
  2. apt-getでbuild-essentialをインストール
  3. wgetとかそのあたりのWEBからダウンロードする系のアレをインストール
  4. gccを4.8系にしてドライバをビルドできるようにする。
    http://qiita.com/tsukaman/items/44abe042d2184c021b4b
    ここの、「カーネルバージョンの確認」から「Linuxソースの取得とビルド」まで。

RTL8812AUドライバーのコンパイルと動作確認

  1. RTL8812AUのドライバーの元となるファイルを取得。
    ~ $ wget https://github.com/gnab/rtl8812au/archive/master.zip
    ~ $ unzip master.zip
    ~ $ cd rtl8812au-master
    
  2. 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を実行すればわかる。

  3. 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をアップデートしてから、再コンパイルでうまく動作していましたが、今回はうまくいかないようです。原因は不明です。(クリーンインストール時なら動作可能との連絡あり。)

  4. ここまでが万事うまくいけば再起動の段階で勝手にmodprobeで8812auってのを読み込んで、
    WDC-433DU2Hのランプがチカチカ光るはず。lsmodコマンドで8812auが出てくるはず。
  5. あとはifconfig wlan0で認識を確認できるので、WPAとかWiFi固有の設定をすればOK

私も先人の記事を見て解決したので貼っとく。
LinuxでWDC-433DU2HBK : http://washimemo.blogspot.jp/2014/11/linuxwdc-433du2hbk.html
まぁ初心者はこんなメンドクサいのを買わないで、
誰かが買ってて、完璧に使えるやつを調べて買えってことだね。
勉強になりました。
raspi_wifi2.png
ちなみにこれ、けっこう膨らんでるんで、USBポートの上下が使えなくなります。


コメントを残す