2014年2月17日月曜日

WiFiドングルの設定

やっぱりWiFiははずせないでしょうということで、
WiFiドングルの設定をしました。
raspbianとかでは、ほとんどそのまま使えるようですね。
yoctoでは一手間かかりました。

使ったものは、BUFFALO WLI-UC-GNMです。
アクセスポイントにはiPhone5を使ってます。
いろいろと実績がありそうなところで決定しました

ドライバが対応していれば、設定なしで使えるはずなんで、
とりあえず、さしてみました。とりゃ。
[  254.840065] usb 1-1.2: new high-speed USB device number 4 using dwc_otg
[  254.976531] usb 1-1.2: New USB device found, idVendor=0411, idProduct=01a2
[  254.983961] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  254.991775] usb 1-1.2: Product: 802.11 n WLAN
[  254.996185] usb 1-1.2: Manufacturer: Ralink
[  255.000948] usb 1-1.2: SerialNumber: 1.0
[  255.068465] cfg80211: Calling CRDA to update world regulatory domain
[  255.240003] usb 1-1.2: reset high-speed USB device number 4 using dwc_otg
[  255.369540] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 3070, rev 0201 detected
[  255.407904] ieee80211 phy0: rt2x00_set_rf: Info - RF chipset 0005 detected
[  255.435535] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[  255.463714] usbcore: registered new interface driver rt2800usb
あっ、いけそうじゃないですか?みたいな。
ちょっと、起こしてみると。
root@raspberrypi:~# ifconfig wlan0 up
ifconfig: SIOCSIFFLAGS: No such file or directory

[   45.356373] ieee80211 phy0: rt2x00lib_request_firmware: Info - Loading firmware file 'rt2870.bin'
[   45.372666] ieee80211 phy0: rt2x00lib_request_firmware: Error - Failed to request Firmware
あー、ファームウェアがないですね。
つーか、そんなもんどこから?みたいな。

途中格闘しましたが、結果的にはyoctoにすでにありました。
個別に手動で入れるにはこんなかんじです。
まず、ビルドして、
$ bitbake linux-firmware
...
$ ls tmp/deploy/rpm/all/|grep linux-firmware-ralink
linux-firmware-ralink-0.0+git0+600caefd83-r0.all.rpm
ターゲットでインストールします。
root@raspberrypi:~# rpm -ivh ./linux-firmware-ralink-0.0\+git0\+600caefd83-r0.all.rpm
Preparing...                ########################################### [100%]
   1:linux-firmware-ralink  ########################################### [100%]
root@raspberrypi:~#

次に設定なんですが、、、ここでもひともんちゃくありまして。
いまだによくわからないんですが、、、
どうやらconnmanと/etc/network/interfacesの設定がぶつかっているようで、
どっちかにしないとうまくいかないです。やむをえない。

ということで、まず、古き良き設定から。
とりあえず、connmanを止めます。
root@raspberrypi:~# mv /etc/rc5.d/S05connman /etc/rc5.d/K05connman
そして、wpa_supplicant.confをバックアップを取ってから、
パスフレーズを設定します。
root@raspberrypi:~# mv /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.orig
root@raspberrypi:~# wpa_passphrase my_access_point passphrase > /etc/wpa_supplicant.conf
バックグラウンドモードで動かしますが、
うまくいかないときは-Bをとってエラーログをみると吉かもしれません。
root@raspberrypi:~# wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
Successfully initialized wpa_supplicant
そのあと、udhcpcを動かして、ip addressが取れれば成功です。
root@raspberrypi:~# udhcpc -i wlan0
udhcpc (v1.21.1) started
Sending discover...
Sending discover...
Sending discover...
Sending select for 172.20.10.5...
Lease of 172.20.10.5 obtained, lease time 85536
これを自動化するには、/etc/network/interfacesに書けばいいんですが、
デフォルトである程度書いてあります。
root@raspberrypi:~# vi /etc/network/interfaces
...
# Wireless interfaces
iface wlan0 inet dhcp
        wireless_mode managed
        wireless_essid any
        wpa-driver wext
        wpa-conf /etc/wpa_supplicant.conf
...
ので、あとは、auto wlan0ぐらいを足しましょう。

次は、connmanの場合です。
connmanの設定には、connmanctlというツールが必要になりました。
core-image-satoでは、すでにビルドされていると思いますが、
インストールされていませんので、、
root@raspberrypi:~# rpm -ivh connman-client-1.20-r0.armv6_vfp.rpm
Preparing...                ########################################### [100%]
   1:connman-client         ########################################### [100%]
root@raspberrypi:~#
あとは、connmanctlを使って設定していきます。
root@raspberrypi:~# connmanctl
connmanctl> enable wifi
Enabled wifi
connmanctl> scan wifi
Scan completed for wifi
connmanctl> services
*AO Wired                ethernet_b827ebe52c77_cable
    my_access_point      wifi_b0c745ab05e6_4e6973692d6970686f6e65_managed_psk
    logitec2nd66         wifi_b0c745ab05e6_6c6f6769746563326e643636_managed_wep
    AP0034862080         wifi_b0c745ab05e6_415030303334383632303830_managed_psk
    AP1034862080         wifi_b0c745ab05e6_415031303334383632303830_managed_psk
    AP2034862080         wifi_b0c745ab05e6_415032303334383632303830_managed_psk
    AiMacExtreme         wifi_b0c745ab05e6_41694d616345787472656d65_managed_psk
    logitec66            wifi_b0c745ab05e6_6c6f67697465633636_managed_psk
connmanctl> agent on
Agent registered
connmanctl> connect wifi_b0c745ab05e6_4e6973692d6970686f6e65_managed_psk
  Passphrase = [ Type=psk, Requirement=mandatory ]
  Passphrase?  
ここらへんの設定は、/var/lib/connman/の下に作られるみたいですが、
手動で編集は厳しそうな感じでした。
そして、/etc/network/interfacesの
auto eth0
auto wlan0
あたりを無効にしておくと良いようです。 あ、あと、さっき/etc/rc5.d/K05connmanにした人は
S05connmanに戻しておいてくださいね。

とまぁ、こんなかんじなんですが、、、
イマイチなんか不安定なんですよね。
USBの電力不足(HUBとマウスとキーボードがささってます)なんですかねぇ?
やむを得ないんでしょうけど。

参考:
http://elinux.org/RPi_USB_Wi-Fi_Adapters
http://www.linux.com/learn/tutorials/374514-control-wireless-on-the-linux-desktop-with-these-tools
https://wiki.archlinux.org/index.php/Connman

0 件のコメント :

コメントを投稿