FreeBSD-8.3でUSB無線LANアダプタ(LAN-W300N/U2,WLI-UC-GNHP)を利用するためのパッチ (2012/06/03)

あなたは 人目のお客様です.

(このページの情報は当然ながら無保証です. 試す場合は各自の責任の下でお願いします)

第17回 IT基礎技術勉強会で 会場内の無線LANネットワーク構築のために,FreeBSDで使える速そうな USB無線LANアダプタを探していて,以下のページを見て動きそうだということで LogitecのLAN-W300N/U2 という製品を買って試してみたのだが,使えない.環境はFreeBSD-8.3で, LAN-W300N/U2を差しても認識しないかんじ.

ちなみに上記ページでは WLI-UC-GNM も試していて,WLI-UC-GNMはFreeBSD-8.2では認識しなかったがFreeBSD-8.3だと 問題なく使えたのでLAN-W300N/U2も大丈夫だろうと思ったのだがちょっとがっくり.

上のページは9.0-RC1を利用しているみたいで,まあバージョン違うとそんなものかと さっくりあきらめようかとも思ったがせっかく買ってしまったので http://www.mail-archive.com/freebsd-users-jp@jp.freebsd.org/msg04718.html を参考にしてusbdevsやif_run.cを見てみると,エントリは入っていて使えそうに 思える.

おかしいなーと思って usbconfig dump_device_desc の出力とか比較してよくよく 見てみると,なんかベンダIDが違っている.本来の「LOGITEC」でなく「LOGITECH」に なっているみたい.

「LOGITEC」と「LOGITECH」の違いって何?ベンダIDが違っているけど?と思って ここで検索してみて初めて知ったのだけど,よく家電量販店でみかけるいわゆる 「ロジテック」は「Logitec」で,それとは別に「Logitech」という会社がスイスに 存在するらしい.でもって「Logitech」は世界的にはLogitechブランドなのだが, 日本では「Logitec」と混同しないように「Logicool」という名前でブランド展開 しているようだ.詳しくはwikipediaとか参照.

usbdevsでも,LANW300NU2のエントリの直後はキーボードとかマウスとか webカメラっぽいエントリになっていて無線LANと全然関係無く, LANW300NU2のエントリが浮いてる感じでおかしいなーとは思っていたのだが, 単純に間違いのように思える.

ということでLOGITECH→LOGITECに修正すれば使えそう.

ついでにこちらも購入してみたBuffaloの WLI-UC-GNHP のエントリも追加する.以下はWLI-UC-GNHPの usbconfig dump_device_desc の結果.

ugen3.3: <802.11 n WLAN Ralink> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x0000 
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x0411 
  idProduct = 0x0158 
  bcdDevice = 0x0101 
  iManufacturer = 0x0001  
  iProduct = 0x0002  <802.11 n WLAN>
  iSerialNumber = 0x0003  <1.0>
  bNumConfigurations = 0x0001 
で,作成したパッチが以下.

パッチの当てかたは以下のとおり. 上記http://www.mail-archive.com/freebsd-users-jp@jp.freebsd.org/msg04718.htmlにカーネルオプション IEEE80211_AMPDU_AGE を外すような記述もあるが,ひとまず気にせずにやってみる.

  1. /usr/src/sys/dev/usb/usbdevs, /usr/src/sys/dev/usb/wlan/if_run.c に パッチを当てる.
  2. カーネル再構築.
    # cd /usr/src/sys/i386/conf
    # config GENERIC
    # cd ../compile/GENERIC
    # make cleandepend && make depend
    # make (モジュールのビルドのみならカーネル構築は不要?よくわからんのでいちおう構築)
    # make install
    # cd /usr/src/sys/modules/usb/run
    # make (このへんもやりかたよくわからんのでいちおう make; make install する)
    # make install
    # cd /usr/src/sys/modules/runfw
    # make
    # make install
    
  3. kldunload で if_run, runfw をアンロード.
  4. kldload で if_run, runfw をリロードする.
これでとりあえず両方とも動作することを確認した.この記事もLAN-W300N/U2で接続 しながら書いている.速度もなかなか速いようだ.

上記のLAN-W300N/U2のLOGITECH問題についてはsend-prしようかと思ったが, [usb/164275]で既出みたい.なので上のLAN-W300N/U2のパッチは FreeBSD-8.3特有の修正ということになりそう.

BuffaloのWLI-UC-GNHPについては他のアダプタもちょっと調べて, 既出かどうか整理した上でまとめてsend-prすることにしよう.


メールは kozos(アットマーク)kozos.jp まで