gsm – Executing USSD via AT command from Huawei modem does not produce the expected result – Stack Overflow

At команды для модемов huawei – 3ginfo

AT-команды (набор команд Hayes) — набор команд, разработанных в 1977 году компанией Hayes для собственной разработки, модема «Smartmodem 300 baud». Набор команд состоит из серий коротких текстовых строк, которые объединяют вместе, чтобы сформировать полные команды операций, таких как набор номера, начала соединения или изменения параметров подключения.

Для того, чтобы модем распознал at команды, они должны быть записаны в специфической форме. Каждая команда всегда начинается буквами AT или at (от англ. ATtention, за что и получили своё название), дополненных одной или больше командой и завершаемой в конце нажатием клавиши Enter . Команды воспринимаются модемом только тогда, когда он находится в “командном режиме” или offline.

Рассмотрим наиболее часто используемые at команды при работе с модемом huawei

ATI – вывод информации о модеме

AT CFUN=1 – перезагрузка модема, очень полезная команда не требует “передергивать” модем. После перезагрузки модем перерегистрируется в сети оператора.

AT CGMI – информация о производителе модема (Recieve: huawei)

AT CGMR – информация о версии прошивки (Recieve: 11.608.12.04.21)

AT CIMI – информация об IMSI номер SIM карты (Recieve: 250015800471114)

AT CGSN – информация о IMEI модема (Recieve: 353142033840706)

AT^HWVER – информация о версии железа модема (Recieve: ^HWVER:”CD6ATCPU”)

AT CSQ – посмотреть уровень радиосигнала

AT^CMDL – получить список всех комманд
AT CGMM или AT GMM – запросить название модели
AT COPS – информация о текущем операторе (Recieve: COPS: (1,”MTS-RUS”,”MTS”,”25001″,0),(2,”MTS-RUS”,”MTS”,”25001″,2),,(0,1,2,3,4),(0,1,2))

AT^FHVER – показывает информацию о версии прошивки и версии железа (^FHVER:”E3276s-210 21.260.05.00.143,CH2E3276SM Ver.B”)

AT^U2DIAG? – текущий режим.

AT^GETPORTMODE – список всех устройств в модеме

AT^VERSION? – информация о версии прошивки модема

AT CLAC в ответе будет список поддерживаемых команд

Включение голосовых функций модема:

AT^CVOICE=? – проверка состояния голосовых функций модема (0 – значит включено)

AT^CVOICE=0 – включение голосовых функций модема

Включение / отключение режимов 2G и 3G:

AT^SYSCFG=13,1,3fffffff,0,0 – режим только 2G

AT^SYSCFG=2,1,3fffffff,0,0 – режим предпочтительно 2G

AT^SYSCFG=14,2,3fffffff,0,1 – режим только 3G

AT^SYSCFG=2,2,3fffffff,0,1 – режим предпочтительно 3G

AT^SYSCFG=2,2,3fffff ff,0,2 – режим включение 2G и 3G

Включение / отключение режимов WCDMA, HSDPA, HSPA , HSPA:

AT^HSDPA=1 – режим HSDPA включен

AT^HSDPA=0 – режим HSDPA выключен

AT^HSUPA=1 – режим HSUPA включен

AT^HSUPA=0 – режим HSUPA выключен
AT^HSPA=0 – режим WCDMA

AT^HSPA=1 – режим HSDPA

AT^HSPA=2 – режим HSPA

AT^HSPA=3 – режим HSPA
AT^SYSCFG=13,1,3FFFFFFF,2,4 – режим только GPRS/EDGE

AT^SYSCFG=14,2,3FFFFFFF,2,4 – режим только 3G/WCDMA

AT^SYSCFG=2,1,3FFFFFFF,2,4 – режим предпочтительно GPRS/EDGE

AT^SYSCFG=2,2,3FFFFFFF,2,4 – режим предпочтительно 3G/WCDMA

Команды необходимые для разблокировки модема (разлочка модема)

AT^CARDLOCK=”NCK Code” – ввод кода снятия блокировки (8-значное число)

AT^CARDUNLOCK=”MD5 NCK Code” – сброс попыток ввода кода NCK кода разблокировки до 10 раз

AT^U2DIAG=Команда – для изменения режим модема (Модем,CD ROM, Флешка, PC UI, NDIS, Смарткарта).

Таблица команд ниже. 

КомандаМодемCD-ROMФлешкаPC UIСетевой адаптерСмарт-картаПримечаниеПоддерживаетсяНе поддерживается
0        E160, E1750 
1         
3       Не будет работать на девайсах без смарт-карты  
5       Не будет работать на девайсах без сетевого адаптера  
9        Не будет работать на девайсах без смарт-карты и сетевого адаптера  
10        Не будет работать на девайсах без смарт-карты  
12       Не будет работать на девайсах без сетевого адаптера  
255      ? Сброс на заводские настройки E160, E160E, K3565, K3715 E176, E1762, E1750, E173
256       Для большинства
Устройств флешка заработает после установки драйверов.
 E160, E160E, E173, E1750, E1762, K3565, K3715 E176
