WLAN Verbinden nach suspend

Hallo alle zusammen,

ich hab da mal wieder ein schönes Problem.
Das Setting ist: ich habe ca. 60 Laptops mit ubuntu, die per WPA2 über WLAN (unifi) im grünen Netz sind, damit sich die User dort an der Domäne anmelden können (ubuntu 20.04 ist auf den Kisten).
Feine Sache; wird schon seit vielen Jahren so benutzt.
Die WLAN Verbindung erschaffe ich beim booten über die rc.local indem ich direkt mittels nmcli die Verbindung erstelle, das WPA2 Passwort der Verbindung zuordne und dann die Verbindung aktiviere (alles per nmcli).
Alles super soweit.

Jetzt ist es aber so, dass die Verbindung immer mal weg ist: sie taucht noch unter „bekannte Netzwerke“ auf, aber sie wird nicht verbunden.
Ein einfaches:
/usr/bin/nmcli con up VERBINDUNGSNAME
verbindet sie wieder.
Genauere Untersuchungen haben gezeigt, dass das passiert, wenn der Rechner in den Suspend geht (also Jemand den Deckel zuklappt).
Kein Problem: ist ja linux, muss man nur schauen, welche scripte bei 20.04 verwendet werden (weil bei Linux sich sowas ja immer mal ändert).
Internet sagt: lege deine Datei ausführbar und root gehörend nach: /lib/systemd/system-sleep/ und befülle sie wie folgt:

#!/bin/sh

PATH=/sbin:/usr/sbin:/bin:/usr/bin

case "$1" in
    pre)
            #code execution BEFORE sleeping/hibernating/suspending
    ;;
    post)
            #code execution AFTER resuming
    ;;
esac

exit 0

kein Problem: man muss nur dran denken, dass man entweder PATH korrekt befüllt, oder alle Befehle mit ihrem Standort ausführt (ich habe mich für zweiteres entschieden).
Mein script:

#!/bin/sh

case "$1" in
  post)
        /usr/bin/nmcli con up VERBINDUNGSNAME
        /usr/bin/touch /tmp/aufwachmarker
  ;;
esac

exit 0

Die „touch“ Zeile ist zum debugen drin, damit ich weiß, ob das script ausgeführt wird.
Tata: es wird ausgeführt … aber mein WLAN ist nicht verbunden.
Weiteres Suchen (auch sleep wurde eingefügt) ergab:
die Verbindung kann nicht „up“ gemacht werden mit nmcli solange die WLAN Karte nicht „ready“ ist. Wartet man, dann klappt das: aber wie lange ist den lang genug, damit das sicher steht? … doof…

Und deswegen meine Frage: kann ich den Status der WLAN Karte mittels cli abfragen? Dann könnte ich ein wenn dann einbauen.
ip a
zeigt vor und nach „ready“ der WLAN Karte das gleiche an.

Die Connection VERBINDUNGSNAME ist übrigens auf „automatisch verbinden“ gestellt … macht sie aber nicht.

Vielleicht hat Jemand eine Idee, sonst nehme ich halt sleep 25

LG

Holger

Hi,

auf wireless - Wifi networks device not ready - Ask Ubuntu meint man ein Neustart des Network-Managers könnte helfen. Woanders hatte jemand erfolg mit modprobe nochmal den passenden Kerneltreiber nachzuladen.

Thematisch in der Nähe ist das Tool rfkill, aber da geht es mehr um per Software oder Hardware deaktivierte Netzwerkkarten. Das könnte dir aber verraten, ob eine Software die Karte deaktiviert hat.

MFG Buster

Hallo BUster,

danke für den Input.
Ich schau mir erstmal rfkill an: vielleicht kommt dabei was raus :slight_smile:
LG
Holger

Hallo,

ich hab mit nmcli con show VERBINDUNGSNAME
mal die Einstellungen genau angeschaut.
Da gibt es zwei interessante Settings.
connection.autoconnect-priority
was ich hochsetzen werde auf 10
und
connection.autoconnect-retry
was bei „-1“ steht, und somit so oft versucht, wie der Default ist (4 mal).
Das setze ich mal auf 6 mal und schaue, ob das reicht.
Dann soll das einfach so oft versuchen, bis es klappt.
Unendlich will ich nicht: die Dinger könnten auch außerhalb der Schule zum Einsatz kommen …

https://www.networkmanager.dev/docs/api/latest/nm-settings-nmcli.html

Ich schreibe meine Ergebnisse (Freitag teste ich in der Schule, jetzt teste ich Zuhause mit meinem eigenen WLAN)

LG
Holger

Hallo Holger,
ich habe irgendwo mal diesen Code-Schnipsel verwendet … der Einmal-ping wird nur dazu verwendet, um zu schauen, ob der durchgeht …

 echo -ne "testing:" $1$K "...    \r"
                (if ping -c 1 -w 1 -n $1$K 2>&1 | grep -q '64 bytes' ; then
                echo $1$K alive "                "
                fi) &

Das ist nicht 100%ig das, was Du willst, aber es könnte Dir zeigen, ob die Verbindung steht.
Alternativ geht aber auch das hier:

ip link show |grep UP

… und dann fällt mir noch ethtool eth0 ein.
Vielleicht hilft’s Dir weiter…
Viele Grüße,
Michael