Содержание
Fibocom 850/860
Настройка поддержки модема Fibocom 850/860 в OpenWRT
# # Настройка поддержки модемов Fibocom L850/L860 в OpenWRT # минимальный конфиг для работы # добавляем нужный репозиторий, обязательно! wget -O /tmp/add.sh http://openwrt.132lan.ru/packages/21.02/packages/add.sh sh /tmp/add.sh opkg update opkg install luci luci-app-modeminfo \ modeminfo modeminfo-serial-xmm \ modeminfo-serial-fibocom opkg install luci-proto-xmm xmm-modem # AT-команды из веб-интерфейса (по желанию, рекомендуется установить) opkg install atinout luci-app-atinout
Далее перезагружаем роутер и создаем обычным способом подключение в OpenWRT, указывая APN провайдера , не забывая добавить интерфейс в fw с wan и имея в виду, что модем использует протокол Intel XMM:
В этом месте модем уже должен начать работать и поднимать соединение с сетью ОпСоСа:
На снимке видны уровни сигнала и понятно, что модем подключен к БС, включил три диапазона работы 3, 40 и 1 общей шириной 40 MHz
Второй способ подключения модема Fibocom 850/860 в OpenWRT
В этом случае потребуется установить пакет modemmanager и подключать через этот протокол.
# # Обновляем список пакетов openwrt # opkg update # установка протокола modemmanager opkg install modemmanager luci-proto-modemmanager
Далее переводим модем в режим MBIM командой AT+GTUSBMODE=7, пере загружаем роутер и создаем соединение с использованием протокола modemmanager
Сборник полезных АТ команд L860/850-GL
# Посмотреть версию ПО. Показывает версию прошивки и зашитого вэндора: AT+GTPKGVER? Посмотреть IMEI AT+CGSN? Статус SIM карты at+cpin? Показывает наличие сим-карт в лотках AT+GTSIMINIT? Состояние готовности слотов SIM at@uicc:get_card_state() Активный слот SIM: 0-первый (prymary), 1-второй (secondary) AT+CSUS? Возможности SIM at@uicc:get_sim_capabilities() Тест SIM карт: primary и secondary at@uicc:testanysimprimary() at@uicc:testanysimsecondary() Проверка температуры AT+MTSM=1
Переключение режимов работы модема.
В современных прошивках всего несколько активных режимов:
0,10 - NCM,
7 - MBIM (860 только по линии PCI),
11 - NCM (но с другими pid/vid - Intel).
# NCM работает в OpenWRT at@nvm:cal_usbmode.num=0 # NCM at@nvm:cal_usbmode.num=10 # 7 - MBIM - Для работы в Windows at@nvm:cal_usbmode.num=10 # Сохранить выбранный режим (обязательно после смены): at@store_nvm(cal_usbmode) # Посмотреть текущий режим: at@nvm:cal_usbmode.num? # Перезагрузка модема AT+CFUN=15
Включение диапазонов. Агрегация
# Посмотреть включенные бэнды at+xact? # Включить только определенный бэнд. Например b7 - будет 107, b20 - 120 at+xact=2,,,10x # Включить несколько бэндов. Например b3, b7, b20 и b40 at+xact=2,,,103,107,120,140 Разблокировать все бэнды LTE at+xact=2,,,0 Посмотреть активную агрегацию at+xlec? Посмотреть метрики. Вводятся две команды: первая разрешает вторую at@emac:enable_metric_config( ) at@emac:ul_dl_modulation_metric_status( ) Узнать, какой бэнд участвует в UL. При рабочей ULCA их будет две. at@errc:pcell_scell_ul_band_bw_info( ) Узнать, на каких несущих работает режим MIMO at@errc:pcell_scell_mimoLayer_status( ) Метрики антенн at@errc:pcell_scell_measurement_info( ) Вывод доступных комбинаций агрегации, согласно выбранным бэндам *При включенной ULCA будут присутствовать комбинации типа: 7CC+BWCS-7, где главное - CC, означающие: пара смежных несущих в B7, а для аплинка - эти две несущих в B7 одновременно at@sic:ca_info(0) Информация по антенным портам (0) - краткая, (1) - развернутая at@xrf:get_antenna_port(1) Запрет любой агрегации at@sic:ca_disable(0) Восстановление возможности агрегации at@sic:ca_restore(0) По-идее, этой командой можно управлять самой комбинацией- в каком порядке будут идти несущие. Однако, эта команда только для второстепенных несущих. at@xrs:ca_config()?? ca_config(ul_ca_enable,scell_band_1,scell_earfcn_1,scell_band_2,scell_earfcn_2,scell_band_3,scell_earfcn_3,scell_band_4,scell_earfcn_4,scell_mimo) [%d %u %u %u %u ... %u~0 %u~0 %u~0 %u~0 %qu~0] AL=PRODUCTION/test/sec Configure carrier aggregation for LTE. Вывод активных служб модема. at@sysmon:info_print()?? info_print() [] AL=PRODUCTION/test/sec Print event collector table command С помощью данной команды можно включить или выключить службы. Например, Watchdog. По-идее, на Кинетике он нахер не нужен, т.к. оригинальный Кинетик сам перезагрузит модем. Но это можно сделать и средствами самого модема. at@sysmon:entity_enable()?? entity_enable($entity_name , $enable) [%s[16] %d] AL=PRODUCTION/test/sec Enable or disable a Sysmon entity. Using a star '*' as entity name will proceed all of them. Examples: at@sysmon:entity_enable("Pow NK",1) -> will enable "Pow NK" entity. at@sysmon:entity_enable("*",0) -> will disable all entities. Данная команда выставляет значения для каждой из служб at@sysmon:set_supervisors_durations()?? set_supervisors_durations($entity_name , $duration_for_supervisor) [%s[16] %d] AL=PRODUCTION/test/sec The command will set the supervisors durations use: at@sysmon:set_supervisors_durations("entity_name", Duration) entity_name valid_range(in ticks) IUI 1-7800 Bottom Half 1-26000 Watchdog 1-780000000 Timer_CB_LPRT 1-52000 Timer_CB_HPRT 1-520 Покажет протокол, по которому подключен модем: USB 1.0/2.0/3.0 at@usbmwtestfw:usb_get_enum_speed() Есть извращенцы, которые смотрят iptv мультикаст, используя lte трафик. Есть для них небольшой бонус. Вроде как, данная команда включает 256QAM для multicast трафика: at@nvm:dyn_cps.instance[0].lte_caps.dl_256qam_mbms_support=1 at@nvm:store_nvm(dyn_cps) Переключение симок: *Работает не на всех прошивках! На новых версиях ПО, выше 18601...16.11(HP) и 18601...16.12(Lenovo) переключение не арбайтен. Исключение составляет 18601...16.48(HP) второй слот at@nvm:dyn_cps_dssa_prsrv.msim_config.ps_pref_slot=1 at@nvm:store_nvm(dyn_cps_dssa_prsrv) первый слот at@nvm:dyn_cps_dssa_prsrv.msim_config.ps_pref_slot=0 at@nvm:store_nvm(dyn_cps_dssa_prsrv) Узнать PCI ERRFCH и уровень сигнала на всех несущих, участвующих в агрегации которые "слышит" модем: AT+RSRP? (PCI, EARFCN, уровень сигнала,…) Фиксация несущей частоты at@sic:freq_lock(0,3,band,1,EARFCN,PCI) где 0 - константа; 3- rat (LTE); Band - указывается либо 7, либо 107; 1 -разрешить / 0 запретить фиксацию; EARFCN и PCI указываются в десятичной системе счисления. После требуется перезапуск. Для Кинетика перезагрузка не нужна, достаточно передернуть соединение at+cfun=4 at+cfun=15 Модем перезагрузится и если все сделали правильно, подключится к оператору на той частоте, которую указали. Чтобы включить агрегацию (если она самостоятельно не подтянулась), нужно просто ввести команду выключения фиксации, больше ничего, перезагружать уже не надо. at@sic:freq_lock(0,3,band,0,EARFCN,PCI) *Не работает на KeenOS 3.9.x-4.0.x. Как починят- уберу. Похоже, не починят и нужно выложить костыль. Вводим команду для фиксации несущей и меняем состояние любого неиспользуемого бэнда на противоположное, т.е. если был включён, то выключаем и наоборот. Соединение перезапустится на выбранной несущей, бонусом подтянется агрегация. Не могу не отметить, что если симка установлена во втором слоте, то команда работает без вкл/выкл бэндов. У некоторых, даже без дополнительной команды at+cfun=4, просто через некоторое время. Так же сама подтягивается агрегация. Нужно, наверное, выложить саму команду, как она есть: at@sic:freq_lock()?? freq_lock($sim_id $rat $band $inter_frequency_lock_enable $frequency $psc_pci) [%qu %qu %qu %qu %lu %hu] AL=PRODUCTION/test/sec Command to set the frequency lock configuration, which shall be used in UE to register to a PLMN particular to the frequency info provided by the user Узнать версию ID модема (hwid) at@hwid:ver_hwid_get_id(6) Для применения многих команд нужна перезагрузка модема at+cfun=15
OpenWRT разное
russian language
Установка простая, в консоли выполняем две команды и затем включаем в System→System появившийся русский язык
# Великий и могучий в web-морде openwrt-luci # opkg update opkg install luci-i18n-base-ru
Кошев
wget -O /tmp/add.sh http://openwrt.132lan.ru/packages/21.02/packages/add.sh & sh /tmp/add.sh
wget -O /tmp/add.sh http://openwrt.132lan.ru/packages/21.02/packages/add.sh sh /tmp/add.sh opkg install luci-proto-xmm cd /tmp wget http://openwrt.132lan.ru/packages/21.02/packages/add.sh -O - | sh opkg install luci-app-modeminfo modeminfo-serial-fibocom atinout luci-app-modeminfo modeminfo modeminfo-serial-xmm atinout luci-app-atinout
# Для всех модемов любезно оставлен комментарий. # https://github.com/koshev-msk/modemfeed/blob/master/luci/applications/luci-app-modeminfo/README.md
openvpn
opkg update
opkg install openvpn luci-app-openvpn
Чтобы переподнимался интерфейс при падении, можно наколхозить скрипт
#!/bin/sh IP=8.8.8.8 # Address to ping PF=5 # Number of consecutive ping failures before restarting the service COUNTERFILE=/tmp/counter.txt sleep 180 #Initial delay while true; do if ! ping -c 1 -W 1 $IP >/dev/null; then if [ -f "$COUNTERFILE" ]; then counter=$(cat $COUNTERFILE) else counter="0" fi if [ "$counter" -ge "$PF" ]; then /etc/init.d/openvpn restart echo "0" > "$COUNTERFILE" else let "counter+=1" echo "$counter" > "$COUNTERFILE" fi else echo "0" > "$COUNTERFILE" fi sleep 5 done
usbutils
Для команд lsusb и resetusb можно установить usbutils
opkg update
opkg install usbutils
DNS
Иногда сразу после установки openwrt не работает DNS. Незамедлительно прописываем google.dns
### # google.dns echo -e "nameserver 8.8.8.8\nnameserver 8.8.4.4" > /etc/resolv.conf
openwrt watchdog
# # openwrt watchdog # opkg update opkg install watchcat luci-app-watchcat luci-i18n-watchcat
openwrt set TTL
# # openwrt set TTL # # Set TTL # Добавляем правило с нужны интерфейсом в fw, например в файл /etc/nftables.d/12-mangle-ttl-65.nft cat /etc/nftables.d/12-mangle-ttl-65.nft chain mangle_postrouting_ttl65 { type filter hook postrouting priority 300; policy accept; oifname { eth1, usb0 } ip ttl 64 counter ip ttl set 65; oifname { eth1, usb0 } ip ttl 63 counter ip ttl set 65; oifname { eth1, usb0 } ip ttl 128 counter ip ttl set 65; oifname { eth1, usb0 } ip ttl 127 counter ip ttl set 65; } # Применяем правило service firewall restart # check firewall # тестируем изменения для интерфейсов в fw nft list ruleset | grep 65 oifname { "usb0", "eth1" } ip ttl 64 counter packets 2870 bytes 604623 ip ttl set 65 oifname { "usb0", "eth1" } ip ttl 63 counter packets 646 bytes 163896 ip ttl set 65
ssh генерация public и private keys
# rsa dropbearkey -f ~/.ssh/id_dropbear -t rsa -s 2048 # rsa dropbearkey -f ~/.ssh/id_dropbear -t ed25519
Dropbear смотрит в файл ~/.ssh/id_dropbear при подключении в ssh
Разное
# AT command L860 # Версия прошивки AT+GTPKGVER? +GTPKGVER: "18600.5001.00.35.00.34_5001.02.001.006" # Состояние. Нужно ставить 1 AT+CFUN? +CFUN: 1,0 AT +CFUN =1 opkg install luci-app-modeminfo modeminfo-serial-fibocom luci-app-modeminfo modeminfo modeminfo-serial-xmm luci-app-atinout atinout luci-i18n-atinout-ru usbutils usb-modeswitch kmod-usb-net-cdc-mbim kmod-usb2 kmod-usb3 luci-app-mmconfig luci-i18n-mmconfig-ru swconfig modeminfo modemmanager luci-app-modeminfo luci-i18n-modeminfo-ru luci-proto-modemmanager # Список диапазонов, которые "умеет" модем. AT+XACT=? +PBREADY AT+XACT=? +XACT: (0-6),(0-2),0,1,2,4,5,8,101,102,103,104,105,107,108,112,113,114,117,118,119,120,125,126,128,129,130,132,138,139,140,141,142,146,166 OK
Версия OpenWRT 25.12 и apk
apk add luci-proto-modemmanager
Пакеты для работы с модемами для различных версий openwrt собраны Кошевым и лежат https://openwrt.132lan.ru/packages/
Для корректного отображения уровня сигнала модема Fibocom L850-GL в modeminfo на OpenWrt необходимо установить специфический пакет поддержки последовательного порта modeminfo-serial-fibocom. Также должны быть установлены базовые пакеты modeminfo, xmm-modem и modeminfo-serial-xmm для платформы Intel XMM, которую использует данный модем. Для работы модема также лучше установить modemmanager. Ниже собраны команды для установки этих пакетов. Также рекомендуется установить пакеты для отправки AT команд atinout и luci-app-atinout
cd /tmp # # скачиваем пакеты для отображения уровней сигналов модемов в вебморде OpenWRT # wget https://openwrt.132lan.ru/packages/25.12/packages/mipsel_24kc/modemfeed/modeminfo-0.4.8-r2.apk wget https://openwrt.132lan.ru/packages/25.12/packages/mipsel_24kc/modemfeed/modeminfo-serial-fibocom-0.4.8-r2.apk wget https://openwrt.132lan.ru/packages/25.12/packages/mipsel_24kc/modemfeed/luci-app-modeminfo-0.4.8-r3.apk wget https://openwrt.132lan.ru/packages/25.12/packages/mipsel_24kc/modemfeed/modemmanager-1.24.0-r16.apk wget https://openwrt.132lan.ru/packages/25.12/packages/mipsel_24kc/modemfeed/xmm-modem-0.1.7-r1.apk wget https://openwrt.132lan.ru/packages/25.12/packages/mipsel_24kc/modemfeed/modeminfo-serial-xmm-0.4.8-r2.apk # # устанавливаем пакеты # apk add --allow-untrusted /tmp/modeminfo-0.4.8-r2.apk apk add --allow-untrusted /tmp/modeminfo-serial-fibocom-0.4.8-r2.apk apk add --allow-untrusted /tmp/luci-app-modeminfo-0.4.8-r3.apk apk add --allow-untrusted /tmp/modemmanager-1.24.0-r16.apk apk add --allow-untrusted /tmp/xmm-modem-0.1.7-r1.apk apk add --allow-untrusted /tmp/modeminfo-serial-xmm-0.4.8-r2.apk # ATI комманды cd /tmp wget https://openwrt.132lan.ru/packages/25.12/packages/mipsel_24kc/modemfeed/luci-app-atinout-0.1.1-r5.apk wget https://openwrt.132lan.ru/packages/25.12/packages/mipsel_24kc/modemfeed/atinout-0.9.1.apk apk add --allow-untrusted /tmp/atinout-0.9.1.apk apk add --allow-untrusted /tmp/luci-app-atinout-0.1.1-r5.apk
Работа с модемом 850/860 25.12 apk
# # необходимый софт # apk add comgt kmod-usb-acm kmod-usb-net-cdc-ncm \ kmod-usb-net-rndis kmod-usb-serial-option # # скачиваем luci-proto-xmm xmm-modem в tmp # apk add --allow-untrusted --repositories-file /dev/null /tmp/*.apk
Прошивка модема в Linux
Устанавливаем софт для шитья
Нужно установить Intel® Platform Flash Tool Lite отсюда
# apt install gdebi fping # Для Debian 12 еще это потребовалось # apt install libusb-0.1-4 gdebi platform-flash-tool-lite_5.8.9.0_amd64.deb
Прошиваем
cd /opt/intel/platformflashtoollite/bin ./downloadTool -v 4 -c 1 --library=../lib/libDownloadTool.so \ /home/diman/flash_tool_libs/850/18500.5001.00.05.27.30_5001.05_Secureboot.fls \ /home/diman/flash_tool_libs/850/Generic_cust.001.013_signed.fls
