• UbuntuでELECOMのWi-FiアダプタWDC-433SU2Mを使う

    onkyo5~6年前に買ったONKYOのノートPC「C405W4」にWi-Fiアダプタをつけることにした。
    内臓の無線LANは2.4GHz帯のみの対応だった。自宅マンション内では周りの電波がはいるのはもちろん、キーボード・マウス・Bluetoothスピーカと結構干渉してるようだったので、5GHzが使えるようにすることに。
    ヨドバシ梅田にふらふらと出かけて、小型かつ5GHzが使えるとなると、ELECOMの「WDC-433SU2MWH」しかなかった。PlanexやI-O DATAのより小型っぽい。

    では、以下にWi-FiアダプタとノートPCのスペックを簡単にまとめる。

    ノートPC ONKYO C405W4
    CPU Intel® AtomTM CPY N280 (1.66GHz×2)
    メモリ 2GB (もともと1GBだったもの2GBに交換)
    HDD 250GB
    OS Windows® 7 Starter 32bit
    Ubuntu 14.10 32bit (Kernel 3.16.0-30-generic)
    USB Wi-Fiアダプタ ELECOM WDC-433SU2MWH
    周波数帯 5GHz帯専用(W52,W53,W56)
    対応規格 IEEE802.11ac/n/a
    チップセット MediaTek MT7650U_STA

    当然だけど、メーカ(ELECOM)のホームページからLinux用のドライバパッケージが用意されているわけはなく、自分でえっちらおっちら導入する必要がある。
    ちなみにこのアダプタで使われているMediaTek製のMT7650U_STAというチップは、
    Planex GW-450DI-O DATA WN-AC433UKにも使われており、ドライバはそいつらと共通かもしれない。

    ちなみに本作業はほぼ下記記事の流れに沿って行いました!
    途中ちょろっとつまりましたが、たいへん助かりました!

    Elecom WDC-433SU2Mで802.11acな通信を実現したかった

    1.Linux(Ubuntu)側の準備

    最低限の開発環境(コンパイルに必要なパッケージとパッチをダウンロードするコマンドくらい)は用意しておかなければいけない。
    ということで、下記をインストール。

    $sudo apt-get build-essential git unzip wget

    Ubuntu14.10のデスクトップ版では、git以外初期インストールされていた。Raspberry Piにインストールするときは、kernel-headersパッケージのインストールが必要とのこと。

    また、先に現在のLinuxカーネルのバージョンを確認しておこう。

    $uname -r
    3.16.0-30-generic

    私の場合は3.16.0-30-genericだったので、今後このバージョンで記すけども、自分のカーネルバージョンに読み替えてくださいね!ヾ(๑・㉨・)シ

    そして、いろいろとファイルをダウンロードするので、作業用ディレクトリでも作っておきましょう。ホームディレクトリ配下あたりで。以下の作業はこのディレクトリ内で行う。

    $mkdir WDC-433SU2M
    $cd WDC-433SU2M

    2.必要ファイルのダウンロードと展開

    インターネットから必要なファイルをダウンロードする。対象はドライバ本体と各種修正パッチ。
    ドライバ本体はメーカのサイトからDLできるが、メールアドレスなどを入力する必要がある。
    面倒だという方は下記の通り、PlanexのGW-450Dのドライバとして配布されているものをダウンロードしよう。中身はまったく一緒である。
    やることは、①ドライバ本体のダウンロードと解凍×2②パッチのダウンロード③ダウンロードしたパッチをドライバ本体のあるディレクトリへ移動する。移動するパッチは「RT2870STA.dat.patch」「config.mk.patch」「rtusb_dev_id.c.patch」と「planex_gw450_katana_linux_3_13_driver.patch」の計4つ。

    $wget http://www.planex.co.jp/support/driver/gw-450d/gw-450d_driver_linux_v3002.zip
    $unzip gw-450d_driver_linux_v3002.zip
    $tar jxvf gw-450d_driver_linux_v3002/mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2
    $
    $git clone https://gist.github.com/703ce9bc9af6cf4d4f08.git
    $mv 703ce9bc9af6cf4d4f08/* gw-450d_driver_linux_v3002/mt7610u_wifi_sta_v3002_dpo_20130916
    $
    $git clone https://gist.github.com/mumumu/11402030
    $mv 11402030/* gw-450d_driver_linux_v3002/mt7610u_wifi_sta_v3002_dpo_20130916

    Planexからダウンロードすると、ZIPの中にBZ2が入っているので2回解凍する。そして最終的に解凍できたMakefileなどが入っているmt7610u_wifi_sta_v3002_dpo_20130916のフォルダの中に~.pachというファイルを放り込むだけ。

    3.パッチの適応

    ここでちょっと戸惑った。パッチの適応自体は簡単なのだが…。

    $cd gw-450d_driver_linux_v3002/mt7610u_wifi_sta_v3002_dpo_20130916
    $git apply RT2870STA.dat.patch
    $git apply config.mk.patch ⇒エラー!
    $git apply rtusb_dev_id.c.patch ⇒エラー!
    $git apply planex_gw450_katana_linux_3_13_driver.patch ⇒エラー!

    なぜか1つしか成功しなかった…。ということで、エラーがでた3つについては、パッチの中身をのぞきながら手動で直していきました。そんなに大量じゃなくてよかった。
    直す対象のファイルは下記の通り。うまくパッチが当てられた方は下記は飛ばして4.へどうぞ!!

    vi os/linux/config.mk

    行数 変更前 変更後
    26 HAS_WPA_SUPPLICANT=n HAS_WPA_SUPPLICANT=y
    31 HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
    1041 EXTRA_CFLAGS := $(WFLAGS) EXTRA_CFLAGS := $(WFLAGS) -Wno-date-time

    vi common/rtusb_dev_id.c

    行数 変更前 変更後
    39 なし(行挿入) {USB_DEVICE(0x7392,0xb711)}, /* WDC-433SU2M */

     

    vi include/os/rt_linux.h

    行数 変更前 変更後
    280 int    fsuid; kuid_t    fsuid;
    281 int    fsgid; kgid_t    fsgid;

    4.モジュールのビルド

    いよいよドライバ(モジュール)を生成します。パッチの修正が全部終わってないとmakeに失敗します。失敗したら、もう一度パッチの中身を確認しましょう!

    $make

    当方のへっぽこノートPCだとビルドに5分ほどかかりました。
    成功すると、os/linux/の中にモジュール「mt7650u_sta.ko」ができています。

    5.モジュールの組み込み

    mt7650u_sta.koが生成できたら、こいつをLinuxに読み込んでもらうように設定します。
    できたモジュール「mt7650u_sta.ko」と、設定ファイル「RT2870STA.dat」をそれぞれの置き場へコピーする。

    $sudo cp os/linux/mt7650u_sta.ko /lib/modules/3.16.0-30-generic/kernel/drivers/net/wireless/
    $sudo mkdir -p /etc/Wireless/RT2870STA
    $sudo cp RT2870STA.dat /etc/Wireless/RT2870STA

    続いて、アダプタをra0インターフェースとして認識させるため、設定を追記する。
    新規にファイルを作成するが、ファイル名は.confがつけばなんでもOK。

    $sudo vi /etc/modprobe.d/wdc-433su2m.conf
    alias ra0 mt7650u_sta

    最後にカーネルモジュールを最新の状態に更新し、読み込む。

    $sudo depmod -a
    $sudo modprobe mt7650u_sta

    以上でドライバーのインストールは完了。
    Wi-Fiアダプタを差せば認識されるはず…!上手くいかないときは差して再起動してみましょう。

    ちなみに、当方は親機がIEEE802.11a/n対応のものしかないので、11acの恩恵は受けられてません…。
    ただ、acを使うとカーネルパニックを起こすこともあるらしい。(下記参考記事)
    当方の場合は11n運用なので問題なく使えております!

    そして、カーネル依存だろうから、カーネルのアップデートが入ると再コンパイルなんでしょうなぁ。めんどくしぇ・・・。
    しかし、DKMSというカーネルが変われば自動で再ビルドしてくれる機構もあるそうな。
    そちらは今度余裕のあるときにやってみます!

    2015/2/28追記
    DKMSによるカーネルインストール時の自動ビルドについて書きました!

    カテゴリー: Linux, ネットワーク, 技術系

    タグ: , , , , ,

    UbuntuでELECOMのWi-FiアダプタWDC-433SU2Mを使う」への2件のフィードバック

    コメントを残す

    メールアドレスが公開されることはありません。

    計算式の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.