USB-WLAN als Accesspoint benutzen

  • Hallo,

    mein Pi2, der als Homeserver mit FHEM läuft, soll auch als Accesspoint für diverse WLAN-Geräte fungieren.

    Zitat

    Raspberry Pi 2 Model B Rev 1.1

    PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"

    Jetzt habe ich mir einen USB-WLAN-Adapter geholt.

    Als WLAN-Client funktioniert das, aber nicht von Hause aus als AP.

    Nach einiger Recherche bin ich auf einen "Treiber" bei Git gestossen (https://github.com/Anthony96922/mt7601u-ap).

    Kompiliert und installiert ist es. Die Einbindung via modprobe habe ich auch gemacht.

    Was noch fehlt, ist das Setzen des Kernelparameters "coherent_pool=4M".

    Ich habe erst nach Einstellungen für grub gesucht, aber scheinbar wir hier ein anderer Bootmanager benutzt und es gibt nicht die Möglichkeit in der "/etc/default/grub" den Wert "GRUB_CMDLINE_LINUX_DEFAULT" um "coherent=4M" zu ergänzen.

    Daher habe ich in "/boot/cmdline.txt" den besagten Wert an erster Stelle vor console=serial0,115200 eingefügt, Das brachte, nach einem reboot, aber nicht den erwarteten Effekt.

    "cat /proc/cmdline" gibt dann folgendes aus:

    Zitat

    coherent_pool=1M snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 coherent_pool=4M console=ttyAMA0,115200 console=tty1 root=PARTUUID=c2fb22f4-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

    Hier gibt es jetzt coherent_pool doppelt.

    Also dort wieder entfernt und das Wertepaar als letzte Zeile in "/boot/config.txt" eingefügt. Der doppelte Eintrag ist weg, aber der Wert nicht gesetzt.

    Zitat

    cat /proc/cmdline

    coherent_pool=1M snd_bcm2835.enable_headphones=0 snd_bcm2835.enable_headphones=1 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 console=ttyAMA0,115200 console=tty1 root=PARTUUID=c2fb22f4-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

    Ich weiß jetzt nicht mehr weiter, wo ich ansetzen kann um irgendwann endlich den Pi als AP nutzen zu können.

    Ich hoffe, ihr könnt mir helfen.

    Danke im Voraus, Frank


    Einmal editiert, zuletzt von RadioCarbon (7. April 2023 um 12:09)

  • RTFM vielen Dank für den Hinweis.

    Dieser Part kann aber erst in Betracht kommen, wenn die HW auch die AP-Funktionalität besitzt.

    Bei "iw phy phy3 info" konnte ich folgendes sehen:

    Zitat

    Wiphy phy3
    ...
    Supported interface modes:
    * managed
    * monitor
    ...

    Es fehlt dort *ap

    Das wollte ich mit dem Code von Git nachträglich installieren.

  • Irgendwo muss man doch diesen Kernelparameter einstellen können.

    Das coherent_pool=1M ist wohl so in der Firmware bei den bootargs eingestellt.

    Gruß Martin

  • Vielen Dank, da hätte ich das nie gefunden.

    Leider bootet der Pi nicht mehr, wenn ich das Binary im Hexeditor bearbeitet habe.

    Dann werde ich mich mal auf die Suche begeben, wie ich die Firmware ändern kann.

    Noch mal Danke für den Hinweis.

  • Warum willst du das eigentlich ändern? Eintrag in der cmdline.txt sollte doch genügen (wegen der Reihenfolge der Auswertung der Parameter)?

    https://unix.stackexchange.com/questions/6897…c/689802#689802

    Test bei mir

    vorher:

    Code
    # cat /boot/cmdline.txt
    root=/dev/mmcblk0p2 rw rootwait console=serial0,115200 console=tty1 systemd.log_target=kmsg log_buf_len=1M printk.devkmsg=on enforcing=0 fsck.repair=yes
    # dmesg | grep -i DMA:
    [    0.054370] DMA: preallocated 1024 KiB pool for atomic coherent allocations
    [    1.693440] bcm2835-dma 3f007000.dma: DMA legacy API manager, dmachans=0x1

    nachher:

    Code
    # cat /boot/cmdline.txt
    coherent_pool=6M root=/dev/mmcblk0p2 rw rootwait console=serial0,115200 console=tty1 systemd.log_target=kmsg log_buf_len=1M printk.devkmsg=on enforcing=0 fsck.repair=yes
    # dmesg | grep -i DMA:
    [    0.060536] DMA: preallocated 6144 KiB pool for atomic coherent allocations
    [    1.703492] bcm2835-dma 3f007000.dma: DMA legacy API manager, dmachans=0x1

    So wie ich das als Linux-Hobby-Schrauber sehe, sollte doch der Wert mit dem Eintrag in der cmdline.txt geändert werden (auf 6M bei meinem Test).

    Gruß Martin

  • Hallo RadioCarbon ,

    falls du wirklich den Parameter im Device-Tree ändern möchtest, der Device-Tree-Compiler dtc ist dein Freund und Helfer. Ob das dein Problem mit dem AP-Mode von deinem Stick löst, weiß ich nicht (und glaube auch nicht), aber eine interessante Spielerei mit dem Pi ist das allemal. :)

    !!Warnung: ich übernehme keine Garantie, daß dieses Vorgehen funktioniert. Manipulationen am Device-Tree können in einem nicht-bootenden System enden!!

    Eine Device-Tree-Source-Datei .dts vom aktuellen Device-Tree erzeugen:

    # dtc -@ -I fs -O dts -o foo.dts /proc/device-tree

    Die erzeugte Source-Datei foo.dts editieren (z.B. mit nano) und bei chosen - bootargs den gewünschten Commandline-Parameter ändern. Wenn man die .dts Datei aus den laufenden System über /proc/device-tree erzeugt, hat man alle Commandline Parameter in den bootargs, vom Original-Device-Tree, aus der /boot/cmdline.txt und die Kernel-Default-Commandline (siehe zgrep CONFIG_CMDLINE= /proc/config.gz), die doppelten, hier nicht notwendigen Parameter kann man löschen.

    Die editierte Source-Datei in eine .dtb-Datei zurückübersetzen:

    #dtc -@ -I dts -O dtb -o /boot/foo.dtb foo.dts

    In der /boot/config.txt den neuen Device-Tree eintragen: device_tree=foo.dtb (hatte ich beim Test ganz an den Anfang der config-Datei gesetzt)

    Dann rebooten und beten, daß der Pi startet.

    Das hat bei meinem Test-Pi so funktioniert, der dtc hatte bei mir eine Reihe von Warnings erzeugt, die habe ich ignoriert.

    Aber nocheinmal: Garantie, daß das funktioniert übernehme ich nicht und der empfohlene Weg ist über die /boot/cmdline.txt

    Gruß Martin

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!