How to Configure a Wireless Access Point

how to configure the wireless access point

Sometimes you need a Linux machine — a Raspberry Pi, an old laptop, a dedicated router appliance — to broadcast its own Wi-Fi network rather than just connecting to one. This is called running the machine as a wireless access point (AP). This article explains, from first principles, how access points work, what software makes this possible on Linux, and walks through a complete, practical setup using hostapd and dnsmasq.

What Is a Wireless Access Point?

An access point is a device that creates and broadcasts a Wi-Fi network (an SSID), allowing client devices to connect to it, much like a home router does. On Linux, this role is fulfilled primarily by hostapd (HostAP Daemon), which turns a compatible wireless network interface into an AP, working with the kernel’s mac80211 wireless subsystem.

flowchart TD
    A[hostapd] -->|Broadcasts SSID, Handles Auth| B[Wireless Interface in AP Mode]
    B --> C[Client Devices Connect]
    C --> D[dnsmasq - DHCP + DNS]
    D --> E[Clients Get IP Addresses]
    B --> F[Optional: Bridge/NAT to Internet-Facing Interface]

Requirements

  1. A wireless network adapter that supports AP mode (not all adapters do — check with iw list)
  2. hostapd — handles the actual Wi-Fi broadcasting and client authentication
  3. dnsmasq — provides DHCP and optionally DNS for connected clients
  4. (Optional) NAT/routing configuration if you want to share an existing internet connection with AP clients

Step 1: Check AP Mode Support

iw list | grep -A 10 "Supported interface modes"

Look for AP in the list of supported modes. If it’s not listed, your specific wireless adapter/driver combination cannot act as an access point.

Step 2: Install Required Software

sudo apt install hostapd dnsmasq

Step 3: Assign a Static IP to the Wireless Interface

sudo nano /etc/dhcpcd.conf

Add (for interface wlan0):

interface wlan0
    static ip_address=192.168.4.1/24
    nohook wpa_supplicant

Restart:

sudo systemctl restart dhcpcd

Step 4: Configure hostapd

sudo nano /etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=MyLinuxAP
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=SecurePassphrase123
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Point the system to this configuration file:

sudo nano /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"

Step 5: Configure dnsmasq for DHCP

Back up the default config first:

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf
interface=wlan0
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h

This hands out IP addresses from .2 to .20 on the 192.168.4.0/24 subnet, with a 24-hour lease time.

Step 6: Enable IP Forwarding (If Sharing Internet Access)

sudo nano /etc/sysctl.conf

Uncomment or add:

net.ipv4.ip_forward=1

Apply immediately:

sudo sysctl -p

Step 7: Configure NAT (If Sharing an Existing Internet Connection via eth0)

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

Save these rules so they persist across reboots:

sudo apt install iptables-persistent
sudo netfilter-persistent save

Step 8: Start Everything

sudo systemctl unmask hostapd
sudo systemctl enable --now hostapd
sudo systemctl enable --now dnsmasq

Step 9: Verify

sudo systemctl status hostapd
sudo systemctl status dnsmasq

From another device, search for Wi-Fi networks named MyLinuxAP and attempt to connect using the configured passphrase.

Comparison Table: AP Mode vs. Client Mode

AspectClient ModeAP Mode
RoleConnects to an existing networkCreates and broadcasts a new network
Softwarewpa_supplicant, NetworkManagerhostapd
IP assignmentReceived via DHCP from the networkHanded out to clients via dnsmasq
Typical deviceLaptop, phoneRouter, Raspberry Pi acting as a hotspot

Real-World Use Case: A Portable Wi-Fi Hotspot for IoT Device Setup

Many IoT/embedded product setups use a Raspberry Pi or similar device configured exactly as above to create a temporary local network, allowing a smartphone app to connect directly to the device for initial configuration (Wi-Fi credentials, account linking) before the device connects to the customer’s actual home network.

Real-World Use Case: Extending Coverage in a Warehouse

An old laptop with a compatible wireless card can be repurposed as a bridge access point, extending Wi-Fi coverage to a warehouse floor by connecting to the main network over Ethernet (eth0) and rebroadcasting Wi-Fi via wlan0 using the exact NAT/bridging steps above.

Best Practices

sudo iw dev wlan0 scan | grep -E "SSID|freq"<br>
[Service]
Restart=on-failure

Troubleshooting

Problem: hostapd fails to start — “Could not configure driver mode”

The wireless adapter or driver doesn’t support AP mode, or another process (like wpa_supplicant or NetworkManager) is still controlling the interface:

sudo systemctl unmask hostapd
sudo systemctl enable --now hostapd
sudo systemctl enable --now dnsmasq

Problem: SSID broadcasts but clients can’t connect

Double-check the passphrase and encryption settings match what the client expects, and confirm wpa_key_mgmt and wpa_pairwise settings are supported by your client devices.

Problem: Clients connect but get no IP address

Check dnsmasq status and logs:

sudo systemctl status dnsmasq
sudo journalctl -u dnsmasq -n 50

Problem: Clients connect and get an IP, but have no internet access

Verify IP forwarding is enabled and NAT rules are correctly applied:

sysctl net.ipv4.ip_forward
sudo iptables -t nat -L -v

Problem: AP works but range is very poor

Some USB Wi-Fi adapters have weak transmit power in AP mode compared to dedicated router hardware — this may be a hardware limitation rather than a configuration issue. Consider a dedicated AP-capable adapter for serious deployments.

Conclusion

Turning a Linux machine into a wireless access point is a powerful, flexible capability, whether for IoT device setup, extending network coverage, or building custom networking appliances. By combining hostapd (for broadcasting and authenticating the Wi-Fi network) with dnsmasq (for DHCP/DNS) and standard Linux IP forwarding/NAT, you can build a fully functional access point from commodity hardware — as long as your wireless adapter supports AP mode in the first place.

Further Reading

Exit mobile version