PLANEX GW-US54GXS

GW-US54GXS

無線LAN USBアダプタ GW-US54GXS

プラネックス無線LAN USBアダプタ GW-US54GXSを買った。amazon.co.jpにて2,280円也。

CentOSで使えるように頑張ったメモ。

こやつはZyDAS ZD1211という無線LANコントローラーを搭載しているのだが、zd1211rw - Linux Wirelessによると、kernel 2.6.18 以降には zd1211rw というドライバモジュールが入っているらしいので、ftp.naist.lkams.kernel.orgより、linux-2.6.20.15.tar.bz2をダウンロード。

USBポートに接続してlsusb -vで確認すると、

$ lsusb -v
Bus 005 Device 008: ID **2019:5303**
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass       255 Vendor Specific Subclass
  bDeviceProtocol       255 Vendor Specific Protocol
  bMaxPacketSize0        64
  idVendor           0x2019
  idProduct          0x5303
  bcdDevice           48.10
  iManufacturer          16 PCI
  **iProduct**               32 **PCI GW-US54GXS**
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    :
    :
    :

という出力から、ベンダーIDとプロダクトIDが2019:5303である事がわかる。

でもってlinux-2.6.20.15/drivers/net/wireless/zd1211rw/zd_usb.cにベンダーIDとプロダクトIDを、linux-2.6.20.15/drivers/net/wireless/zd1211rw/zd_ieee80211.cには国別のエクストラチャンネルを追加。

$ cat linux-2.6.20.15-zd1211rw.patch
*** zd1211rw.orig/zd_usb.c      2007-07-07 13:52:58.000000000 +0900
--- zd1211rw/zd_usb.c   2007-07-25 10:50:00.000000000 +0900
***************
*** 58,63 ****
--- 58,64 ----
        { USB_DEVICE(0x079b, 0x0062), .driver_info = DEVICE_ZD1211B },
        { USB_DEVICE(0x1582, 0x6003), .driver_info = DEVICE_ZD1211B },
        { USB_DEVICE(0x050d, 0x705c), .driver_info = DEVICE_ZD1211B },
**+       { USB_DEVICE(0x2019, 0x5303), .driver_info = DEVICE_ZD1211B },**
        /* "Driverless" devices that need ejecting */
        { USB_DEVICE(0x0ace, 0x2011), .driver_info = DEVICE_INSTALLER },
        {}
*** zd1211rw.orig/zd_ieee80211.c        2007-07-07 13:52:58.000000000 +0900
--- zd1211rw/zd_ieee80211.c     2007-07-25 10:48:14.000000000 +0900
***************
*** 43,48 ****
--- 43,49 ----
         * 1-13. The ZyDAS devices still use the old region code but are
         * designed to allow the extra channel access in Japan. */
        [ZD_REGDOMAIN_JAPAN_ADD] = { 1, 15},
**+       [0x49] = { 1, 15},**
  };
  const struct channel_range *zd_channel_range(u8 regdomain)

あとは、kernelオプションでUSB関係を有効にしてbuildすればよい。

/etc/modprobe.confには

alias eth1 zd1211rw

の一行を追加。

wpa_supplicantを使う場合、/etc/sysconfig/wpa_supplicant

# wlan0 and wifi0
# INTERFACES="-iwlan0 -iwifi0"
INTERFACES="-i**eth1**"
# ndiswrapper and prism
# DRIVERS="-Dndiswrapper -Dprism"
#DRIVERS="-Dndiswrapper"
DRIVERS="-D**wext**"

となる。

ここで

# service wpa_supplicant restart

すれば OK だと思ったのだが、さにあらず。/var/log/messages を見ると

Jul 26 14:49:01 localhost kernel: ieee80211: 802.11 data/management/control stack, git-1.1.13
Jul 26 14:49:01 localhost kernel: ieee80211: Copyright (C) 2004-2005 Intel Corporation <jketreno@linux.intel.com>
Jul 26 14:49:01 localhost kernel: usb 5-2: reset high speed USB device using ehci_hcd and address 6
Jul 26 14:49:01 localhost firmware_helper[3975]: **Loading of /lib/firmware/zd1211/zd1211b_ub for usb driver failed: No such file or directory**
Jul 26 14:49:01 localhost kernel: usb 5-2: Could not load firmware file zd1211/zd1211b_ub. Error number -2
Jul 26 14:49:01 localhost kernel: zd1211rw 5-2:1.0: couldn't load firmware. Error number -2
Jul 26 14:49:01 localhost kernel: usb 5-2: reset high speed USB device using ehci_hcd and address 6
Jul 26 14:49:02 localhost kernel: zd1211rw: probe of 5-2:1.0 failed with error -2
Jul 26 14:49:02 localhost kernel: usbcore: registered new interface driver zd1211rw

な具合で、**「firmwareがロードできない」**と仰せのようだ。

というわけで、最後にZD1211 USB WLAN Linux Driverからzd1211-firmwareをダウンロードし、/lib/firmware/zd1211/に展開してあげて万事OKだったという備忘録。(7月25日現在の最新版はzd1211-firmware 1.3)

またkernel最新版は7月25日現在2.6.22だが、2.6.22だとMADWIFI0.9.3ビルドできなかったので、8月14日にリリースされた 0.9.3.2 を使って幸せになろう。

参照

プラネックスコミュニケーションズ http://www.planex.co.jp/

SourceForge.net: zd1211 http://zd1211.wiki.sourceforge.net/

Linux Wireless http://www.linuxwireless.org/

WPA Supplicant http://hostap.epitest.fi/wpa_supplicant/