Когда-то Skvo в комментарии к статье ”Не ставьте китайский софт, или очередная попытка установки оболочки для модема 3G Huawei E219” поделился очень полезной информацией о работе с GSM/UMTS-модемов через AT-команды, а именно о взаимодействии через команду screen. Мне очень понравился этот способ и я им регулярно пользуюсь.
Например, в модеме Novatel MC930D много достоинств (он поддерживается Mac OS X без необходимости установки дополнительных драйверов), и несколько недостатков (если его вставить в ноутбук, то во второй USB-порт невозможно ничего вставить; и отсутствие возможности выбирать сеть и тип подключения GPRS/HSDPA).
Поэтому выбор сети я произвожу через AT-команды.
Определяю, какое устройство обслуживает модем. Для этого смотрю cu-устройства при отключенном модеме:
$ ls -la /dev/cu.* crw-rw-rw- 1 root wheel 11, 3 Jul 10 10:59 /dev/cu.Bluetooth-Modem crw-rw-rw- 1 root wheel 11, 7 Jul 10 10:59 /dev/cu.Bluetooth-PDA-Sync crw-rw-rw- 1 root wheel 11, 1 Jul 10 10:59 /dev/cu.ole-w880-SerialPort crw-rw-rw- 1 root wheel 11, 5 Jul 10 10:59 /dev/cu.ole_iphone-WirelessiAP
И при включенном модеме:
$ ls -la /dev/cu.* crw-rw-rw- 1 root wheel 11, 3 Jul 10 10:59 /dev/cu.Bluetooth-Modem crw-rw-rw- 1 root wheel 11, 7 Jul 10 10:59 /dev/cu.Bluetooth-PDA-Sync crw-rw-rw- 1 root wheel 11, 1 Jul 10 10:59 /dev/cu.ole-w880-SerialPort crw-rw-rw- 1 root wheel 11, 5 Jul 10 10:59 /dev/cu.ole_iphone-WirelessiAP crw-rw-rw- 1 root wheel 11, 113 Jul 21 05:23 /dev/cu.wwan crw-rw-rw- 1 root wheel 11, 119 Jul 21 05:19 /dev/cu.wwanCMD crw-rw-rw- 1 root wheel 11, 115 Jul 21 05:23 /dev/cu.wwanCNTL crw-rw-rw- 1 root wheel 11, 117 Jul 21 05:19 /dev/cu.wwanGPS
Т.е. за мой модем отвечают /dev/cu.wwan*. Например, за Huawei E219/E220 отвечает /dev/tty.HUAWEIMobile-Pcui.
Вот теперь основа совета Skvo - запускаю screen и параметром даю устройство /dev/cu.wwanCMD. Это отличная замена терминальной программе.
$ screen /dev/cu.wwanCMD
Дальше использую AT-команды. Я пользовался двумя источниками - List of AT commands и файл из cheetahwatch.
Смотрю текущую сеть, в которой зарегистрирован модем:
AT+COPS? +COPS: 0,0,"UTEL",2
Да, так и есть, Utel 3G, MCC=255, MNC=07.
Смотрю перечень сетей, которые видит модем:
AT+COPS=? +COPS: (2,"UTEL","UTEL","25507",2) +COPS: (3,"UA-GT","GT","25505",0) +COPS: (3,"life:)","life:)","25506",0) +COPS: (1,"UA-KYIVSTAR","UA-KS","25503",0) +COPS: (3,"Beeline UA","Beeline","25502",0) +COPS: (3,"MTS UKR","MTS UKR","25501",0)
Первое число говорит о возможности регистрации в сети (0 - unknown, 1 - available, 2 - current, 3 - forbidden). Верно, я сейчас в сети Utel, могу зарегистрироваться в Kyivstar.
Регистрируюсь в сети Киевстар:
AT+COPS=1,2,"25503" OK
Первый параметр 1 = manual registration, второй 2 = means you want to specify the network in network ID format, третий - ID в кавычках.
И убеждаюсь, что модем зарегистрирован в нужной сети:
AT+COPS? +COPS: 1,2,"25503",0