snagplaces on @wiki
無線LAN:RaLink 0781の認識
最終更新:
snagplaces
-
view
最終更新日時:2009年12月18日 (金) 15時20分08秒[編集]
はじめに
有線同様、認識しなかった無線LANを認識させてみます。
EeeBoxに搭載している無線LANは、よくあるAtherosやIntelではなくRaLink 0781というもののようです。
EeeBoxに搭載している無線LANは、よくあるAtherosやIntelではなくRaLink 0781というもののようです。
注意事項
- コンパイルされたものはkernelのバージョンに依存するため、kernelがアップデートされる度に再コンパイルしないと動作しなくなります。
参考サイト
- どぶお/Linuxで遊ぼう!/Eee PC 901-XでVine Linux - BioKids Wiki
- Eee PC 901 と eeeUbuntu 8.04の無線LANについてのメモ - Mattari Memo
- Wireless: Ralink の rt2860sta.ko ドライバをインストールする
- G2labo @Blogger: Fedora9@設定2
- Linux Certif - Man ifcfg(5)
デバイスの確認
# lspci -v 03:00.0 Network controller: RaLink Unknown device 0781 Subsystem: RaLink Unknown device 2790 Flags: bus master, fast devsel, latency 0, IRQ 10 Memory at fe7f0000 (32-bit, non-prefetchable) [size=64K] Capabilities: [40] Power Management version 3 Capabilities: [50] Message Signalled Interrupts: 64bit+ Queue=0/5 Enable- Capabilities: [70] Express Endpoint IRQ 0
「RaLink Unknown device 0781:2790」というのがわかりました。Unknown deviceというのが気になりますが。
いろいろ調べたところ、これはRaLink社で配布しているRT2860というドライバで動くようです。
いろいろ調べたところ、これはRaLink社で配布しているRT2860というドライバで動くようです。
ドライバのインストール
ダウンロード
RaLinkのサイトから該当するドライバをダウンロードします。
- ダウンロード先
- http://www.ralinktech.com/support.php?s=2
- 該当ファイル
- RT2860PCI/mPCI/PCIe/CB(RT2760/RT2790/RT2860/RT2890) ※ドライバ。Firmwareもありますが、これはVine系用みたい
# wget http://www.ralinktech.com.tw/data/drivers/2008_0918_RT2860_Linux_STA_v1.8.0.0.tar.bz2
ドライバの解凍とインストール
RaLinkのドライバは基本ドライバ以外にRaLink固有の設定ファイル(ユーティリティ)を使用する方法と、wpa_supplicantを使用する方法の二通りあります。今回はwpa_supplicantを使わず、RaLinkのユーティリティを使う方法で認識させます。
解凍
解凍
# tar vjxf 2008_0918_RT2860_Linux_STA_v1.8.0.0.tar.bz2
コンパイル
# cd 2008_0918_RT2860_Linux_STA_v1.8.0.0 # make
インストール
# paco -D make install
[▲上へ]
WPA-PSKネットワークキーの作成
RT2860STA.datに設定するネットワークキーは暗号化済みのものを記述する必要があります。
設定編集の前にあらかじめキーを作成し、コピーしておきましょう(下線の部分)。
設定編集の前にあらかじめキーを作成し、コピーしておきましょう(下線の部分)。
# wpa_passphrase SSID パスフレーズ ※例: # wpa_passphrase GW-MF54G2 hogeHOGE network={ ssid="GW-MF54G2" #psk="hogeHOGE" psk=885402644dc720f6c60fdc4dbb37506c2097de4f5cf6d03c29b42c8ef5af5141 }
「psk=***」の部分をコピーしておきます。
[▲上へ]
設定ファイルの編集
RaLinkのドライバはifcfg-xxx0の設定以外にRT2860STA.datという専用のファイルで行います。各項目の説明は、README_STAの180行目あたりに載ってます。
今回は無線通信の方式をWPAPSK、暗号化はTKIPで行います。あらかじめ無線ルータの設定もしておいてください。無線ルータはPlanex GW-MF54G2を使用しました。
今回は無線通信の方式をWPAPSK、暗号化はTKIPで行います。あらかじめ無線ルータの設定もしておいてください。無線ルータはPlanex GW-MF54G2を使用しました。
RT2860STA.datの編集
# vi -b /etc/Wireless/RT2860STA/RT2860STA.dat ※設定ファイルはかならず-bでバイナリ形式で開くこと 【5行目あたり変更】国コード CountryCode=JP 【7行目あたり変更】SSID SSID=GW-MF54G2 【10行目あたり変更】無線周波数帯(チャンネル) Channel=2 ※Autoの設定はないようなので明示する必要があります。 【21行目あたり変更】認証方式 AuthMode=WPAPSK 【22行目あたり変更】暗号化方式 EncrypType=TKIP 【23行目あたり変更】ネットワークキー WPAPSK=e21557149a241d690962a30cb4eef119f843fb14b2201557ab5b644a5e69c3a8 【41行目あたり変更】無線の形態(自動) HT_MpduDensity=0 【42行目あたり変更】1チャネルあたりの周波数幅を20MHzに固定 HT_BW=0 【43行目あたり変更】Bandなんたらを自動にしない? HT_AutoBA=0
必要な項目だけ記述するだけではちゃんと動作しないみたいなので、Defaultのファイルを元に設定を変更していったほうが無難です。ちなみに、この設定ファイル1本でWEP用の設定もできるようになっているそうです。
ifcfg-ra0の編集
ネットワーク用の設定ファイルifcfg-ra0を編集します。
ドライバを読む際にath0でもwlan0でもなくra0として認識するので、設定ファイルもそれに合わせて「ifcfg-ra0」という形になります。
有線LANなどの一般的な設定をifcfg-ra0に記述してネットワークに接続させると問題なく繋がるのですが、以下のようなエラーメッセージが出ます。
ドライバを読む際にath0でもwlan0でもなくra0として認識するので、設定ファイルもそれに合わせて「ifcfg-ra0」という形になります。
有線LANなどの一般的な設定をifcfg-ra0に記述してネットワークに接続させると問題なく繋がるのですが、以下のようなエラーメッセージが出ます。
Error for wireless request "Set Mode" (8B06) : SET failed on device ra0 ; Network is down. Error for wireless request "Set Frequency" (8B04) : SET failed on device ra0 ; Network is down. Error for wireless request "Set Bit Rate" (8B20) : SET failed on device ra0 ; Network is down. Error for wireless request "Set Encode" (8B2A) : SET failed on device ra0 ; Network is down.
「Linux Certif - Man ifcfg(5)」によると、ifcfgにはWifi用の指定方法がちゃんとあるようで、この記述に従って設定を行うとある程度エラー抑えることができました(それでも Set FrequencyとSet Encodeは消えなかった)。
本来はこの辺のエラーが出るとつながらなくなるものなのでしょうが、IPアドレス関係の設定以外はすべて RT2860STA.datにあるため接続できるのだろうなと思います。気になる方は設定してみてください。
本来はこの辺のエラーが出るとつながらなくなるものなのでしょうが、IPアドレス関係の設定以外はすべて RT2860STA.datにあるため接続できるのだろうなと思います。気になる方は設定してみてください。
以下の設定項目は、外部公開用のIPアドレス固定指定と、上記の対策をできるだけ行ったものになっています。ESSIDやらはすでにRT2860~で設定済みなので、実際は書かなくてもいいはずの項目です。
# vi /etc/sysconfig/network-scripts/ifcfg-ra0 DEVICE=ra0 BOOTPROTO=none IPADDR=192.168.24.202 NETMASK=255.255.255.0 BROADCAST=192.168.24.255 GATEWAY=192.168.24.1 USERCTL=no HWADDR=WifiのMACアドレス ONBOOT=yes TYPE=Wireless IPV6INIT=no PEERDNS=yes MII_NOT_SUPPORTED=yes WIRELESS_ESSID=GW-MF54G2 WIRELESS_ENC_KEY=xxxx-xxxx-xxxx-xxxx-… ※iwconfigのEncryption keyの値 CHANNEL=2 WIRELESS_MODE=Managed WIRELESS_RATE=Auto WIRELESS_FREQ=2.417GHz ※iwconfigのFrequencyの値
いろいろ設定はしましたが、Set Encode・Set Freqencyのエラーは消えませんでした。それでも問題なくつながってはいるんですが・・・
もしWifiをメインで使用する場合は有線LANの設定ファイル(ifcfg-eth0)のONBOOTをnoにしてください。
もしWifiをメインで使用する場合は有線LANの設定ファイル(ifcfg-eth0)のONBOOTをnoにしてください。
デバイスの関連付け
# vi /etc/modprobe.conf 【追記】 alias ra0 rt2860sta
これで再起動してもWifiで接続できます。
[▲上へ]
なんかエラー出てる
ログを眺めていると、「kernel: ERROR!!! RTMPCancelTimer failed, Timer hasn't been initialize!」というエラーが10分ごとに出ています。
キーワードで調べるとrt2860staがなにかしている位しかわからず、明確な解決方法が見つかりませんでした。
RaLinkのサイトでは比較的ドライバの更新が頻繁なので、更新しているうちに治るかもしれませんが・・・
一応、該当しそうなログも貼っておきます。
キーワードで調べるとrt2860staがなにかしている位しかわからず、明確な解決方法が見つかりませんでした。
RaLinkのサイトでは比較的ドライバの更新が頻繁なので、更新しているうちに治るかもしれませんが・・・
一応、該当しそうなログも貼っておきます。
Nov 9 20:54:24 ***** kernel: ip_conntrack version 2.4 (8125 buckets, 65000 max) - 228 bytes per conntrack Nov 9 20:54:24 ***** kernel: RX DESC f76a0000 size = 2048 Nov 9 20:54:24 ***** kernel: <-- RTMPAllocTxRxRingMemory, Status=0 Nov 9 20:54:24 ***** kernel: Key1Str is Invalid key length(0) or Type(0) Nov 9 20:54:24 ***** kernel: Key2Str is Invalid key length(0) or Type(0) Nov 9 20:54:24 ***** kernel: Key3Str is Invalid key length(0) or Type(0) Nov 9 20:54:24 ***** kernel: Key4Str is Invalid key length(0) or Type(0) Nov 9 20:54:24 ***** kernel: 1. Phy Mode = 9 Nov 9 20:54:24 ***** kernel: 2. Phy Mode = 9 Nov 9 20:54:24 ***** kernel: 3. Phy Mode = 9 Nov 9 20:54:24 ***** kernel: MCS Set = ff ff 00 00 00 Nov 9 20:54:24 ***** kernel: <==== rt28xx_init, Status=0 Nov 9 20:54:24 ***** kernel: 0x1300 = 00064300 Nov 9 20:54:24 ***** kernel: ERROR!!! RTMPCancelTimer failed, Timer hasn't been initialize! Nov 9 20:54:24 ***** kernel: r8169: eth0: link down
[▲上へ]