Существуют ли какие-либо инструменты или команды, которые можно использовать для отправки USSD-кодов для проверки баланса и баланса данных SIM-карты GSM в моем USB-модеме (мобильный широкополосный ключ)?
Вот некоторые приложения с поддержкой проверки баланса USSD:
Prepaid Manager - это апплет для рабочего стола GNOME, который позволяет проверять и пополнять баланс мобильных предоплаченных SIM-карт GSM. Это простое и минималистичное приложение с проверкой баланса USSD и пополнением баланса. Но, с другой стороны, это очень устаревшее приложение, которое давно не получало никаких обновлений. А если ваш провайдер не поддерживается, вам придется настроить его вручную, как описано на его домашней странице . Для установки нажмите здесь:
Или выполните следующую команду:
sudo apt install prepaid-manager-applet
Modem Manager GUI - это комплексное решение для управления и мониторинга модемов на основе мобильных сетей. Он содержит довольно много функций, и поддержка USSD - лишь одна из них. Для получения полного списка функций, посетите их официальную домашнюю страницу . Для установки нажмите здесь:
Или выполните следующую команду:
sudo apt install modem-manager-gui
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
пакет.
Вы можете использовать утилиту командной строки
gammu
для этой цели. Если USSD-код для получения вашего баланса (скажем) * 901 #, вы должны выполнить:Инструкции по установке и настройке и более подробную информацию смотрите здесь .
источник
Вы можете напрямую использовать AT-команды для запроса баланса через USSD. Для этого используйте любую программу с последовательным терминалом, которая позволяет напрямую связываться с модемом (
putty
иminicom
т. Д.).Я выбрал,
atinout
потому что он хорошо интегрирован с командной строкой. Сначала вы устанавливаете его:Затем, если вы используете ModemManager (по умолчанию в Ubuntu Linux), вам, возможно, придется сначала отключить его, чтобы разрешить
atinout
доступ к вашему модему:Теперь, чтобы отправить USSD-код для запроса баланса в сеть (скажем, * 901 #) и отобразить результат, вы должны использовать эту команду:
Это предполагает, что ваш модем на
/dev/ttyUSB1
. КомандаAT
во второйatinout
команде просто показывает нежелательный ответ USSD, отображаемый как побочный эффект, который должен был прийти послеsleep
.В случае, если для запроса баланса необходимо использовать USSD-меню: это также возможно
atinout
, см. Этот ответ .источник
Вы можете сделать их с пакетом
modem-manager-gui
. Но это доступно только для 13.10. В других версиях вы должны управлять ими в терминале с пакетомmodemmanager
.Если вы находитесь в Ubuntu 13.10:
В других версиях Ubuntu вы можете сделать это с помощью приложения
prepaid-manager-applet
источник
Вы можете использовать инструмент командной строки Linux
gsm-ussd
для отправки USSD-кодов, получения ответов и даже навигации по USSD-меню (хотя это не было стабильно / пригодно для меня).Подробные инструкции по установке и настройке см. Здесь . Пакет Debian версии 0.4, предлагаемый для установки, является последней версией для разработчиков .
Если USSD-код для получения вашего баланса (скажем) * 901 # и ваш модем, то
/dev/ttyUSB1
вы должны выполнить это, чтобы отправить простой USSD-код и отобразить ответ сети (не приводя к появлению меню):источник
Вы можете использовать
mmcli
клиент командной строки ModemManager по умолчанию в Ubuntu, чтобы отправить код USSD и получить ответ:Начните список ваших модемов:
mmcli -L
. Это покажет путь устройства модема, как/org/freedesktop/ModemManager1/Modem/0
. Число в конце - индекс модема, запомните это.Включите модем (если ваш индекс модема равен 0):
mmcli -m 0 -e
Отправьте USSD запрос и отобразите ответ. Предполагая, что USSD-код вашего сетевого оператора для получения баланса равен * 901 #, команда будет такой:
В случае, если для запроса баланса необходимо использовать USSD-меню: это также возможно
mmcli
, см. Этот ответ .источник
error: couldn't initiate USSD session: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.Unsupported: Operation not supported.'
Для меня оба решения на основе ModemManager и
gammu
не работают корректно с многострочным USSD-ответом; Например, у моего оператора есть команда USSD*104#
, на которую он отвечает примерно так:Это разочаровывает видеть только первую бесполезную строку:
You have:
.Наконец я нашел обходной путь
picocom
и ручную команду AT. Поэтому каждый раз, когда я хочу проверить свой баланс, я должен сделать следующее:Сначала остановите диспетчер модемов:
Теперь вам нужно знать ваш модемный порт; в моем случае это так
/dev/ttyACM0
.Если вы не знаете свой порт, попробуйте это:
И искать запись с
Mobile Broadband Modem
. Например, мой вывод выглядит следующим образом:Для получения дополнительной информации о получении правильного порта, перейдите по этой ссылке: https://gist.github.com/heyalexej/cc6c97b1ea42736b3ff7
Затем используйте Picocom для подключения к вашему порту:
Вы должны увидеть что-то вроде этого:
(если вы этого не видите, это
*EMRDY: 1
, вероятно, означает, что вы не остановили Modem Manager, см. выше)Затем введите:
И через несколько секунд вы получите ответ, который может быть многострочным:
Для выхода из Picocom используйте Ctrl-A Ctrl-X
И снова запустите менеджер модема:
источник
Вы можете использовать виртуальное PBX-решение с открытым исходным кодом FreeSwitch вместе с его расширением GSMopen для отправки команд USSD [ источник ].
Например, если USSD-код для получения вашего баланса (скажем) * 901 #, вы должны выполнить:
Конечно, в других ответах есть более простые решения, но в любом случае вы используете GSMopen (... например, потому что это единственный способ выполнять голосовые вызовы GSM в Linux ...).
источник