Warum startet hostapd in IEEE 802.11a (5 GHz) nicht beim Booten?

1186
dersteps

Ich habe Probleme hostapdbeim Erstellen eines Zugangspunkts beim Systemstart, wenn dieser für die Ausführung in IEEE 802.11a (5 GHz) konfiguriert ist. Das manuelle Ausführen über die Befehlszeile oder in IEEE 802.11g (2,4 GHz) funktioniert einwandfrei. Nur wenn ich versuche, den AP beim Booten zu erstellen, schlägt er fehl.

Lassen Sie mich zunächst einige Details geben.

Systemumgebung

  • Debian 8.9 (Jessie) 64-Bit ( unameAusgabe siehe unten )
  • WLAN-Adapter ist ein Azurewave AW-NE785H mit Atheros AR9280 / AR5B95-Chipsatz (unterstützt sowohl 802.11a als auch 802.11g, ist AP-ready)

uname -a ergibt: Linux HOSTNAME 3.16.0-4-amd64 #1 SMP Debian 3.16.43-2+deb8u2 (2017-06-26) x86_64 GNU/Linux

Was ich versuche zu tun

Ich versuche, einen Zugangspunkt (Access Point, AP) zu erstellen, der im 802.11a-Modus (5 GHz) ausgeführt wird und beim Booten des Systems gestartet wird.

Was das Problem ist

Das Problem ist, dass der AP beim Booten des Systems nicht erstellt wird, obwohl ein Init-Skript vorhanden /etc/init.dist, das beim Booten tatsächlich ausgeführt wird. Noch seltsamer ist, dass, wenn ich versuche, den AP im IEEE 802.11g-Modus (2,4 GHz) auszuführen, alles einwandfrei funktioniert, der AP beim Systemstart hochgefahren wird. Gleiches gilt für den manuellen Start hostapdentweder mit service hostapd startoder hostapd <my-config-file>.

Was ich bisher herausgefunden habe / logs / config

Hier ist meine hostapdKonfigurationsdatei ( /etc/hostapd/hostapd.cfg):

interface=wlan0 driver=nl80211  country_code=DE ieee80211n=1 ieee80211ac=1 wmm_enabled=1  ssid=MYSSID hw_mode=a channel=acs_survey macaddr_acl=0 auth_algs=1  ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=supersecretpassphrasehere wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP  dump_file=/tmp/hostapd.dump  logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 

Hier ist mein Init-Skript ( /etc/init.d/hostapd):

#!/bin/sh  ### BEGIN INIT INFO # Provides: hostapd # Required-Start: $remote_fs $network $syslog # Required-Stop: $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Advanced IEEE 802.11 management daemon # Description: Userspace IEEE 802.11 AP and IEEE 802.1X/WPA/WPA2/EAP # Authenticator ### END INIT INFO  PATH=/sbin:/bin:/usr/sbin:/usr/bin DAEMON_SBIN=/usr/sbin/hostapd DAEMON_DEFS=/etc/default/hostapd DAEMON_CONF=/etc/hostapd/hostapd.cfg NAME=hostapd DESC="advanced IEEE 802.11 management" PIDFILE=/run/hostapd.pid LOGFILE=/var/log/hostapd_log  [ -x "$DAEMON_SBIN" ] || exit 0 [ -s "$DAEMON_DEFS" ] && . /etc/default/hostapd [ -n "$DAEMON_CONF" ] || exit 0  DAEMON_OPTS="-dd -f $LOGFILE -B -P $PIDFILE $DAEMON_OPTS $DAEMON_CONF"  . /lib/lsb/init-functions  case "$1" in start) log_daemon_msg "Starting $DESC" "$NAME" start-stop-daemon --start --oknodo --quiet --exec "$DAEMON_SBIN" \ --pidfile "$PIDFILE" -- $DAEMON_OPTS >/dev/null log_end_msg "$?" ;; stop) log_daemon_msg "Stopping $DESC" "$NAME" start-stop-daemon --stop --oknodo --quiet --exec "$DAEMON_SBIN" \ --pidfile "$PIDFILE" log_end_msg "$?" ;; reload) log_daemon_msg "Reloading $DESC" "$NAME" start-stop-daemon --stop --signal HUP --exec "$DAEMON_SBIN" \ --pidfile "$PIDFILE" log_end_msg "$?" ;; restart|force-reload) $0 stop sleep 8 $0 start ;; status) status_of_proc "$DAEMON_SBIN" "$NAME" exit $? ;; *) N=/etc/init.d/$NAME echo "Usage: $N " >&2 exit 1 ;; esac  exit 0 

