Balance del módem USB GSM usando USSD

8

¿Hay algunas herramientas o comandos que pueda usar para enviar códigos USSD para verificar el saldo y el saldo de datos de la tarjeta SIM GSM en mi módem USB (dongle de banda ancha móvil)?

GunJack
fuente

Respuestas:

7

Estas son algunas aplicaciones con soporte de verificación de saldo USSD:

Gerente prepago

Gerente prepago

Prepaid Manager es un applet para el escritorio GNOME que le permite verificar y recargar el saldo de las tarjetas SIM prepagas móviles GSM. Es una aplicación simple y minimalista con verificación de saldo USSD y recarga que es todo lo que hace. Pero por otro lado, es una aplicación muy anticuada y no ha recibido ninguna actualización nueva en mucho tiempo. Y si su proveedor no es compatible, deberá configurarlo manualmente como se describe en su página de inicio . Para instalar, haga clic aquí:

Aplicación Manager prepaga en software Ubuntu

O ejecute el siguiente comando:

sudo apt install prepaid-manager-applet

GUI de administrador de módem

GUI de administrador de módem

Modem Manager GUI es una solución completa para administrar y monitorear módems basados ​​en redes móviles. Incluye muchas funciones, y el soporte USSD es solo una de ellas. Para obtener una lista completa de características, visite su página web oficial . Para instalar, haga clic aquí:

Aplicación GUI de Modem Manager en software Ubuntu

O ejecute el siguiente comando:

sudo apt install modem-manager-gui

V banda ancha móvil

V banda ancha móvil

V Mobile Broadband es el software original de Vodafone Mobile Connect para Linux reescrito para ser compatible con Network Manager por el equipo de código abierto Betavine Connection Manager de Vodafone. Desafortunadamente, no parece mantenerse de forma muy activa en este momento y no está disponible en repositorios de Ubuntu. Sin embargo, puedes probar suerte construyendo el proyecto desde la fuente. Echa un vistazo a su página de GitHub .

Advertencia : v-mobile-broadbanddepende de wader, lo que reemplaza el valor predeterminado de Ubuntu modemmanager. Por lo tanto, si encuentra problemas con la nueva configuración y decide desinstalar v-mobile-broadband, no olvide volver a instalar el modemmanagerpaquete.


Fuentes

HEXcube
fuente
V Banda ancha móvil: 12-dic-14: error: W: no se pudo recuperar ppa.launchpad.net/crass/v-mobile-broadband/ubuntu/dists/trusty/… 404 No encontrado. ¿Está abandonado?
siempreverde
@evergreen No, el proyecto no está muerto porque el PPA todavía empuja actualizaciones para 12.04LTS "Preciso" . Sin embargo, aún no se ha actualizado para 14.04LTS "Trusty" .
HEXcube
Desafortunadamente, ninguno de estos trabajos funciona para 16.04 y superiores
Anwar
3

Puede usar la utilidad de línea de comandos gammupara este propósito. Si el código USSD para obtener su saldo es (digamos) * 901 #, debe ejecutar:

gammu getussd "*901#"

Para obtener instrucciones de instalación y configuración y más detalles, consulte aquí .

Tanius
fuente
1

Puede usar comandos AT directamente para consultar su saldo a través de USSD. Para eso, use cualquier programa de terminal en serie que le permita comunicarse con su módem directamente ( putty, minicometc.).

Elegí atinoutporque se integraba muy bien con la línea de comando. Primero lo instalas:

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

Luego, si usa ModemManager (el predeterminado en Ubuntu Linux), es posible que primero deba deshabilitarlo para permitir el atinoutacceso a su módem:

sudo stop modemmanager;

