Balance du modem USB GSM utilisant l'USSD

8

Y a-t-il des outils ou des commandes que je peux utiliser pour envoyer des codes USSD pour vérifier l'équilibre et l'équilibre des données de la carte SIM GSM dans mon modem USB (dongle haut débit mobile)?

GunJack
la source

Réponses:

7

Voici quelques applications avec prise en charge de la vérification du solde USSD:

Responsable prépayé

Responsable prépayé

Prepaid Manager est une applet pour le bureau GNOME qui vous permet de vérifier et de recharger le solde des cartes SIM prépayées mobiles GSM. C'est une application simple et minimaliste avec vérification de l'équilibre USSD et rechargement étant tout ce qu'elle fait. Mais d'un autre côté, c'est une application très datée et n'a pas reçu de nouvelles mises à jour depuis longtemps. Et si votre fournisseur n'est pas pris en charge, vous devrez le configurer manuellement comme décrit sur leur page d'accueil . Pour l'installer, cliquez ici:

Application Manager prépayée sur le logiciel Ubuntu

Ou exécutez la commande suivante:

sudo apt install prepaid-manager-applet

Interface graphique du gestionnaire de modem

Interface graphique du gestionnaire de modem

L'interface graphique de Modem Manager est une solution complète pour gérer et surveiller les modems basés sur les réseaux mobiles. Il contient de nombreuses fonctionnalités et le support USSD n'est que l'une d'entre elles. Pour une liste complète des fonctionnalités, visitez leur page d'accueil officielle . Pour l'installer, cliquez ici:

App GUI Modem Manager sur le logiciel Ubuntu

Ou exécutez la commande suivante:

sudo apt install modem-manager-gui

V Mobile Broadband

V Mobile Broadband

V Mobile Broadband est le logiciel Vodafone Mobile Connect original pour Linux réécrit pour être compatible avec Network Manager par l'équipe open source Betavine Connection Manager de Vodafone. Malheureusement, il ne semble pas être maintenu très activement pour le moment et n'est pas disponible dans les dépôts Ubuntu. Cependant, vous pouvez tenter votre chance de construire le projet à partir de la source. Consultez leur page GitHub .

Attention : v-mobile-broadbanddépend de wader, qui remplace la valeur par défaut d'Ubuntu modemmanager. Donc, si vous rencontrez des problèmes avec la nouvelle configuration et décidez de désinstaller v-mobile-broadband, n'oubliez pas de réinstaller le modemmanagerpackage.


Sources

HEXcube
la source
V Mobile Broadband: 12-Dec-14: erreur: W: impossible de récupérer ppa.launchpad.net/crass/v-mobile-broadband/ubuntu/dists/trusty/… 404 Introuvable. Est-il abandonné?
evergreen
@evergreen Non, le projet n'est pas mort, le PPA pousse toujours les mises à jour pour 12.04LTS "Precise" . Cependant, il n'a pas encore été mis à jour pour 14.04LTS "Trusty" .
HEXcube
Malheureusement, aucun de ces travaux pour 16.04 et supérieur
Anwar
3

Vous pouvez utiliser l'utilitaire de ligne de commande gammuà cet effet. Si le code USSD pour obtenir votre solde est (disons) * 901 #, vous exécuteriez:

gammu getussd "*901#"

Pour des instructions d'installation et de configuration et plus de détails, voir ici .

tanius
la source
1

Vous pouvez utiliser les commandes AT directement pour interroger votre solde via USSD. Pour cela, utilisez n'importe quel programme de terminal série qui vous permet de communiquer directement avec votre modem ( putty, minicometc.).

J'ai choisi atinoutcar il s'intègre bien avec la ligne de commande. Vous l'installez d'abord:

sudo apt-get install ruby-ronn;
git clone git://git.code.sf.net/p/atinout/code atinout;
cd atinout;
make;
sudo checkinstall make install;

Ensuite, si vous utilisez ModemManager (la valeur par défaut sous Ubuntu Linux), vous devrez peut-être le désactiver d'abord pour permettre atinoutd'accéder à votre modem:

sudo stop modemmanager;

Maintenant, pour envoyer un code USSD pour une requête d'équilibre au réseau (disons, * 901 #) et afficher le résultat, vous utiliseriez cette commande:

atinout - /dev/ttyUSB1 - < <(echo "AT+CUSD=1,\"*901#\",15") && sleep 4 && \
atinout - /dev/ttyUSB1 - < <(echo "AT");

Cela suppose que votre modem est à /dev/ttyUSB1. La ATcommande de la deuxième atinoutcommande consiste simplement à afficher la réponse USSD non sollicitée comme un effet secondaire, qui aurait dû arriver après le sleep.

Dans le cas où l'interrogation de votre solde nécessite l'utilisation d'un menu USSD: c'est également possible avec atinout, voir cette réponse .

tanius
la source
1

Vous pouvez les faire avec le package modem-manager-gui. Mais il n'est disponible que pour 13.10. Dans d'autres versions, vous devez les gérer dans Terminal avec le package modemmanager.

Si vous êtes dans Ubuntu 13.10:

