0

I want to configure my Raspberry Pi Zero 2W so that it is an AP and a device (phone) can connect to it. I installed hostap and dnsmasq and configured it like:

$ cat /etc/hostapd/hostapd.conf
interface=wlan0
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
ssid=MYSSID
wpa_passphrase=password
$ cat /etc/dhcpd.conf
interface wlan0
static ip_address=192.168.1.10/24
$ cat /etc/dnsmasq.conf
interface=wlan0
  dhcp-range=192.168.1.11,192.168.1.30,255.255.255.0,24h
$ cat /etc/default/hostapd
# Defaults for hostapd initscript
#
# WARNING: The DAEMON_CONF setting has been deprecated and will be removed
#          in future package releases.
#
# See /usr/share/doc/hostapd/README.Debian for information about alternative
# methods of managing hostapd.
#
# Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration
# file and hostapd will be started during system boot. An example configuration
# file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz
#
DAEMON_CONF="/etc/hostapd/hostapd.conf"

# Additional daemon options to be appended to hostapd command:-
#       -d   show more debug messages (-dd for even more)
#       -K   include key data in debug messages
#       -t   include timestamps in some debug messages
#
# Note that -B (daemon mode) and -P (pidfile) options are automatically
# configured by the init.d script and must not be added to DAEMON_OPTS.
#
#DAEMON_OPTS=""

and I have both dnsmasq & hostapd services running:

$ sudo systemctl status hostapd.service
● hostapd.service - Access point and authentication server for Wi-Fi and Ethernet
     Loaded: loaded (/lib/systemd/system/hostapd.service; enabled; preset: enabled)
     Active: active (running) since Fri 2024-05-17 19:02:37 PDT; 10min ago
       Docs: man:hostapd(8)
    Process: 1270 ExecStart=/usr/sbin/hostapd -B -P /run/hostapd.pid $DAEMON_OPTS ${DAEMON_CONF} (code=exited, status=0/SUCCESS)
   Main PID: 1271 (hostapd)
      Tasks: 1 (limit: 167)
        CPU: 89ms
     CGroup: /system.slice/hostapd.service
             └─1271 /usr/sbin/hostapd -B -P /run/hostapd.pid /etc/hostapd/hostapd.conf

May 17 19:02:37 cykelcam-ron systemd[1]: Starting hostapd.service - Access point and authentication server for Wi-Fi and Ethernet...
May 17 19:02:37 cykelcam-ron hostapd[1270]: wlan0: interface state UNINITIALIZED->ENABLED
May 17 19:02:37 cykelcam-ron hostapd[1270]: wlan0: AP-ENABLED
May 17 19:02:37 cykelcam-ron systemd[1]: Started hostapd.service - Access point and authentication server for Wi-Fi and Ethernet.
$ sudo systemctl status dnsmasq.service
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
     Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; preset: enabled)
     Active: active (running) since Fri 2024-05-17 19:12:58 PDT; 1s ago
    Process: 1513 ExecStartPre=/etc/init.d/dnsmasq checkconfig (code=exited, status=0/SUCCESS)
    Process: 1521 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited, status=0/SUCCESS)
    Process: 1530 ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf (code=exited, status=0/SUCCESS)
   Main PID: 1529 (dnsmasq)
      Tasks: 1 (limit: 167)
        CPU: 204ms
     CGroup: /system.slice/dnsmasq.service
             └─1529 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e06d44b80b8f1d39a95c0b0d7c65d08458e8804>

May 17 19:12:58 cykelcam-ron systemd[1]: Starting dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server...
May 17 19:12:58 cykelcam-ron dnsmasq[1529]: started, version 2.89 cachesize 150
May 17 19:12:58 cykelcam-ron dnsmasq[1529]: compile time options: IPv6 GNU-getopt DBus no-UBus i18n IDN2 DHCP DHCPv6 no-Lua TFTP conntrack ipset nftset auth cryptohash DNSSEC loop-detect inotify dumpfile
May 17 19:12:58 cykelcam-ron dnsmasq-dhcp[1529]: DHCP, IP range 192.168.1.11 -- 192.168.1.30, lease time 1d
May 17 19:12:58 cykelcam-ron dnsmasq[1529]: reading /etc/resolv.conf
May 17 19:12:58 cykelcam-ron dnsmasq[1529]: using nameserver 8.8.8.8#53
May 17 19:12:58 cykelcam-ron dnsmasq[1529]: using nameserver 8.8.4.4#53
May 17 19:12:58 cykelcam-ron dnsmasq[1529]: read /etc/hosts - 7 names
May 17 19:12:58 cykelcam-ron systemd[1]: Started dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server.

yet, no SSID MYSSID is visible when I scan for SSIDs with my phone. I'm obviously missing something, what is it?

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

UPDATE

Okay, so I downgraded to the legacy bullseye 32-bit version now and the system seems to be a lot more responsive and nicer to work with! So the above configuration gives my a ssid MYSSID to which i can connect but I'm not able to lease an IP address even though dhcpcd.service is running. The pi gets the IP 192.168.1.10/24 as expected and in systemctl status dhcpcd.service I see:

elsn0:connected to Access Point `'
DUID [SOME 14 Byte number : separated starting with] 00:01:.....
wlan0: IAID 67:23:37:47
wlan0: probing address 192.168.1.10/24
wlan0: soliciting an IPv6 router
wlan0: using static address 192.168.1.10/24
wlan0: adding route to 192.168.1.0/24
wlan0: noIPv6 Routers available

I'm not sure why it tries to look for a route, I don't want a route, I just want an AP that I can connect to to retrieve a website that is served using apache2. Not sure how I can get this resolved.

2
  • 1
    What OS is installed (detail including version)?
    – Milliways
    Commented May 18 at 2:29
  • @Milliways I've appended the ouput of $ cat /etc/os-release above
    – stdcerr
    Commented May 18 at 2:38

1 Answer 1

1

Bookworm DOES NOT use dhcpcd (although it IS possible to revert to dhcpcd) so following an old (unreferenced) tutorial is unlikely to work.

Incidentally Bookworm is NOT suggested for anything other than Pi4/5 and may not work well on an old Pi. (The Lite version is OK.) It is probably worth reading Bookworm — the new version of Raspberry Pi OS

Raspberry Pi OS Legacy (Bullseye) is recommended OS.

If you want to try anyway see How do I set up networking on Raspberry Pi OS - Bookworm which shows how to setup a static address.

Incidentally NetworkManager has inbuilt support for Access Point (which is simpler than hostapd) and can be setup on Bullseye.

See also What networking system is my Pi using?


If you want to configure dhcpcd see How to set up networking/WiFi Prevent dhcpcd from configuring a gateway on an interface

specifically set nogateway

3
  • hm, interesting...I created the uSD using the official Raspberry Pi imager though...
    – stdcerr
    Commented May 18 at 3:36
  • 1
    I stand corrected; I just tried and it is suggested. Previous posts by Simon Long stated "Zero 2 W doesn’t really have enough power for a good experience with web browsers – Bookworm is unlikely to make this better over previous versions of the OS" and others reported problems updating.
    – Milliways
    Commented May 18 at 4:25
  • please see the UPDATE in the original post. Thanks!
    – stdcerr
    Commented May 18 at 5:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.