Trick or Treat with kernel
Gentooテスト環境を構築する直前に何気に入手した IO-DATA の WN-G300U。
せっかくなので認識させてみようと、色々と試行錯誤してみた*1。
適当に調べてみると、Ubuntuで試行錯誤している記事はちらほらと。
Ubuntu Magazine Japan vol.04にも記載があるし、適当に弄ったら動くかな、と調査開始。
- http://en.gentoo-wiki.com/wiki/Ralink_RT2870
- GW-US300MiniS を Linux で使う - memoメモ
- rt2870sta - Debian Wiki
- http://ubun2.wiki.fc2.com/wiki/WLI-UC-G300N%E3%82%92%E4%BD%BF%E3%81%86
ここまで調べてみると、rt2800usb を使わずに staging にある rt2870sta を使えということらしい。
…安西先生、sys-kernel/gentoo-sources-2.6.34-r12 には rt2870sta がありません。
読み進めていくと、どうも 2.6.34 あたりで staging から抜けたらしく、
It also works fine with 2.6.32 gentoo kernel with the staging Ralink 3070 driver. Nevertheless, it seems that the newer kernels 2.6.34 and 2.6.35 do not support the chipset.
http://en.gentoo-wiki.com/wiki/Ralink_RT2870
とか書かれている始末。
でも rt2800usb として見えることは見えるらしく、dmesg には
usb 1-2: new high speed USB device using ehci_hcd and address 2 usb 1-2: New USB device found, idVendor=04bb, idProduct=0948 usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-2: Product: WN-G300U usb 1-2: Manufacturer: I-O DATA DEVICE, INC. usb 1-2: SerialNumber: xxxxxxxxxxxx = snip = phy0: Selected rate control algorithm 'pid' Registered led device: rt2800usb-phy0::radio Registered led device: rt2800usb-phy0::assoc Registered led device: rt2800usb-phy0::quality usbcore: registered new interface driver rt2800usb = snip = rt2800usb 1-2:1.0: firmware: requesting rt2870.bin phy0 -> rt2x00lib_request_firmware: Error - Failed to request Firmware. rt2800usb 1-2:1.0: firmware: requesting rt2870.bin phy0 -> rt2x00lib_request_firmware: Error - Failed to request Firmware. rt2800usb 1-2:1.0: firmware: requesting rt2870.bin phy0 -> rt2x00lib_request_firmware: Error - Failed to request Firmware. (以下略)
ということで Firmware が無いぞと怒られている様子。一応 wlan0 として見えていて
# ifconfig wlan0 wlan0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
とは見えるものの、wpa_supplicant の設定してみても SIOCSIFFLAGS が飛んできて終わり。
- Gentoo X86 Handbook - Gentoo Wiki
- http://gentoo-linux-memo.blogspot.com/2009/07/dell-inspron-910wpasupplicant.html
# /etc/init.d/net.wlan0 start * Starting wlan0 SIOCSIFFLAGS: No such file or directory SIOCSIFFLAGS: No such file or directory * Starting wpa_supplicant on wlan0 ... SIOCSIFFLAGS: No such file or directory Unsupported driver 'rt2800usb'. [ !! ]
ということで、何となく Ubuntu 10.10 を使って試行錯誤したら動くことは動くので、2.6.32 にして staging ドライバを Ralinkで配布している 設定ファイルをコピーすればなんとかなるらしい。このへんから出てくる選択肢はこんな感じか。
- sys-kernel/gentoo-sources-2.6.32-r20 あたりに戻して、Ubuntuと同じようにstagingドライバ使用
- sys-kernel/gentoo-sources-2.6.34-r12 をハック
- sys-kernel/gentoo-sources-2.6.36 に飛ぶ(~x86)
2.6.36 にすればなんとかなるかな、と思ったのは一番初めに 「WN-G300U Linux」でぐぐったとき普通に
Linux Kernel Driver DataBase: CONFIG_RT2800USB: Ralink rt27xx/rt28xx/rt30xx (USB) support
- vendor: 04bb ("I-O Data Device, Inc."), product: 0948 ("WN-G300U Wireless LAN Adapter")
と記載があったのと、debian-bugs-dist に rt2870sta から rt2800usb にしてみたいんだけど的な話題があったので意外となんとかなるかな、という目論見。
# ACCEPT_KEYWORDS="~x86" emerge gentoo-sources # cd /usr/src/ # rm linux # ln -s linux-2.6.36-gentoo linux # genkernel all --menuconfig
で再度試すと、
# /etc/init.d/net.wlan0 start * Starting wlan0 SIOCSIFFLAGS: No such file or directory SIOCSIFFLAGS: No such file or directory * Starting wpa_supplicant on wlan0 ... SIOCSIFFLAGS: No such file or directory Unsupported driver 'rt2800usb'. [ !! ]
……ですよねー。
というか、Gentoo Forums とかを読んでても無線LANアダプタ関係で出てくる SIOCSIFFLAGS の原因が自分的に読み解けてないんで、これ以上はなんとも。また気力ができたときに続けよう。