Блог Олега Сердюкова

Выбор сети в модеме GPRS/HSDPA через AT-команды

Когда-то 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

Comments