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)