Raspberry Pi
Raspbian

Raspberry Pi 2 で Planex GW-450D を使う(セルフコンパイル)

Raspberry Pi 2 に
カッ飛び! 11ac Planex GW-450D
http://www.planex.co.jp/products/gw-450d/
を接続し、Raspbian で使用できるようにする手順です。

Raspberry Pi 2 kernel セルフコンパイル に従って kernel compile と新しい kernel での起動が完了したら、
GW-450D のドライバーをビルドします。

source 入手

planex のサイトからドライバーのソースコードを入手します。
http://www.planex.co.jp/support/download/gw-450d/driver_linux.shtml
使用許諾の同意確認があり直接ダウンロードするリンクがないので、wget などで Raspbian 上に直接ダウンロードできません。
PC のブラウザでダウンロードしておいて scp などで Raspberry Pi 2 上にコピーします。

展開

ソースコードアーカイブを展開します。
zip の中に tar で固められ bzip2 で圧縮されたドライバーのソースコード本体があります。

pi@raspberrypi ~ $ cd src/
pi@raspberrypi ~/src $ unzip gw-450d_driver_linux_v3002.zip
pi@raspberrypi ~/src $ mv gw-450d_driver_linux_v3002/mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2 .
pi@raspberrypi ~/src $ tar xvf mt7610u_wifi_sta_v3002_dpo_20130916.tar.bz2
pi@raspberrypi ~/src $ cd mt7610u_wifi_sta_v3002_dpo_20130916/

patch

Raspberry Pi 2 + kernel 4.1.6 で5GHz対応WifiドングルGW-450Dを動かした
http://neuralassembly.blogspot.jp/2015/09/raspberry-pi-2-kernel-416-5ghzwifigw.html
で公開して下っている patch を当てます。

pi@raspberrypi ~/src/mt7610u_wifi_sta_v3002_dpo_20130916 $ wget https://raw.githubusercontent.com/neuralassembly/raspi/master/gw-450d/gw-450d-rpi-kernel41.patch
pi@raspberrypi ~/src/mt7610u_wifi_sta_v3002_dpo_20130916 $ patch -p0 < gw-450d-rpi-kernel41.patch
patching file common/rtusb_dev_id.c
patching file include/os/rt_linux.h
patching file os/linux/config.mk
patching file os/linux/rt_linux.c
patching file sta/sta_cfg.c
patching file common/cmm_info.c

ビルド

ビルドします。
正常に完了すると mt7650u_sta.ko ができます。

pi@raspberrypi ~/src/mt7610u_wifi_sta_v3002_dpo_20130916 $ sudo -s
root@raspberrypi:/home/beat/src/mt7610u_wifi_sta_v3002_dpo_20130916# time make 2>&1 | tee make.log
〜〜 中略 〜〜
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/pi/src/mt7610u_wifi_sta_v3002_dpo_20130916/os/linux/mt7650u_sta.mod.o
  LD [M]  /home/pi/src/mt7610u_wifi_sta_v3002_dpo_20130916/os/linux/mt7650u_sta.ko
make[1]: Leaving directory '/usr/src/linux'
cp -f /home/beat/src/mt7610u_wifi_sta_v3002_dpo_20130916/os/linux/mt7650u_sta.ko /tftpboot 2>/dev/null || :

real    7m18.044s
user    6m45.910s
sys     0m20.800s

モジュールのサイズは18Mあります。

root@raspberrypi:/home/beat/src/mt7610u_wifi_sta_v3002_dpo_20130916# ls -alh os/linux/mt7650u_sta.ko
-rw-r--r-- 1 root root 18M Nov  5 20:12 os/linux/mt7650u_sta.ko

インストール

make install はせずコピーして depmod します。

root@raspberrypi:/home/pi/src/mt7610u_wifi_sta_v3002_dpo_20130916# cp -p os/linux/mt7650u_sta.ko /lib/modules/4.1.10-v7+/kernel/drivers/net/wireless/
root@raspberrypi:/home/pi/src/mt7610u_wifi_sta_v3002_dpo_20130916# depmod -a

