Ubuntu 10.04でWLI-UC-G300Nを使う

先日インストールしたUbuntuでWLI-UC-G300Nを使おうとしたら
若干苦労したのでメモ。


参考サイト

  1. http://www.toy-poodle-four.net/cgi-bin/four_sb/log/eid1414.html
  2. https://forums.ubuntulinux.jp/viewtopic.php?id=7779
  3. https://forums.ubuntulinux.jp/viewtopic.php?id=6825
  4. https://forums.ubuntulinux.jp/viewtopic.php?id=7557


1、2のページではWLI-UC-G300NにはRT2870チップが使われているとあるが、
自分の環境でlsusbをしてみると

Bus 001 Device 004: ID 0411:016f MelCo., Inc.

となり、どうもIDが違う。
試しにRT2870用ドライバを入れてもアクセスポイントが見つからない。


3のページを見ると、型番が違うものの、ID 0411:016fの無線アダプタが
RT3070用ドライバで動いたらしい。
ということでRT3070用ドライバを落としてくるも、insmodでエラーになった。

$ sudo insmod os/linux/rt3070sta.ko
insmod: error inserting 'os/linux/rt3070sta.ko': -1 Unknown symbol in module


いろいろ検索した結果、4のページに書いてあるやり方で
ようやくまともに動くドライバをインストールすることができた。


以下、ドライバのインストール手順

1. ドライバを落としてくる
http://www.ralinktech.com/support.php?s=2 のRT3070USB(RT307x)と
書かれているリンクからダウンロードする。
自分の落としたときのバージョンは2.3.0.2だった。

$ tar xvfj DPO_RT3070_LinuxSTA_V2.3.0.2_20100412.bz2
$ cd DPO_RT3070_LinuxSTA_V2.3.0.2_20100412


2. ソースの修正
そのままでは動かないので、落としてきたドライバのソースを修正する。

・config.mk
"HAS_WPA_SUPPLICANT"と"HAS_NATIVE_WPA_SUPPLICANT_SUPPORT"を"y"にする。
2.3.0.2ではデフォルトで"y"だったので、特に修正なし。

・common/rtusb_dev_id.c
"{USB_DEVICE(〜)},"がたくさん並んでいるので、リストの末尾に

{USB_DEVICE(0x0411,0x016f)}, /* BUFFALO */

を追加する。
おそらくバージョンが変わると"{USB_DEVICE(0x0411,0x016f)},"を追加するファイルが変わると思うので、
そのときはgrepで探す。

・include/os/rt_linux.h
"STA_PROFILE_PATH"と"CARD_INFO_PATH"を修正する。

修正前
#define STA_PROFILE_PATH            "/etc/Wireless/RT2870STA/RT2870STA.dat"
…
#define CARD_INFO_PATH            "/etc/Wireless/RT2870STA/RT2870STACard.dat"

修正後
#define STA_PROFILE_PATH            "/etc/Wireless/RT3070STA/RT3070STA.dat"
…
#define CARD_INFO_PATH            "/etc/Wireless/RT3070STA/RT3070STACard.dat"

・os/linux/usb_main_dev.c
MODULE_LICENSEを追加する。MODULE_DESCRIPTIONの修正はなんとなく。

修正前
MODULE_DESCRIPTION("RT2870 Wireless Lan Linux Driver");

修正後
MODULE_DESCRIPTION("RT3070 Wireless Lan Linux Driver");
MODULE_LICENSE("GPL");

・datファイルの名前変更

$ mv RT2870STA.dat RT3070STA.dat
$ mv RT2870STACard.dat RT3070STACard.dat


3. ビルド

$ sudo make
$ sudo make install

この段階でinsmodして無線アダプタを認識すればOK。

$ sudo insmod os/linux/rt3070sta.ko


4. モジュールを自動で読み込むようにする
/etc/modprobe.d/rt3070sta を作成し、以下を書き込む。

alias ra0 rt3070sta

/etc/modules に以下を追加する。

rt3070sta

後は再起動して無線アダプタを認識すればOK。


一度無線アダプタを認識すれば、暗号化はデフォルトで対応しているようなので
特に設定ファイルをいじる必要はないはず。


我が家では今のところWPA-PSK(AES)で問題なく動作中。