Hotspot/Access point über den On-Board WiFi Adapter einrichten aspberry Pi Zero WH

  • Hallo an alle!


    Ich habe bereits mehr als 1h die Forum Einträge dursucht und habe kein ähnlichen Forum Beitrag gefunden und stelle deshalb hier meine Frage.

    Ich bin ein blutiger Anfänger was Programmieren oder Raspberri Pi angeht und möchte wie schon in der Überschrift steht, einen Hotspot/Access Point über den on-board WiFi Adapter einrichten.

    Die Idee ist also den Raspberry über wlan0 mit Router zu verbinden und über das externe Doungle wlan1, das Signal an Wifi fähige Geräte z.B. Smartphone weiterzuleiten. Dabei soll die Empfangsreichweite mit den USB Doungle deutlich verbessert werden.

    Dazu möchte ich gerne meinen Raspberry Pi Zero WH mit Waveshare 16595 ETH/USB HUB HAT verwenden und ein externes Doungle (Long-Range USB Adapter Alfa Network AWUS036NH).

    Ich habe bereits mehrere Tutorials ausprobiert und komme einfach nicht zu meinem gewünschten Ergebnis. Einer meiner letzten Tutorials, die mich weiter gebracht haben als eher zuvor werde ich zum Schluss anfügen.


    In Moment bekomme ich zwar die SSID angezeigt kann mich damit aber nicht koppeln / verbinden, nach einigen sekunden erscheint auch die Meldung "Keine Internetverbindung".

    vielleicht kann mir ja jemand helfen, das Problem endlich zu lösen. Ich würde mich auch erkenntlich zeigen.


    Solltet ihre noch weitere Infos benötigen, gibt mir bitte bescheid!


    Tutorial:



    Dieser Beitrag zeigt ihnen die notwendigen Schritte zum Einrichten des Raspberry Pi Zero W als WLAN-Router.

    Getestet habe ich es mit Raspbian Buster Lite (Version September 2019) auf Raspberry Pi Zero W und diesem USB-WLAN-Adapter.



    Die obige Abbildung zeigt einen Überblick über die Idee. Hier einige Annahmen:

    Raspberry Pi Zero W (der Router) verbindet sich mit einem bestehenden WLAN-Netzwerk (d. h. Hotspot / Access Point) für den Internetzugang über den integrierten WLAN-Adapter.


    Der Router erstellt über einen USB-WLAN-Adapter ein privates WLAN-Netzwerk (192.168.3.0/24).

    Die IP-Adresse der Schnittstelle für das private Netzwerk ist auf 192.168.3.254 eingestellt.

    Der IP-Adressbereich für das private Netzwerk reicht von 192.168.3.1 bis 192.168.3.20.

    Ein mit dem privaten Netzwerk verbundenes Gerät kann über den Router auf das Internet zugreifen.


    1-1. Aktualisieren Sie wie immer die Paketliste und aktualisieren Sie zuerst die installierte Software.

    Code
    sudo apt-get update && sudo apt-get upgrade -y

    1-2. Installieren Sie ‚hostapd‘ und dnsmasq‘.

    Code
    sudo apt-get install hostapd dnsmasq -y

    Bevor Sie mit der Arbeit an den Konfigurationen beginnen, überprüfen Sie die Schnittstellennamen für das On-Board-WLAN und den WLAN-Adapter. Diese Namen werden später verwendet.


    2-1. Führen Sie den Befehl „ifconfig“ aus, ohne den WLAN-Adapter anzuschließen.

    Code
    sudo ifconfig


    Sie sollten „wlan0“ sehen können. Dies ist der Schnittstellenname für den integrierten WiFi-Adapter.

    2-2. Verbinden Sie dann den WLAN-Adapter und führen Sie denselben Befehl aus. Diesmal werden Sie feststellen, dass „wlan1“ hinzugefügt wird. Dies ist der Name für einen neu angeschlossenen USB-WLAN-Adapter. Jetzt kennen wir also die Schnittstellennamen:

    wlan0: WLAN an Bord

    wlan1: WLAN-Adapter

    3-1. Öffnen Sie /etc/dhcpcd.conf

    Code
    sudo nano /etc/dhcpcd.conf


    3-2. Kopieren Sie unten am Ende der Datei. [6]



    Code
    Interface wlan1
    Static ip_address = 192.168.3.254/24
    # den wpa_supplicant-Hook nicht aufrufen
    nohook wpa_supplicant
    # keine DHCP-Anfragen senden
    denyinterfaces wlan1
    # keine DHCP-Anfragen senden


    Wie in [1] vorgeschlagen, benennen Sie die ursprüngliche Konfigurationsdatei um und erstellen Sie eine neue Datei von Grund auf.


    4-1. Benennen Sie die Originaldatei um.


    Code
    sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig


    4-2. Erstellen Sie eine neue Datei.


    Code
    sudo nano /etc/dnsmasq.conf


    4-3. Kopieren Sie die Zeilen unten, speichern und schließen Sie die Datei.


    Code
    interface=wlan1
    dhcp-range=192.168.3.1,192.168.3.20,255.255.255.0,24h


    5-1. Erstellen Sie die Konfigurationsdatei


    Code
    sudo nano /etc/hostapd/hostapd.conf


    5-2. Kopieren Sie die folgenden Zeilen, speichern und schließen Sie die Datei. Ersetzen Sie <NETWORK_NAME> und <PASSWORD> durch das, was Sie für Ihr privates Netzwerk wünschen



    5-3. Geben Sie den Speicherort der Konfigurationsdatei an. Öffnen Sie dazu zuerst /etc/default/hostapd


    Code
    sudo nano /etc/default/hostapd


    5-4. Fügen Sie dann die folgende Zeile hinzu, speichern und schließen Sie die Datei.

    Code
    DAEMON_CONF="/etc/hostapd/hostapd.conf"


    5-5. Aktivieren Sie hostapd, indem Sie die folgenden Befehle ausführen


    Code
    sudo systemctl unmask hostapd.service

    Code
    sudo systemctl enable hostapd.service


    6-1. Öffnen Sie die Konfigurationsdatei.

    Code
    sudo nano /etc/sysctl.conf



    6-2. Suchen Sie nach der Zeile unten.

    Code
    #net.ipv4.ip_forward=16-3. 


    Entkommentieren Sie die Zeile. Nun sollte es so sein:


    Code
    net.ipv4.ip_forward=1



    7-1. Führen Sie diesen Befehl aus:


    Code
    sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
    
    
    sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    
    
    sudo iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT



    7-2. Sichern Sie die Konfiguration.

    Code
    sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"


    7-3. Um die Regeln beim Booten zu laden, öffnen Sie /etc/rc.local,


    Code
    sudo nano /etc/rc.local


    7-4. Fügen Sie dann diese Zeile oberhalb von „exit 0“ hinzu.


    Code
    iptables-restore < /etc/iptables.ipv4.nat


    8-1. Öffnen Sie /etc/wpa_supplicant/wpa_supplicant.conf


    Code
    sudo nano /etc/wpa_supplicant/wpa_supplicant.conf


    8-2. Fügen Sie unten am Ende der Datei Zeilen hinzu. Ersetzen Sie <NETWORK_NAME> und <PASSWORD> durch die entsprechenden Zeichenfolgen für Ihr WLAN-Netzwerk für den Internetzugang.



    Code
    network={
        ssid="NETWORK_NAME"
        psk="PASSWORD"
        key_mgmt=WPA-PSK
    }


    Speichern und schließen.




    9-1. Das Board neu starten

    Code
    sudo reboot
  • Ich bin inzwischen ein Stückchen weitergekommen, jetzt kann ich mich zumindest koppeln bzw. verbinden, aber leider mit der selben Meldung "Keine Internetverbindung"

  • Vielleicht kann mir ja jemand helfen das Problem endlich zu lösen. Derjenige der mir weiterhilft bekommt 20,-€ per PayPal überwiesen.

  • Vielleicht kann mir ja jemand helfen das Problem endlich zu lösen. Derjenige der mir weiterhilft bekommt 20,-€ per PayPal überwiesen.

    Rein zur Info: nach 12h eine Lösung erwarten und dann auch noch mit monetären Anreizen locken kommt erfahrungsgemäß in keinem Forum gut an!

    Hier handelt es sich um ein User-helfen-User Forum.

    Wenn das Problem so dingend ist, dann solltest Du in Erwägung ziehen, professionelle Hilfe zu suche, die ist dann aber auch etwas teurer. ;)


    Was Du allerdings erreichen willst, ist mir nicht ganz klar. warum können die Geräte im Privat LAN nicht direkt zum Accesspoint?

    Soll der Pi nur als Extender dienen?

    Und was die großartigen Versprechungen der Reichweitenerhöhung angehen bin ich auch skeptisch.

    Im freien Gelände kann das was nutzen, aber in Gebäuden kommt es auch immer auf die Infrastruktur an (bauliche Beschaffenheit, sonstige Störeinflüsse).


    Gruss

  • Danke für deine Hilfe und deinen Rat! Ich möchte tatsächlich den Raspberry als einer Art Extender nutzen und das tatsächlich im Garten ohne große Hindernisse die die Reichweite verringern.

  • Da halte ich einen Pi Zero W aber eher für ungeeignet, zumindest, was den Durchsatz angeht!

    Technisch sicherlich zu realisieren, aber der Zero W ist von Hause aus schon nicht der schnellste, dann noch als WLAN Bridge dürfte den Durchsatz nochmals nach unten drücken.

    Muss es ein Pi sein?

    Warum keinen fertigen Extender von z.B, AVM?


    Dieses Tutorial beschreibt etwas ähnliches mit einem Pi (kein Zero), evtl. kannst Du hier etwas ableiten.

    In dem o.a. Tutorial sehe ich z.B. keine Bridge Einstellungen.

    Ich habe mich selbst aber damit auch noch nicht nähre befasst.


    Gruss

  • Hi, danke nochmal für deine Zeit und Mühe! Tatsächlich habe ich bereits dieses Tutorial versucht für meine Bedürfnisse anzupassen, leider ohne Erfolg.


    Sollte möglichst schon ein Pi sein, da ich es später auch mobil nutzen möchte z.B bei outdoor Aktivitäten. Es werden auch keine große Datensätze durchgejagt. Dient meist rein für Kommunikation.


    Zur Not hätte ich noch den Raspberry Pi 3B+ zu Verfügung, aber der kleine Zero wäre mir tatsächlich lieber.


    Grüße

  • Die SID sieht man (z.B Smartphone), aber es wird aber nicht connected??

    Bei mir ist es 2 Jahre her :)


    in (hier)

    /etc/dnsmasq.conf

    ---> dhcp-range=192.168.3.1,192.168.3.20,255.255.255.0,24h

    #ändern

    ---->dhcp-range=192.168.3.2,192.168.3.20,255.255.255.0,24h


    weil die vergebene ip solte nicht 192.168.3.1 sein


    *edit* an so etwas hab ich glaub ich 2 Wochen gebasteln :)

    ich kann mich nicht erinneren etwas an

    /etc/dhcpcd.conf

    geändert zu haben. Nein /etc/dhcpcd.conf hatte ich nichts geändert. Weil das Script bis heute nur von einem Pi zum anderen (egal welches Model) kopiert und in betrieb genommen wird.

  • PS: Vielleicht kann der USB-Wlan-Stick gar keinen AP Mode.


    Hier mal ein Befehl (Raspberry 3 mit Ubuntu) was der Onbord Chip kann


    Code
    iw phy phy0 info 

    #bei einem USB-Wlan-Stick vermutlich so (iw phy phy1 info)



    Code
    Supported interface modes:
    * IBSS
    * managed
    * AP     <<<<<<-----------------------------------------
    
    * P2P-client
    * P2P-GO
    * P2P-device


    Ich hab zum Beispiel eine Wlan-Stick der kann Monitor Mode aber keinen AP Mode. Da muss * AP auftauchen sonst kann er es nicht in dem Linux, auch wenn er es Windows könnte.

  • Es ist sicher möglich noch weitere Anleitungen aus dem Internet zu fischen. Aber wenn eine Anleitung nicht funktioniert, ist primär der Autor derselben zuständig. Hast Du den schon gefragt ?


    Für mich schaut die Verwendung von /etc/rc.local in systemd nicht nach höchster Kompetenz aus.


    Die Originaldokumentation für den RaspberryPi bringt zwei Anleitungen für ein Wireless Accesspoint Setting. Routed und bridged unter Configuration von https://www.raspberrypi.org/documentation/computers/


    Mit etwas Eigeninitiative sollte es möglich sein die dortigen Schnittstellen WLAN (AP) und LAN auf wlan1 und wlan0 umzukonfigurieren.

    Vorraussetzung dafür ist aber, dass Dein HAT - WLAN überhaupt ersmal eine Verbindung zu Deinem Router aufbaut.



    Servus !

    RTFM = Read The Factory Manual, oder so

  • Also ich habe jetzt alles versucht leider ohne Erfolg!


  • Vielen Dank! Das Tutorial ist schon paar Jahre alt, den Autor habe ich schon vor einer Woche angeschrieben und leider bisher keine Antwort bekommen

  • Vielen Dank! Das Tutorial ist schon paar Jahre alt, den Autor habe ich schon vor einer Woche angeschrieben und leider bisher keine Antwort bekommen

    Beachte bei der Suche nach Tutorials mal das Datum der Ergebnisse und suche dir die neueren Ergebnisse raus. Das soll jetzt keine Wertung deiner Fremdsprachenkenntnisse sein, aber schränke die Suche nicht in der Sprache ein. So schwer ist es gar nicht, auch mit geringen Englischkenntnissen eine Schritt für Schritt Anleitung auf englisch abzuarbeiten.

    Noch ein Tipp: Suche mal nach "balena access point" Da gibt es ein OS für den Pi (in der Anleitung ein 3er) extra für den Einsatz als Accesspoint.

  • Also ich hab nichts festes an irgend einer Konfigurations-datei geändert, von irgendetwas. Ich hab ein Udev-Script (mit Udev-rule) welches den Hotspot einschaltet sobald der Stick ( --> lsusb im Terminal ) an der ID erkannt wird. eingesteckt wird und beendet wenn er ausgesteckt wird.

    Es ist ein Script welches rein DNSMAsq verwendet für DHCP und Port 53 (DNS).

    Ja der Dnsmasp kann beides sein ein DHCP Server und ein Nameserver.

    Dazu muss man schreiben das diese Systemd Dhcp "DingS" Dienst abgeschaltet wird weil DNSMASQ-Dhcp und dieser Systemd-Dhcp Dienst sich gegenseitig beist. Gelaufen ist das Script in Debian 9 (Jessie????) und Debian 10 (Buster??) ((((Meine Eselsbrücke Windows 11 soll kommen wie auch Debian 11 (bulleys)))))))

    Bei mir ist Script mittlerweile so tief drin, dass ich gar nicht mehr sagen kann, was alles sein muss damit es geht, Aber es geht :) Muss mal schauen wie man das ausmistet :)


    Exesor

    Da hast aber einen Guten Sick ausgesuch :) :) der bringt es echt :)

  • Moin, meinst du das jetzt positiv mit der Externen Antenne oder negativ? Klär mich bitte auf.

  • So hab es jetzt bei mir angeschaut und ich hab ja gnadenlos den Systemd-Name-resoloution service ausgeschaltet, das ist eben das Problem, der "Nameserver". Aber nicht hier, beim OT geht der dhcp Server nicht. Nameserver kommt später. Also hier mal ein Script ohne Nameserver.


    nano rpi_apointer.sh

    chmod +x rpi_apointer.sh

    #PS: bitte anschauen, es soll mit root Rechten laufen :) :) :)

    hab es nicht getestet, aber kein /etc/udhcpd oder wie das oben beschrieben ist nötig.

    Der Dhcpd Server müsste gehen mit dnsmasp


    *edit* google Nameserver auskommentiert *grins*

    Es gibt Internet Provider bei denen gehen die google Nameserver gar nicht, wie bei mir z.B *sorry*

    Es ging eigentlich vorrest nur damit ein Smartphone außer nur die SSID auch eine IP mittels dhcp (dnsmasq) bekommt.


    Ja da kann man viel Zeit brauchen es zum Laufen zu bringen.

    Aber der Stick ist nicht das Problem, weil er es können müsste. AP

  • Das obige Skript benötigt keine Änderung an irgend einer Konfiguration Datei.

    Das --port 0 sorgt dafür das dieser dnsmasq nur als dhcp Server läuft.

    Vielleicht fehlt noch ein & dahinter.


    So wie es ist, soll es im Terminal im Desktop von RaspberryOS ausgeführt werden.

    Da hostapd nicht beendet wird könnte man sich die ProzessID von dnsmasq merken

    so ungefähr: dnsmasq ................. & dnsmasq_pid=$!.

    Nachdem hostapd mit CTRL+C gekillt wurde, danach hinter hostapd noch einfügen

    kill -9 "$dnsmasq_pid"

    und auch die iptables aufräumen. So als ob nichts gewesen wäre :) :) :)




    *edit* 7 Stunden später: :)

    Mir ist etwas wichtiges eingefallen!!!

    Wenn eine Desktop Umgebung mit dem Netzwerkmanger läuft, muss der Stick als unmanaged markiert werden.


    Wenn diese Datei vorhanden ist (leider bin ich in Ubuntu) Aber wenn, dann:

    nano /etc/NetworkManager/NetworkManager.conf

    # Unten einfügen

    #z.B:

    unmanaged-devices=mac:xx:27:xx:57:xx:e0;mac:xx:27:xx:02:xx:b5


    mac Addresse von hier: ifconfig wlan1 ----> HWaddr


    Damit überhaupt was geht muss der Stick geblockt werden für den Network-Manger (Symbol in der Taskleiste).