Баланс GSM USB-модема с использованием USSD

Существуют ли какие-либо инструменты или команды, которые можно использовать для отправки USSD-кодов для проверки баланса и баланса данных SIM-карты GSM в моем USB-модеме (мобильный широкополосный ключ)?

8
задан 2 May 2016 в 01:43

8 ответов

Вот некоторые приложения с поддержкой проверки баланса USSD:

Prepaid Manager

Prepaid Manager

Prepaid Manager - это апплет для рабочего стола GNOME, который позволяет проверять и пополнять баланс мобильных предоплаченных SIM-карт GSM. Это простое и минималистичное приложение с проверкой баланса USSD и пополнением баланса. Но, с другой стороны, это устаревшее приложение, которое долгое время не получало никаких обновлений. А если ваш провайдер не поддерживается, вам придется вручную настроить его, как описано на их домашней странице . Для установки нажмите здесь:

Prepaid Manager App on Ubuntu Software

Или выполните следующую команду:

sudo apt install prepaid-manager-applet

Диспетчер модемов GUI

Modem Manager GUI

GUI диспетчера модемов - это комплексное решение для управления и мониторинга модемов на основе мобильных сетей. Он содержит довольно много функций, и поддержка USSD - лишь одна из них. Для получения полного списка функций посетите их официальную домашнюю страницу . Для установки нажмите здесь:

Modem Manager GUI App on Ubuntu Software

Или выполните следующую команду:

sudo apt install modem-manager-gui

V Mobile Широкополосный доступ

V Mobile Broadband

V Mobile Broadband - это оригинальное программное обеспечение Vodafone Mobile Connect для Linux, переписанное для совместимости с Network Manager. команда разработчиков Vodafone с открытым исходным кодом Betavine Connection Manager. К сожалению, в данный момент он не очень активно поддерживается и недоступен в репозиториях Ubuntu. Тем не менее, вы можете попытать счастья при создании проекта из исходного кода. Проверьте их страницу GitHub .

Предупреждение : v-mobile-broadband зависит от wader, который заменяет Ubuntu по умолчанию modemmanager. Итак, если вы столкнулись с проблемами с новой установкой и решили удалить v-mobile-broadband, не забудьте переустановить пакет modemmanager.


Источники

0
ответ дан 2 May 2016 в 01:43

Вы можете использовать утилиту командной строки gammu для этой цели. Если USSD-код для получения вашего баланса (скажем) * 901 #, вы должны выполнить:

gammu getussd "*901#"

Для получения инструкций по установке и настройке и более подробной информации, см. Здесь .

0
ответ дан 2 May 2016 в 01:43

Вы можете напрямую использовать AT-команды для запроса баланса через USSD. Для этого используйте любую программу последовательного терминала, которая позволяет напрямую связываться с модемом (putty, minicom и т. Д.).

Я выбрал atinout , потому что он хорошо интегрировался с командной строкой. Сначала вы устанавливаете его:

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

Затем, если вы используете ModemManager (по умолчанию в Ubuntu Linux), вам, возможно, придется сначала отключить его, чтобы позволить atinout получить доступ к вашему модему:

sudo stop modemmanager;

