[[diary/Kojima]]
・ELECOM/Logitec LAN-W150N/U2WH
ノートPC(ThinkPad x60s)の環境を2年ぶりくらいにPlamo-5.0b1環境に更新したけど、
USB無線LANアダプタで少しハマったのでメモ。
もともとx60sにはIntelの無線LANのチップが載っていて、
当初はiwl3945なドライバで問題なく使えていたのだけど、
本体の保証が切れたころからこのチップが不調になってきて、
認識はするものの、無線機能が動作しなくなってしまった。
# 一応、残しておいたWindowsな環境でテストしてもダメだったので、ハードウェアレベルのトラブルだと思ふ
修理に出すと結構かかりそうなので、USBの無線LANアダプタでしのぐことにして、
お店にあったUSB無線LANのうち、一番小さい Logitec LAN-W150H/U2WH という機種を購入。
#ref("p02_W150NU2.jpg")
これだと付けっぱなしでも邪魔にならないだろうと思って選んだのだが、
帰ってから調べてみると、これが使っているRALINKのRT2800なチップは
当時のカーネル(2.6.24くらいだったか)ではサポートされていない模様。
仕方ないので、ndiswrapperでWindowsなドライバを流用して凌いだのけど、
サスペンドから復帰するといったん モジュールを抜き挿ししてやらないとうまく機能しなかったり、
何度もモジュールを抜き挿ししているとkernel oopsが出たりして、
使えなくはないもののちょっと不便さを感じていた。
このマシンのCPUは初代Coreで64ビットでは動かないから、昨年末のPlamo64では更新できず、
ずいぶん長く放置してしまったのだけど、何とかPlamo-5.0/32もまとまったので、それでフルインストール。
ところがやっぱりLogitecの無線LANは使えない。
dmesgとかを見ていると、カーネルがUSBデバイスを認識はするものの、
ドライバモジュールはロードされていない。
あれれ、、と思ってあれこれ調べてみたところ、
このデバイスにはデフォルトのrt2800usbではなく、
開発中のrt2800staなドライバが必要、などという記述が見つかる。
staging driverはロクに追いかけてないからよく分からんなぁ、、と思いつつ、
Plamo-5.0/32の3.6.5カーネルのソースコードを見てもrt2800staなんてドライバは見当らない。
# ls drivers/staging/
Kconfig cptm1217/ ft1000/ net/ panel/ rtl8712/ sm7xxfb/ vme/ xgifb/
Makefile crystalhd/ gdm72xx/ nvec/ phison/ rts5139/ speakup/ vt6655/ zcache/
android/ csr/ iio/ octeon/ quickstart/ rts_pstor/ staging.c vt6656/ zram/
asus_oled/ cxt1e1/ ipack/ olpc_dcon/ ramster/ sbe-2t3e3/ ste_rmi4/ winbond/ zsmalloc/
bcm/ echo/ keucr/ omap-thermal/ rtl8187se/ sep/ telephony/ wlags49_h2/
ccg/ et131x/ line6/ omapdrm/ rtl8192e/ serqt_usb2/ tidspbridge/ wlags49_h25/
comedi/ frontier/ media/ ozwpan/ rtl8192u/ slicoss/ usbip/ wlan-ng/
もう少し調べてみると、RALINKのサイトでLinux用のドライバが
2010_0709_RT2870_Linux_STA_v2.4.0.1.tar.bz2 なんて名前で配布されていて、
これがrt2800staなのかしらん、、とビルドしようとしたけど、
3.6.5カーネルではコンパイルエラーになってビルドできない。
さて困ったな、、と改めて make config でカーネルの設定を調べてみると、
rt27xx/rt28xx/rt30xx なドライバにはPlamo-5.0のデフォルトカーネルでは
指定していないオプションがいくつかあった。
│ <M> Ralink rt2501/rt73 (USB) support │ │
│ │ <M> Ralink rt27xx/rt28xx/rt30xx (USB) support │ │
│ │ [ ] rt2800usb - Include support for rt33xx devices │ │
│ │ [ ] rt2800usb - Include support for rt35xx devices (EXPERIMENTAL) │ │
│ │ [ ] rt2800usb - Include support for rt53xx devices (EXPERIMENTAL) │ │
│ │ [ ] rt2800usb - Include support for unknown (USB) devices │ │
│ │ [ ] Ralink debug output │ │
│ │
とりあえずこれらを全て指定してビルドし直してみたところ、
以前は反応しなかった rt2800usb.ko なモジュールが、
アダプタを挿すと自動的にロードされ、iwconfig でも無事 wlan1 として見えるようになった。
というわけで、結論として、しばらく前に rt2800sta として公開されていたドライバは、
最近のカーネル(試したのは3.6.5)では rt2800usb にマージされ、
そのオプション機能として指定してやる必要がある、ということらしい。
Plamo-5.0の正式リリースまでにはカーネルパッケージを更新しておかないと :-)
- ちなみに,Logitec LAN-W150H/U2WHという機種のUSB_DEVICEは何でせう。現状,Logitecとして登録されてるのは,USB_DEVICE(0x0789, 0x016[2346])です。 -- [[tamu]] &new{2012-12-22 (土) 10:21:43};
- 0789:0168 ですね。詳しくはこんな感じ -- [[kojima]] &new{2012-12-22 (土) 11:37:35};
Bus 001 Device 002: ID 0789:0168 Logitec Corp.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0789 Logitec Corp.
idProduct 0x0168
bcdDevice 1.01
iManufacturer 1 Ralink
iProduct 2 802.11 n WLAN
iSerial 3 1.0
bNumConfigurations 1
- なるほどです。最新のkernelパッケージでは,CONFIG_RT2800USB_UNKNOWN=yにしたから認識すると思うけど,本来的にはdrivers/net/wireless/rt2x00/rt2800usb.cに,{ USB_DEVICE(0x0789, 0x0168) }のエントリを追加するべきだったかな。 -- [[tamu]] &new{2012-12-22 (土) 11:48:53};
- USB_DEVICEのエントリーって無効だったら動作しないのはBuffalo WLI-UC-GNMで確認したことあるので現状でよいのでは? -- [[名倉]] &new{2012-12-22 (土) 11:59:15};
- おっと失礼,CONFIG_RT2800USB_UNKNOWNの方に,USB_DEVICE(0x0789, 0x016[89])があるから,このままでいいか。 -- [[tamu]] &new{2012-12-22 (土) 12:12:11};
#comment