LINUX.ORG.RU

Как отправить USSD-запрос с 3G свистка?

 , ,


0

2

Есть модем Huawei E398 LTE/UMTS/GSM.
Подключение поднимается с помощью wvdial.

Как оправить USSD-запрос (для проверки баланса)?

Поставил gsm-ussd.
/dev/ttyUSB0 занят wvdial'ом.
на /dev/ttyUSB1 /dev/ttyUSB2 не хочет работать.

★★

У МегаФона подключил в личном кабинете услугу «баланс близких». Контролирую баланс с основного телефона.

Jurik_Phys ★★★★★ ()
Последнее исправление: Jurik_Phys (всего исправлений: 1)
Ответ на: комментарий от Jurik_Phys

Ну с телефонами близких я тоже так сделал.
А тут сборная солянка из Мегафона / Ростелекома + оформление на юрика.
И вообще я хочу баланс в Zabbix вывести, а то достало гадать - это модем не работает или просто проплатить забыли...

SaBo ★★ ()
Ответ на: комментарий от SaBo

gsm-ussd -m /dev/ttyUSB2 --no-cleartext -d -l LOG1 '*100#' 2>LOG2

и оба лога на pastebin.com (таймаут там по умолчанию 20 сек, так что если висит 30 - ^C)

ABW ★★★★★ ()
Последнее исправление: ABW (всего исправлений: 1)
Ответ на: комментарий от SaBo

sudo gsm-ussd -m /dev/ttyUSB2 --no-cleartext '*100#' два модема нафиг повесило :)

Сейчас не виснет...

> sudo gsm-ussd -m /dev/ttyUSB2 --no-cleartext '*105#'
USSD session open, to cancel use "gsm-ussd -c".
USSD session open, to cancel use "gsm-ussd -c".
O=:M«éePÚm~ËÛáq:_ÙAÓæ
> sudo gsm-ussd -m /dev/ttyUSB2 --no-cleartext '*105#'                          
»▒5H}.A8
> sudo gsm-ussd -m /dev/ttyUSB2 --no-cleartext '*100#'
USSD session open, to cancel use "gsm-ussd -c".
USSD session open, to cancel use "gsm-ussd -c".
O=:M«éePÚm~ËÛáq:_ÙAÓæ

Не пойму только кодировку...

SaBo ★★ ()
Ответ на: комментарий от SaBo

Подключил модем к ноуту и запустил modem-manager-gui.

На *105# отвечает теми же краказябами.
На *201# вернул номер телефона (на латинице).

Но gsm-ussd на *201# опять вернул кракозябы.

SaBo ★★ ()
Ответ на: комментарий от SaBo

Ну вот, opsos отвечает:

+CUSD: 0,«CF2135487D2E4138970D0782BB1A»,0

т.е. «отваета не надо», текст, схема кодирования - GSM DA.
Причём gsm-ussd это распознаёт:

[DEBUG][GSMUSSD::UssdQuery] Expected answer received.
[DEBUG][GSMUSSD::UssdQuery] USSD response type: No further action required (0)
[DEBUG][GSMUSSD::UssdQuery] Encoding «0» says response is in default alphabet

Т.о., он должен выдать тебе на stdout

OCTATOK 8.68 p.

(заметь, латинскими буквами).
Почему эта perl-овая скотина этого не делает, не знаю точно, но есть подозрение, что из-за того, что не учитывает, что по этому стандарту кодирования сообщения из 8 * n - 1 символов дополняются символом CR (0x0a, возврат каретки), который должен игнорироваться при декодировании.
Попробуй послать какой-нибудь другой запрос, о доп. услугах, например.

ABW ★★★★★ ()
Ответ на: комментарий от ABW

Спасибо, понял!

Другой запрос пробовал посылать (*201#) - тоже в неверной кодировке.
При этом в modem-manager-gui на запрос *201# верно отвечает, а на запрос *105# та же кодировка, что и в gsm-ussd.

А, может быть, есть ещё какая-то консольная утилита для USSD-запросов?

SaBo ★★ ()
Ответ на: комментарий от SaBo

Там же в Arch-е в AUR был ещё huawei-ussd, тоже perl и кривой по-своему.
Но поскольку он делался под российскую реальность, может и прокатить. Там на самом деле надо и для исходящего, и для входящего устройства указывать /dev/ttyUSB2.
А если не получится, сделай мне отладочный вывод gsm-ussd, как выше, для вариантов с кракозяблами, может быть, смогу свой скрипт доработать.

ABW ★★★★★ ()
Ответ на: комментарий от SaBo

тогда почитай как работает modem-manager и его api, там d-bus, а его мессаги можно и из консольки слать.

pon4ik ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.