hostapd could not connect to kernel driver

raspberry-wifi-repair

In diesem Howto erkläre ich, wie man einen WLAN Accesspoint auf einem Raspberry zum Laufen bringt – trotz des immer noch aktuellen 2014’er hostapd-Bugs.

Das Programm hostapd dient dazu, einen WLAN Access Point unter Linux zu errichten. Leider enthält es einen Bug, der dazu führt, dass es mitunter etwas störrisch ist – ich berichtete darüber auch schon bei meinen Experimenten mit Airplay im Auto. Als Notiz für mich selber hinterlege ich hier, was zu tun ist, wenn der WLAN Stick mal wieder nicht angenommen wird. In meinem Szenario errichtet hier ein Raspberry eine temporäres Gäste-WLAN. Es wird bei Bedarf von mir manuell gestartet und anschließend auch wieder beendet.

Kurzfassung für den Google Bot

Der folgende Beitrag löst diese Probleme:

  • WLAN soft blocked
  • Unable to setup interface
  • Raspberry WLAN Problem
  • hostapd Interface initialization failed
  • Gäste WLAN auf den Raspberry einrichten
  • could not connect to kernel driver raspberry

In diesem Howto gehe ich davon aus, dass es bereits ein Raspberry Grundsystem gibt. Das System hängt mit eth0 am Intranet und verfügt darüber hinaus über einen WLAN Stick.

Howto WLAN Accesspoint

apt-get install hostapd
apt-get install dnsmasq

Tipp: Falls Sie über einen Edimax EW-7811Un Mini-WLAN-Dongle verfügen, installieren Sie nicht das normale hostapd. Nutzen Sie stattdessen die angepasste hostapd-Version von Jens Segers.

Wenn das erledigt ist, wird anschließend die Datei dnsmasq.conf erzeugt, z.B. mit mcedit dnsmasq.conf.

/etc/dnsmasq.conf

interface=wlan0
dhcp-range=10.0.0.10,10.0.0.20,12h

Jetzt wird die Datei hostapd.conf erzeugt, z.B. mit mcedit hostapd.conf

/etc/hostapd.conf

interface=wlan0
driver=nl80211
ssid=FreeWifi
wpa=2
wpa_passphrase=freewifi
channel=6

Die Konfiguration ist jetzt soweit vorbereitet – fehlt nur noch das Startup-Skript. In diesem Skript findet die eigentliche „Magie“ statt, hier wird ein Workaround für den Bug in der hostapd produziert. Es wird die Datei start_ap angelegt, z.B. mit mcedit start_ap.

/home/user/start_ap

#!/bin/bash
# Workaround
sudo nmcli radio wifi off
sudo rfkill unblock wlan
sudo ifconfig wlan0 10.0.0.1
sleep 1
sudo service hostapd restart
sudo service dnsmasq restart
# Routing
sudo sysctl net.ipv4.ip_forward=1
# NAT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo hostapd /etc/hostapd.conf
# Wait for STRG+C
# Restore NAT
sudo iptables -D POSTROUTING -t nat -o eth0 -j MASQUERADE
# Restore Routing
sudo sysctl net.ipv4.ip_forward=0
# Stop Services
sudo service dnsmasq stop
sudo service hostapd stop
Mit diesem Skript wird der Accesspoint errichtet. Solange die Terminalsession aktiv ist, bleibt der Accesspoint bestehen. Wir die Session mit STRG+C beendet, wird der Accesspoint heruntergefahren sowie NAT und Routing unterbunden. Zu guter Letzt muss jetzt noch das neu angelegte Skript ausführbar gemacht werden:
chmod 755 start_ap
Kommt jetzt ein Gast zu Besuch und der Accesspoint wird benötigt, genügt es, im Terminal das start_ap Skript zu starten. Credits:Der entscheidende Hinweis darauf, was im Startup-Skript zu ändern ist, kommt aus dem Ubuntu wpa package Bugtracker. Das Problem ist dort offenbar schon ewig bekannt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert