Surfstick - Prepaid-Guthaben auslesen

  • Hallo,

    ich versuche erfolglos das Guthaben einer D1 Prepaid-SIM auszulesen. Ich benutze zum Testen zwei alte UMTS-Sticks von ZTE (MF110 & MF190). Beide Sticks fallen mangels UMTS auf Edge zurück. SMS senden und empfangen funktioniert mit mmcli (Paket ModemManager). Das lässt sich sehr gut skripten. Ich lasse mir regelmäßig Statusmeldungen schicken und kann auch so Befehle an den Raspi senden.

    Da der Raspi später mit einem der Sticks headless und *ohne* Internet betrieben werden soll, möchte ich das Guthaben ebenfalls regelmäßig auslesen und mir per SMS schicken lassen. Zum Auslesen habe ich die folgenden Befehle erfolglos probiert:

    $ mmcli -m 0 --command=AT+CUSD=1,"*100#",15

    Laut Anleitung: 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 Debug-Modus habe ich dafür aktiviert.

    $ mmcli -m 0 --3gpp-ussd-initiate="*100#"

    Laut Anleitung: Request the given modem to initiate a USSD session with COMMAND. For example, COMMAND could be '*101#' to give your current pre-pay balance.

    Mein Carrier nutzt *100# für das Abfragen des Guthabens.


    Beide Varianten liefern Fehlermeldungen. Sogar je nach Stick teilweise andere. Wenn wichtig, liefere ich sie gerne nach.

    Liegt es an den Sticks? Am Carrier? An mmcli?

    Habt ihr eine Idee, wo evtl. mein Denkfehler liegt?

    P.S. Ich suche keine Carrier-Website, GUI-Tools etc. Empfehlungen.

  • Fehlermeldungen exakt posten, so wie sie das System abgibt, ist sehr wichtig. Bitte nachliefern.


    Ich sehe einen Unterschied, in der Doku vom Hersteller wird von ' geschrieben, du hast " verwendet. Ja, da ist ein Unterschied. Probier es aus und poste die exakte Fehlermeldung die du angezeigt bekommst.

  • Ich verwende den ZTE MF190 an einen Raspberry Pi 4B (8GB) mit Bookworm (alle Pakete auf dem letzten Stand) für die Tests:

    Der Kernel

    Code
    $ uname -a
    Linux rpi 6.12.34-v8+ #1890 SMP PREEMPT Tue Jun 24 19:04:28 BST 2025 aarch64 GNU/Linux

    Der ModemManager

    Code
    $ apt show modemmanager
    Package: modemmanager 
    Version: 1.20.4-1

    Der Stick

    Der USB

    Code
    Bus 001 Device 004: ID 19d2:0039 ZTE WCDMA Technologies MSM MF100

    Das Modem

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

    Modem aktivieren

    Code
    $ sudo mmcli -m 0 -e
    successfully enabled the modem

    Aus dem Journal (journalctl -b0 -f -u ModemManager)

    Code
    Sep 23 21:17:10 rpi ModemManager[14823]: <info>  [modem1] state changed (disabled -> enabling)
    Sep 23 21:17:10 rpi ModemManager[14823]: <info>  [modem1] power state updated: on
    Sep 23 21:17:11 rpi ModemManager[14823]: <info>  [modem1] state changed (enabling -> enabled)
    Sep 23 21:17:11 rpi ModemManager[14823]: <info>  [modem1] 3GPP registration state changed (unknown -> registering)
    Sep 23 21:17:11 rpi ModemManager[14823]: <info>  [modem1] 3GPP registration state changed (registering -> home)
    Sep 23 21:17:11 rpi ModemManager[14823]: <info>  [modem1] state changed (enabled -> registered)

    Die SIM und das Netz

    Zeig mir dein Guthaben

    Code
    $ sudo mmcli -m 0 --3gpp-ussd-initiate="*100#"
    error: couldn't initiate USSD session: 'Timeout was reached'

    Aus dem Journal

    Code
    Sep 23 21:19:10 rpi ModemManager[14823]: <info>  [base-manager] port ttyUSB0 released by device '/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4'
    Sep 23 21:19:10 rpi ModemManager[14823]: <info>  [base-manager] port ttyUSB1 released by device '/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4'
    Sep 23 21:19:10 rpi ModemManager[14823]: <info>  [base-manager] port ttyUSB2 released by device '/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4'

    Der Modemmanager schmeißt meinen Stick raus. Der Befehl lsusb zeigt ihn nicht mehr an.

    Im nächsten Versuch stoppe ich den Service ModemManager und starte ModemManager direkt im Debug-Modus.

    Code
    $ sudo systemctl stop ModemManager.service
    $ sudo /usr/sbin/ModemManager --debug

    Gib wieder dein Guthaben

    Code
    $ sudo mmcli -m 0 --3gpp-ussd-initiate="*100#"
    error: couldn't initiate USSD session: 'Timeout was reached'

    Aus der Debug-Ausgabe

    Wieder wird der Stick vom USB entfernt.

    Da ich ohnehin im Debug-Modus bin, probiere ich die andere Variante

    Code
    $ sudo mmcli -m 1 --command=AT+CUSD=1,"*100#",15
    response: ''

    Bitte nicht wundern. Durch das Wiedereinstecken hat der Stick die Modem-Id 1 erhalten.

    Aus der Debug-Ausgabe

    Wieder wird der Stick vom USB entfernt.

    Wenn noch wichtige Informationen fehlen, bitte nachfragen.

    Edited once, last by orinoco (September 23, 2025 at 10:35 PM).

  • Der Stick

    [ 115.189845] usb 1-1.4: new high-speed USB device number 3 using xhci_hcd
    [ 115.280876] usb 1-1.4: New USB device found, idVendor=19d2, idProduct=0039, bcdDevice= 0.00

    Das sieht übel aus. Kannst Du Deinen Post bitte bearbeiten und bei diesen Code-Blöcken das richtige Symbol anklicken? Codeblock statt Code. Einfach die entsprechenden Abschnitte markieren sollte genügen, mit Vorschau testen. Danke!

    When I grow up there will be a day
    When everybody has to do what I say

  • Post by Inight34 (September 27, 2025 at 12:24 PM).

    The post was deleted, no further information is available.
  • Vielen Dank für Feedback.

    Die AT-Commandos gehen raus und werden mit OK quittiert und fliegt der Stick vom USB.

    Code
    $ sudo mmcli -m 0 --3gpp-ussd-initiate="*100#"
    
    ModemManager[52987]: <debug> [1758655736.748816] [ttyUSB2/at] device open count is 2 (open)
    ModemManager[52987]: <debug> [1758655736.749412] [ttyUSB2/at] --> 'AT+CUSD=1,"002A0031003000300023",15<CR>'
    ModemManager[52987]: <debug> [1758655736.795097] [ttyUSB2/at] <-- '<CR><LF>OK<CR><LF>'
    ModemManager[52987]: <debug> [1758655736.795428] [ttyUSB2/at] device open count is 1 (close)

    Der String 002A... ist *100# in Unicode. Und zurück kommt OK.

    Hier genauso. Quittierung ist wieder OK und wieder Knockout vom USB.

    Welchen noch kaufbaren Stick kann ich denn alternativ nehmen? Gibt es eine Empfehlung?

  • Das hat mit dem Stick möglicherweise wenig zu tun, wenn Du nicht die man-page von mmcli liest.

    "Note that the GPS engine will not be started when just A-GPS capability
    is enabled. An explicit output (RAW or NMEA) is required to be enabled
    in order to start the GPS engine." Bei Zeile 857 von "man mmcli" (Ver. 1.20.4), samt Beispielen


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Der String 002A... ist *100# in Unicode. Und zurück kommt OK.

    Nein, das ist PDU Codiert, nicht Unicode.

    Offizieller Schmier und Schmutzfink des Forum.
    Meine PI:

    Display Spoiler

    #1 : Pi1 - Packet Radio Digi mit TNC-PI
    #2 : Pi2 - ADSB Feeder
    #3 : Pi3 - DHCP/DNS Server für 4 VLAN
    #4 : Pi3 - Wireguard Gateway
    #5 : Pi3 - FM Funknetz Gateway mit Shari SA818
    #6 : PI Zero W mit DMR Hotspot
    #7 : Pi4 4GB - Kiosk Browser
    #8 : Pi4 4GB - Kiosk Browser
    #9 : Pi4 8GB - Test Pi

    Dazu noch ein paar Zero und Pi1/2 die noch auf einen sinnvollen Einsatz warten.

  • Das ist schon Jahre her das ich mit so Kram zu tun hatte. Damals war alles 7 Bit PDU Codiert.

    Offizieller Schmier und Schmutzfink des Forum.
    Meine PI:

    Display Spoiler

    #1 : Pi1 - Packet Radio Digi mit TNC-PI
    #2 : Pi2 - ADSB Feeder
    #3 : Pi3 - DHCP/DNS Server für 4 VLAN
    #4 : Pi3 - Wireguard Gateway
    #5 : Pi3 - FM Funknetz Gateway mit Shari SA818
    #6 : PI Zero W mit DMR Hotspot
    #7 : Pi4 4GB - Kiosk Browser
    #8 : Pi4 4GB - Kiosk Browser
    #9 : Pi4 8GB - Test Pi

    Dazu noch ein paar Zero und Pi1/2 die noch auf einen sinnvollen Einsatz warten.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!