openHAB on Raspberry Pi: Appendix A

Raspberry Piの無線WiFi利用

今回はopenHABの動作とは本質的には関係ないのでおまけです。さらに手順が長くなるので2つに分けようと思います。

概略としてはこう分けようと思います。

  • WiFiドングルをデバイスとして認識
  • WPA2でアクセスポイントに接続

今回はWiFiドングルの認識をやります。

 

WiFiドングルをデバイスとして認識

Raspberry PiでWiFiを使っている人がいて、家にも1個使っていないのがあったので試そうと思いました。

デバイス認識などでとても参考になったのは以下のサイトです。

今回使ったのはWiFiドングルはこちらです。

 

(1) WiFiドングルを認識

制御のためのモジュールを入れたい。まずlsusbで現況確認します。

$ lsusb

    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

    Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.

    Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.

    Bus 001 Device 004: ID 0789:0168 Logitec Corp. LAN-W150N/U2 Wireless LAN Adapter

    Bus 001 Device 005: ID 413c:2105 Dell Computer Corp. Model L100 Keyboard

ここで分かったこと

  • デバイスの名前がLAN-W150N/U2
  • IDが0789:0168

 

(2) rt2800usbをmodprobeする

(i) モジュールをつっこむ

lsmodの出力がうまくHTML化できてないけど、とりあえずmodprobeで適切なモジュールが入ったことを確認してください。

  $ sudo modprobe rt2800usb

  $ lsmod

     Module         Size Used by

     aes_generic     32497 0

     arc4             1387 2

     rt2800usb       12481 0

     rt2800lib       48137 1 rt2800usb

     crc_ccitt        1553 1 rt2800lib

     rt2x00usb       11851 1 rt2800usb

     rt2x00lib       43907 3 rt2x00usb,rt2800lib,rt2800usb

     mac80211       251866 3 rt2x00lib,rt2x00usb,rt2800lib

     cfg80211       180452 2 mac80211,rt2x00lib

     snd_bcm2835     21505 0

     snd_pcm         80650 1 snd_bcm2835

     snd_page_alloc   5347 1 snd_pcm

     snd_seq         59372 0

     snd_seq_device   6916 1 snd_seq

     snd_timer       21638 2 snd_seq,snd_pcm

     snd             57253 5 snd_timer,snd_seq_device,snd_seq,snd_pcm,snd_bcm2835

     evdev            9470 0

 

(ii) /etc/modules を編集

毎回起動時に読み込まれるようにします。私の設定ファイルはこんな感じです。

----

# /etc/modules: kernel modules to load at boot time.

#

# This file contains the names of kernel modules that should be loaded

# at boot time, one per line. Lines beginning with "#" are ignored.

# Parameters can be specified after the module name.

snd-bcm2835

rt2800usb

----

これで起動時には読み出されるはず。ここまではよかったのですが、再起動後に指定のモジュールは入るけどネットワークのデバイスがiwconfig, ifconfigでもまったく見えなくて途方にくれました。

これをなんとかするには/etc/modprobe.d/に設定を追加する必要があります。

 

(iii) /etc/modprobe.d/usb-lan.conf の作成

実はmodprobe.d以下はよくわかっておりません。でもusbのIDを見てデバイスを認識しているっぽいということで以下のようにしました。usb-lan.confの中身は以下のようになります

install rt2800usb /sbin/modprobe --ignore-install rt2800usb; /bin/echo "0789 0168" > /sys/bus/usb/drivers/rt2800usb/new_id

 

(iV) /etc/udev/rules.d/70-persistent-net.rules を修正?確認?

修正内容を失念したのですが、以下のようなものになってます。

----

# USB device 0x2019:0xed14 (usb) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:01:8E:DC:C9:9B", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"

# USB device 0x:0x (rt2800usb) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:01:8e:dc:c9:9b", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan1"

----

2行とも同じような内容に見えますね。1行消してしまってもいいかもしれません

 

(V) 再起動。

iwconfigには無事にwlan1が出現

lo no wireless extensions.

eth0 no wireless extensions.

wlan1 IEEE 802.11bgn

      ESSID:off/any Mode:Managed Frequency:2.452 GHz Access Point: Not-Associated

      Tx-Power=20 dBm

      Retry long limit:7 RTS thr:off Fragment thr:off Power Management:on

 

まとめ

これでデバイスが認識できました。次回はwpa_supplicantとの合わせ技です