Мой BQ Aquaris E5 (версия для Ubuntu) не был обнаружен в качестве модема GSM в настольной версии Ubuntu 15.10. Поэтому я попробовал следующий сценарий оболочки:
Выполнен вышеуказанный скрипт оболочки следующим образом:
detect_usb 0x2a47 0x0c02.
После этого в / var / log / syslog было отображено следующее сообщение:
Nov 9 08:14:32 family-desktop kernel: [ 1038.246463] usbcore: registered new interface driver usbserial Nov 9 08:14:32 family-desktop kernel: [ 1038.246487] usbcore: registered new interface driver usbserial_generic Nov 9 08:14:32 family-desktop kernel: [ 1038.246504] usbserial: USB Serial support registered for generic Nov 9 08:14:32 family-desktop kernel: [ 1038.246525] usbserial_generic 4-1.8:1.1: The "generic" usb-serial driver is only for testing and one-off prototypes. Nov 9 08:14:32 family-desktop kernel: [ 1038.246528] usbserial_generic 4-1.8:1.1: Tell linux-usb@vger.kernel.org to add your device to a proper driver. Nov 9 08:14:32 family-desktop kernel: [ 1038.246530] usbserial_generic 4-1.8:1.1: generic converter detected Nov 9 08:14:32 family-desktop kernel: [ 1038.246648] usb 4-1.8: generic converter now attached to ttyUSB0 Nov 9 08:14:36 family-desktop kernel: [ 1042.266838] usbcore: registered new interface driver option Nov 9 08:14:36 family-desktop kernel: [ 1042.266865] usbserial: USB Serial support registered for GSM modem (1-port)
Запуск lsusb в моей системе показывает следующее:
Bus 004 Device 004: ID 2a47:0c02 Bus 004 Device 003: ID 0781:5590 SanDisk Corp. ..... Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 004: ID 2188:0ae1
Но попытка отправить AT-команды на модем (определяется как / dev / ttyUSB0) не удалась. Используется следующий демонстрационный скрипт из python-gsmmodem:
!/usr/bin/env python """\ Demo: handle incoming SMS messages by replying to them Simple demo app that listens for incoming SMS messages, displays the sender's number and the messages, then replies to the SMS by saying "thank you" """ from __future__ import print_function import logging import sys PORT = "/dev/ttyUSB%s" % (sys.argv[1]) BAUDRATE = 9600 PIN = '<my Pin>' # SIM card PIN (if any) from gsmmodem.modem import GsmModem def handleSms(sms): print(u'== SMS message received ==\nFrom: \nTime: \nMessage:\n\n'.format(sms.number, sms.time, sms.text)) print('Replying to SMS...') sms.reply(u'SMS received: ""'.format(sms.text[:20], '...' if len(sms.text) > 20 else '')) print('SMS sent.\n') def main(): print('Initializing modem...') # Uncomment the following line to see what the modem is doing: logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.DEBUG) modem = GsmModem(PORT, BAUDRATE, smsReceivedCallbackFunc=handleSms) modem.smsTextMode = False modem.connect(PIN) print('Waiting for SMS message...') try: modem.rxThread.join(230**31) # Specify a (huge) timeout so that it essentially blocks indefinitely, but still receives CTRL+C interrupt signal finally: modem.close(); if __name__ == '__main__': main()
Он возвращает что-то следующим образом:
# python sms_handler_demo.py 0 Initializing modem... INFO: Connecting to modem on port /dev/ttyUSB0 at 9600bps DEBUG: write: ATZ Traceback (most recent call last): File "sms_handler_demo.py", line 41, in <module> main() File "sms_handler_demo.py", line 33, in main modem.connect(PIN) File "/usr/local/lib/python2.7/dist-packages/gsmmodem/modem.py", line 177, in connect self.write('ATZ') # reset configuration File "/usr/local/lib/python2.7/dist-packages/gsmmodem/modem.py", line 413, in write responseLines = super(GsmModem, self).write(data + writeTerm, waitForResponse=waitForResponse, timeout=timeout, expectedResponseTermSeq=expectedResponseTermSeq) File "/usr/local/lib/python2.7/dist-packages/gsmmodem/serial_comms.py", line 140, in write raise TimeoutException() gsmmodem.exceptions.TimeoutException: None
Есть идеи, что может быть не так?
Bharath Kanakasabha 9 лет назад
0
1 ответ на вопрос
0
Bharath Kanakasabha
Задал этот вопрос в списке рассылки ubuntu-phone. Ниже приведен ответ одного из членов этого списка рассылки (скопируйте ответ здесь):
Я не думаю, что модуль основной полосы внутри чипсета MediaTek напрямую подключен к контроллеру USB в «нормальном» режиме работы. Есть некоторые специальные инструменты разработки, такие как MTK Catcher, но у AFAIK нет "стандартного" интерфейса команд AT, видимого для хост-компьютера USB. Устройства на базе Android не поддерживают AT на уровне операционной системы, но используют RIL, а собственный драйвер преобразует команды RIL в специфичные для поставщика команды для модема.
Что вы можете сделать, это включить ADB или SSH на телефоне, подключиться к нему с помощью «adb shell» / «phablet-shell» или SSH, а затем использовать работающий на телефоне компонент ofono, чтобы делать все, что вы захотите. Есть много примеров сценариев в
/ USR / доли / ofono / скрипты /
отправлять SMS, совершать вызовы и т. д. Если вы посмотрите на них, то обнаружите, что в основном это скрипты Python, генерирующие вызовы D-Bus, поэтому вы можете легко создать свою собственную логику с помощью API-интерфейса ofono D-Bus, описанного в