LINUX.ORG.RU

Huawei E171 не посылает USSD запросы


0

1

У меня появился E171 Firmware 11.126.85.01.143 от МТС. Я его, конечно же, разлочил с помощью AT^CARDLOCK=«» и он прекрасно заработал с симкой от Мегафона. Однако он в упор не хочет посылать USSD запросы.

Что я только не делал

AT+CUSD=1,*100#,15
ERROR
AT+CUSD=1,*100#
ERROR
AT+CUSD=1,"*100#"
ERROR
AT+CUSD=1,"*100#",15
ERROR
AT+CUSD=1,"*100#",0
ERROR
AT+CEER
+CEER: Network ended call
ATD*100#;
OK
AT+CUSD?
+CUSD: 1

В списке команд (AT+CLAC) я нашёл AT^USSDMODE, но переключение его из 1 в 0 привело только к тому, что ответ модема на команды стал OK, но ответ сети всё равно не приходит.

Как заставить этот модем посылать USSD запросы?

★★★

Последнее исправление: ArtSh (всего исправлений: 1)

Попробуйте отсылать запрос в 7bit gsm кодировке (ttyUSB2 замените на соотв. девайс):

#!/usr/bin/python
# coding: utf8

import base64, io, tty

def write2p(a):
   #p.write(bytes(a + '\r\n', 'utf8'))
   p.write(a + '\r\n')

def to7bit(src):
   result, count, last = [], 0, 0
   for c in src:
      this = ord(c) << (8 - count)
      if count:
         result.append('%02X' % ((last >> 8) | (this & 0xFF)))
      count = (count + 1) % 8
      last = this
   result.append('%02x' % (last >> 8))
   return ''.join(result)

p = io.open('/dev/ttyUSB2', 'w+b', 0)
tty.setraw(p)
write2p('AT+CUSD=1,' + to7bit('*100#') + ',15')

print('Waiting answer...')
for l in p:
   print(l)
   if l.startswith('+CUSD'):
      print(base64.b16decode(l[10:l.rfind('"')]).decode('utf-16-be'))
      break

p.close()

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

Да, проблема действительно была в кодировке!

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

Спасибо за скрипт, такая же проблема была, ERROR выдавало. При измененной кодировке теперь все ок:

AT+CUSD=1,AA180C3602,15
OK

Но за-то другая проблема, счет один фиг не могу проверить, т.к. кроме мусора ничего не выдает. А строка '+CUSD' не находится.

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

Препробовал все ttyUSB*, молчат. вроде этот тот что надо. По крайней мене именно в этот tty выводит инфу по запросу ATI.

Где-то в инете находил, что мегафоны, или хуавеи выводят такие запросы по другому порту(чи еще чему), но что за другой порт и как к нему подключиться я не знаю =)

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

кроме мусора ничего не выдает. А строка '+CUSD' не находится.

Попробуйте в одном терминале сделать cat /dev/ttyUSB0 а в другом echo -e «AT+CUSD=1,AA180C3602,15\r»>/dev/ttyUSB0 а вывод давайте сюда.

ArtSh ★★★
() автор топика
3 ноября 2011 г.
Ответ на: комментарий от Siado

модем хуавей 1550 открывает три порта. один можно посмотреть в диспетчере устройств, у самого модема. у меня на 16-м порту. еще два порта в диспетчере устройств Порты(COM LPT) у меня 17 Application interface и 18 UI Interface при отправке AT+CUSD=1,AA180C3602,15 на 16-й порт, ответ приходит на 18-й.

anonymous
()
4 марта 2012 г.
Ответ на: комментарий от uzbl

print(base64.b16decode(l[10:l.rfind('«')]).decode('utf-16-be'))

Можно заменить на :

print decodeText7Bit(t)

Функцию взял здесь - http://www.koders.com/python/fid40706E080EBF22307940E7CA7ED3C2BE9F73B211.aspx...

В моём случае (модем huawei e153u-1 и стартовый пакет киевстара) помогло решить проблему

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