設定ファイルの配置

ドライバーの設定ファイルを置くディレクトリを作成し設定ファイルを配置します。

root@raspberrypi:/home/pi/src/mt7610u_wifi_sta_v3002_dpo_20130916# mkdir -p /etc/Wireless/RT2870STA
root@raspberrypi:/home/pi/src/mt7610u_wifi_sta_v3002_dpo_20130916# cp RT2870STA.dat /etc/Wireless/RT2870STA/

load 確認

kernel module のインストールが済んだ状態で GW-450D を Raspberry Pi 2 に挿すと
mt7650u_sta.ko が load され、ra* というネットワークインタフェースができます。

root@raspberrypi:~# lsmod
Module                  Size  Used by
cfg80211              410393  0
rfkill                 15913  1 cfg80211
mt7650u_sta           906627  1
bcm2835_gpiomem         2860  0
uio_pdrv_genirq         2924  0
uio                     7784  1 uio_pdrv_genirq
i2c_dev                 5610  0
snd_bcm2835            19808  3
snd_pcm                73405  1 snd_bcm2835
snd_timer              17657  1 snd_pcm
snd                    50337  9 snd_bcm2835,snd_timer,snd_pcm
fuse                   79934  3
ipv6                  336324  34
root@raspberrypi:~# iwconfig
ra0       Ralink STA  ESSID:""  Nickname:"MT7610U_STA"
          Mode:Auto  Frequency=2.412 GHz  Access Point: Not-Associated
          Bit Rate:1 Mb/s
          RTS thr:off   Fragment thr:off
          Encryption key:off
          Link Quality=10/100  Signal level:0 dBm  Noise level:0 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

lo        no wireless extensions.

eth0      no wireless extensions.

ネットワーク設定

/etc/network/interfaces の wlan0 の下に ra0 の設定項目を作成します。
接続したいアクセスポイントの SSID とパスフレーズを設定します。

# vi /etc/network/interfaces
(以下を記述)
allow-hotplug ra0
auto ra0
iface ra0 inet manual
wpa-ssid "your-ssid"
wpa-psk "your-passwd"

設定ファイルの編集

認証方式や暗号化方式は wpa_supplicant が自動で設定し上記の設定で接続できるはずですが、
アクセスポイントの設定によっては接続できないことがあるかもしれません
その場合は認証方式や暗号化方式を明示的に設定ファイルに設定します。

SSID=
AuthMode=WPA2PSK
EncrypType=TKIP

SSID はネットワーク設定で設定しているので空にします。
AuthMode に設定可能な値は WEPAUTO、OPEN、SHARED、WPAPSK、WPA2PSK、WPANONE
EncrypType に設定可能な値は NONE、WEP、TKIP、AES
です。

そのほかの /etc/Wireless/RT2870STA/RT2870STA.dat の各設定項目に設定できる値の詳細は、
ドライバーソースのアーカイブの中の
mt7610u_wifi_sta_v3002_dpo_20130916/doc/README_STA_usb
に書かれています。

再起動

設定を完了して再起動すると、以下のように IP アドレスが取得できています。

