Установка номера телефона для SIM

Последнее время в память симкарт перестали писать номер телефона, к которому она привязана и используя данную симкарту в связке с GSM свистком для Asterisk мы неизменно натыкаемся на проблему её идентификации в телефонной станции.

Но, как водится, разработчики стандартов не дураки и можно, вооружившись терминалом1), поправить поля в симке, что позволит нам дальше успешно её использовать.

Итак, берём GSM-свисток, который поддерживает звонки и смс2), втыкаем туда свежеприобретённую симкарту, вставляем в Asterisk, ставим модуль chan_dongle и настраиваем по образу и подобию3). После этого заходим в сам астериск, загружаем модуль и смотрим что у нас там появилось. Если всё указано верно - получаем наш свисток:

phone*CLI> dongle show devices                                                                                       
ID           Group State      RSSI Mode Submode Provider Name  Model      Firmware          IMEI             IMSI             Number        
donglename   0     Free       7    5    4       Tele2          E173       11.126.85.00.209  800000000000009  200000000000009  Unknown

Как видимо в поле Number Asterisk говорит, что не может никак определить номер. В теории конечно можно пытаться отправлять AT команды через интерфейс Asterisk (dongle cmd donglename <AT COMMAND>), но что-то я ему не доверяю, поэтому отключаем свисток от Asterisk и идём любимым терминалом в порт (в Linux это /dev/ttyUSB*, нужно методом научного тыка подобрать тот порт, при отправке в который команды AT в ответ мы получим OK) После подключения начинаем вводить команды (через строчку команда и ожидаемый ответ):

AT
OK

AT+CNUM
+CME ERROR: unknown

AT+CPBS?
+CPBS: "SM",3,100
OK

AT+CPBS="ON"
OK

AT+CPBS?
+CPBS: "ON",0,2
OK

AT+CPBW=,"+79000000000"
OK

AT+CPBS?
+CPBS: "ON",1,2
OK

AT+CPBR=1
+CPBR: 1,"+79000000000",145,""
OK

AT+CNUM
+CNUM: "","+79000000000",145
OK

Разберём что тут произошло:

  • AT - проверка работы свистка и протокола, эдайки ping-pong
  • AT+CNUM - возвращает номер, прикреплённый к симкарте
  • AT+CPBS? - возвращает информацию о выбранной в данный момент телефонной книге, количестве записей в ней и общей вместимости
  • AT+CPBS=“ON” - переключение на сервисную телефонную книгу
  • AT+CPBW=,“+79000000000” - внесение номер в конец выбранной телефонной книги
  • AT+CPBR=1 - чтение первой записи в выбранной телефонной книге

После проведения данного ритуала вновь включаем наш свисток в Asterisk и voila, всё как и просили:

phone*CLI> dongle show devices 
ID           Group State      RSSI Mode Submode Provider Name  Model      Firmware          IMEI             IMSI             Number        
donglename   0     Free       7    0    0       Tele2          E173       11.126.85.00.209  800000000000009  200000000000009  +79000000000  
1)
в моём случае minicom, в вашем что угодно, что может ходить в последовательный порт со скоростью 115200 бод
2)
в моём случае я остановился на Huawei E173 разлоченном
3)
я просто указал IMEI в конфиге