Welcome, Guest. Please login or register.
Did you miss your activation email?

Author Topic: [DE] ModemManager - Bekomme Modem nicht aktiviert  (Read 2511 times)

Offline orinoco

  • User
  • Posts: 252
  • Bullshit artist
[DE] ModemManager - Bekomme Modem nicht aktiviert
« on: 2024/05/26, 22:49:38 »
Hallo zusammen,

ich versuche einen Surf-Stick, den ich nebst SIM geschenkt bekommen habe, zum Versenden und Empfangen von SMS zu verwenden. Ich möchte damit ein System kontrollieren, dass head-less läuft und bei Internet-Störungen trotzdem erreichbar sein soll. Der Stick ist eigentlich primär für UMTS gedacht, sollte aber trotz der UMTS-Abschaltung doch auf GSM/Edge zurückfallen, was für SMS ausreichend sein sollte.

Mit dem ModemManager bekomme ich es angezeigt, kann es aber nicht benutzen.

Code: [Select]
$ mmcli -L
    /org/freedesktop/ModemManager1/Modem/0 [ZTE CORPORATION] MF190

Code: [Select]
$ mmcli -m 0
  -----------------------------
  General  |              path: /org/freedesktop/ModemManager1/Modem/0
           |         device id: ...
  -----------------------------
  Hardware |      manufacturer: ZTE CORPORATION
           |             model: MF190
           | firmware revision: BD_MF190TLF3V1.0.0B05
           |         supported: gsm-umts
           |           current: gsm-umts
           |      equipment id: ...
  -----------------------------
  System   |            device: /sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4
           |           drivers: option
           |            plugin: zte
           |      primary port: ttyUSB2
           |             ports: ttyUSB0 (qcdm), ttyUSB1 (at), ttyUSB2 (at)
  -----------------------------
  Status   |    unlock retries: sim-pin (3), sim-puk (10)
           |             state: disabled
           |       power state: on
  -----------------------------
  Modes    |         supported: allowed: 2g; preferred: none
           |                    allowed: 3g; preferred: none
           |                    allowed: 2g, 3g; preferred: none
           |                    allowed: 2g, 3g; preferred: 2g
           |                    allowed: 2g, 3g; preferred: 3g
           |           current: allowed: any; preferred: none
  -----------------------------

Code: [Select]
$ mmcli -v -m 0 -e
[26 Mai 2024, 22:22:33] [Debug] ModemManager process found at ':1.292'
[26 Mai 2024, 22:22:33] [Debug] Assuming '0' is the modem index
[26 Mai 2024, 22:22:33] [Debug] Modem found at '/org/freedesktop/ModemManager1/Modem/0'

[26 Mai 2024, 22:22:33] [Debug] Synchronously enabling modem...
error: couldn't enable the modem: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.Unauthorized: PolicyKit authorization failed: not authorized for 'org.freedesktop.ModemManager1.Device.Control''

Ich verstehe nicht, wieso PolicyKit hier ins Spiel kommt und wie man das entsprechend konfiguriert.

Offline hendrikL

  • Administrator
  • User
  • *****
  • Gravatar
  • Posts: 1.030
Re: ModemManager - Bekomme Modem nicht aktiviert
« Reply #1 on: 2024/05/27, 06:25:06 »
Ich denke da musst Du dich mit "wvdial" beschäftigen.
Sorry. mehr kann ich im Moment nicht dazu schreiben, da keine Zeit.
Es gibt bzw gab eine gute grafische Oberfläche dafür, habe den Namen vergessen.
Da musst Du dich ein wenig durch das Internet arbeiten und schauen wie wvdial via Konsole bedient wird.
« Last Edit: 2024/05/27, 20:25:33 by hendrikL »

Offline hendrikL

  • Administrator
  • User
  • *****
  • Gravatar
  • Posts: 1.030
Re: ModemManager - Bekomme Modem nicht aktiviert
« Reply #2 on: 2024/05/27, 06:36:40 »
ps. sakis3g heißt bzw hieß das Programm.
Ich denke dies ist alles veraltet, im Netz gibt es Lösungen die genau auf den Fehler zutreffen.
Such doch bitte mal mit der Fehlermeldung.

Ansonsten gibt es schon für knappe 20 Euro Modems die auch mit einem usb umts stick umgehen können und das ganze dann auf Lan oder wlan routen.
« Last Edit: 2024/05/27, 07:20:55 by hendrikL »

Offline ro_sid

  • User
  • Posts: 301