sudo apt-get install modem-manager-gui modemmanager

Dans d'autres versions d'Ubuntu, vous pouvez le faire avec l'application prepaid-manager-applet

sudo apt-get install prepaid-manager-applet
Mateo
la source
0

Vous pouvez utiliser l'outil de ligne de commande Linux gsm-ussdpour envoyer des codes USSD, obtenir des réponses et même naviguer dans les menus USSD (bien que ce ne soit pas stable / utilisable pour moi).

Pour des instructions d'installation et de configuration détaillées, voir ici . La version 0.4 du paquet Debian qui y est proposé pour l'installation est la dernière version de la branche de développement .

Si le code USSD pour obtenir votre solde est (disons) * 901 # et que votre modem est, /dev/ttyUSB1vous l'exécuterez pour envoyer un code USSD simple et afficher la réponse du réseau (sans résultat dans un menu):

gsm-ussd -m /dev/ttyUSB1 "*901#"
tanius
la source
0

Vous pouvez utiliser le mmcliclient de ligne de commande du ModemManager par défaut d'Ubuntu pour envoyer un code USSD et obtenir la réponse:

  1. Commencez par la liste de vos modems: mmcli -L. Cela montrera un chemin de périphérique de modem comme /org/freedesktop/ModemManager1/Modem/0. Le numéro à la fin est l'index du modem, souvenez-vous-en.

  2. Activez le modem (en supposant que votre index de modem est 0): mmcli -m 0 -e

  3. Envoyez la demande USSD et affichez la réponse. En supposant que le code USSD de votre opérateur réseau pour obtenir le solde est * 901 #, la commande serait:

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

Dans le cas où l'interrogation de votre solde nécessite l'utilisation d'un menu USSD: c'est également possible avec mmcli, voir cette réponse .

tanius
la source
Le 16.04, la commande renvoie cecierror: couldn't initiate USSD session: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.Unsupported: Operation not supported.'
Anwar
0

Pour moi, les deux solutions basées sur ModemManager et gammune fonctionnent pas correctement avec la réponse USSD multiligne; par exemple, mon opérateur a une commande USSD *104#, à laquelle il répond quelque chose comme:

You have:
2.07 GB of traffic, valid until N
47 minutes

Il est décevant de voir que la première ligne inutile: You have:.

Enfin, j'ai trouvé une solution de contournement avec picocomla commande AT manuelle. Donc, chaque fois que je veux vérifier mon solde, je dois faire ce qui suit:

Tout d'abord, arrêtez Modem Manager:

$ sudo stop modemmanager

Maintenant, vous devez connaître le port de votre modem; dans mon cas, ça l'est /dev/ttyACM0.

Si vous ne connaissez pas votre port, essayez ceci:

for n in `ls /sys/class/*/*{ACM,wdm}*/device/interface`;do echo $(echo $n|awk -F '/' '{print $5}') : $(cat $n);done

Et recherchez l'entrée avec Mobile Broadband Modem. Par exemple, ma sortie ressemble à ceci:

ttyACM0 : F5521gw Mobile Broadband Modem
ttyACM1 : F5521gw Mobile Broadband Data Modem
ttyACM2 : F5521gw Mobile Broadband GPS Port
cdc-wdm0 : F5521gw Mobile Broadband Device Management
cdc-wdm1 : F5521gw Mobile Broadband USIM Port

Pour plus d'informations sur l'obtention du bon port, consultez ce lien: https://gist.github.com/heyalexej/cc6c97b1ea42736b3ff7

Ensuite, utilisez picocom pour vous connecter à votre port:

$ sudo picocom /dev/ttyACM0

Vous devriez voir quelque chose comme ceci:

picocom v1.7

port is        : /dev/ttyACM0
flowcontrol    : none
baudrate is    : 9600
parity is      : none
databits are   : 8
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv
imap is        : 
omap is        : 
emap is        : crcrlf,delbs,

Terminal ready

*EMRDY: 1

(si vous ne voyez pas cela *EMRDY: 1, cela signifie probablement que vous n'avez pas arrêté Modem Manager, voir ci-dessus)

Entrez ensuite:

AT+CUSD=1,"*104#"

Et après quelques secondes, vous devriez obtenir votre réponse, qui peut être multiligne:

+CUSD: 0,"You have:
2.07 GB of traffic, valid until N
47 minutes

",15

OK

Pour quitter picocom, utilisez Ctrl-A Ctrl-X

Et redémarrez le gestionnaire de modem:

$ sudo start modemmanager
Dmitry Frank
la source
-1

Vous pouvez utiliser la solution de PBX virtuel open source FreeSwitch avec son extension GSMopen pour envoyer des commandes USSD [ source ].

Par exemple, si le code USSD pour obtenir votre solde est (disons) * 901 #, vous exécuterez:

chat SMS|interface3|ussd|*901#

Il y a bien sûr des solutions plus simples dans les autres réponses, mais si vous utilisez quand même GSMopen (… par exemple parce que c'est le seul moyen de faire des appels vocaux GSM sous Linux…).

tanius
la source