Buildroot + Raspberry Pi Zero W: Hotspot (hostapd/dnsmasq) startet nicht

OP #8009556

Hallo,

ich versuche verzweifelt, meinen Raspberry Pi Zero W mit Hotspot und Buildroot zu kompilieren und zum Laufen zu bringen.

Hier ist meine defconfig:

1
# -----------------------
2
# Architecture
3
BR2_arm=y
4
BR2_arm1176jzf_s=y
5
BR2_ARM_EABIHF=y
6

7
# -----------------------
8
# Toolchain (Optimiert: Headers fixieren)
9
BR2_KERNEL_HEADERS_6_1=y
10
BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
11
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
12
BR2_TOOLCHAIN_BUILDROOT_CXX=y
13

14
# -----------------------
15
# System / Init
16
BR2_TARGET_GENERIC_HOSTNAME="yio-remote"
17
BR2_TARGET_GENERIC_ISSUE="YIO Remote (Minimal)"
18
BR2_INIT_SYSTEMD=y
19
# Wir nutzen systemd-networkd für minimalen Overhead
20
BR2_PACKAGE_SYSTEMD_NETWORKD=y
21
BR2_PACKAGE_SYSTEMD_RESOLVED=y
22
# ttyS0 ist korrekt für den Pi Zero (Mini-UART)
23
BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"
24
BR2_TARGET_GENERIC_BAUDRATE_115200=y
25

26
# -----------------------
27
# Kernel (Nutzt dein Fragment)
28
BR2_LINUX_KERNEL=y
29
BR2_LINUX_KERNEL_CUSTOM_GIT=y
30
BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git"
31
BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rpi-6.1.y"
32
BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi"
33
BR2_LINUX_KERNEL_DTS_SUPPORT=y
34
BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-zero-w"
35
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="../board/remote/configs/remote_kernel.config"
36

37
# -----------------------
38
# Raspberry Pi Infrastructure
39
BR2_TARGET_RPI_FIRMWARE=y
40
BR2_TARGET_RPI_FIRMWARE_VARIANT_PI_ZERO_W=y
41
# DTS Overlays werden für dein sharp.dtbo benötigt
42
BR2_TARGET_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS=y
43

44
# -----------------------
45
# WLAN & Networking
46
BR2_PACKAGE_LINUX_FIRMWARE=y
47
# Nur das absolut Nötige für den Pi Zero W Chip (Cypress/Broadcom 43430)
48
BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y
49
BR2_PACKAGE_WPA_SUPPLICANT=y
50
BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y
51
BR2_PACKAGE_WPA_SUPPLICANT_DBUS=y
52

53
# -----------------------
54
# SSH & Utilities (Lightweight)
55
BR2_PACKAGE_DROPBEAR=y
56
BR2_PACKAGE_DROPBEAR_SMALL=y
57
# Hilft gegen "Entropy Starvation" beim Booten auf langsamen CPUs
58
BR2_PACKAGE_HAVEGED=y
59
# I2C Tools für deinen Check
60
BR2_PACKAGE_I2C_TOOLS=y
61

62
# -----------------------
63
# Filesystem & Image
64
BR2_ROOTFS_OVERLAY="../board/remote/root-overlays"
65
BR2_ROOTFS_POST_BUILD_SCRIPT="../board/remote/post-build.sh"
66
BR2_ROOTFS_POST_IMAGE_SCRIPT="../board/remote/post-image.sh"
67

68
# Nur ext4 aktivieren (ext2 Definitionen entfernt für Konsistenz)
69
BR2_TARGET_ROOTFS_EXT4=y
70
BR2_TARGET_ROOTFS_EXT4_SIZE="256M"
71
BR2_TARGET_ROOTFS_EXT4_DISABLE_JOURNALING=y
72

73
# Tools für Genimage
74
BR2_PACKAGE_HOST_DOSFSTOOLS=y
75
BR2_PACKAGE_HOST_MTOOLS=y
76
BR2_PACKAGE_HOST_GENIMAGE=y
77
BR2_TARGET_IMAGES_USE_CUSTOM_GENIMAGE=y
78
BR2_TARGET_GENIMAGE_CONFIG="../board/remote/genimage.cfg"
79

80

81
BR2_PACKAGE_HOSTAPD=y
82
BR2_PACKAGE_HOSTAPD_DRIVER_NL80211=y
83
BR2_PACKAGE_HOSTAPD_HAS_WIFI_DRIVERS=y
84
# You also need a DHCP server to give IPs to connecting devices
85
BR2_PACKAGE_DNSMASQ=y
86
BR2_PACKAGE_SYSTEMD_RFKILL=y
87
BR2_PACKAGE_UTIL_LINUX_RFKILL=y
88
BR2_PACKAGE_HAS_UDEV=y
89
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y

Und hier meine Kernel-Config:

1
# =====================================
2
# SYSTEMD CORE REQUIREMENTS (Wasserdicht)
3
# =====================================
4
CONFIG_CGROUPS=y
5
CONFIG_CGROUP_FREEZER=y
6
CONFIG_CGROUP_DEVICE=y
7
CONFIG_CGROUP_CPUACCT=y
8
CONFIG_CGROUP_PIDS=y
9
CONFIG_CGROUP_BPF=y
10
CONFIG_NAMESPACES=y
11
CONFIG_USER_NS=y
12
CONFIG_PID_NS=y
13
CONFIG_NET_NS=y
14
CONFIG_DEVTMPFS=y
15
CONFIG_DEVTMPFS_MOUNT=y
16
CONFIG_FHANDLE=y
17
CONFIG_AUTOFS4_FS=y
18
CONFIG_SIGNALFD=y
19
CONFIG_TIMERFD=y
20
CONFIG_EPOLL=y
21
CONFIG_INOTIFY_USER=y
22
CONFIG_SYSFS=y
23
CONFIG_PROC_FS=y
24
CONFIG_DMIID=y
25
CONFIG_UNIX=y
26
CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
27

28
# --- HARDWARE CORE (UART, I2C, SPI) ---
29
CONFIG_SERIAL_AMBA_PL011=y
30
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
31
CONFIG_I2C=y
32
CONFIG_I2C_CHARDEV=y
33
CONFIG_I2C_BCM2835=y
34
CONFIG_SPI=y
35
CONFIG_SPI_MASTER=y
36
CONFIG_SPI_BCM2835=y
37
CONFIG_RASPBERRYPI_FIRMWARE=y
38
CONFIG_MMC=y
39
CONFIG_MMC_BCM2835=y
40
CONFIG_GPIOLIB=y
41
CONFIG_GPIO_SYSFS=y
42
CONFIG_LEDS_GPIO=y
43

44
# --- NETWORKING & WLAN ---
45
CONFIG_NET=y
46
CONFIG_INET=y
47
CONFIG_WIRELESS=y
48
CONFIG_CFG80211=y
49
CONFIG_BRCMFMAC=y
50
CONFIG_BRCMFMAC_SDIO=y
51
CONFIG_IP_MULTICAST=y          
52

53
# --- FILESYSTEMS ---
54
CONFIG_EXT4_FS=y
55
CONFIG_VFAT_FS=y
56
CONFIG_TMPFS=y
57
CONFIG_TMPFS_POSIX_ACL=y
58

59
# --- OPTIMIZATION ---
60
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
61
CONFIG_KERNEL_XZ=y
62
CONFIG_RFKILL=y
63
CONFIG_RFKILL_INPUT=y
64

65
# --- WICHTIG FÜR WLAN-HOTSPOT ---
66
CONFIG_MAC80211=y                 # WLAN-Framework (wichtig für hostapd)
67
CONFIG_CFG80211_WEXT=y             # Kompatibilität mit WLAN-Tools
68
CONFIG_PACKET=y                    # Für raw sockets (hostapd benötigt das)
69

70
# --- NETZWERK GRUNDLAGEN ---
71
CONFIG_NETFILTER=y                 # Für Firewall (optional)
72
CONFIG_NETFILTER_ADVANCED=y
73
CONFIG_NF_CONNTRACK=y              # Connection tracking
74
CONFIG_NF_NAT=y                    # Network Address Translation
75

76
# --- FÜR BESSERES DEBUGGING ---
77
CONFIG_DEBUG_FS=y                  # Für Debug-Informationen
78
CONFIG_DYNAMIC_DEBUG=y              # Detaillierte Kernel-Logs
79
CONFIG_MAGIC_SYSRQ=y                # SysRq für Notfälle

Weiterhin habe ich folgenden Device-Tree für das rootfs_overlay erstellt:

