Wireless Access Point
This application note is applicable to the XU4/C1+/C2 Ubuntu/Linux Platforms.
You have to try this latest guide first.
wireless_ap_mode
One user (tam1111574) reported there was an issue with USB 3.0 port on the XU4.
http://forum.odroid.com/viewtopic.php?f=97&t=19285
Hostapd
hostapd is a user space daemon for access point and authentication servers. It implements IEEE 802.11 access point management, IEEE 802.1X/WPA/WPA2/EAP Authenticators, RADIUS client, EAP server, and RADIUS authentication server.
Odroid Wireless Cards
All most all the wireless card have capability of configuration as Access Point.
- target
$ sudo iwlist
If there is 'AP' in the list of “Supported interface modes” your device will support the Access Point mode with hostapd.
... Supported interface modes: * IBSS * managed * AP * AP/VLAN * WDS * monitor * mesh point
Wifi Module 3
Manufacturer: Realtek Part name: RTL8188CUS Type: chip Number of busses: 1 Bus(es): USB 2.0 Number of bands: 1 Band(s): 2.4GHz Data rate: 150Mbps MIMO configuration: 1x1:1 (1T1R) IEEE 802.11 PHY Modes: b,g,n Bus 001 Device 003: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
Please find more information on https://wireless.wiki.kernel.org/en/users/documentation/hostapd
Wifi Module 4
Manufacturer: Ralink Part name: RT5572 Type: chip Number of busses: 1 Bus(es): USB 2.0 Number of bands: 2 Band(s): 2.4GHz, 5GHz Data rate: 300Mbps MIMO configuration: 2x2:2 (2T2R) IEEE 802.11 PHY Modes: a,b,g,n Bus 001 Device 006: ID 148f:5572 Ralink Technology, Corp. RT5572 Wireless Adapter
Wifi Module 5
Manufacturer: Realtek Type: chip Number of busses: 1 Bus(es): USB 3.0 Number of bands: 2 Band(s): 2.4GHz, 5GHz Data rate: 300Mbps MIMO configuration: 2x2:2 (2T2R) IEEE 802.11 PHY Modes: a,b,g,n,ac Bus 003: ID 0bda:8812 Realtek Semiconductor Corp. RTL8812AU 802.11a/b/g/n/ac WLAN Adapter
Configure Access Point
Configure Wireless network interface and Dnsmasq demon.
Configure access point divides into following task.
- Setup Network interface configuration
- Setup DHCP server configuration
- Setup Hostapd server configuration.
- Setup Iptables to forward the internet traffic from Ethernet to wireless lan.
- Check your service status.
Step 1: Setup Network interface configuration.
In order to configure Wireless Access Point you need to provide static IPaddress to Wireless network card.
- target
# vim /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8) # Include files from /etc/network/interfaces.d: source-directory /etc/network/interfaces.d auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto wlan0 iface wlan0 inet static address 192.168.1.1 netmask 255.255.255.0
Note : Predictable interface names suppose you have interface name
root@odroid:~# ifconfig enx7cdd9052131e Link encap:Ethernet HWaddr 7c:dd:90:52:13:1e UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:321 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)
By adding net.ifnames=0 as kernel parameter to kernel command line by editing the boot.ini. Local interface name issue get resolved to predictable name for wireless interface.
root@odroid:~# ifconfig wlan0 Link encap:Ethernet HWaddr 7c:dd:90:52:13:1e UP 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)
Note: wlan0 ipaddress should be different from your router.
Note: wireless interface name can change depend on wireless cards.
Step 2: Setup DHCP server configuration for Access Point.
We configure dnsmasq light weight dhcp and dns server.
- target
$ sudo apt-get install --reinstall dnsmasq
- target
$ sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig $ sudo vim /etc/dnsmasq.conf
domain-needed bogus-priv no-resolv no-poll server=/example.com/192.168.1.5 server=8.8.8.8 server=4.4.4.4 local=/example.com/ address=/doubleclick.net/127.0.0.1 no-hosts #addn-hosts=/etc/dnsmasq.d/hosts.conf expand-hosts domain=example.com dhcp-range=192.168.1.20,192.168.1.50,72h dhcp-range=tftp,192.168.1.250,192.168.1.254 dhcp-option=option:router,192.168.1.1 dhcp-option=option:ntp-server,192.168.1.5 dhcp-option=19,0 # ip-forwarding off dhcp-option=44,192.168.1.5 # set netbios-over-TCP/IP aka WINS dhcp-option=45,192.168.1.5 # netbios datagram distribution server dhcp-option=46,8 # netbios node type
Note: Reconfigure dnsmasq: You can extend the dhcp-range or change the ipaddress in the configuration.
Step 3 : Setup Hostapd server configuration
Pre software requirement for building hostapd.
- target
sudo apt-get install libnl-3-dev libnl-genl-3-dev libssl-dev hostapd iptables git-core pkg-config
Configuration
WIFI Module 0
HostAP demon configration for Ralink RT5370 module only.
Hostapd Configuration file for Access Point
- target
sudo vim /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf" DAEMON_OPTS="-B"
Note: You can update this DAEMON_OPTS to get the logs from Hostapd demon.
- target
vim /etc/hostapd/hostapd.conf
interface=wlan0 driver=nl80211 ssid=ODROID_AP hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=hardkernel wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
WIFI Module 3
HostAP demon configuration for Realtek RTL8192CU module only. Kernel version: 3.10.x, 3.14.x 3.16.x
Download the latest hostapd source code and patch for RTL8192CU.
Steps to get the hostapd compilation.
Note: Realtek RTL8192CU do not support the standard nl80211 driver of hostapd for 3.10.x 3.14.x 3.16.x
- target
$ git clone https://github.com/pritambaral/hostapd-rtl871xdrv.git $ wget https://w1.fi/releases/hostapd-2.6.tar.gz $ tar xvfz hostapd-2.6.tar.gz $ cd hostapd-2.6 $ patch -p1 < ../hostapd-rtl871xdrv/rtlxdrv.patch $ cd hostapd $ cp defconfig .config $ echo CONFIG_LIBNL32=y >> .config $ echo CONFIG_DRIVER_RTW=y >> .config $ make
Backup the hostapd demon. Replace the demon with configured one.
- target
$ sudo cp /usr/sbin/hostapd /usr/sbin/hostapd.back $ sudo cp hostapd /usr/sbin/hostapd
Verify that you have installed the latest version
- target
$ /usr/sbin/hostapd -v hostapd v2.6 for Realtek rtl871xdrv User space daemon for IEEE 802.11 AP management, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator Copyright (c) 2002-2016, Jouni Malinen <j@w1.fi> and contributors
Hostapd Configuration file for Access Point
- target
sudo vi /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf" DAEMON_OPTS="-B"
Note: You can update this DAEMON_OPTS to get the logs from Hostapd demon.
- target
sudo vi /etc/hostapd/hostapd.conf
# interface interface=wlan0 # driver driver=rtl871xdrv # CTRL-Interface ctrl_interface=/var/run/hostapd ctrl_interface_group=0 # SSID ssid=OdroidAP # WLAN country_code=KR hw_mode=g channel=1 beacon_int=100 dtim_period=2 max_num_sta=255 rts_threshold=2347 fragm_threshold=2346 preamble=1 # Logging logger_syslog=-1 logger_syslog_level=3 logger_stdout=-1 logger_stdout_level=2 # passphrase wpa_passphrase=hardkernel # WPA2 wpa=3 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP beacon_int=100 auth_algs=3 # 1=wpa, 2=wep, 3=both macaddr_acl=0 wmm_enabled=1 eap_reauth_period=360000000 rsn_preauth=1 rsn_preauth_interfaces=wlan0 wpa_group_rekey=600 wpa_ptk_rekey=600 wpa_gmk_rekey=86400
Note: Replace the country_code, ssid, and wpa_passphrase as per your requirement.
WIFI Module 3/4/5
Wifi Module 3: HostAP demon configuration for Realtek RTL8192CU Adapater (For Odroid XU4: Kernel 4.14.125.x and above)
Wifi Module 4: HostAP demon configuration for Ralink Technology, Corp. RT5572 Wireless Adapter.
Wifi Module 5: HostAP demon configuration for Realtek RTL8812AU chipset.
Steps to get the hostapd compilation. Download the latest hostapd source code
- target
$ wget https://w1.fi/releases/hostapd-2.6.tar.gz $ tar xvfz hostapd-2.6.tar.gz $ cd hostapd-2.6 $ cd hostapd $ cp defconfig .config $ echo CONFIG_LIBNL32=y >> .config $ echo CONFIG_IEEE80211N=y >> .config $ echo CONFIG_IEEE80211AC=y >> .config $ make
Backup the hostapd demon. Replace the demon with configured one.
- target
$ cp /usr/sbin/hostapd /usr/sbin/hostapd.back $ cp hostapd /usr/sbin/hostapd
Verify that you have installed the latest version
hostapd v2.6 User space daemon for IEEE 802.11 AP management, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator Copyright (c) 2002-2016, Jouni Malinen <j@w1.fi> and contributors
Hostapd Configuration file for Access Point
- target
sudo vi /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf" DAEMON_OPTS="-B"
Note: You can update this DAEMON_OPTS to get the logs from Hostapd demon.
- target
vi /etc/hostapd/hostapd.conf
Hostapd configuration for 2.4 Ghz configuration
# HostAPD # Interface interface=wlan0 # driver driver=nl80211 # Logging logger_syslog=-1 logger_syslog_level=3 logger_stdout=-1 logger_stdout_level=2 # CTRL-Interface ctrl_interface=/var/run/hostapd ctrl_interface_group=0 # WLAN country_code=KR ssid=OdroidAPn hw_mode=g channel=6 beacon_int=100 dtim_period=2 max_num_sta=255 rts_threshold=2347 fragm_threshold=2346 preamble=1 # WPA2 wpa=2 # WPA2 only wpa_passphrase=hardkernel wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP auth_algs=3 # 1=wpa, 2=wep, 3=both macaddr_acl=0 wmm_enabled=1 eap_reauth_period=360000 fragm_threshold=2346 rsn_preauth=1 rsn_preauth_interfaces=wlan0 wpa_group_rekey=600 wpa_ptk_rekey=600 wpa_gmk_rekey=86400 # N-WLAN ieee80211n=1 ht_capab=[HT20+][SHORT-GI-20][DSSS_CCK-20] require_ht=0 obss_interval=0
Hostapd configuration for 5 Ghz Realtek RTL8812AU chipset
### hostapd configuration file ctrl_interface=/var/run/hostapd ctrl_interface_group=0 interface=wlan0 driver=nl80211 ### IEEE 802.11 ssid=Odroid5Ghz hw_mode=a channel=36 max_num_sta=128 auth_algs=1 ### DFS country_code=KR ieee80211d=1 ieee80211h=1 #ieee80211ac=1 ### IEEE 802.11n ieee80211n=1 ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-20] ### IEEE 802.11ac #ieee80211ac=1 #vht_oper_chwidth=1 #vht_capab=[SHORT-GI-40][RXLDPC][TX-STBC-2BY1] #vht_oper_centr_freq_seg0_idx=0 ### IEEE 802.11i wpa=2 wpa_key_mgmt=WPA-PSK wpa_passphrase=hardkernel rsn_pairwise=CCMP ### hostapd event logger logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 ### WMM wmm_enabled=1 uapsd_advertisement_enabled=1 wmm_ac_bk_cwmin=4 wmm_ac_bk_cwmax=10 wmm_ac_bk_aifs=7 wmm_ac_bk_txop_limit=0 wmm_ac_bk_acm=0 wmm_ac_be_aifs=3 wmm_ac_be_cwmin=4 wmm_ac_be_cwmax=10 wmm_ac_be_txop_limit=0 wmm_ac_be_acm=0 wmm_ac_vi_aifs=2 wmm_ac_vi_cwmin=3 wmm_ac_vi_cwmax=4 wmm_ac_vi_txop_limit=94 wmm_ac_vi_acm=0 wmm_ac_vo_aifs=2 wmm_ac_vo_cwmin=2 wmm_ac_vo_cwmax=3 wmm_ac_vo_txop_limit=47 wmm_ac_vo_acm=0 ### TX queue parameters tx_queue_data3_aifs=7 tx_queue_data3_cwmin=15 tx_queue_data3_cwmax=1023 tx_queue_data3_burst=0 tx_queue_data2_aifs=3 tx_queue_data2_cwmin=15 tx_queue_data2_cwmax=63 tx_queue_data2_burst=0 tx_queue_data1_aifs=1 tx_queue_data1_cwmin=7 tx_queue_data1_cwmax=15 tx_queue_data1_burst=3.0 tx_queue_data0_aifs=1 tx_queue_data0_cwmin=3 tx_queue_data0_cwmax=7 tx_queue_data0_burst=1.5
Note: Depending on the ht_capab with the Wifi module4 and Wifi moudule5 we need to tune these setting.
Note: Replace the country_code, ssid, and wpa_passphrase as per your requirement.
Note: N-WLAN is optional can be dropped out.
Step 4: Setup Iptables to forward the internet traffic from Ethernet to Wireless lan
Next, have port forwarding enabled automatically on boot up.
- target
$ sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1
Access Internet over WIFI. Append the following to redirect internet traffic to wireless lan
- target
$ sudo vi /etc/rc.local
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
Note: Depend on the wireless network interface name update the iptables rules.
Step 5: Check your service status
On ubuntu 14.04.x check the service status as follows
- target
sudo update-rc.d hostapd enable
- target
$ service hostapd restart
* Stopping advanced IEEE 802.11 management hostapd [ OK ] * Starting advanced IEEE 802.11 management hostapd [ OK ]
- target
$ service hostapd status
* hostapd is running
on Ubuntu 16.04.x check the service status as follows
- target
$ sudo systemctl status hostapd.service
● hostapd.service - LSB: Advanced IEEE 802.11 management daemon Loaded: loaded (/etc/init.d/hostapd; bad; vendor preset: enabled) Active: active (running) since Sun 2017-07-09 19:48:41 UTC; 31s ago Docs: man:systemd-sysv-generator(8) Process: 789 ExecStart=/etc/init.d/hostapd start (code=exited, status=0/SUCCESS) CGroup: /system.slice/hostapd.service └─798 /usr/sbin/hostapd -B -P /run/hostapd.pid -B /etc/hostapd/hostapd-2.6.conf Jul 09 19:48:41 odroid systemd[1]: Starting LSB: Advanced IEEE 802.11 management daemon... Jul 09 19:48:41 odroid hostapd[789]: * Starting advanced IEEE 802.11 management hostapd Jul 09 19:48:41 odroid hostapd[789]: ...done. Jul 09 19:48:41 odroid systemd[1]: Started LSB: Advanced IEEE 802.11 management daemon.
- target
$ sudo systemctl status dnsmasq.service
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled) Drop-In: /run/systemd/generator/dnsmasq.service.d └─50-dnsmasq-$named.conf, 50-insserv.conf-$named.conf Active: active (running) since Sun 2017-07-09 19:48:31 UTC; 4min 36s ago Process: 592 ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf (code=exited, status=0/SUCCESS) Process: 575 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited, status=0/SUCCESS) Process: 554 ExecStartPre=/usr/sbin/dnsmasq --test (code=exited, status=0/SUCCESS) Main PID: 591 (dnsmasq) CGroup: /system.slice/dnsmasq.service └─591 /usr/sbin/dnsmasq -x /var/run/dnsmasq/dnsmasq.pid -u dnsmasq -r /var/run/dnsmasq/resolv.conf -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old, Jul 09 19:48:30 odroid dnsmasq[591]: DNS service limited to local subnets Jul 09 19:48:30 odroid dnsmasq[591]: warning: ignoring resolv-file flag because no-resolv is set Jul 09 19:48:30 odroid dnsmasq-dhcp[591]: DHCP, IP range 192.168.1.250 -- 192.168.1.254, lease time 1h Jul 09 19:48:30 odroid dnsmasq-dhcp[591]: DHCP, IP range 192.168.1.20 -- 192.168.1.50, lease time 3d Jul 09 19:48:30 odroid dnsmasq[591]: using local addresses only for domain example.com Jul 09 19:48:30 odroid dnsmasq[591]: using nameserver 4.4.4.4#53 Jul 09 19:48:30 odroid dnsmasq[591]: using nameserver 8.8.8.8#53 Jul 09 19:48:30 odroid dnsmasq[591]: using nameserver 192.168.1.5#53 for domain example.com Jul 09 19:48:30 odroid dnsmasq[591]: cleared cache Jul 09 19:48:31 odroid systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server. lines 1-22/22 (END)