Raspberry Pi 2 で Planex GW-450D を使う(セルフコンパイル) †Raspberry Pi 2 に source 入手 †planex のサイトからドライバーのソースコードを入手します。 展開 †ソースコードアーカイブを展開します。 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を動かした 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 ビルド †ビルドします。 pi@raspberrypi ~/src/mt7610u_wifi_sta_v3002_dpo_20130916 $ sudo -s root@raspberrypi:/home/pi/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/pi/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/pi/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 に挿すと 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 の設定項目を作成します。 # 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 はネットワーク設定で設定しているので空にします。 再起動 †設定を完了して再起動すると、以下のように 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 の中の 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 に設定をしていきます。 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 上記のように認証成功になるまで設定を調整します。 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を動かした Raspberry Pi2のカーネルの再構築とGW-450Dを使えるようにする。 Raspberry Pi 2+NOOBSでPlanexのGW-450D(802.11ac対応無線LANドングル)を使う Raspberry Pi 2でブートと同時にPLANEXのGW-450Dを自動的に起動させる 更新履歴 †2015/10/29 初稿掲載 Satoshi OTSUKA
|