Re: ModemManager - Bekomme Modem nicht aktiviert
« Reply #3 on: 2024/05/27, 11:59:06 »
Die graphische Oberfläche zum Modem-Manager (Paket "modemmanager") heißt - nicht ganz unerwartet :) - Modem-Manager-Gui (Paket: "modem-manager-gui", dazu noch "modem-manager-gui-help" für die Hilfstexte).
Ich habe das lange Zeit verwendet und tue es manchmal heute noch. Es ist ziemlich "fit", was Modems aller Art (seriell, USB, eingebaut) angeht, obwohl natürlich nicht "alle" unterstützt werden.
Hier scheint mir der verweigernde Part nicht der Modem-Manager zu sein.
Das Problem ist wohl eher eines der (Zugriffs-)"Policy" (Thema: Linux Policy-Kit). Danach würde ich suchen.
Eventuell reicht es, den Benutzer noch zusätzlich in eine/weitere Gruppe/n (für "Kommunikation" und/oder "Dialout", z.B. "dip" oder "dialout") einzutragen.

Offline orinoco

  • User
  • Posts: 252
  • Bullshit artist
Re: ModemManager - Bekomme Modem nicht aktiviert
« Reply #4 on: 2024/05/27, 20:56:21 »
Vielen Dank für eure Rückmeldungen. Es scheint sich tatsächlich, um ein Berechtigungsproblem zu handeln. Wenn ich das Modem mit sudo aktiviere (hätte ich auch gleich probieren können), kommt die Fehlermeldung nicht. Das Programm mmcli scheint mir das Tool zu sein, das meine Anforderungen für ein System ohne grafische Oberfläche erfüllt. Nach der Initialisierung konnte ich mit

Code: [Select]
# mmcli -m 0 --messaging-create-sms="text='Hello world',number='+49........'"
Die Nachricht vorbereiten und mit

Code: [Select]
# mmcli -m 0 --send
erfolgreich versenden.

Ich habe dann die Gruppen geprüft. Mein unprivilegierter Benutzer war in der Gruppe dialout. Ich habe dann noch die weitere Gruppe dip dem Benutzer zugeordnet. Leider ohne Erfolg.

Wo stehe ich jetzt?

* Internet-Stick wird erkannt und als Modem eingebunden - check
* Modem kann aktiviert werden -> muss als nicht-Root funktionieren - offen
* SMS kann dem Modem zugeordnet und danach versendet werden -> muss als nicht-Root funktionieren - offen
* SMS empfangen und Text interpretieren - offen

Ich möchte z.B. eine SMS mit einem entsprechenden Text zu senden, um einen Reboot des Empfänger-Rechners anzustoßen.

Den Vorschlag vwdial werde ich später berücksichtigen. Ich kann mir vorstellen, eine SMS zu senden, die vwdial triggert und dann eine SSH Verbindung zu einem Jumpserver aufbaut (Stichwort: reverse ssh channel). Dafür sollte die Geschwindigkeit von GSM/EDGE gerade noch reichen.

Nun gilt es, das Prinzip polkit besser zu verstehen, um den unprivilegierten Benutzer zu befähigen. Habt ihr eine Quelle? Die Upstream-Dokumentation habe ich schon überflogen und scheint trockener Stoff zu sein. Gibts da was mit praktischen Beispielen?


Offline hendrikL

  • Administrator
  • User
  • *****
  • Gravatar
  • Posts: 1.030
Re: ModemManager - Bekomme Modem nicht aktiviert
« Reply #5 on: 2024/05/28, 08:53:48 »
Mh, was sagt denn

Code: [Select]
stat /dev/ttyUSB2
Schau dir den Parameter
Code: [Select]
...  Gid:   foo/ groupe an.

Jener sollte dialout sein.

Ein
Code: [Select]
ls -l /dev/ttyUSB2 sagt auch einiges aus.



Offline ro_sid

  • User
  • Posts: 301
Re: ModemManager - Bekomme Modem nicht aktiviert
« Reply #6 on: 2024/05/28, 10:40:13 »
Ein guter Hinweis - auf /dev/ttyUSB2!
Falls da "etwas" nicht stimmt, sollte man in den "udev" "rules" nachsehen. Udev legt das "Device" beim Anstöpseln oder Booten an.

