BUFFALO USB無線LAN WLI-UC-GN を Archlinux で使用する
標準のArchlinuxでは動作しないUSB無線LAN WLI-UC-GN
http://buffalo.jp/products/catalog/network/wli-uc-gn/
を使用するための方法。ドライバにパッチ当ててビルドし、設定ファイルを書く。
(追記,少なくともkernel 2.6.36.2ではモジュールの読み込みを禁止するだけでよい)
何もしない場合はうまく動かない
とりあえず,起動中のArchlinuxにさしてみた.
% dmesg | tail wlan0: RX AssocResp from 00:24:a5:c5:1d:58 (capab=0x31 status=0 aid=1) wlan0: associated Intel AES-NI instructions are not detected. padlock: VIA PadLock not detected. usb 1-7: new high speed USB device using ehci_hcd and address 5 phy1: Selected rate control algorithm 'minstrel' Registered led device: rt2800usb-phy1::radio Registered led device: rt2800usb-phy1::assoc Registered led device: rt2800usb-phy1::quality usbcore: registered new interface driver rt2800usb
あれ,普通に認識してね?
% sudo netcfg airstation
// airstation がウチの無線LAN親機
:: airstation up [BUSY] > WPA Authentication/Association Failed [FAIL]
が,ダメ!!
% lsusb ... Bus 001 Device 005: ID 0411:015d MelCo., Inc. Buffalo WLI-UC-GN Wireless LAN Adapter [Ralink RT2870] ...
なんか認識できてるっぽいんだけどねー.
追記 (2010年 12月 27日 月曜日)
Archlinuxのkernel 2.6.36.2にあるrt2870staで動きました.
ただし次のモジュール読み込みを禁止:rt2800usb, rt2800lib, rt2x00usb.
環境等
- Arch Linux (kernel 2.6.35.8)
- wireless_tools 29-3
webで調べてみた
参考
http://slashdot.jp/~ymitsu/journal/494533
http://masaoo.blogspot.com/2009/06/ubuntu-usb-lan-buffalo-wli-uc-gn.html
https://forums.ubuntulinux.jp/viewtopic.php?id=7557
http://www.ansaldocomputing.com/ubuntu-10-10-maverick-issues-with-wli-uc-gn-wireless-adapter.html
分かったこと
- 使用チップは Ralink RT3070.RT2870ではないらしい.
- Ralinkは公式でLinuxドライバを出している.
http://www.ralinktech.com/support.php?s=2
- どうやら動くらしい
- rt2800usb, rt2800lib, rt2x00usbを読み込まないようにすると良いかも?
AURにrt3070usbという,ドンピシャのパッケージがあるが,このパッケージに必要な
ドライバファイルは公式サイトにはもうない.もうないのだ.
よろしいならば,自分で作ろうではないか.
モジュールの作成
http://www.ralinktech.com/support.php?s=2
からRT3070USB(RT307x)の用のドライバファイル
DPO_RT3370_LinuxSTA_V2.4.0.1_20100831.tgz をもらう.
このとき,何故か名前とメールアドレスを入力しなくてはいけない
(メールにダウンロードURLが遅られてくるとか,そういうことはないので恐らくデタラメでもOK?)
基本的に
http://aur.archlinux.org/packages.php?ID=38021
に従う.
PKGBUILD
pkgname=rt3370 pkgver=2.4.0.1 _pkgdate=20100831 pkgrel=1 pkgdesc="Kernel module and firmware for RaLink RT3070USB WiFi adapter" url="http://eng.ralinktech.com.tw/support.php?s=2" license=('GPL') arch=('i686' 'x86_64') depends=('kernel26') install=${pkgname}.install backup=(etc/Wireless/RT2870STA/RT2870STA.dat) source=(DPO_RT3370_LinuxSTA_V${pkgver}_${_pkgdate}.tgz WLI-UC-GN.patch) build() { cd $srcdir/DPO_RT3370_LinuxSTA_V${pkgver}_${_pkgdate} sed -i /"tftpboot"/d Makefile patch -Np1 < ${srcdir}/WLI-UC-GN.patch make install -D -m 644 -c RT2870STA.dat ${pkgdir}/etc/Wireless/RT2870STA/RT2870STA.dat install -D -m 755 -c os/linux/rt3370sta.ko ${pkgdir}/lib/modules/$(uname -r)/kernel/drivers/net/wireless/rt3370sta.ko install -D -m 644 -c README_STA_usb ${pkgdir}/usr/share/doc/${pkgname}/README_STA_usb install -m 644 -c *.txt ${pkgdir}/usr/share/doc/${pkgname}/ install -m 644 -c *.dat ${pkgdir}/usr/share/doc/${pkgname}/ } md5sums=('1f73af693f88f0bc468b5489bfbef282' '25f7cb8dd8155d4a5859e862f08ded96')
WLI-UC-GN.patch
diff -Naur DPO_RT3370_LinuxSTA_V2.4.0.1_20100831.orig/common/rtusb_dev_id.c DPO_RT3370_LinuxSTA_V2.4.0.1_20100831/common/rtusb_dev_id.c --- DPO_RT3370_LinuxSTA_V2.4.0.1_20100831.orig/common/rtusb_dev_id.c 2010-09-01 10:47:30.000000000 +0900 +++ DPO_RT3370_LinuxSTA_V2.4.0.1_20100831/common/rtusb_dev_id.c 2010-10-30 22:33:04.371980004 +0900 @@ -109,6 +109,7 @@ {USB_DEVICE(0x0789,0x0166)}, /* Edimax */ {USB_DEVICE(0x0DB0,0x822B)}, /* MSI 3070*/ {USB_DEVICE(0x0DB0,0x871B)}, /* MSI 3070*/ + {USB_DEVICE(0x0411,0x015d)}, /* WLI-UC-GN */ #endif // RT3070 // #ifdef RT3370 {USB_DEVICE(0x148F,0x3370)}, /* Ralink 3370 */ diff -Naur DPO_RT3370_LinuxSTA_V2.4.0.1_20100831.orig/os/linux/config.mk DPO_RT3370_LinuxSTA_V2.4.0.1_20100831/os/linux/config.mk --- DPO_RT3370_LinuxSTA_V2.4.0.1_20100831.orig/os/linux/config.mk 2010-08-31 18:12:20.000000000 +0900 +++ DPO_RT3370_LinuxSTA_V2.4.0.1_20100831/os/linux/config.mk 2010-10-30 22:29:37.478667450 +0900 @@ -26,10 +26,10 @@ HAS_APCLI=n # Support Wpa_Supplicant -HAS_WPA_SUPPLICANT=n +HAS_WPA_SUPPLICANT=y # Support Native WpaSupplicant for Network Maganger -HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n +HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y #Support Net interface block while Tx-Sw queue full HAS_BLOCK_NET_IF=n
rt3370.install
post_install() { /sbin/depmod -a } post_upgrade() { /sbin/depmod -a } post_remove() { /sbin/depmod -a }
設定等
モジュールのロード
% sudo modprobe rt3370sta
邪魔なモジュールのロードを禁止するために
/etc/modprobe.d/modprobe.conf
# WLI-UC-GN blacklist rt2800usb blacklist rt2800lib blacklist rt2x00usb
としておく.多分,/etc/rc.confでも設定できるはず.
ちょっとよく分からないのだが,どうやら
/etc/Wireless/RT2870STA/RT2870STA.dat
に色々書かないとうまく動かないみたい.
#The word of "Default" must not be removed Default CountryRegion=0 CountryRegionABand=7 CountryCode=JP ChannelGeography=1 SSID=<ESSID> NetworkType=Infra WirelessMode=5 Channel=0 BeaconPeriod=100 TxPower=100 BGProtection=0 TxPreamble=0 RTSThreshold=2347 FragThreshold=2346 TxBurst=1 PktAggregate=0 WmmCapable=1 AckPolicy=0;0;0;0 AuthMode=WPA2PSK EncrypType=TKIP WPAPSK=<PASS> DefaultKeyID=1 Key1Type=0 Key1Str= Key2Type=0 Key2Str= Key3Type=0 Key3Str= Key4Type=0 Key4Str= PSMode=CAM AutoRoaming=0 RoamThreshold=70 APSDCapable=0 APSDAC=0;0;0;0 HT_RDG=1 HT_EXTCHA=0 HT_OpMode=0 HT_MpduDensity=4 HT_BW=1 HT_BADecline=0 HT_AutoBA=1 HT_AMSDU=0 HT_BAWinSize=64 HT_GI=1 HT_MCS=33 HT_MIMOPSMode=3 HT_DisallowTKIP=1 HT_STBC=0 EthConvertMode= EthCloneMac= IEEE80211H=0 TGnWifiTest=0 WirelessEvent=0 MeshId=MESH MeshAutoLink=1 MeshAuthMode=OPEN MeshEncrypType=NONE MeshWPAKEY= MeshDefaultkey=1 MeshWEPKEY= CarrierDetect=0 AntDiversity=0 BeaconLostTime=4 FtSupport=0 Wapiifname=ra0 WapiPsk= WapiPskType= WapiUserCertPath= WapiAsCertPath= PSP_XLINK_MODE=0 WscManufacturer= WscModelName= WscDeviceName= WscModelNumber= WscSerialNumber= RadioOn=1
自分はnetcfgを使用している。
/etc/network.d/foo
CONNECTION="wireless" DESCRIPTION="A simple WPA encrypted wireless connection" INTERFACE="ra0" SECURITY="wpa"