FreeBSD 8.1-RELEASEでWLI-UC-G300Nを使う

いろいろあって Ubuntu から FreeBSDに乗り換えたので、前回使った無線LANアダプタを今回は FreeBSD で使えるようにしたのでメモ。


WLI-UC-G300N は Ralink 製のチップを使っているので、 FreeBSD では if_run を使えばいいらしい。
ただ、8.1-RELEASE についてきた if_run では G300N を認識してくれなかったので、今回もドライバのソースに若干の修正が必要だった。


まずはここから最新版のソースをダウンロードしてくる。
他の FreeBSD 用のドライバへのリンクは Finished: CALL FOR TESTERS Ralink wireless run(4) usb driver for FreeBSD - The FreeBSD Forums に載ってた。


そして解凍。

$ tar xvfz run-run-8.1_REL.tar.gz 


ソースに追加するためにG300N の ID を調べる。

# lsusb
(略)
Bus /dev/usb Device /dev/ugen1.3: ID 0411:016f MelCo., Inc. 
(略)

lsusb がない場合は sysutils/usbutils をインストールすれば使えるようになる。


dev/usb/usbdevs に以下を追加。

product MELCO WLIUCG301N	0x016f	WLI-UC-G301N

自分の G300N に使われているチップを調べてみたら RT3071 となっていて、このチップは G301N に使われているらしい & WLI-UC-G300N が既に使われている、ということで名前を「WLI-UC-G301N」とした。
「WLI-UC-G300N」の値を直接書き換えても多分動くと思う。


dev/usb/wlan/if_run.c に以下を追加。

RUN_DEV(MELCO,		WLIUCG301N),


後は README に従ってビルドしていく。

usbdevs の上書き。

# cp dev/usb/usbdevs /usr/src/sys/dev/usb/


firmware のビルド。

$ cd modules/runfw
$ make
# make install


ドライバのビルド。

$ cd ../usb/run
$ make
# make install


起動時にドライバを読み込むために /boot/loader.conf に以下を追加。

if_run_load="YES"
runfw_load="YES"


WPA を使ってるのでその設定もしておく。(参考: DELL Inspiron 1300 内蔵無線 LAN を FreeBSD から WPA2 で使う)
wpa_passphrase の出力内容を /etc/wpa_supplicant.conf に追加。

$ wpa_passphrase SSID パスフレーズ


/etc/rc.conf に以下を追加。

wlans_run0="wlan0"
ifconfig_wlan0="country JP WPA SYNCDHCP"

「SYNCDHCP」を「DHCP」にすると起動時の IP 取得を非同期で行うようになるらしい。
自分の場合、非同期にすると起動中に他のデーモンがネットワークにアクセスできなかったので IP 取得を待つようにした。


後は再起動して wlan0 のステータスが associated になっていればOK。


起動中に

runfw: root not mounted yet, no way to load image
run0: failed loadfirmware of file runfw
run0: could not load 8051 microcode
device_attach: run0 attach returned 6

というエラーがでる場合、firmware のロード (runfw_load="YES") を忘れている。


あと、自分の環境ではなぜか起動中に無線 LAN アダプタを抜くと無線マウスが使えなくなる。
マウスのアダプタを差し直してやるとなおるのでとりあえず気にしないことに。