257         
259        Не будет работать на девайсах без смарт-карты E173u-2, E176 
261       Не будет работать на девайсах без смарт-карты и сетевого адаптера  
265       Не будет работать на девайсах без смарт-карты и сетевого адаптера  
266       Не будет работать на девайсах без смарт-карты  
267       Не будет работать на девайсах без сетевого адаптера  
268       Не будет работать на девайсах без сетевого адаптера E1750, K3565, E173 
276      ? Сброс на заводские настройки E1762, K3565, K3765, E173, E1750 

AT-команды для модемов Huawei E171 с прошивкой v21.156.00.00.143, E352, E353, E367, E398 и др. 
AT^SETPORT=”A1,A2,1,2,3,7,A1,A2″ (Установить конфигурацию по умолчанию)
AT^SETPORT=”A1,A2,1,2,3,7″ (девайс в режиме “модем сетевая карта”)
AT^SETPORT=”A1,A2;1,2,3,A2″ (девайс в режиме “модем Card Reader”)
AT^SETPORT=”A1,A2;1,2,3″ (девайс в режиме “только модем”)
AT^SETPORT=”A1,2,7″ (девайс в режиме “сетевая карта CD-ROM”)
AT^SETPORT=”A1,A2,2,7″ (девайс в режиме “сетевая карта”) – для Windows 7
AT^SETPORT=”A1;1,2″ (девайс в режиме “модем пользовательский интерфейс”)
AT^SETPORT? (Текущая конфигурация модема)
AT^GETPORTMODE (Отображение текущего активного режима)
AT^SETPORT=”A1,A2,1,2,3,7,A1,A2,4,5,6,A,B,D,E” (Сброс настроек по умолчанию)

Настройки режимов сети  по умолчанию для Huawei E352 

at^hspa?

^HSPA: 2
AT^SETPORT?

A1,A2;1,2,3,7,A1,A2

AT^SYSCFG?

^SYSCFG:2,2,3FFFFFFF,1,2

Настройки режимов сети  по умолчанию для Huawei E352b (21.158.23.00.209)

AT-команды для модема Huawei E1750

 АТ команды переключения режимов huawei E1750
AT^U2DIAG=0 (девайс в режиме только модем)
AT^U2DIAG=1 (девайс в режиме модем CD-ROM)
AT^U2DIAG=6 (девайс в режиме только сетевая карта)
AT^U2DIAG=268 для E1750 (девайс в режиме модем CD-ROM Card Reader)
AT^U2DIAG=276 для E1750 (девайс в режиме сетевой карты CD-ROM Card Reader)
AT^U2DIAG=256 (девайс в режиме модем Card Reader, можно использовать как обычную флешку,
отказавшись от установки драйверов модема)
АТ команды переключения режимов сети huawei E1750
AT^SYSCFG=14,2,3fffffff,1,2 (Только 3G)
AT^SYSCFG=13,1,3fffffff,1,2 (Только GSM)
AT^SYSCFG=2,2,3fffffff,1,2 (Приоритет 3G)

AT-команды переключения режимов сети для модема Huawei E1820 (E182E)

AT^SYSCFG=13,2,3fffffff,1,2 – только GSM
AT^SYSCFG=2,1,3fffffff,1,2
– преимущественно GSM
AT^SYSCFG=14,2,3fffffff,1,2
– только WCDMA
AT^SYSCFG=2,2,3fffffff,1,2
– преимущественно WCDMA

AT-команды для модема Huawei E3131

AT^SETPORT=”A1,A2;1,16,3,2,A1,A2″ – (Установить конфигурацию по умолчанию)
AT^SETPORT=”A1,A2;1,2,3,16,A1,A2″ –
(режим для работы модема с Android 4.0 (иногда работает))
AT^SETPORT=”A1,A2;1,16,3,2″ –
(девайс в режиме “модем сетевая карта”)
AT^SETPORT=”A1,A2;1,3,2,A2″ –
(девайс в режиме “модем Card Reader”)
AT^SETPORT=”A1,A2;1,3,2″ –
(девайс в режиме “только модем”)

AT^SETPORT=”FF;1,2″ (девайс в режиме “модем пользовательский интерфейс”)
AT^SETPORT=”A1,A2;2,16″ –
(девайс в режиме “сетевая карта”)
AT^SETPORT=”A1,A2;2,16,A1″ –
(девайс в режиме “сетевая карта CD-ROM”)

AT-команды для модема Huawei E3131Hilink

http://192.168.1.1/html/switchProjectMode.html

AT^U2DIAG=0 Перевод модема из режима Hilink в режим com портов
AT^U2DIAG=119 Возврат в исходный режим

AT команды для модема Huawei E303 HiLink

http://192.168.1.1/html/switchProjectMode.html

AT^U2DIAG=374 Перевод модема из режима Hilink в режим com портов

AT^U2DIAG=375 Возврат в исходный режим

AT команды для модема Huawei E3272

