labs.beatcraft.com
Raspberry Pi
Raspbian

Using Planex GW-450D on Raspberry Pi 2 (self-compiling)

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.

Obtaining the source code

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.

Unzipping (Extraction)

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/

patch

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

Build

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.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


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

Installation

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

Placing configuration file

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/

Checking load

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.

Configuring network

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"

Editing the configuration file

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.

Rebooting

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.

Troubleshooting

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 
&#9679; 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.


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.

Reference

Revision History

  • 2016-02-16 This article is initially published.

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New List of pages Search Recent changes   RSS of recent changes
Last-modified: 2016-02-16 (Tue) 04:10:03 (647d)