====== 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: {{:wiki:openwrt:fibocom-860-connect.png?899|}} В этом месте модем **уже должен начать работать** и поднимать соединение с сетью ОпСоСа: {{:wiki:openwrt:fibocom-connected.png |}} На снимке видны уровни сигнала и понятно, что модем подключен к БС, включил три диапазона работы 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 ===== [[https://4pda.to/forum/index.php?showtopic=1066668&view=findpost&p=121801248|4PDA]] # Посмотреть версию ПО. Показывает версию прошивки и зашитого вэндора: 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 ====== 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