AT^SETPORT=”A1,A2;62,61,76,A1,A2″  – Установка по умолчанию для МТС 824F.

AT^SETPORT=”A1,A2;10,12,16,A1,A2″ – Установка по умолчанию для Мегафон М100-4.

AT команды для модема Huawei E3276

AT^SETPORT=”A1;10,12,13,14,16,A1,A2″ – Включает все COM порты.

AT^SETPORT=”A1,A2;12,16,A1,A2″ – Установка по умолчанию.

AT^SETPORT=”A1;10,12” – режим только модем

AT^SYSCFGEX? – значение по умолчанию
^SYSCFGEX:”00″,3FFFFFFF,1,2,800C5

AT^SYSCFGEX=?

^SYSCFGEX: (“00″,”01″,”02″,”03″),((2000000400380,”GSM900/GSM1800/WCDMA900/WCDMA2100″),(2a80000,”GSM850/GSM1900/AWS/WCDMA1900″),(3fffffff,”All bands”)),(0-2),(0-4),((800c5,”LTE_B1/LTE_B3/LTE_B7/LTE_B8/LTE_B20″),(7fffffffffffffff,”All bands”))

AT^FHVER – показывает информацию о версии прошивки и версии железа (^FHVER:”E3276s-210 21.260.05.00.143,CH2E3276SM Ver.B”)

AT команды для модема Huawei E3531

AT^SETPORT=”A1,A2;1,16,3,2,A1,A2″  – Установка по умолчанию для МТС 423S.

AT^FHVER –  – показывает информацию о версии прошивки и версии железа (^FHVER:”E3531s-1EA 21.318.15.00.143,CH1E3531SM Ver.A”)

AT команды для преключения режимов в модемах huawei с LTE (E392, E398)

Если для USB-модема вы хотите включить режим только LTE, отключив все остальные, необходимо воспользоваться AT командой:

AT^SYSCFGEX=”03″,3fffffff,2,4,7fffffffffffffff,,

В указанной команде первое значение расшифровывается так:

00 – Автоматический режим, установлен по умолчанию (приоритеты в порядке очереди: 4G > 3G > 2G)
01 – GSM GPRS(2G)
02 – WCDMA(3G)
03 – LTE(4G)
99 – Оставить текущие настройки без изменений.

Вы можете также выбрать порядок их приоритета, в порядке убывания, например:
AT^SYSCFGEX=”0302″,3fffffff,2,4,7fffffffffffffff,,
В этом случае модем будет пытаться подключиться сначала к сети LTE и потом к сети 3G, кроме работы в сетях 2G.
или такой вариант:
AT^SYSCFGEX=”030201″,3fffffff,2,4,7fffffffffffffff,,
это равносильно
AT^SYSCFGEX=”00″,3fffffff,2,4,7fffffffffffffff,,

Соответственно автоматический режим, установлен по умолчанию (приоритеты в порядке очереди: 4G > 3G > 2G)

Executing ussd via at command from huawei modem does not produce the expected result

Summary: Using a program I have written in javascript (node.js), sending USSD command for a specific MNO (Mobile Network Operator) service does not return me the expected output. To my surprise, commands returns ‘OK’ and output is readable, but it is not what I asked for. Using the same program, if I send MNO’s other commands, like check available balance I get the expected output.

Details:
I run the following commands (both from putty and my program) to send USSD code:

AT CUSD=1,"GSM ENCODED STRING",15

And I get back something as:

 CUSD: 0,"GSM ENCODED STRING",15

We have written an npm module for encoding and decoding of GSM 7-bit type of USSD (ussd-pdu-text-converter) and using the same, we can encode our USSD command and decode the message returned back from MNO to human-readable format.

Running USSD works fine for the operations that MNO provides from its side, like checking available balance. We send the USSD, and get back the response containing the information we needed. No matter how many times we run the command, we get the same output.

The problem raises when we want to use a third party service that the MNO provides (something like Caller Ring Back Tone or CRBT). When I use putty and our program to run the USSD command for such a service, every time I get a different result. Something that I do not expect, or I did not ask for. For example:

  • You do not have enugh balance to use this service
  • You are not registered for this service
  • Your balance is AFN 3000.
  • Your balance is AFN 40.
  • etc.

This gets more interesting to know when we run the command from a mobile phone, we get back the response as we expect! No matter how many times we run it. We get the unique response we expect.

What I have checked already:
I have tried the followings with no result:

- AT CSCS="IRA"
- AT CSCS="UCS2"
- AT CSCS="GSM"
- AT CUSD=1,"GSM ENCODED COMMAND"
- AT CUSD=1,"GSM ENCODED COMMAND",15
- AT CUSD=1,"GSM ENCODED COMMAND",32

My questions:

What could be the case/algorithm that the mobile phone(s) consider that we do not do in our program, hence we get the strange outputs? Any suggestions how to solve it?

Update: I could do a work around, and broke the ussd command into a two step USSD command, of course MNO has a support for that, but still I have not been able to find out why that command itself does not work.

Оцените статью
Huawei Devices
Добавить комментарий