先人の皆さんの情報から、ここまで進めてきましたが、そもそも先人の方々は、どうやってこのやり方を見つけているのか疑問に思いました。そして、よくよく見ると、Ralink社からダウンロードして来たファイルにREADME_STA_usbというものがあり、そこにやり方がきちんと書かれていることがわかりました。
コンパイルまでは良しとして、その後、ドライバのロードは、kernel2.6では、
$/sbin/insmod rt2870sta.ko
$/sbin/ifconfig ra0 inet YOUR_IP up
とやるようです。
また、ドライバをアンロードする時は、
$/sbin/ifconfig ra0 down
$/sbin/rmmod rt2870sta
とするとのこと。私の場合、2870は、3070に置き換える必要がありそうです。
でも、2番目のifconfigを実行してみると、
SIOCSIFFLAGS: Permission denied
なるエラーが出てしまっています。もちろんsudoを使って実行しています。この件は、後ほど。
その後には、このドライバの設定の仕方が書かれています。
1.iwconfig カーネル情報(?)
2.iwpriv 使い方は、別のファイルを見ろと。
3.設定ファイル /etc/Wireless/RT2870STA/RT2870STA.datを修正する
調べる前に、コマンドを実行してみましょう。
$
iwconfig
ra0 Ralink STA ESSID:"" Nickname:""
Mode:Auto Frequency=2.412 GHz Access Point: Not-Associated
Bit Rate:1 Mb/s
RTS thr:off Fragment thr:off
Link Quality=10/100 Signal level:0 dBm Noise level:-87 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
となりました。
$
iwpriv
ra0 Available private ioctls :
set (8BE2) : set 1024 char & get 0
connStatus (0004) : set 1024 char & get 2047 char
driverVer (0005) : set 1024 char & get 2047 char
bainfo (0006) : set 1024 char & get 2047 char
descinfo (0007) : set 1024 char & get 2047 char
radio_off (000A) : set 1024 char & get 2047 char
radio_on (000B) : set 1024 char & get 2047 char
show (0015) : set 1024 char & get 2047 char
adhocEntry (0016) : set 1024 char & get 2047 char
bbp (8BE3) : set 2047 char & get 2047 char
mac (8BE5) : set 1024 char & get 1024 char
rf (8BF3) : set 2047 char & get 2047 char
e2p (8BE7) : set 1024 char & get 1024 char
stat (8BE9) : set 0 & get 2047 char
get_site_survey (8BED) : set 0 & get 1024 char
となりました。
3番目の設定ファイル
以下の項目の修正をするように書かれており、その他については、Readmeファイルを読めとなっています。
1.) Adhoc-modeを使う場合:NetworkTypeを "Adhoc"、その他の場合:Infrastructure
2.) auto-select on Infrastructure modeの場合:Channelを"0"に。
3.) 各自のAccss-pointに対するSSIDを設定。
4.) AuthModeを"WEPAUTO", "OPEN", "SHARED", "WPAPSK", "WPA2PSK", "WPANONE"のいずれかに設定。
5.) EncrypTypeを"NONE", "WEP", "TKIP", "AES"のいずれかに設定。
どのように設定ファイルを修正すべきか、詳細分析しないといけませんね。ここは後日考えましょう。
私の無線機器について、おさらいです。
手持ちの機器:BUFFALO WLI-UC-GN RT2870のチップを使っている模様
RT2870は、2T3Rという送信機2つ受信機3つもつチップで、ボードに実装するようなもののようです。おそらく無線ターミナルのようなもの用なのでしょう。
一方、RT3070は、1T1Rの送受信機が1つずつしかないもので、USBの小型アダプタ用として作られたもののようです。
ということで、手元のBUFFALO WLI-UC-GNは、恐らくRT3070が使われていると思われます。
少しお勉強
SheevaPlugの情報を見ていると、Ubuntuから変えられている方もいて、設定情報ファイルがUbuntuではどうしたらよいのかわからなかったりしたので、調べてみました。
デーモンの起動オプションを設定するために、Red Hat系(Fedora、CentOSなど)だと、/etc/sysconfig/ 以下にそれぞれのデーモンに分けてファイルが置かれている。debian系(Ubuntuはこれに属する)には /etc/sysconfig はない。debian は、/etc/default 以下に置かれているファイルが/etc/sysconfig に相当するディレクトリだということ。
調査していて、わからない言葉もついでに調べました。
wpa_supplicant:IEEE802.1X/WPAを無線LANクライアントに提供するツール。
簡単にいうとLinuxでWPA-PSKを設定したい場合はこのツールを使用。
アクセスポイント化にhotapdを使うという情報を見つけたので、調べます。
http://hostap.epitest.fi/hostapd/
hostapd:デーモン
これがサポートするドライバは、以下の4つ。
* Linux mac80211 drivers →BUFFALOではWLI-U2-KG54Lだけがサポート対象みたい
* Host AP driver for Prism2/2.5/3→Intersil社のPrism2/2.5/3 chipsetが対象
* madwifi (Atheros ar521x) →Atheros社のチップが対象の模様
* BSD net80211 layer (e.g., Atheros driver) (FreeBSD 6-CURRENT)
この情報からは、私の手持ちのものは、使えないような気がします。
さて、先ほどifconfigでエラーが出た件について検証してみました。
/etc/network$
sudo ifconfig ra0 down
/etc/network$
sudo ifconfig ra0 up
SIOCSIFFLAGS: Operation not permitted
エラーが出た時は、/var/log/messagesを見よとの情報(最初は、これに気づかなかった)があったので、見てみると、
/etc/network$
sudo tail /var/log/messages
Sep 5 20:24:18 SheevaPlug kernel: Sep 5 20:24:18 SheevaPlug kernel: -->RTUSBVenderReset
Sep 5 20:24:18 SheevaPlug kernel: Sep 5 20:24:19 SheevaPlug kernel: RtmpOSFileOpen(): Error 2 opening /etc/Wireless/RT2870STA/RT2870STA.dat
Sep 5 20:24:19 SheevaPlug kernel: Open file "/etc/Wireless/RT2870STA/RT2870STA.dat" failed!
Sep 5 20:24:19 SheevaPlug kernel: 1. Phy Mode = 0
Sep 5 20:24:19 SheevaPlug kernel: ERROR!!! RTMPReadParametersHook failed, Status[=0x00000001]
Sep 5 20:24:19 SheevaPlug kernel: ---> RTMPFreeTxRxRingMemory
Sep 5 20:24:19 SheevaPlug kernel: Sep 5 20:24:19 SheevaPlug kernel: !!! rt28xx Initialized fail !!!
どこかで見た情報と同じで、RT3070STAのはずが、2870を見に行っているようです。
そこで、対象のディレクトリ名、ファイル名を変更してしまいます。
そして、再度実行。
/etc/Wireless/RT2870STA$
sudo ifconfig ra0 up
/etc/Wireless/RT2870STA$
sudo tail /var/log/messages
Sep 5 20:31:18 SheevaPlug kernel: Key2Str is Invalid key length(0) or Type(0)
Sep 5 20:31:18 SheevaPlug kernel: Key3Str is Invalid key length(0) or Type(0)
Sep 5 20:31:18 SheevaPlug kernel: Key4Str is Invalid key length(0) or Type(0)
Sep 5 20:31:18 SheevaPlug kernel: 1. Phy Mode = 5
Sep 5 20:31:18 SheevaPlug kernel: 2. Phy Mode = 5
Sep 5 20:31:18 SheevaPlug kernel: RTMPSetPhyMode: channel is out of range, use first channel=1
Sep 5 20:31:18 SheevaPlug kernel: 3. Phy Mode = 9
Sep 5 20:31:18 SheevaPlug kernel: MCS Set = ff 00 00 00 01
Sep 5 20:31:18 SheevaPlug kernel: <==== rt28xx_init, Status=0
Sep 5 20:31:18 SheevaPlug kernel: 0x1300 = 00064300
設定を何もしていないので、正しくない部分もあるのでしょうが、エラーもなく、初期化作業を完了したようです。
$
iwlist ra0 scan
を実行すると、確かに周辺の電波を拾っているようで、その情報がちゃんと表示されました。
何とかクライアントモードとしては、動作したような感じです。
実は、私自身は、無線LANを使っていないので、クライアントモードでの検証はできません。これをアクセスポイント親機にしないと意味がないのです。
もう少し勉強が必要だなあ。