Was den "Vierteiler" angeht: Zu
Quote
* SMS empfangen und Text interpretieren - offen
kann man schon sagen, daß der SMS-Empfang "durch den Stick" erfolgt, sobald der initialisiert ist (und eine SMS vorliegt :) ). Unabhängig von einem Benutzer. Das "Abrufen" ist dagegen eine andere Frage. Daher gilt vorläufig vermutlich auch hier ein "muss als nicht-Root funktionieren - offen"  :(.

Offline orinoco

  • User
  • Posts: 252
  • Bullshit artist
Re: ModemManager - Bekomme Modem nicht aktiviert
« Reply #7 on: 2024/05/28, 12:50:53 »
Hallo zusammen,

ich habe mich selbst ausgetrickst. Da ich als Ziel-Rechner einen (oh Wunder) Raspberry Pi benutze, habe ich alle Experimente unbewusst mit Bookworm durchgeführt. Unter Sid (und damit Siduction) treten die Berechtigungsprobleme nicht auf. Das Device /dev/tty/USB2 gehört hier zur Gruppe dialout. Ist der Benutzer in dieser Gruppe, funktioniert polkit und damit auch die Verwendung von mmcli.

Unter Bookworm bin ich auf Probleme mit polkit gestoßen. Ich habe eine entsprechende Regel für polkit erstellt, die aber nicht funktioniert, weil die Gruppe des Benutzers nicht richtig ausgewertet wird. Das könnte ein Bug in polkit sein. Da es aber keine Siduction-Relevanz hat, kläre ich das an anderer Stelle.

Also unter Siduction klappt das. Für die Galerie meine Notizen:

Modem finden
Code: [Select]
mmcli -L # liefert den Pfad bzw. die Id zum Modem (Zählung beginnt bei 0 = erstes Modem)Informationen zum Modem auflisten
Code: [Select]
mmcli -m 0 # Pfad zur SIM, ob PIN aktiv oder welches NetzSIM mit PIN entsperren
Code: [Select]
mmcli --i 0 --pin=1234 # SIM mit der Id entsperren (ungetestet: mein SIM ist dauerhaft entsperrt gewesen)Modem aktivieren
Code: [Select]
mmcli -m 0 -e # bei mir hat das Modem die Id 0SMS zum Versenden vorbereiten
Code: [Select]
mmcli -m 0 --messaging-create-sms="text='Hello world',number='+49........'" # bei der Empfängernummer die führende 0 weglassen)SMS versenden
Code: [Select]
mmcli -m 0 --send # noch nicht probiert, aber alle vorbereiteten SMS könnten in einem Zug versendet werdenEmpfangene SMS auflisten
Code: [Select]
mmcli -m 0 --messaging-list-sms # liefert den Pfad bzw. die Id zu den empfangenen SMSEine empfangene SMS anzeigen
Code: [Select]
mmcli -m 0 -s 0 # SMS mit der Id 0 anzeigenEine empfangene SMS löschen
Code: [Select]
mmcli -m 0 --messaging-delete-sms=0 # SMS mit der Id 0 löschen
Das scheint mir schon ein gutes Handwerkszeug mit Scripting-Potential, für mein Vorhaben zu sein. Einzig die Ausgaben sind nicht so einfach verarbeitbar bzw. mit dem Parameter --output-keyvalue existiert etwas Struktur. Da muss RegEx ran. Ein optionales Ausgabeformat wie JSON oder XML wäre schon okay.

Mir ist als weitere Anforderung die Abfrage des Guthabens eingefallen. Dafür habe ich noch keine Lösung. Gibt es dafür evtl. ein AT-Kommando?

Offline edlin

  • User
  • Posts: 619
Re: ModemManager - Bekomme Modem nicht aktiviert
« Reply #8 on: 2024/05/28, 12:56:50 »
Kannst du das Guthaben nicht per Steuercode, meist *100#, abfragen?
Siehe auch https://www.finanztip.de/handytarife/guthaben/

edlin
Der Kluge lernt aus allem und von jedem,
der Normale aus seinen Erfahrungen
und der Dumme weiß alles besser.

Sokrates

Offline orinoco

  • User
  • Posts: 252
  • Bullshit artist
Re: ModemManager - Bekomme Modem nicht aktiviert
« Reply #9 on: 2024/05/28, 14:58:48 »
Das ist ein guter Hinweis. In der Man-Page von mmcli steht u.a.
Code: [Select]
--3gpp-ussd-initiate=COMMAND
    Request the given modem to initiate a USSD session with COMMAND.

    For example, COMMAND could be '*101#' to give your current pre-pay balance.

Hier erhalte ich bisher nur eine Fehlermeldung mit Timeout.
Code: [Select]
$ mmcli -m 0 --3gpp-ussd-initiate="*100#"
error: couldn't initiate USSD session: 'Zeitüberschreitung wurde erreicht'

Ich habe auch einen AT-Befehl gefunden: AT+CUSD=1,"*100#",15)

Der Befehl mmcli kennt den Parameter

Code: [Select]
--command=COMMAND
    Send an AT COMMAND to the given modem. For example, COMMAND could be 'AT+GMM' to probe for phone model information. This operation is only available when ModemManager is run in debug mode.

den ich absetzen könnte, wenn ich in den Debug-Modus komme. Bis dahin teste mit Minicom direkt auf /dev/ttyUSB1 und das scheint zu klappen
Code: [Select]
Aktuelles Guthaben: 25,63 EUR
Dann könnte bestimmt auch das Aufladen klappen: *101*Cash-Code#

Jetzt bin ich noch auf gammu gestoßen. Kommt ins Backlog. Ich versuche erstmal, bei mmcli zu bleiben.

Offline orinoco

  • User
  • Posts: 252
  • Bullshit artist
Re: ModemManager - Bekomme Modem nicht aktiviert
« Reply #10 on: 2024/05/28, 16:07:21 »
Oh, ich glaube ich brauch langsam eine Brille:

Code: [Select]
-J, --output-json
              Run action with machine-friendly JSON output, to be used e.g. by shell scripts that rely on mmcli operations.