root@raspberrypi:~# ifconfig
eth0      Link encap:Ethernet  HWaddr b8:27:eb:c2:87:00
          inet addr:192.168.0.145  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::ba27:ebff:fec2:8700/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:70510 errors:0 dropped:10715 overruns:0 frame:0
          TX packets:5921 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:12997010 (12.3 MiB)  TX bytes:927393 (905.6 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1104 (1.0 KiB)  TX bytes:1104 (1.0 KiB)

ra0       Link encap:Ethernet  HWaddr 00:22:cf:ed:11:cd
          inet addr:192.168.0.152  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::1fef:b53:2e47:12de/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:237874 errors:0 dropped:8164 overruns:0 frame:0
          TX packets:1756 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:46173923 (44.0 MiB)  TX bytes:117107 (114.3 KiB)
root@raspberrypi:~# iwconfig
ra0       Ralink STA  ESSID:"Beatcraft2"  Nickname:"MT7610U_STA"
          Mode:Managed  Frequency=2.442 GHz  Access Point: 00:3A:9D:91:93:BE
          Bit Rate=54 Mb/s
          RTS thr:off   Fragment thr:off
          Encryption key:00D4-3E01-8CE2-6AE9-69D8-32D7-92E1-7C02 [3]   Security mode:open
          Link Quality=98/100  Signal level:-46 dBm  Noise level:-49 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0 

lo        no wireless extensions.

eth0      no wireless extensions.

トラブルシュート

接続がうまくいかない場合は、/var/log/syslog の中の
wpa_supplicant や dhcpcd のログで状況を確認します。
接続成功時には以下のようなログが出力されています。

Oct 16 19:15:08 raspberrypi kernel: [   14.122857] cfg80211: Calling CRDA to update world regulatory domain
Oct 16 19:15:08 raspberrypi wpa_supplicant[480]: ra0: WPA: Key negotiation completed with 00:3a:9d:91:93:be [PTK=TKIP GTK=TKIP]
Oct 16 19:15:08 raspberrypi wpa_supplicant[480]: ra0: CTRL-EVENT-CONNECTED - Connection to 00:3a:9d:91:93:be completed [id=0 id_str=]
Oct 16 19:15:08 raspberrypi dhcpcd[591]: ra0: carrier acquired
Oct 16 19:15:08 raspberrypi dhcpcd[551]: dhcpcd[591]: ra0: carrier acquired
Oct 16 19:15:08 raspberrypi dhcpcd[591]: ra0: IAID cf:ed:11:cd
Oct 16 19:15:08 raspberrypi dhcpcd[551]: dhcpcd[591]: ra0: IAID cf:ed:11:cd
Oct 16 19:15:08 raspberrypi dhcpcd[591]: ra0: rebinding lease of 192.168.0.152
Oct 16 19:15:08 raspberrypi dhcpcd[551]: dhcpcd[591]: ra0: rebinding lease of 192.168.0.152
Oct 29 19:15:08 raspberrypi dhcpcd[591]: ra0: soliciting an IPv6 router
Oct 29 19:15:08 raspberrypi dhcpcd[551]: dhcpcd[591]: ra0: soliciting an IPv6 router

切り分けのためまず /etc/network/interfaces の中の ra0 の項目を一旦消して再起動し、手動で ra0 に設定をしていきます。

wpa_supplicant での認証に失敗している場合は、まず以下のようにしてテスト用の wpa_supplicant.conf を作成します。

root@raspberrypi:~# wpa_passphrase your-ssid your-passwd > wpa_supplicant.conf

出力された wpa_supplicant.conf に認証方式や暗号化方式の設定を追加します。

network={
        proto=RSN
        key_mgmt=WPA-PSK
        pairwise=TKIP         
        ssid="your-ssid"
        #psk="your-passwd"
        psk=bfc743cad6d376b47075c9f336e03c7e852e11ba22230edfc3deb6de9f414bf0
}

作成できたらこの設定ファイルを指定して wpa_supplicant をフォアグラウンドで実行し、認証状況を確認します。

root@raspberrypi:~# wpa_supplicant -D nl80211,wext -i ra0 -c wpa_supplicant.conf -dd
〜〜中略〜〜
ra0: State: COMPLETED -> GROUP_HANDSHAKE
WPA: Group Key - hexdump(len=32): [REMOVED]
ra0: WPA: Installing GTK to the driver (keyidx=1 tx=0 len=32)
WPA: RSC - hexdump(len=6): 0f 11 00 00 00 00
wpa_driver_wext_set_key: alg=2 key_idx=1 set_tx=0 seq_len=6 key_len=32
ra0: WPA: Sending EAPOL-Key 2/2
WPA: KCK - hexdump(len=16): [REMOVED]
WPA: Derived Key MIC - hexdump(len=16): a0 9a 5f e1 4b cb 62 f9 11 fc d1 95 bd 9c ed c0
ra0: WPA: Group rekeying completed with 00:3a:9d:91:93:be [GTK=TKIP]
ra0: Cancelling authentication timeout
ra0: State: GROUP_HANDSHAKE -> COMPLETED
EAPOL: startWhen --> 0
EAPOL: disable timer tick

上記のように認証成功になるまで設定を調整します。
成功したら wpa_supplicant を以下のようにバックグラウンドで動作させてます。

root@raspberrypi:~# wpa_supplicant -D nl80211,wext -i ra0 -c wpa_supplicant.conf -B

dhcpcd が動いている場合はここですでに IP アドレスが取得できているかもしれません。
以下のようにして状況を確認します。

root@raspberrypi:~# /etc/init.d/dhcpcd status 
● dhcpcd.service - LSB: IPv4 DHCP client with IPv4LL support
   Loaded: loaded (/etc/init.d/dhcpcd)
   Active: active (running) since Thu 2015-10-16 20:48:57 JST; 36s ago
  Process: 2896 ExecStop=/etc/init.d/dhcpcd stop (code=exited, status=0/SUCCESS)
  Process: 3000 ExecStart=/etc/init.d/dhcpcd start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/dhcpcd.service
           mq3024 /sbin/dhcpcd

Oct 16 20:48:57 raspberrypi dhcpcd[3000]: dhcpcd[3005]: forked to background...4
Oct 16 20:48:57 raspberrypi dhcpcd[3005]: forked to background, child pid 3024
Oct 16 20:48:57 raspberrypi systemd[1]: Started LSB: IPv4 DHCP client with I....
Oct 16 20:48:57 raspberrypi dhcpcd[3024]: ra0: rebinding lease of 192.168.0.152
Oct 16 20:48:57 raspberrypi dhcpcd[3024]: ra0: soliciting an IPv6 router
Oct 16 20:49:02 raspberrypi dhcpcd[3024]: ra0: leased 192.168.0.152 for 4320...s
Oct 16 20:49:02 raspberrypi dhcpcd[3024]: ra0: adding route to 192.168.0.0/24
Oct 16 20:49:02 raspberrypi dhcpcd[3024]: ra0: adding default route via 192....4
Oct 16 20:49:09 raspberrypi dhcpcd[3024]: eth0: no IPv6 Routers available
Oct 16 20:49:09 raspberrypi dhcpcd[3024]: ra0: no IPv6 Routers available
Hint: Some lines were ellipsized, use -l to show in full.

取得できていない場合は、以下のように dhclient をフォアグラウンド実行して状況を確認します。

root@raspberrypi:~# dhclient -d ra0
Internet Systems Consortium DHCP Client 4.3.1
Copyright 2004-2014 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/ 

Listening on LPF/ra0/00:22:cf:ed:11:cd
Sending on   LPF/ra0/00:22:cf:ed:11:cd
Sending on   Socket/fallback
DHCPREQUEST on ra0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.254
bound to 192.168.0.158 -- renewal in 18949 seconds.

IP アドレスの取得に成功すれば上記のようなログが出ます。

参考先行例

Raspberry Pi 2 + kernel 4.1.6 で5GHz対応WifiドングルGW-450Dを動かした
http://neuralassembly.blogspot.jp/2015/09/raspberry-pi-2-kernel-416-5ghzwifigw.html
を参考に Raspbian で動かしている Raspberry Pi 2 で GW-450D を使えるようにします。

Raspberry Pi2のカーネルの再構築とGW-450Dを使えるようにする。
http://blog.mamemomonga.com/2015/02/raspberry-pi2gw-450d.html

Raspberry Pi 2+NOOBSでPlanexのGW-450D(802.11ac対応無線LANドングル)を使う
http://qiita.com/tsukaman/items/44abe042d2184c021b4b

Raspberry Pi 2でブートと同時にPLANEXのGW-450Dを自動的に起動させる
http://qiita.com/moutend/items/1fe67d1917ff25df198c

更新履歴

2015/10/29 初稿掲載

Satoshi OTSUKA

BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   新規 一覧 単語検索 最終更新   最終更新のRSS