Теперь, чтобы отправить USSD-код для запроса баланса в сеть (скажем, * 901 #) и отобразить результат, вы должны использовать эту команду:

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

Это предполагает, что ваш модем на /dev/ttyUSB1. Команда AT во второй команде atinout предназначена только для отображения нежелательного ответа USSD, отображаемого как побочный эффект, который должен был прийти после sleep.

Для случая, когда для запроса баланса необходимо использовать USSD-меню: это также возможно с atinout, , см. Этот ответ .

0
ответ дан 2 May 2016 в 01:43

Вы можете сделать их с пакетом modem-manager-gui. Но это доступно только для 13.10. В других версиях вы должны управлять ими в Терминале с пакетом modemmanager.

Если вы находитесь в Ubuntu 13.10:

sudo apt-get install modem-manager-gui modemmanager

В других версиях Ubuntu вы можете сделать это с помощью приложения prepaid-manager-applet

sudo apt-get install prepaid-manager-applet
0
ответ дан 2 May 2016 в 01:43

Вы можете использовать инструмент командной строки Linux gsm-ussd для отправки USSD-кодов, получения ответов и даже для навигации по USSD-меню (хотя это не было стабильно / пригодно для меня) .

Подробные инструкции по установке и настройке см. В здесь . Пакет Debian версии 0.4, предлагаемый для установки, является последней версией ветки dev .

Если USSD-код для получения вашего баланса (скажем) * 901 # и ваш модем - /dev/ttyUSB1, вы должны выполнить это, чтобы отправить простой USSD-код и отобразить ответ сети (не приводя к появлению меню):

gsm-ussd -m /dev/ttyUSB1 "*901#"
0
ответ дан 2 May 2016 в 01:43

Вы можете использовать клиент командной строки mmcli стандартного ModemManager Ubuntu для отправки USSD-кода и получения ответа:

  1. Начните с перечисления ваших модемов : mmcli -L. Это покажет путь к модемному устройству, например /org/freedesktop/ModemManager1/Modem/0. Число в конце - это индекс модема, запомните его.

  2. Включите модем (при условии, что индекс вашего модема равен 0): mmcli -m 0 -e

  3. Отправьте USSD-запрос и отобразите ответ. Предполагая, что USSD-код вашего сетевого оператора для получения баланса равен * 901 #, команда будет выглядеть следующим образом:

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

Для случая, когда запрос баланса требует использования USSD-меню: это также возможно с mmcli, см. этот ответ .

0
ответ дан 2 May 2016 в 01:43
  • 1
    Эй hg8. Действительно ли это - полная установка студии андроида? Все компоненты, которые требуются, идут с ним также, такие как Java? – Elysium 27 December 2015 в 20:48

Для меня решения на основе ModemManager и gammu не работают корректно с многострочным USSD-ответом; например у моего оператора есть USSD-команда *104#, на которую он отвечает примерно так:

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

Очень неприятно видеть только первую бесполезную строку: You have:.

Наконец, я нашел обходной путь с picocom и ручной командой AT. Поэтому каждый раз, когда я хочу проверить свой баланс, я должен сделать следующее:

Сначала остановите диспетчер модемов:

$ sudo stop modemmanager

Теперь вам нужно знать свой порт модема; в моем случае это /dev/ttyACM0.

Если вы не знаете свой порт, попробуйте это:

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

И найдите запись с Mobile Broadband Modem. Например. мой вывод выглядит следующим образом:

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

Для получения дополнительной информации о получении правильного порта см. эту ссылку: https://gist.github.com/heyalexej/cc6c97b1ea42736b3ff7

Затем используйте picocom для подключения к вашему порту:

$ sudo picocom /dev/ttyACM0

Вы должны увидеть что-то вроде этого:

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

(если вы этого не видите *EMRDY: 1, это, вероятно, означает, что вы не остановили Modem Manager, см. выше)

Затем введите:

AT+CUSD=1,"*104#"

И через несколько секунд вы получите ответ, который может быть многострочным:

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

",15

OK

Чтобы выйти из Picocom, используйте Ctrl-A Ctrl-X

И снова запустите менеджер модема:

$ sudo start modemmanager
0
ответ дан 2 May 2016 в 01:43

Вы можете использовать решение виртуальной УАТС с открытым исходным кодом FreeSwitch вместе с его расширением GSMopen для отправки команд USSD [ source ].

Например, если USSD-код для получения вашего баланса (скажем) * 901 #, вы должны выполнить:

chat SMS|interface3|ussd|*901#

В других ответах, конечно, есть более простые решения, но в случае, если вы в любом случае используйте GSMopen (... например, потому что это единственный способ делать голосовые вызовы GSM в Linux ...).

0
ответ дан 2 May 2016 в 01:43

Другие вопросы по тегам:

Похожие вопросы: