2010/10/02(Sat)FedoraでEeePC901の無線を使う

2010/10/02 0:16 Software::Linux
とある事情でEeePC901にFedoraをつっこんで無線デバイスを使いたかったのだが、手持ちのVAIO(iw3945abg)と同じ設定をしてやっても動かない……。
なんとかググって解決できたのでメモメモ。

検証環境

Machine: Eee PC 901
OS: Fedora 13 (x86)
Kernel: 2.6.34.7-56.fc13.i686.PAE-2.3.0.0-1.fc13.13.i686 (2010/10/01現在最新)

初期の挙動

どうやら無線インタフェースはRalink RT2860というデバイスらしいが、Fedora公式のEee PC - FedoraProject / Hardware supportに示されているように、901シリーズはWiFiがFedoraデフォルトのカーネルで使用できず、kmod-rt2860を使えと書いてある。

が、いやらしいことに、デフォルトカーネルでもある程度認識していて、iwlist wlan0 scanとか打つと、スキャンしたAP情報がツラツラと表示されてしまう。
ちなみにその時のカーメルモジュールの状態(このままだと使えない)
# lsmod | grep rt
rt2800pci               7743  0
rt2800lib              20795  1 rt2800pci
rt2x00usb               7629  1 rt2800lib
rt2x00pci               4999  1 rt2800pci
crc_ccitt               1229  1 rt2800pci
rt2x00lib              29883  4 rt2800pci,rt2800lib,rt2x00usb,rt2x00pci
mac80211              181979  3 rt2x00usb,rt2x00pci,rt2x00lib
cfg80211              110949  2 rt2x00lib,mac80211
eeprom_93cx6            1255  1 rt2800pci
iTCO_vendor_support     2027  1 iTCO_wdt

kmod-rt2860をインストール

このkmod-rt2860というのは、さっきのページの表のすぐしたに書いてあるように、rpmforge辺りから手に入るので、そのリポジトリをまず追加する。
# rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
# yum install kmod-rt2860-2.6.34.7-56.fc13.i686.PAE.i686
kmod-rt2860-から始まるパッケージはカーネルのバージョン毎にあるので、uname -rでカーネルバージョンを確認してから、それと全く同じ物(PAEの有り無しにも注意)をインストールすること。

で、先ほどまで読み込まれていた"rt2800なんとか"とか"rt2x00なんとか"をアンロードするのが面倒なので、再起動する。


すると、とりあえずra0というデバイスとして認識する。
# lsmod | grep rt
iTCO_vendor_support     2027  1 iTCO_wdt
rt2860sta             644300  0

# ifconfig ra0
ra0       Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          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)
          Interrupt:19
とりあえず、/etc/sysconfig/network-scripts/ifcfg-ra0を作成。
DEVICE=ra0
TYPE=Wireless
ONBOOT=no
HWADDR=XX:XX:XX:XX:XX:XX
IPV6INIT=yes
無線の設定自体は、/etc/Wireless/RT2860STA/RT2860STACard.datに書くらしい。
とりあえず設定した箇所は、CountryCode, SSID, Channel, AuthMode, EncrypType, WPAPSKの6カ所。*1
#The word of "Default" must not be removed
Default
CountryRegion=5
CountryRegionABand=7
CountryCode=JP ★国コード★
ChannelGeography=1
SSID=HOGEHOGE ★自分のSSID★
NetworkType=Infra
WirelessMode=5
Channel=6 ★チャンネル★
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=AES ★暗号方式★
WPAPSK=................................................................ ★wpa_passphaseで作成したPSK★
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_AutoBA=1
HT_BADecline=0
HT_AMSDU=0
HT_BAWinSize=64
HT_GI=1
HT_MCS=33
HT_MIMOPSMode=3
HT_DisallowTKIP=0
HT_STBC=0
IEEE80211H=0
TGnWifiTest=0
WirelessEvent=0
CarrierDetect=0
AntDiversity=0
BeaconLostTime=4
PSP_XLINK_MODE=0
接続テストしてみる。
# wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -i ra0 -D wext

CTRL-EVENT-DISCONNECTED - Disconnect event - remove keys
Trying to associate with XX:XX:XX:XX:XX:XX (SSID='HOGEHOGE ★自分のSSID★' freq=2437 MHz)
CTRL-EVENT-DISCONNECTED - Disconnect event - remove keys
CTRL-EVENT-DISCONNECTED - Disconnect event - remove keys
CTRL-EVENT-DISCONNECTED - Disconnect event - remove keys
Associated with XX:XX:XX:XX:XX:XX
WPA: Key negotiation completed with XX:XX:XX:XX:XX:XX [PTK=CCMP GTK=CCMP]
CTRL-EVENT-CONNECTED - Connection to XX:XX:XX:XX:XX:XX completed (auth) [id=0 id_str=]
^CCTRL-EVENT-TERMINATING - signal 2 received
Key negotiation completedとのことなので接続完了。続いて、wpa_supplicantの設定ファイル/etc/sysconfig/wpa_supplicantを書き換え。
INTERFACES="-i ra0"
DRIVERS="-D wext"
最後にデーモンを再起動し直して使えるようになりました、と。
# service wpa_supplicant restart
# chkconfig wpa_supplicant on

*1 : EncryptTypeでなくてEncrypTypeなのでtypo注意