achmel / huawei-3372-ru.md
Вот этими командами восстанавливается убитая в ходе прошивки имеюшка. Тут как повезет либо AT^CIMEI , либо AT^NVWREX . Первая команда, как я понял, не всегда доступна, для успешного использования в второй надо предварительно воспользоваться утилитой imei_converter и вместо нулей записать то что надо. Команда AT^INFORBU нужна имхо для применения долгосрочной записи в NVRAM.
AT^CIMEI="###############" AT^NVWREX=0,0,16,08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 AT^INFORBU AT^RESET
Код imei_converter.c приведен ниже:
#include #include int main(int argc, const char *argv[]) < int i; const size_t imei_length = 15; if (argc == 2 && strlen(argv[1]) == imei_length) < for (i = 0; i imei_length; i++) < printf("0%i ", argv[1][i] - '0'); > printf("00"); return 0; > else < printf("Usage: imei_converter imei\n"); return -1; > >
^RSSI:26 ^HCSQ:"LTE",61,51,146,22 ^RSSI:24 ^HCSQ:"LTE",56,51,151,22 +CREG: 1,"#####","#########"
Последнее событие — событие IMSI Attach.
- Самая полезная команда — AT^LOCINFO? , она выдает сразу MCC, MCN, LAC, CID. C этими данными можно сразу смело идти на https://xinit.ru/bs/ и получать данные базовой станции.
AT^LOCINFO? ^LOCINFO:25001,0x#####,0xA,0x####### 0x#####h == #####d 0x#######h == #######d curl --request GET 'https://xinit.ru/api/bs/250/01/#####/##########' \ -H 'referer: https://xinit.ru/bs/' \ -H 'accept-language: en-US,en;q=0.9' ,"yandex":,"google":null,"mylnikov":,"opencellid":null,"cell2gps":null> curl 'https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/reverseGeocode?outSR=4326&returnIntersection=true&location=30.00%2C60.00&f=json'
- Но под виндой сидеть было грустно. После перепрошивки на маке/линуксе можно сделать telnet 192.168.8.1 и засылать AT-команды в /dev/appvcom1 либо просто слушать cat < /dev/appvcom1
Первый способ — если не нужен интерактив
echo -e "AT^LOCINFO?\r" > /dev/appvcom1 echo -e "at^reset\r" > /dev/appvcom1
Второй способ — двухсторонний обмен с модемом, он не очень удобен, т.к. обычно происходит много событий.
telnet 192.168.8.1 busybox sh cat < /dev/appvcom1 & cat | busybox tr "\n" "\r" >/dev/appvcom1
Наиболее удобная для меня система — слушать события в отдельном терминале, а в другом кидать команды:
telnet 192.168.8.1 busybox sh cat < /dev/appvcom1 telnet 192.168.8.1 busybox sh cat | busybox tr "\n" "\r" >/dev/appvcom1
RSRP – средний уровень сигнала принимаемого с базовой станции оператора. Измеряется по логарифмической шкале в дБм (dBm) и отображается в виде отрицательных значений. Чем значение ближе к нулю, тем выше уровень принимаемого сигнала. Например, значение сигнала RSRP равное -65 dBm, намного лучше, чем значение -97 dBm.
SINR — отношение уровня полезного сигнала к уровню шума (соотношение сигнал/шум). Измеряется в дБ (dB). Чем выше данное значение, тем лучше качество сигнала. При значениях SINR ниже 0 скорость подключения будет очень низкой, т.к. это означает, что в принимаемом сигнале шума больше, чем полезной части.
Считается, что параметр сигнал\шум (SINR) в ряде случаев может быть важнее, чем уровень сигнала. При SINR в интервале 15-20 (dB) модем выдаст все, на что способна данная БС, даже при посредственном, около -70. -80 dBm, уровне RSRP, если сама БС окажется не перегружена в момент тестирования.
Показатели качества принимаемого сигнала
Значения параметров | RSSI | SINR (Ec/Io) |
---|---|---|
Отличные | -30. -50 dBm | 30 dB и выше |
Хорошие | -50. -70 dBm | от 20 dB до 30 dB |
Удовлетворительные | -70. -85 dBm | от 10 dB до 20 dB |
Плохие | -85. -110 dBm | менее 10 dB |
Основная часть (выборочная копипаста)
1. Предварительная подготовка
Есть две разновидности прошивок: Stick и HiLink . С прошивкой Stick модем будет видеться AT-модемом, для подключения к интернету нужно «дозваниваться». С HiLink-прошивкой модем представляется сетевой картой Ethernet, и не требует настроек в ОС.
По умолчанию, модем находится в режиме HiLink , такой типа роутер, с красивым веб-интерфейсом.
$ lsusb | grep Huawei Bus 001 Device 010: ID 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcard # Здесь 12d1 это идентификатор производителя а 1506 это режим сетевой карты. # Если не 1506, то надо переключить. sudo minicom -D /dev/ttyUSB0 AT^NVWREX=50502,0,128,8F 29 FF 8E A8 CA 34 89 78 73 18 BA 9E F5 9C 64 0B A4 DB 81 DC 03 45 6E 72 DA EC 6A 0C 7C 90 65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8B 8C F4 B5 AF 0C F2 2C FE E0 F4 46 9C CF 47 95 36 71 1F 1C BF 05 7F 84 AB A9 F2 92 89 33 3C 12 01 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 AT^DATALOCK="00000000" AT^CIMEI="#############"
2. Balong Flash / Прошивка под mac, linux, windows
Для прошивки под Linux используется утилита balong_flash.
- https://github.com/forth32/balongflash (Программа для прошивки модемов фирмы Huawei на чипсете Balong v7)
- https://github.com/forth32/balong-fbtools (Утилиты для работы с flash модемов на платформе Balong)
- https://github.com/forth32/balong-usbdload (Утилита для аварийной USB-загрузки модемов на чипсете Balong V7)
- https://github.com/forth32/balong-nvtool (Утилита для обработки образов NVRAM устройств на чипсете Hisilicon Balong)
В отличие от Linux, нa Macintosh адрес, скорее всего, будет не /dev/ttyUSB0 , а /dev/tty.HUAWEIMobile-Diag .
Достоверно узнать адрес устройства можно с помощью команды ls /dev | grep HUA .
$ ./balong_flash -h Утилита предназначена для прошивки модемов на чипсете Balong V7 ./balong_flash [ключи] Допустимы следующие ключи: -p - последовательный порт для общения с загрузчиком (по умолчанию /dev/ttyUSB0) -n - режим мультифайловой прошивки из указанного каталога -g# - установка режима цифровой подписи (-gl - описание параметров) -m - вывести карту файла прошивки и завершить работу -e - разобрать файл прошивки на разделы без заголовков -s - разобрать файл прошивки на разделы с заголовками -k - не перезагружать модем по окончании прошивки -r - принудительно перезагрузить модем без прошивки разделов -f - прошить даже при наличии ошибок CRC в исходном файле
3. Pupdatewiz Flash / Прошивка под windows
Распаковать архив, поместить нужную прошивку (.exe или .bin) в папку с командным файлом go.cmd и запустить его.
4. Полезные и интересные АТ-команды и настройка конфигурации модема
В модеме имеется хранилище различной конфигурационной информации — NVRAM. Оно организовано в виде набора записей переменной длины. Каждая запись имеет номер — от 0 до 65535, но не все номера записей физически присутствуют в модеме. Чтобы узнать длину конкретной записи, используется команда:
— номер записи. В ответ модем выдает ее длину:
Посмотреть содержимое конкретной записи можно командой:
— смещение от начала записи до интересующего нас фрагмента (0 — с начала) — длина выводимого фрагмента, должна быть не больше полной длины записи минус смещение.
at^nvrdex=8268,0,12 ^NVRD: 8268,0,12,01 00 00 00 01 00 00 00 0A 00 00 00
Поиск базовых станций сотовой связи
Данный модем обладает уникальным свойством — он умеет делать поиск всех окружающих базовых станций (БС). Причем не только БС оператора вставленной в него симкарты, а вообще все БС всех операторов, сигнал от которых достигает антенны модема. Для каждой найденной БС выводится ее CID и уровень принимаемого от нее сигнала. Это позволяет выбрать оператора с наивысшим уровнем сигнала, а также выбрать конкретную БС для наведения на нее внешней антенны. Единственный недостаток данного модема — он умеет искать только БС 2G и 3G. LTE-соты искать он не умееет.
Если в округе имеется сигнал LTE, то следует перевести модем в режим 2G3G командой AT^SYSCFGEX=»0201″,3FFFFFFF,1,2,800C5,, или в настройках веб-интерфейса. Также обратите внимание, что эту команду можно ввдить только через порт управления (PCUI). Если ее ввести через порт, предназначенный для установки РРР-соединения (modem), то команда будет выдавать пустой ответ (просто ОК и все). Формат команды: AT^NETSCAN=num,level,mode num — число находимых БС, от 1 до 20. Если будет найдено больше num БС, то станции с самым слабым сигналом будут исключены из списка level — минимальный уровень сигнала БС, включаемых в список. Задается в дБ, от -110 (самый низкий уровень) до -47 (самый высокий уровень). Станции с уровнем сигнала меньше level в список включаться не будут. mode — тип БС. 0 -поиск 2G-станций, 1 — поиск 3G-станций.
at^netscan=20,-108,1 ^NETSCAN: 10638. 1e7e,250,02,0,-78,8b77,400000 ^NETSCAN: 10687. 1e7e,250,02,0,-79,d5c8,400000 ^NETSCAN: 10662. 1e7e,250,02,0,-82,8ade,400000 ^NETSCAN: 10587. 4cf8,250,20,0,-105,d4fc,400000 ^NETSCAN: 10563. 4cf8,250,20,0,-106,d4f9,400000
В этом примере заказывается поиск 3G БС с уровнем сигнала не ниже -108 дБ. Результат выдается в виде списка, отсортированного по уровню сигнала. Самая верхняя БС — самая мощная, нижняя — самая слабая. Формат элемента списка:
^NETSCAN: 10638. 1e7e,250,02,0,-78,8b77,400000 1e7e - LAC станции 250 - MCC (Россия) 02 - MNC (В данном случае - МТС). 0 - хотел бы я сам знать что это, из дизассемблированного кода я так и не понял смысла этого поля. -78 - уровень сигнала данной БС 8b77 - CID станции 400000 - диапазнон, в котором принимается сигнал БС (как в команде ^syscfgex).
По результатам данного примера можно сделать вывод, что самый сильный сигнал в данной местности — у МТС, а антенну надо направлять на БС с CID=8b77 LAC=1e7e. Координату БС можно посмотреть на сайте xinit.ru.
- AT+COPS — информация о текущем операторе Recieve: +COPS: (1,»MTS-RUS»,»MTS»,»25001″,0),(2,»MTS-RUS»,»MTS»,»25001″,2),,(0,1,2,3,4),(0,1,2)
- AT^PLMN? — Query the connected network code (MNC/MCC).
- AT^LOCINFO? — Query network location info.
- AT^CREG?
Minicom — подключение к USB модему Huawei E1550 по /dev/ttyUSB*
Для коммуникации с USB 3G модемом есть несколько консольных и графических утилит:
- minicom — мне приглянулась больше остальных
- picocom
- cutecom (графическая программа для работы с терминалами).
Установка minicom
sudo apt install minicom -y
Примечание
Рекомендуют также устанавливать следующие пакеты:
sudo apt install libusb++-0.1-4v5 libusb++-dev
Подключение к модему
Примечание
Обычно USB модемы предоставляют 3 ttyUSB* интерфейса:
- /dev/ttyUSB0 — интернет/данные
- /dev/ttyUSB1
- /dev/ttyUSB2 — командный интерфейс/устройство
На модеме Huawei E1550 ответ на USSD запросы всегда приходит на интерфейс /dev/ttyUSB2! Даже отправляя USSD запросы в /dev/ttyUSB0 все равно слушайте 2 порт.
minicom
sudo minicom -D /dev/ttyUSB2 -b 9600
Подключение в режиме настройки:
sudo minicom -D /dev/ttyUSB2 -s
- Переходим в «Настройка последовательного порта«, далее «А — Последовательный порт» и указываем /dev/ttyUSB0 или /dev/ttyUSB2.. Enter.
- Выбираем «Сохранить настройки как dfl«.
- Выход.
И мы подключимся к модему с выбранными настройками.
Примечание
Для выхода из терминала minicom (отключения от устройства) используются комбинации клавиш Ctrl + A — X (без сохранения) или Ctrl + A — Q (с сохранением).
Выполнение набора команд и вывод в файл:
sudo minicom -D /dev/ttyUSB2 --capturefile=/path/minicom.log --script=/path/minicom-script.txt
Содержимое файла minicom-script.txt (не знаю как завершить процесс после выполнения AT команды):
picocom
Подключаемся к устройству /dev/ttyUSB2:
Подключаемся к устройству /dev/ttyUSB2 с отображением команд в терминал:
sudo picocom --echo -b 38400 /dev/ttyUSB2
Конфигурация
Использование /dev/tty* без sudo
Для использования /dev/tty* устройств без прав супер-юзера (sudo) необходимо добавить пользователя в группу dialout:
sudo apt remove modemmanager sudo usermod -a -G dialout $USER
Внимание!
Если не отображается результат выполняемых AT команд и USSD запросов — проверьте, не перенаправляется ли вывод на другое ttyUSB* устройство или в файл. Попробуйте сменить устройство с ttyUSB0 на ttyUSB2.
Выполнение AT команд и USSD запросов
Показать информацию о модеме:
Manufacturer: huawei Model: E1550 Revision: 11.608.13.02.00 IMEI: 353443043787139 +GCAP: +CGSM,+FCLASS,+DS
AT команды для получения оператора связи (carrier):
Выполнение USSD запроса для просмотра баланса:
#tty, #terminal, #minicom, #modem, #at, #ussd, #serial