Hostapd-Protokolldatei

Wie Sie sehen können, sagte ich hostapdzu schreiben /var/log/hostapd_log. Ich habe versucht, den AP beim Booten noch einmal zu erhöhen, und hier ist das, was ich aus der Protokolldatei gelesen habe (das Ganze bestand aus fast 500 Zeilen):

  1. hostapd verwendet die erwartete Konfigurationsdatei ( /etc/hostapd/hostapd.cfg)
  2. hostapd setzt erwartungsgemäß die Land- / Regulierungsdomäne auf DE
  3. hostapd startet wie erwartet die automatische Kanalauswahl ( channel=acs_survey).
    • Hier scheint etwas schief zu gehen. Der Treiber ( nl80211) meldet einen fehlgeschlagenen Frame-Befehl ( ret=-22 (Invalid argument)).
  4. 5 ACS-Umfrage-Scans werden ohne Fehlermeldungen ausgeführt
  5. ACS schlägt mit der folgenden Meldung fehl, dann ist es das.

Hier die Protokollnachrichten, wenn ACS fehlschlägt:

ACS: Trying survey-based ACS ACS: Unable to collect survey data ACS: All study options have failed Interface initialization failed wlan0: interface state ACS->DISABLED wlan0: AP-DISABLED  ACS: Possibly channel configuration is invalid, please report this along with your config file. ACS: Failed to start wlan0: AP-DISABLED  wlan0: Deauthenticate all stations [cut some lines here] hostapd_free_hapd_data: Interface wlan0 wasn't started [cut some more lines here] Interface wlan0 disabled 

Wenn ich renne service hostapd start(ohne irgendetwas zu berühren), erscheint der AP und ich kann sehen, dass ACS seine Arbeit gut macht (er wählt Kanal 40).

Google

Natürlich habe ich viel gegoogelt, um mein Problem zu lösen. Ich denke, ich habe mich darauf beschränkt, dass es ein Problem mit dem Bootprozess selbst ist oder dass Systemdienste sich gegenseitig stören. Der einzige Hinweis, den ich dabei habe, ist zu deaktivieren wpa_supplicant(der Hinweis, den ich gefunden habe, besagt, dass die Person das Problem durch Deaktivieren wpa_supplicant und andere störende Dienste gelöst hat . Leider haben sie nie die anderen Dienste erwähnt, die sie deaktiviert haben.

Ich lief systemctl status wpa_supplicantund erhielt folgende Ausgabe:

● wpa_supplicant.service Loaded: not-found (Reason: No such file or directory) Active: inactive (dead) 

Also denke ich, dass es überhaupt nicht aktiv ist?

TL; DR

Warum kann hostapdein Zugriffspunkt nicht erstellt werden, wenn er für die Ausführung im 802.11a-Modus konfiguriert ist und beim Booten gestartet wurde, der jedoch erfolgreich erstellt wird, nachdem der Startvorgang abgeschlossen ist und derselbe Befehl manuell ausgeführt wird? Was muss ich tun, um das zu erreichen, was ich versuche?

Hat jemand da draußen erfolgreich einen AP erstellt, wie ich ihn erstellen möchte? Irgendwelche Hinweise?

Wenn weitere Details erforderlich sind, stehe ich Ihnen gerne zur Verfügung.

vielen Dank im Voraus

2

1 Antwort auf die Frage

0
xuhcc

Sieht aus wie ein Fehler in Hostapd. Ich verwende die folgenden Einstellungen für den Hostapd-Dienst, um ihn automatisch neu zu starten:

[Service] Restart=on-failure RestartSec=30 # hostapd fails with exit code 0 when ACS is enabled RestartForceExitStatus=0 

(kann mit hinzugefügt werden systemctl edit hostapd)