1
├── etc
2
│   ├── dnsmasq.conf
3
│   ├── hostapd.conf
4
│   ├── modules-load.d
5
│   │   └── modules.conf
6
│   ├── network
7
│   └── systemd
8
│       ├── network
9
│       │   └── 20-wlan0.network
10
│       └── system
11
│           ├── dnsmasq.service
12
│           ├── hostapd.service
13
│           └── multi-user.target.wants
14
├── root
15
│   └── splash.png
16
└── usr
17
    └── bin

hier meine hostapd.service datei

1
[Unit]
2
Description=Hostapd IEEE 802.11 AP, Cloud and Data Server
3
After=sys-subsystem-net-devices-wlan0.device
4
Before=network.target
5
Wants=network.target
6

7
[Service]
8
Type=simple
9
ExecStartPre=-/usr/sbin/rfkill unblock wifi
10
# Set a static IP for the Pi so clients know where the gateway is
11
ExecStart=/usr/sbin/hostapd /etc/hostapd.conf
12

13
[Install]
14
WantedBy=multi-user.target

und meine dnsmasq.service datei

1
[Unit]
2
Description=DNSmasq DHCP and DNS Server
3
# Wait for the WiFi interface to be initialized
4
After=hostapd.service
5
Wants=hostapd.service
6
Before=multi-user.target
7

8
[Service]
9
Type=simple
10
# Ensure we don't start until hostapd has likely initialized the interface
11
ExecStartPre=/usr/bin/sleep 2
12
# -k keeps it in the foreground for systemd
13
# -C points to your config file
14
ExecStart=/usr/sbin/dnsmasq -k -C /etc/dnsmasq.conf
15
Restart=on-failure
16
RestartSec=5
17

18
[Install]
19
WantedBy=multi-user.target

Was ist daran falsch?

: Bearbeitet durch User

Sowas habe ich mit einem Standard-Image gemacht, und noch ein paar Sachen dazu mit apt installiert. Dann ist evtl ein bisserl überflüssiger Krams drauf, der nicht gebraucht wird. Stört ja nicht, der Speicher ist groß genug.

OP

Mario M. schrieb:

Was steht denn in /etc/dnsmasq.conf, /etc/hostapd.conf und /etc/systemd/network/20-wlan0.network?

1
cat ../board/remote/root-overlays/etc/dnsmasq.conf 
2
# Basic Networking
3
interface=wlan0
4
bind-interfaces
5

6
# DHCP IP Range (Start, End, Mask, Lease Time)
7
dhcp-range=192.168.10.10,192.168.10.50,255.255.255.0,12h
8

9
# Gateway and DNS (Pointing to the Pi)
10
dhcp-option=3,192.168.10.1
11
dhcp-option=6,192.168.10.1
12

13
# Logging (Vital for debugging without UART)
14
log-dhcp
15
log-facility=/var/log/dnsmasq.log
1
cat ../board/remote/root-overlays/etc/hostapd.conf 
2
interface=wlan0
3
driver=nl80211
4
ssid=PiZero_Hotspot
5
hw_mode=g
6
channel=6
7
macaddr_acl=0
8
auth_algs=1
9
ignore_broadcast_ssid=0
10
wpa=2
11
wpa_passphrase=YourSecretPassword
12
wpa_key_mgmt=WPA-PSK
13
wpa_pairwise=TKIP
14
rsn_pairwise=CCMP
1
cat ../board/remote/root-overlays/etc/systemd/network/20-wlan0.network 
2
[Match]
3
Name=wlan0
4

5
[Network]
6
# Kein DHCP, da wir eine statische IP für den Access Point brauchen
7
DHCP=no
8
# Statische IP-Adresse für den Hotspot (wie in Ihrer hostapd.service)
9
Address=192.168.10.1/24
10
# Stellt sicher, dass systemd-networkd das Interface nicht herunterfährt,
11
# wenn es nicht gebraucht wird (wichtig für Hotspot-Betrieb)
12
LinkLocalAddressing=no
13
# Deaktiviert automatische IPv6-Konfiguration
14
IPv6AcceptRA=no
15
# Optional: DNS-Server für Clients (wird von dnsmasq übernommen, daher hier nicht nötig)
16
# DNS=... 
17

18
# Wichtig: systemd-networkd soll KEINE Standardroute hinzufügen, da dies ein AP ist
19
# und der Pi evtl. selbst noch eine andere Netzwerkverbindung (eth0) hat.
20
# Lassen Sie [Route] Abschnitte daher komplett weg.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 8 Monate alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.