If you want to use your Raspberry Pi as a Wi-Fi access point (AP) that connects to an existing shared Wi-Fi network and acts as a hotspot for other devices, here's how you can set it up.
This setup leverages hostapd, dnsmasq, and iptables to enable a seamless Wi-Fi AP, allowing for a faster and more reliable connection.
Prerequisites
- A Raspberry Pi (with a Wi-Fi 6 USB dongle or built-in support)
- Wi-Fi router or AP
- A stable shared Wi-Fi network to connect to
- Basic understanding of the terminal and Raspberry Pi networking
-
A text editor (e.g.,
nano
orvim
)
Step 1: Install Required Software
First, ensure your Raspberry Pi is up to date and install the necessary software packages:
sudo apt update
sudo apt upgrade -y
sudo apt install hostapd dnsmasq iptables-persistent
Step 2: Configure hostapd
for 5 GHz Wi-Fi
Create the configuration file for hostapd
:
sudo nano /etc/hostapd/hostapd.conf
Insert the following configuration:
interface=wlan1
driver=nl80211
ssid=PiRouter
hw_mode=a
channel=36
ieee80211d=1
ieee80211n=1
ieee80211ac=1
wmm_enabled=1
country_code=country_code_2_letter_ISO
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=your_secure_password
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
- Replace
country_code_2_letter_ISO
with your country code, i.e. US. - Replace
your_secure_password
with your desired WPA2 passphrase. -
hw_mode=a
sets it to 5 GHz. -
ieee80211ac=1
enables 802.11ac for Wi-Fi 6 speeds. -
channel=36
is a good 5 GHz channel to start with.
Step 3: Configure DHCP and DNS with dnsmasq
Edit the dnsmasq
configuration file:
sudo nano /etc/dnsmasq.conf
Add the following:
interface=wlan1
dhcp-range=192.168.50.10,192.168.50.50,12h
This sets up the DHCP range for devices that will connect to the Pi's Wi-Fi.
Step 4: Enable IP Forwarding and NAT
Enable IP forwarding by uncommenting the appropriate line in the sysctl configuration file:
sudo nano /etc/sysctl.conf
Uncomment the line:
net.ipv4.ip_forward=1
Apply the changes:
sudo sysctl -p
Set up Network Address Translation (NAT) to route traffic from your connected devices to the internet:
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -i wlan1 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o wlan1 -j ACCEPT
To make these iptables
rules persist after reboot, run:
sudo netfilter-persistent save
Step 5: Start Services
Enable and start the hostapd
and dnsmasq
services:
sudo systemctl enable hostapd
sudo systemctl start hostapd
sudo systemctl enable dnsmasq
sudo systemctl start dnsmasq
Step 6: Reboot and Test
Finally, reboot the Raspberry Pi:
sudo reboot
After rebooting, your Raspberry Pi should now be broadcasting the PiRouter SSID. Devices should be able to connect to it, and DHCP should assign IPs in the 192.168.50.x range.
Troubleshooting
-
Slow speeds? Make sure you’ve configured WMM (
wmm_enabled=1
), 802.11ac (ieee80211ac=1
), and check for interference in the 5 GHz band. - Devices not connecting? Ensure that your device supports 802.11ac or ax for higher speeds.
-
No IP address? Double-check the
dnsmasq
config for correct DHCP range and ensurewlan1
is properly assigned an IP.
Conclusion
With just a few steps, you can turn your Raspberry Pi into a powerful Wi-Fi access point. This setup will improve your network’s performance and allow you to share your internet connection over 5 GHz Wi-Fi, with high-speed access and support for multiple devices.
Feel free to tweak the configuration to fit your needs, and let me know if you have any questions!
Let me know if you’d like me to tweak anything or add more details!
Top comments (0)