Ahora, para enviar un código USSD para la consulta de saldo a la red (por ejemplo, * 901 #) y mostrar el resultado, usaría este comando:

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

Esto supone que su módem está en /dev/ttyUSB1. El ATcomando en el segundo atinoutcomando es solo para que la respuesta USSD no solicitada se muestre como un efecto secundario, que debería haber llegado después del sleep.

Para el caso de que consultar su saldo requiera operar un menú USSD: esto también es posible con atinout, vea esta respuesta .

Tanius
fuente
1

Puedes hacerlos con el paquete modem-manager-gui. Pero solo está disponible para 13.10. En otras versiones, debe administrarlos en la Terminal con el paquete modemmanager.

Si estás en Ubuntu 13.10:

sudo apt-get install modem-manager-gui modemmanager

En otras versiones de Ubuntu puedes hacerlo con la aplicación prepaid-manager-applet

sudo apt-get install prepaid-manager-applet
Mateo
fuente
0

Puede usar la herramienta de línea de comandos de Linux gsm-ussdpara enviar códigos USSD, obtener respuestas e incluso navegar por los menús USSD (aunque eso no era estable / utilizable para mí).

Para obtener instrucciones detalladas de instalación y configuración, consulte aquí . El paquete Debian de la versión 0.4 que se ofrece allí para la instalación es la última versión de la rama de desarrollo .

Si el código USSD para obtener su saldo es (digamos) * 901 # y su módem es /dev/ttyUSB1, ejecutará esto para enviar un código USSD simple y mostrar la respuesta de la red (que no da como resultado un menú):

gsm-ussd -m /dev/ttyUSB1 "*901#"
Tanius
fuente
0

Puede usar el mmclicliente de línea de comandos del ModemManager predeterminado de Ubuntu para enviar un código USSD y obtener la respuesta:

  1. Comience haciendo una lista de los módems: mmcli -L. Esto mostrará una ruta de dispositivo de módem como /org/freedesktop/ModemManager1/Modem/0. El número al final es el índice del módem, recuérdelo.

  2. Habilite el módem (suponiendo que su índice de módem sea 0): mmcli -m 0 -e

  3. Envíe la solicitud de USSD y muestre la respuesta. Suponiendo que el código USSD de su operador de red para obtener el saldo es * 901 #, el comando sería:

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

Para el caso de que consultar su saldo requiera operar un menú USSD: esto también es posible con mmcli, vea esta respuesta .

Tanius
fuente
El 16.04, el comando devuelve estoerror: couldn't initiate USSD session: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.Unsupported: Operation not supported.'
Anwar
0

Para mí, ambas soluciones basadas en ModemManager y gammuno funcionan correctamente con la respuesta USSD multilínea; Por ejemplo, mi operador tiene un comando USSD *104#, al que responde algo como:

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

Es decepcionante para ver sólo la primera línea inútil: You have:.

Finalmente encontré una solución alternativa con picocomun comando AT manual. Por eso, cada vez que quiero consultar mi saldo, tengo que hacer lo siguiente:

Primero, detenga Modem Manager:

$ sudo stop modemmanager

Ahora, necesita saber su puerto de módem; en mi caso, lo es /dev/ttyACM0.

Si no conoce su puerto, intente esto:

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

Y busca la entrada con Mobile Broadband Modem. Por ejemplo, mi salida se ve de la siguiente manera:

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

Para obtener más información sobre cómo obtener el puerto correcto, consulte este enlace: https://gist.github.com/heyalexej/cc6c97b1ea42736b3ff7

Luego, use picocom para conectarse a su puerto:

$ sudo picocom /dev/ttyACM0

Debería ver algo como esto:

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 no ve esto *EMRDY: 1, probablemente significa que no ha detenido el Administrador de módem, consulte más arriba)

Luego ingrese:

AT+CUSD=1,"*104#"

Y después de varios segundos, debería obtener su respuesta, que puede ser multilínea:

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

",15

OK

Para salir de picocom, use Ctrl-A Ctrl-X

Y vuelva a iniciar el administrador del módem:

$ sudo start modemmanager
Dmitry Frank
fuente
-1

Puede usar la solución PBX virtual de código abierto FreeSwitch junto con su extensión GSMopen para enviar comandos USSD [ fuente ].

Por ejemplo, si el código USSD para obtener su saldo es (digamos) * 901 #, debería ejecutar:

chat SMS|interface3|ussd|*901#

Por supuesto, hay soluciones más simples en las otras respuestas, pero en caso de que use GSMopen de todos modos (... por ejemplo, porque es la única forma de hacer llamadas de voz GSM en Linux ...).

Tanius
fuente