In order to set up the BeagleBone Black as an access point you need to go through a few steps.I have done this with a TP-Link TL-WN722N adapter.
Manual set up for testing
First is introduced a manual set up and test. After that comes the automation
Configure the Hostappd
First edit the /etc/hostapd/hostapd.conf file (as root)
### Wireless network name ### # ### Set your bridge name ### #bridge=br0 #driver driver=nl80211 country_code=DK ssid=<The SSID the AP should Present it self with> channel=<select af free channel e.g. 1, 6 or 11> hw_mode=g interface=wlan0 # # Static WPA2 key configuration # #1=wpa1, 2=wpa2, 3=both wpa=2 wpa_passphrase=<YourDesiredVerySecretPassword> ## Key management algorithms ## wpa_key_mgmt=WPA-PSK # ## Set cipher suites (encryption algorithms) ## ## TKIP = Temporal Key Integrity Protocol ## CCMP = AES in Counter mode with CBC-MAC wpa_pairwise=TKIP CCMP rsn_pairwise=CCMP # ## Shared Key Authentication ## auth_algs=1 ## Accept all MAC address ### macaddr_acl=0 #enables/disables broadcasting the ssid ignore_broadcast_ssid=0 # Needed for Windows clients eapol_key_index_workaround=0 ctrl_interface=/var/run/hostapd ctrl_interface_group=0
Configure IP addresses
To set an ip address on the wlan0 interface perform these commands as root:
]$ ip link set wlan0 down ]$ ip addr flush dev wlan0 ]$ ip link set wlan0 up ]$ ip addr add 192.168.22.1/24 dev wlan0
Set up dnsmasqd
In /etc/dnsmasq.d/ create a file (e.g. WlanAp0) with this content:
interface=wlan0 dhcp-range=wlan0,192.168.22.2,192.168.22.12,2h dhcp-option=wlan0,3 dhcp-option=wlan0,6
Note: Do not add to the SoftAp0 file because it will be overwritten at boot.
Next test i manually, in order to see if the access point software will run without errors.
root@beaglebone ]$ systemctl stop wpa_supplicant.service root@beaglebone ]$ hostapd /etc/hostapd/hostapd.conf
If you can get this connection up running with your password but no IP address everything at this point is fine.
You can stop the wpa_supplicant service permanently by issuing
root@beaglebone ]$ systemctl disable wpa_supplicant.service
Automating it all
In order to set up the wifi access point a boot a few things is needed to be done.
Rather than tracing the whole shabang of boot scripts and other relevant configuration files, I've made a couple of simple scripts that will bring up the WiFi access point at boot.
If this was for production I'd gone through all the scripts and configuration files to make it more correct. But this solution solves my needs for this project. I kill or stop what I don't need and starts what I need.
You'll need the configurations files from above, so keep them intact.
The set up script
In /root/bin/startWifiAP.sh put this:
#!/bin/bash systemctl stop wpa_supplicant.service ip link set wlan0 down ip addr flush dev wlan0 ip link set wlan0 up ip addr add 192.168.22.1/24 dev wlan0 systemctl restart hostapd
Note: If you want another IP address be sure to also modify the WifiAP0 file in /etc/dnsmasq.d to suit your needs.