[[labs.beatcraft.com]]~
[[Armadillo]]~
[[Armadillo-Box WS1/BLE Gateway]]~

#contents
* Wifi Support [#s93d2156]
>
This article describes how to work Buffalo WI-U2-433DM on Armadillo-Box WS1. This article refers to the two articles listed below.~
- [[Howto: Work IEEE802.11ac USB Wireless LAN Adapter on Armadillo-810/840:http://armadillo.atmark-techno.com/howto/a800-ieee80211ac-gw-900d]]
- [[Work a USB Wireless LAN adapter, which employs a chip made by MediaTek (ex-Ralink Technnology), with Linux 3.x:http://armadillo.atmark-techno.com/howto/wlan-usb-config-rt2x00]]~
~
[[Details of 11ac Support USB Wireless LAN dongle WI-U2-433DM:http://buffalo.jp/product/wireless-lan/client/wi-u2-433dm/]]~

** Customize kernel [#l5951aee]
>
To build driver for Realtek rtl8812au, which is used in at Buffalo WI-U2-433DM, Linux 802.11 configuration API must be supported at Linux kernel. Since this function is initially NOT effective at the kernel of Armadillo-Box WS1, please make this function effective.~
~
Applying make menuconfig, please select vender/Product~
 (AtmarkTechno) Vendor
 (Armadillo-Box WS1) AtmarkTechno Products
~
At Linux Kernel Configuration, make cfg80211 effective.~
 Linux Kernel Configuration 
 [*] Networking support  --->
     -*-   Wireless  --->
         <*>   cfg80211 - wireless configuration API               <-- Put a checkmark to make it effective
          : Skipping
         [*]     cfg80211 wireless extensions compatibility        <--  Put a checkmark to make it effective
         <*>   Generic IEEE 802.11 Networking Stack (mac80211)     <--  Put a checkmark to make it effective

**Configuration of UserLand [#d6a15544]
>
Building its driver and making the kernel effective, these processes are not enough to Armadillo-Box WS1 to access a wireless LAN access point. The tools, which are required for wireless Lan connection, should be included in UserLand.~
To access to an encrypted access point, “iw” command or “wpa_supplicant” is needed.
In this case, “wpa_suupplicant,” which is already prepared at atmark dist, is added.~
 [*] Customize Vendor/User Settings
     Network Applications  ---> 
          :
         --- Wireless-tools
          :
         [*] hostap     <-- Put a checkmark to make it effective
         [ ]   hostap driver (Prism2/2.5/3) (NEW)
         [ ]   hostapd (NEW)
         [*]   wpa_supplicant (NEW)     <-- Once put a checkmark on “hostap,” this section will appear. Please put a check mark to make it effective
          :

**Modifying the wpa_supplicant config file [#u0863256]
>
If wpa_supplicant is built without modification, a build error will occur. To avoid the build error happening, modify the build config file for wpa_supplicant, which is located at atmark-dist/user/hostap/wpa_supplicant/.config. To avoid madwifi being built,  comment out the madwifi related parts.
 --- .config.orig        2015-11-27 17:50:49.449674569 +0900
 +++ .config     2015-11-27 17:51:03.869675088 +0900
 @@ -50,9 +50,9 @@
  #CFLAGS += -I../../include/wireless
 
  # Driver interface for madwifi driver
 -CONFIG_DRIVER_MADWIFI=y
 +#CONFIG_DRIVER_MADWIFI=y
  # Change include directories to match with the local setup
  -CFLAGS += -I$(ROOTDIR)/$(LINUXDIR)/drivers/net/wireless/madwifi
 +#CFLAGS += -I$(ROOTDIR)/$(LINUXDIR)/drivers/net/wireless/madwifi
  
  # Driver interface for Prism54 driver
  # (Note: Prism54 is not yet supported, i.e., this will not work as-is and is

** Building Kernel and UserLand [#ue5853bd]
>
As the modification of kernel is completed, please build kernel and UserLand.
 atmark@atde5:~/atmark-dist$ make clean
 atmark@atde5:~/atmark-dist$ make

** Building USB wifi driver [#fa8566cd]
>
To Obtain the driver for Realtek rtl8812au, which is used for Buffalo WI-U2-433DM, clone it from [[github:https://github.com/gnab/rtl8812au]].~
~
To do git clone, please apply the command lines below.~
 atmark@atde5:~$ git clone https://github.com/gnab/rtl8812au.git
 atmark@atde5:~$ cd rtl8812au
~
To cross-compiling for Armadillo-Box, please modify Makefile. At the default, the setting of cross-compiling is targeted to a PC. Please make this configuration ineffective, and change it to n. Then, please add the ARM cross-compile setting for Armadillo-Box WS1.
 diff --git a/Makefile b/Makefile
 index b79a7d8..d15cf69 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -49,13 +49,14 @@ CONFIG_EXT_CLK = n
  CONFIG_FTP_PROTECT = n
  CONFIG_WOWLAN = n
 
 -CONFIG_PLATFORM_I386_PC = y
 +CONFIG_PLATFORM_I386_PC = n
  CONFIG_PLATFORM_ANDROID_X86 = n
  CONFIG_PLATFORM_JB_X86 = n
  CONFIG_PLATFORM_ARM_S3C2K4 = n
  CONFIG_PLATFORM_ARM_PXA2XX = n
  CONFIG_PLATFORM_ARM_S3C6K4 = n
  CONFIG_PLATFORM_ARM_RPI = n
 +CONFIG_PLATFORM_ARM_ARMADILLO_CROSS = y
  CONFIG_PLATFORM_MIPS_RMI = n
  CONFIG_PLATFORM_RTD2880B = n
  CONFIG_PLATFORM_MIPS_AR9132 = n
 @@ -738,6 +739,15 @@ KSRC ?= /lib/modules/$(KVER)/build
  MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/
  endif
 
 +ifeq ($(CONFIG_PLATFORM_ARM_ARMADILLO_CROSS), y)
 +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
 +ARCH := arm
 +CROSS_COMPILE := arm-linux-gnueabi-
 +KVER  := 3.14.36-at4
 +KSRC ?= /home/atmark/linux-3.14-at4
 +MODDESTDIR :=
 +endif
 +
  ifeq ($(CONFIG_PLATFORM_RTD2880B), y)
  EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN -DCONFIG_PLATFORM_RTD2880B
  ARCH:=
~
Let's start make.~
 atmark@atde5:~/rtl8812au$ make
 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -C /home/atmark/linux-3.14-at4 M=/home/atmark/test_work/rtl8812au  modules
 make[1]: Move into the directory `/home/atmark/linux-3.14-at4'
   CC [M]  /home/atmark/rtl8812au/core/rtw_cmd.o
   CC [M]  /home/atmark/rtl8812au/core/rtw_security.o
 &#65374;&#65374; Skipping &#65374;&#65374;
   CC [M]  /home/atmark/rtl8812au/core/rtw_mp_ioctl.o
   LD [M]  /home/atmark/rtl8812au/8812au.o
   Building modules, stage 2.
   MODPOST 1 modules
   CC      /home/atmark/rtl8812au/8812au.mod.o
   LD [M]  /home/atmark/rtl8812au/8812au.ko
 make[1]: Move out the directory `/home/atmark/linux-3.14-at4'
~
As the make process is completed, 8812au.ko is generated. Please put 8812au.ko to ROM image directory.~
 atmark@atde5:~/rtl8812au$ cp 8812au.ko ~/atmark-dist/romfs/lib/modules/3.14.36-at4/kernel/
~
Please put 8812au.ko below kanal module PATH of ROM image directory. As make image is applied, depmod is also executed, and modprobe 8812au is loaded.~

** Rebuilding the image [#sdaeb8e9]
>
To include the driver, which has just created, build the kernel image again.~
 atmark@atde5:~$ cd ~/atmark-dist
 atmark@atde5:~/atmark-dist$ make image
~
Please make sure that the file located below the directory at atmark-dist/images/ is renewed.~

** Checking the operation [#n4c0d7cd]
>
To apply the method described in this article, “[[12.4.To use TFTP, rewrite the flash memory]],” please rewrite the kernel and UserLand. To use TFTP, this is the fastest way to replace to the newly built kernel and UserLand if Armadillo-Box WS1 is connected to the network.~
To apply the method described in this article, “[[12.4.To use TFTP, rewrite the flash memory:http://manual.atmark-techno.com/armadillo-box-ws1/armadillo-box-ws1_product_manual_ja-1.0.0/ch12.html#sct.update_image-with-tftpdl]],” please rewrite the kernel and UserLand. To use TFTP, this is the fastest way to replace to the newly built kernel and UserLand if Armadillo-Box WS1 is connected to the network.~
 hermit> tftpdl 192.168.0.90 192.168.0.164 --blksize=1024 –kernel=linux.bin.gz
 hermit> tftpdl 192.168.0.90 192.168.0.164 --blksize=1024 --userland=romfs.img.gz
~
As it is booted with the new kernel and UserLand, WI-U2-433DM is inserted to a USB port.~
The following message is created below dmesg.~
 usbcore: registered new interface driver rtl8812au
~
Applying lsmod, please check the kernel module is loaded.
 [root@abws1-0 (ttymxc1) ~]# lsmod
 8812au 907792 0 - Live 0xbf000000 (O)
~
Make sure it is recognized as the network interface.~
Using this driver, it is recognized as “wlan*”.~
 [root@abws1-0 (ttymxc1) ~]# ifconfig wlan0
 wlan0     Link encap:Ethernet  HWaddr CC:E1:D5:F7:14:E6
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:10 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
~
As its current status still remains down, put the status to up and check the operation.~
As it shown below, if it successfully starts searching the neighborhood access points, it means that it is correctly operating.~
 [root@abws1-0 (ttymxc1) ~]# ifconfig wlan0 up
 [root@abws1-0 (ttymxc1) ~]# iwlist wlan0 scanning
 wlan0     Scan completed :
           Cell 01 - Address: 74:03:BD:09:BD:50
                     ESSID:"Buffalo-G-BD50"
                     Protocol:IEEE 802.11bgn
                     Mode:Master
                     Frequency:2.422 GHz (Channel 3)
                     Encryption key:on
                     Bit Rates:144 Mb/s
                     Extra:rsn_ie=30140100000fac040100000fac040100000fac020000
                     IE: IEEE 802.11i/WPA2 Version 1
                         Group Cipher : CCMP
                         Pairwise Ciphers (1) : CCMP
                         Authentication Suites (1) : PSK
                    IE: Unknown: DD6B0050F204104A0001101044000102103B0001031047001028802880288018...(Omitted below)
                    Quality=0/100  Signal level=68/100
           Cell 02 - Address: 00:1D:73:8E:73:EB
                     ESSID:"001D738E73EB"
                     Protocol:IEEE 802.11bgn
                     Mode:Master
                     Frequency:2.432 GHz (Channel 5)
                     Encryption key:on
                     Bit Rates:300 Mb/s
                     Extra:wpa_ie=dd1a0050f20101000050f20202000050f2040050f20201000050f202
                     IE: WPA Version 1
                         Group Cipher : TKIP
                         Pairwise Ciphers (2) : CCMP TKIP
                         Authentication Suites (1) : PSK
                     Extra:rsn_ie=30180100000fac020200000fac04000fac020100000fac020000
                     IE: IEEE 802.11i/WPA2 Version 1
                         Group Cipher : TKIP
                         Pairwise Ciphers (2) : CCMP TKIP
                         Authentication Suites (1) : PSK
                     IE: Unknown: DD600050F204104A0001101044000102103B000103104700106CBF8352D7C911... (Omitted below)
                    Quality=0/100  Signal level=64/100
           Omitted Below

** Configuring the connection [#l1e0974e]
>
To use wpa_supplicant, configure to access to an encrypted wireless LAN access point.~
First, create a connection configuration file for WPA_supplicant.~
 [root@abws1-0 (ttymxc1) ~]# wpa_passphrase YOUR-SSID YOUR-PASSWORD > /etc/config/wpa_supplicant.conf
~
The contents of created file are shown below.~
 network={
         ssid="YOUR-SSID"
         #psk="YOUR-PASSWORD"
         psk=e1a0872bd7f7cfd7efa1cbc7d7aec742c58f3ae24e4757d98eae8bf7b53254de
 }
~
Add the information for encryption setting of the wireless LAN access point that you like to access to the configuration file.~
 network={
         ssid="YOUR-SSID"
         #psk="YOUR-PASSWORD"
         psk=e1a0872bd7f7cfd7efa1cbc7d7aec742c58f3ae24e4757d98eae8bf7b53254de
         proto=RSN            <-- Add this as using WPA2
         key_mgmt=WPA-PSK
         pairwise=CCMP        <-- As using AES, apply CCMP. To use TKIP, add TKIP.
         group=CCMP           <-- As using AES, apply CCMP. To use TKIP, add TKIP.
 }
~
To select the created configuration file, execute wpa_supplicant in the foreground, and please make sure that the authentication is correctly done.~
 [root@abws1-0 (ttymxc1) ~]# wpa_supplicant -D wext -i wlan0 -c wpa_supplicant.conf -dd
 Initializing interface 'wlan0' conf 'wpa_supplicant.conf' driver 'wext' ctrl_interface 'N/A' bridge 'N/A'
 Configuration file 'wpa_supplicant.conf' -> '/root/wpa_supplicant.conf'
 Reading configuration file '/root/wpa_supplicant.conf'
 Line: 1 - start of a new network block
 &#65374;&#65374; Skipping &#65374;&#65374;
 State: COMPLETED -> GROUP_HANDSHAKE
 WPA: Group Key - hexdump(len=32): [REMOVED]
 WPA: Installing GTK to the driver (keyidx=1 tx=0).
 WPA: RSC - hexdump(len=6): bf 07 00 00 00 00
 wpa_driver_wext_set_key: alg=2 key_idx=1 set_tx=0 seq_len=6 key_len=32
 WPA: Sending EAPOL-Key 2/2
 WPA: TX EAPOL-Key - hexdump(len=99): 01 03 00 5f 02 03 01 00 00 (Omitted Below)
 WPA: Group rekeying completed with 00:3a:9d:91:93:be [GTK=TKIP]
 State: GROUP_HANDSHAKE -> COMPLETED
 EAPOL: startWhen --> 0
~
IF the logs shown above appears and HANDSHAKE is successfully completed, its authentication process is fine.~
~
To push down Ctrl + C, quit the process. Then, execute daemon.~
 [root@abws1-0 (ttymxc1) ~]# wpa_supplicant -D wext -i wlan0 -c /etc/config/wpa_supplicant.conf -B
~
Its authentication process is successfully completed as wlan0 turns to up.~
 [root@abws1-0 (ttymxc1) ~]# ifconfig wlan0
 wlan0     Link encap:Ethernet  HWaddr CC:E1:D5:F7:14:E6
           inet6 addr: fe80::cee1:d5ff:fef7:14e6/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:314 errors:0 dropped:631 overruns:0 frame:0
           TX packets:12 errors:0 dropped:2 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:377798 (368.9 KiB)  TX bytes:2945 (2.8 KiB)
  
 [root@abws1-0 (ttymxc1) ~]# iwconfig wlan0
 wlan0     IEEE 802.11bg  ESSID:"YOUR-SSID"  Nickname:"<WIFI@REALTEK>"
           Mode:Managed  Frequency:2.442 GHz  Access Point: 00:3A:9D:91:93:BE
           Bit Rate:54 Mb/s   Sensitivity:0/0
           Retry:off   RTS thr:off   Fragment thr:off
           Encryption key:****-****-****-****-****-****-****-****   Security mode:open
           Power Management:off
           Link Quality=100/100  Signal level=100/100  Noise level=0/100
           Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
           Tx excessive retries:0  Invalid misc:0   Missed beacon:0
~
Manually, execute udhcpc, make sure that it obtains the address and establishes the communication.~
 [root@abws1-0 (ttymxc1) ~]# udhcpc -i wlan0
 udhcpc (v1.20.2) started
 Sending discover...
 Sending select for 192.168.0.148...
 Lease of 192.168.0.148 obtained, lease time 43200
~
To keep this configuration (shown above) in wpa_supplicant.conf, apply the command line below. Please keep the configuration in the directory of /etc/config.~
 [root@abws1-0 (ttymxc1) ~]# flatfsd -s
If do not apply this process, the setting changes of atmark dist are erased as its power is turned off.~
~
If eth0 is up during wlan is up, sometimes, the communication is failed.~
In this case, please configure route appropriately.~

** Configuration for automatic connection [#p962f593]
>
To make Armadillo-Box WS1 automatically connect to a wireless LAN access point as it is booted, please apply the configuration below.~
~
Add wlan0 to the network interface configuration file, which is located at /etc/network/interfaces.~
 # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
 
 auto lo eth0
 iface lo inet loopback
 iface eth0 inet dhcp
 iface wlan0 inet dhcp  <-- Add the configuration of wlan0~
~
Please add the start up setting of wpa_supplicant to the user created boot script file, which is  set at the directory of /etc/config/rc.local.
 # Wifi
 DEV_NAME=wlan0
 if [ -r /sys/class/net/${DEV_NAME} ]; then
     wpa_supplicant -D wext -i ${DEV_NAME} -c /etc/config/wpa_supplicant.conf -B
     sleep 30
     ifup ${DEV_NAME}
 fi
~
sleep provides a short period after the wifi authentication process is completed. It prevents to execute dhcp before the status of wlan0 turns up. As the modification of the boot script file is completed, please apply the command line of “flatfsd -s” for saving this configuration.~
~
This is the end of configuration. As Armadillo-Box SW1 is booted, it connects to the wireless LAN access point, which is pre determined at the configuration file of wap_supplicant. It obtains the IP address and DNS address by dhcp.

* Revision History [#l3ab2293]
>
- 2015-12-08 This article is initially released.

Front page   Edit Diff Backup Upload Copy Rename Reload   New List of pages Search Recent changes   RSS of recent changes