labs.beatcraft.com
Raspberry Pi
Raspbian
#content
This article explains how to connect [[11ac Planex GW-450D:http://www.planex.co.jp/products/gw-450d/] with Raspberry Pi 2 and how to use it on Raspbian.
To follow the directions, which are described in Raspberry Pi 2 kernel self-compile, complete kernel compile and boot from the new kernel, first. Then, following this article, please build the driver of GW-450D.
Obtain the source code of driver from the site of planex.
To download the source code of driver, you need to agree the license agreement. Using the command of wget, the source code cannot be downloaded on Raspbian directly. Download it by a browser on PC, and copy the source code to Raspberry Pi 2, applying the command of scp.
Unzip the source code archive.
Because the source code of driver has been compressed twice, please decompress the downloaded zip file with zip, then decompress the extracted bzip2 file with tar.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/
Please add a patch. The patch is listed at the website, which provides detail explanation for how to use a 5GHz WiFi support dongle, GW-450D, on kernel 4.1.6 of Raspberry Pi 2.
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
Let's start the build process.
As the build process is completed, m7650u_sta.ko is generated.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 ~~ Skipping ~~ 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.komake[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
The size of module is 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
Do not apply the command of make install. Please copy it and apply the command of 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
Create a directory where the configuration file is stored. The file lists the configuration of driver.
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/
As kernel module is installed and GW-450D is inserted to Raspberry Pi 2, mt7650u_stako is loaded and the network interface, ra*, is created.
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.
Create a configuration item, ra0, below wlan0, which is listed on /etc/network/interfaces. Configure SSID and passphrase for the targeted access point.
# vi /etc/network/interfaces (Please provide the information) allow-hotplug ra0 auto ra0 iface ra0 inet manual wpa-ssid "your-ssid" wpa-psk "your-passwd"
wpa_supplicant automatically configures the settings of authentication method and encryption scheme, and the network configuration, which is done in the previous section, and is supposed to connect the access point. However, depending on the configuration of an access point, it may reject the connection. If rejection happens, must set up authentication method and encryption scheme in the configuration file, explicitly.
SSID= AuthMode=WPA2PSK EncrypType=TKIP
SSID is kept empty since it is configured at the network configuration.
The values, which AuthMode can configure, are: WEPAUTO, OPEN, SHARED, WPAPSK, WPA2SK, and WPANONE.
The values, which EncrypType can configure, are: NONE, WEP, TKIP, and AES.
The details of configurable values of other configuration items, which are listed on /etc/Wireless/RT2870STA/RT2870STA.dat, are written in mt7610u_wifi_sta_v3002_dpo_20130916/doc/README_STA_usb. This is located in the driver source archive.
As the configuration is completed and the system is rebooted, it obtains IP address as it is shown below.
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.
As the connection is failed, please check the status by analyzing the logs of wpa_supplicant and dhcpcd, which are stored in /var/log/syslog.
As the connection is successfully established, the log shown below is output.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
To find out the causes of failure, first, erase the items of ra0, which is listed at /etc/network/interfaces. Then, manually configure r0 step by step.
If the authentication process fails at wpa_supplicant, create a wpa_supplicant.conf, which is used for a testing process. Please apply the command line below, create wpa_supplicant.conf.root@raspberrypi:~# wpa_passphrase your-ssid your-passwd > wpa_supplicant.conf
Please add the configuration of authentication method and encryption scheme to the outputted wpa_supplicant.conf.network={ proto=RSN key_mgmt=WPA-PSK pairwise=TKIP ssid="your-ssid" #psk="your-passwd" psk=bfc743cad6d376b47075c9f336e03c7e852e11ba22230edfc3deb6de9f414bf0 }
Adding the information mentioned above to the configuration file, please select this file as the configuration file. Please execute wpa_supplicant at the foreground, check the status of authentication.root@raspberrypi:~# wpa_supplicant -D nl80211,wext -i ra0 -c wpa_supplicant.conf -dd ~~ Skipping ~~ 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
If this authentication process is successfully completed, the status of authentication is shown as above. Please try to reset the authentication file until complete the setting of the authentication file.
As the setting-up of configuration file is completed, applying the command line below, let wpa_supplicant be executed in background.root@raspberrypi:~# wpa_supplicant -D nl80211,wext -i ra0 -c wpa_supplicant.conf -B
If dhcpcd is running, IP address may already be obtained. Please apply the command line below, make sure whether IP address is obtained or not.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 availableHint: Some lines were ellipsized, use -l to show in full.
If IP address is not obtained, please execute dhclient at the foreground, and analyze the current status.
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.
If IP address is successfully obtained, the log shown above appears.
- Refer to the article Let GW-450D, a5GHz-support WiFi dongle, work on Raspberry Pi 2 + kernel 4.1.6, let Raspbian, which runs on Raspberry Pi 2, work with GW-450D.
- 2016-02-16 This article is initially published.