Create an AP to gain remote control of the Raspberry
Run through this step-by-step guide to set-up an access-point for a version 3.2 Realtek chipset wifi dongle on Raspian.
Used hardware:
- Raspberry Pi Zero WH
- SanDisk Extreme micro SDHC A1 UHS-I U3 or similar
- micro USB to USB power cable
- TP-Link TL-WN722N WLAN USB Adapter version 3.2
Used software:
cat /etc/os-release- Linux 4.14.98+ #1200 kernel
uname -aSoftware configuration
Check that your wifi dongle got recognized correctly after plugging it in.
lsusbThe “manufacturer” is represented in the ID as 1d6b, the “Linux Foundation”. The nature of the bus is reflected in 0002, USB version 2.0.
As it is version 3.2 of the TP-Link TL-WN722N model, it means that we have a Realtek chipset which is not natively supported by Raspian. We need to build the driver on our system in order to have it working. If you have a better supported chipset, I recommend this set-up guide.
Download the kernel header source to compile the driver later on. There is a good tool called rpi-source available here. Follow the manual and run:
sudo apt-get updatesudo apt install git bc bison flex libssl-devsudo wget https://raw.githubusercontent.com/RPi-Distro/rpi-source/master/rpi-source -O /usr/local/bin/rpi-source && sudo chmod +x /usr/local/bin/rpi-source && /usr/local/bin/rpi-source -q --tag-updaterpi-source
Then clone the driver repository from here:
git clone https://github.com/lwfinger/rtl8188eu.gitFollow the instructions from the repository:
sudo make all
sudo make install
sudo depmod
sudo modprobe 8188euIf everything has run successfully, you should see rtl8188eufw.bin within /lib/firmware/rtlwifi
Further, you should see the module as well, when running lsmod
Now runsudo rebootand a new interface wlan1 should show up when running ifconfig.
Further, lsusb now also shows the device correctly
To set up the access point for the connection between the phone and raspberry, we will use raspap-webgui. Follow the instructions there, no need to install OpenVPN during the process (if you do not need it).
curl -sL https://install.raspap.com | bashIn order to define the port for the RaspAP web-service you can do the following:
sudo nano /etc/lighttpd/lighttpd.confThen change the following line:
server.port = 8081Then let’s restart the lighttpd webserver:
sudo systemctl restart lighttpd.serviceThen you can access the web-server on http://raspberrypi.local:8081/ with the default credentials:
username: admin
password: secretFirst, make sure that you change the default password within the user settings of the UI.
Then change the Hotspot settings to wlan1 in order to use it for the access point. You can then also define the SSID and security settings.
Since Raspbian Stretch, hostapd is disabled at startup and no configuration is set-up. You will see this error when starting the hostapd service:
Failed to start hostapd.service: Unit hostapd.service is masked.This can be fixed by unmasking:
sudo systemctl unmask hostapd
sudo systemctl enable hostapdAfter running sudo reboot, the configuration for the access point has been filled by RaspAP. We can have a look with
sudo nano /etc/hostapd/hostapd.confIt should look similar to this:
interface=wlan1
ssid=PiBoat
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
driver=r8188eu
ieee80211n=1
hw_mode=g
device_name=WN722N
manufacturer=TP LinkNow you can also set the configuration file by doing the following:
sudo nano /etc/default/hostapdReplace DAEMON_CONF by running sudo nano /etc/default/hostapd
DAEMON_CONF=”/etc/hostapd/hostapd.conf”Let’s now check if everything runs as expected after the last reboot:
sudo rebootCheck if you can still connect via ssh pi@raspberrypi.local. If it still works, you can still login by using the on-board wifi module of the Raspberry. If this is not the case, you should attach a keyboard to the Raspberry and look for errors in the logs. Have a look into journalctl -b -e if this is the case.
To be sure everything is configured correctly, you can run iw dev.
You can also check the status of both configured services:
sudo systemctl status hostapd.servicesudo systemctl status dnsmasq.serviceIf everything is running correctly, you can now connect to the network on your phone:
I hope this helps you converting your raspberry into a Wifi access point 😃.
You can also check out some of my other tutorials like using your Raspberry for retrieving GPRS signals 📝🤖.
