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

OP #8009556
Lesenswert?

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
OP #8009627
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren