Для подключения микросервера к сети Интернет по протоколу IPv6 можно воспользоваться особенностями подключения сотового провайдера MTS, выдающего клиентскому устройству (модему) динамические глобально доступные IPv6-адреса.
Клиентское устройство - модем Quectel EC25, в форме Mini-PCIe, подключенное через USB-mini-PCIe адаптер Kroks-Cse PCI. При подключении к микросерверу, создаёт символьное устройство /dev/cdc-wdm0 и 4 устройства /dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2, /dev/ttyUSB3.
Выкопировка из вывода команды dmesg:
[ 25.713111] usbcore: registered new interface driver usbserial_generic
[ 25.713136] usbserial: USB Serial support registered for generic
[ 26.165617] usbcore: registered new interface driver cdc_wdm
[ 26.175326] usbcore: registered new interface driver cdc_ether
[ 26.184329] usbcore: registered new interface driver qmi_wwan
[ 26.189100] usbcore: registered new interface driver cdc_ncm
[ 26.225016] cdc_mbim 1-2:1.4: cdc-wdm0: USB WDM device
[ 26.225389] cdc_mbim 1-2:1.4 wwan0: register 'cdc_mbim' at usb-0000:00:12.2-2, CDC MBIM, f1:f2:f3:f4:f5:f6
[ 26.225540] usbcore: registered new interface driver cdc_mbim
[ 26.282997] usbcore: registered new interface driver option
[ 26.283023] usbserial: USB Serial support registered for GSM modem (1-port)
[ 26.283123] option 1-2:1.0: GSM modem (1-port) converter detected
[ 26.284695] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB0
[ 26.284793] option 1-2:1.1: GSM modem (1-port) converter detected
[ 26.284924] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB1
[ 26.284987] option 1-2:1.2: GSM modem (1-port) converter detected
[ 26.285092] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB2
[ 26.285151] option 1-2:1.3: GSM modem (1-port) converter detected
[ 26.285236] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB3
Драйвер (модуль ядра) cdc_mbim поддерживает USB устройства соответствующие спецификации “Universal
Serial Bus Communications Class Subclass Specification for Mobile
Broadband Interface Model”. Модем видимо был ранее сконфигурирован в режиме MBIM.
Выкопировка из вывода команды lsusb:
Bus 001 Device 002: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC25 LTE modem
Также создаётся сетевой интерфейс с именем wwan0, не сконфигурированный.
Выкопировка из вывода команды ip addr:
3: wwan0: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
Как пишется в ряде руководств - дальнейшее конфигурирование выполняется с помощью программ пользовательского окружения mbimcli, mbim-network.
Для их установки в систему микросервера, а это в моменте - Ubuntu 22.04 LTS на ядре linux 5.15.0-88-generic, выполняется установка следующего пакета - libmbim-utils.
apt-get install libmbim-utils
Конфигурирование настроек провайдера
Для команды mbim-network нужно создать и заполнить файл /etc/mbim-network.conf. В данном случае, для сотового провайдера MTS.
root@microserver:/# cat /etc/mbim-network.conf
APN=internet.mts.ru
APN_USER=mts
APN_PASS=mts
APN_AUTH=mschapv2
PROXY=yes
PROXY - чем-то важен, без него модем странно реагирует на команды.
Проверка первого подключения
Для начала, выполнив команду mbimcli --help-all, показывающую все доступные опции, можно растеряться, т.к. непонятно, в какой последовательности их надо выполнять. Эту головную боль снимает скрипт-команда mbim-network.
Для начала посмотрим что выдаёт команда --query-device-caps
--query-device-caps. Опция -p важна! (--device-open-proxy).
root@microserver:/home/macibuki# mbimcli --device /dev/cdc-wdm0 --device-open-proxy --query-device-caps
или
root@microserver:/# mbimcli -d /dev/cdc-wdm0 -p --query-device-caps
[/dev/cdc-wdm0] Device capabilities retrieved:
Device type: 'remote'
Cellular class: 'gsm'
Voice class: 'no-voice'
SIM class: 'removable'
Data class: 'gprs, edge, umts, hsdpa, hsupa, lte'
SMS caps: 'pdu-receive, pdu-send'
Ctrl caps: 'reg-manual'
Max sessions: '8'
Custom data class: 'unknown'
Device ID: '0000'
Firmware info: 'EC25ECGAR06A09M1G'
Hardware info: 'QUECTEL Mobile Broadband Modul'
Device ID - содержит чувствительную информацию и не приводится.
Что выдаёт команда --query-subscriber-ready-status.
root@microserver:/# mbimcli -d /dev/cdc-wdm0 -p --query-subscriber-ready-status
[/dev/cdc-wdm0] Subscriber ready status retrieved:
Ready state: 'initialized'
Subscriber ID: '000000000000000'
SIM ICCID: '00000000000000000000'
Ready info: 'none'
Telephone numbers: (1) '+79100000000'
Вывод команды содержит чувствительную информацию по SIM-карте, абоненту, номеру телефона.
Важная проверка состояния радио, перед запуском mbim-network - команда --query-radio-state
root@microserver:/# mbimcli -d /dev/cdc-wdm0 -p --query-radio-state
[/dev/cdc-wdm0] Radio state retrieved:
Hardware radio state: 'on'
Software radio state: 'off'
Так и есть, обычно "Software radio state: Off" и тогда надо включить радио командой --set-radio-state=on
root@microserver:/# mbimcli -d /dev/cdc-wdm0 -p --set-radio-state=on
[/dev/cdc-wdm0] Radio state retrieved:
Hardware radio state: 'on'
Software radio state: 'on'
Проверка состояния PIN-кода:
root@microserver:/# mbimcli -d /dev/cdc-wdm0 -p --query-pin-state
[/dev/cdc-wdm0] PIN info:
PIN state: 'unlocked'
Если PIN-код в состоянии 'locked', то его можно ввести командой --enter-pin, отключить ввод PIN-кода командой --disable-pin (придётся ввести один раз).
Также можно посмотреть выводы команды --query-registration-state (состояние регистрации), --query-signal-state (состояние сигнала).
root@microserver:/# mbimcli -d /dev/cdc-wdm0 -p --query-registration-state
[/dev/cdc-wdm0] Registration status:
Network error: 'none'
Register state: 'home'
Register mode: 'automatic'
Available data classes: 'lte'
Current cellular class: 'gsm'
Provider ID: '25001'
Provider name: 'MTS RUS'
Roaming text: 'unknown'
Registration flags: 'packet-service-automatic-attach'
root@microserver:/# mbimcli -d /dev/cdc-wdm0 -p --query-visible-providers
error: operation failed: Busy
root@microserver:/# mbimcli -d /dev/cdc-wdm0 -p --query-signal-state
[/dev/cdc-wdm0] Signal state:
RSSI [0-31,99]: '11'
Error rate [0-7,99]: '99'
Signal strength interval: '5'
RSSI threshold: '2'
Error rate threshold: 'unspecified'
root@microserver:/#
Можно посмотреть состояние соединения (приведёно рабочее состояние):
root@microserver:/# mbimcli -d /dev/cdc-wdm0 -p --query-connection-state
[/dev/cdc-wdm0] Connection status:
Session ID: '0'
Activation state: 'activated'
Voice call state: 'none'
IP type: 'ipv4v6'
Context type: 'internet'
Network error: 'none'
(не рабочее состояние):
[/dev/cdc-wdm0] Connection status:
Session ID: '0'
Activation state: 'deactivated'
Voice call state: 'none'
IP type: 'default'
Context type: 'none'
Network error: 'none'
Итак, пришло время запустить соединение командой mbim-network, если выводы команд ориентировочно похожи на примеры в этой статье.
mbim-network /dev/cdc-wdm0 start
...
Если устройство определилось в системе, если включено радио, то по идее должно работать.
Посмотрим, для начала рабочее состояние, каким оно должно быть:
root@microserver:/# mbim-network /dev/cdc-wdm0 status
Loading profile at /etc/mbim-network.conf...
APN: internet.mts.ru
APN auth protocol: mschapv2
APN user: mts
APN password: mts
mbim-proxy: yes
Getting status with 'mbimcli -d /dev/cdc-wdm0 --query-connection-state --device-open-proxy'...
Status: activated
Однако, если посмотреть ip addr, то можно продолжить смотреть на не настроенный интерфейс wwan0.
Присвоение IP-адресов сетевому интерфейсу wwan0
Важная особенность состоит в том, что даже получив работающее (activated) состояние на предыдущем этапе, надо получить у провайдера ip-адреса и настроить интерфейс wwan0 вручную или с помощью какого-либо скрипта.
Для соединений такого типа (mbim) не работает стандартный клиент dhcp - dhclient и ip-адреса получаются специфической командой --query-ip-configuration, которая выводит их просто в консоль, в текстовом виде, после чего их можно использовать для ручного конфигурирования командой ip.
root@microserver:/# mbimcli -d /dev/cdc-wdm0 -p --query-ip-configuration
[/dev/cdc-wdm0] IPv4 configuration available: 'address, gateway, dns, mtu'
IP [0]: '10.191.000.00/30'
Gateway: '10.191.000.01'
DNS [0]: '213.87.142.84'
DNS [1]: '213.87.142.85'
MTU: '1500'
[/dev/cdc-wdm0] IPv6 configuration available: 'address, gateway, dns, mtu'
IP [0]: '2a00:1fa0:000:0000:0000:0000:0000:0002/64'
Gateway: '2a00:1fa0:000:000:0000:000:0000:0001'
DNS [0]: '2a00:1fa0:3e00::1'
DNS [1]: '2a00:1fa0:7e00::1'
MTU: '1500'
Странно то, что при каждом запросе --query-ip-configuration возвращает новые адреса, особенно ipv6. Это не позволяет проверить текущую ip конфигурацию модема, что может привести и приводит к неработоспособности сети. Т.е. нельзя после установки соединения выполнять команду --query-ip-configuration, т.к. модем будет иметь одну настройку ip, а интерфейс wwan0 другую, отличающуюся, старую.
Присвоение IPv4-адреса
Обычно, скрипт делает очистку адресов на конфигурируемом интерфейсе, перед новым присвоением.
root@microserver:/# ip addr flush dev wwan0
Взяв в строке IP [0]: адрес с маской, выполним команду ip addr add ... и присвоим полученный ipv4-адрес интерфейсу wwan0.
root@microserver:/# ip addr add 10.191.000.02/30 dev wwan0 broadcast +
Присвоение IPv6-адреса
root@microserver:/# ip addr add 2a00:1fa0:000:0000:0000:0000:0000:0002/64 dev wwan0
Настройка маршрута по-умолчанию через шлюз (gateway), для сетевого интерфейса wwan0
Так как микросервер уже имеет маршрут по-умолчанию настроенный через сетевой интерфейс enp2s0, то надо удалить старый маршрут по-умолчанию (default) и добавить новый, но уже через сетевой интерфейс wwan0.
Вывод команды ip route до настройки нового маршрута:
root@microserver:/# ip route
default via 192.168.88.1 dev enp2s0
default via 192.168.88.1 dev enp2s0 proto dhcp src 192.168.88.3 metric 1024
192.168.88.0/24 dev enp2s0 proto kernel scope link src 192.168.88.3 metric 1024
192.168.88.1 dev enp2s0 proto dhcp scope link src 192.168.88.3 metric 1024
Удаление старого маршрута (можно удалить 2 раза):
root@microserver:/# ip route del default via 192.168.88.1 dev enp2s0
Добавление нового маршрута по-умолчанию:
root@microserver:/# ip route add default via 10.191.000.01 dev wwan0
root@microserver:/# ip route
default via 10.191.000.01 dev wwan0
10.191.000.02/30 dev wwan0 proto kernel scope link src 10.191.000.02
192.168.88.0/24 dev enp2s0 proto kernel scope link src 192.168.88.3 metric 1024
192.168.88.1 dev enp2s0 proto dhcp scope link src 192.168.88.3 metric 1024
Настройка разрешения доменных имён с помощью команды resolvectl
Кое-что забыли, а именно добавить к интерфейсу wwan0 адреса DNS-серверов провайдера или иных публично открытых DNS-серверов.
Делается это с помощью команды resolvectl, которая входит в systemd-resolved.
Первоначальный запуск resolvectl показывает, что определение имён привязано к интерфейсу enp2s0, а для wwan0 не настроено.
root@microserver:/# resolvectl status
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: foreign
DNS Domain: home
Link 2 (enp2s0)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.88.1
DNS Servers: 192.168.88.1
DNS Domain: home
Link 3 (wwan0)
Current Scopes: none
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Добавим адрес DNS-сервера провайдера к интерфейс wwan0:
root@microserver:/# resolvectl dns wwan0 213.87.142.84
Что изменилось?
root@microserver:/# resolvectl status wwan0
Link 3 (wwan0)
Current Scopes: DNS
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
DNS Servers: 213.87.142.84
Запросы на разрешение имён продолжают идти через интерфейс enp2s0, т.к. он тоже помечен как +DefaultRoute.
root@microserver:/# resolvectl query google.com
google.com: 2a00:1450:4010:c02::8a -- link: enp2s0
2a00:1450:4010:c02::8b -- link: enp2s0
2a00:1450:4010:c02::64 -- link: enp2s0
2a00:1450:4010:c02::66 -- link: enp2s0
74.125.205.139 -- link: enp2s0
74.125.205.113 -- link: enp2s0
74.125.205.101 -- link: enp2s0
74.125.205.100 -- link: enp2s0
74.125.205.138 -- link: enp2s0
74.125.205.102 -- link: enp2s0
-- Information acquired via protocol DNS in 26.2ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: network
Отключаем у интерфейса enp2s0 опцию default-route (относящуюся именно к запросам DNS по-умолчанию).
root@microserver:/# resolvectl default-route enp2s0 no
Что изменилось?
root@microserver:/# resolvectl query google.com
google.com: 2a00:1450:4010:c02::8b -- link: wwan0
2a00:1450:4010:c02::66 -- link: wwan0
2a00:1450:4010:c02::64 -- link: wwan0
2a00:1450:4010:c02::8a -- link: wwan0
108.177.14.139 -- link: wwan0
108.177.14.101 -- link: wwan0
108.177.14.102 -- link: wwan0
108.177.14.138 -- link: wwan0
108.177.14.113 -- link: wwan0
108.177.14.100 -- link: wwan0
-- Information acquired via protocol DNS in 173.8ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: network
Запросы на разрешение имён стали просачиватся через интерфейс wwan0.
Если повторно запросить разрешение имени google.com, то запрос возвратит ответ из dns-cache, об этом скажет строка "Data from: cache". Кэш отключается опцией --cache=no.
Кэш всех dns-записей очищается командой - resolvectl flush-caches.
Есть полезная команда revert, чтобы восстановить настройки интерфейса enp2s0 (встроенная сетевая карта ethernet), после всех внесённых изменений скрипта или пользователя.
root@microserver:/# resolvectl revert enp2s0
Автоматизация настройки с помощью модифицированного скрипта mbim-set-ip
Скрипт mbim-set-ip содержит настройку dns с помощью команды systemd-resolve, которая не присутствует в поставке Ubuntu 22.04 LTS, поэтому настройка заменена на resolvectl, который присуствует как в Ubuntu 22.04 LTS так и Fedora 39.
Скрипт скачан с репозитория: https://github.com/elementzonline/GSMModem/tree/master/SIM7600/mbim-set-ip
Закоментировать (#) строки с systemd-resolve в скрипте mbim-set-ip:
# printf "systemd-resolve -4 --interface=$DEV --set-dns=%s\n" "${ipv4_dns[@]}" >>$execfile
и заменить их на resolvectl:
printf "resolvectl dns $DEV %s\n" "${ipv4_dns[@]}" >>$execfile
И для ipv6:
# printf "systemd-resolve -6 --interface=$DEV --set-dns=%s\n" "${ipv6_dns[@]}" >>$execfile
printf "resolvectl dns $DEV %s\n" "${ipv6_dns[@]}" >>$execfile
Скрипт mbim-set-ip не делает за администратора работу по настройки сетевого окружения при наличии нескольких интерфейсов. Идея заложенная в скрипт mbim-set-ip предполагает, что LTE-модем является единственным выходом в Интернет.
В приципе, для своих целей и своего микросервера, скрипт mbim-set-ip можно упростить.
Автоматизация подключения с помощью собственного скрипта systemd
Цель - получить управление модемным подключением посредством systemd, т.к. на микросервере только консольный текстовый режим.
Интерфейс пользователя (администратора) будет содержать несколько стандартных команд (enable, start, status, stop, restart, disable).
systemctl enable modem4.service
systemctl start modem4.service
systemctl status modem4.service
systemctl stop modem4.service
systemctl restart modem4.service
systemctl disable modem4.service
enable, disable - включает подключение таким образом, что при нормальной загрузке устанавливается подключение к IPv6-сети.
start,stop - позволяет управлять состоянием подключения, при наличии ещё одного подключения к микросерверу.
status - отображает состояние подключения, в том числе ip-адреса и прочее.
Согласно Filesystem Hierarchy Standard (FHS), администратор может расположить свои собственные скрипты (modem4.sh) и команды как в домашней директории, так и в общей системе, например /opt, настройки в /etc/opt и т.п.
Файл описания сервиса modem4.service разумно расположить в /etc/systemd/system
При выполнении команды enable - скрипт modem4 должен проверить наличие установленных утилит mbimcli и библиотек, проверить наличие в системе модема, по его PID-VID, возможно по серийному номеру, наличие символьного устройства (/dev/cdc-wdm0) и т.п.
Проверка наличия установленной поддержки MBIM:
root@microserver:/# apt list libmbim*
Вывод списка… Готово
libmbim-glib-dev/jammy-updates 1.28.0-1~ubuntu20.04.1 amd64
libmbim-glib-dev/jammy-updates 1.28.0-1~ubuntu20.04.1 i386
libmbim-glib-doc/jammy-updates,jammy-updates 1.28.0-1~ubuntu20.04.1 all
libmbim-glib4/jammy-updates,now 1.28.0-1~ubuntu20.04.1 amd64 [установлен, автоматически]
libmbim-glib4/jammy-updates 1.28.0-1~ubuntu20.04.1 i386
libmbim-proxy/jammy-updates,now 1.28.0-1~ubuntu20.04.1 amd64 [установлен, автоматически]
libmbim-proxy/jammy-updates 1.28.0-1~ubuntu20.04.1 i386
libmbim-utils/jammy-updates,now 1.28.0-1~ubuntu20.04.1 amd64 [установлен]
libmbim-utils/jammy-updates 1.28.0-1~ubuntu20.04.1 i386
Проверка наличия установленной поддержки QMI (Qualcomm MSM Interface):
root@microserver:/# apt-cache search libqmi
libqmi-glib5 - библиотека работы с протоколом Qualcomm MSM Interface (QMI)
libqmi-proxy - прокси для работы с QMI-портами
gir1.2-qmi-1.0 - GObject introspection data for libqmi-glib
libqmi-glib-dev - Header files for adding QMI support to applications that use glib
libqmi-glib-doc - API documentation for libqmi-glib
libqmi-utils - Utilities to use the QMI protocol from the command line
root@microserver:/# apt list libqmi*
Вывод списка… Готово
libqmi-glib-dev/jammy-updates 1.32.0-1ubuntu0.22.04.1 amd64
libqmi-glib-dev/jammy-updates 1.32.0-1ubuntu0.22.04.1 i386
libqmi-glib-doc/jammy-updates,jammy-updates 1.32.0-1ubuntu0.22.04.1 all
libqmi-glib5/jammy-updates 1.32.0-1ubuntu0.22.04.1 amd64
libqmi-glib5/jammy-updates 1.32.0-1ubuntu0.22.04.1 i386
libqmi-proxy/jammy-updates 1.32.0-1ubuntu0.22.04.1 amd64
libqmi-proxy/jammy-updates 1.32.0-1ubuntu0.22.04.1 i386
libqmi-utils/jammy-updates 1.32.0-1ubuntu0.22.04.1 amd64
libqmi-utils/jammy-updates 1.32.0-1ubuntu0.22.04.1 i386
Проверка наличия подключения модема конкретного типа, такого как Quectel EC25:
root@microserver:/# lsusb | grep "ID 2c7c:0125"
Bus 001 Device 002: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC25 LTE modem
root@microserver:/# lsusb -d 2c7c:0125
Bus 001 Device 002: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC25 LTE modem
root@microserver:/# echo $?
lsusb -d 2c7c:0125 возвращает 0 при наличии устройства с VID=2c7c и PID = 0125 и 1 при отсутствии указанного устройства.
Проверка наличия символьного устройства (/dev/cdc-wdm0) из командной строки:
root@microserver:/# if [ -c "/dev/cdc-wdm0" ]; then echo "True"; else echo "False"; fi
True
Проверка драйвера привязанного к символьному устройству /dev/cdc-wdm0:
cdc_mbim - драйвер (модуль ядра) поддерживающий протокол MBIM (Mobile
Broadband Interface Model) для сотового модема.
qmi_wwan - драйвер (модуль ядра) поддерживающий протокол QMI (Qualcomm MSM interface) для сотового модема.
root@microserver:/# basename $(realpath /sys/class/usbmisc/cdc-wdm0/device/driver)
cdc_mbim
В данном случае, MBIM режим сотового модема.
Также можно подключиться в специальный порт /dev/ttyUSB2 предназначенный для AT-команд и запросить текущую конфигурацию протокола. Подразумевается, что в системе нет других устройств, захвативших /dev/ttyUSB2 и этот порт привязан к модему. Потребуется команда minicom (apt-get install minicom).
root@microserver:/# minicom -D /dev/ttyUSB2
AT
OK
AT+QCFG="usbnet"
+QCFG: "usbnet",2
OK
+QCFG: "usbnet",2 - подразумевает, что используется MBIM протокол.
+QCFG: "usbnet",1 - подразумевает, что используется ECM протокол.
+QCFG: "usbnet",0 - подразумевает, что используется QMI протокол.
Сам сервисный файл modem4.service (его надо создать в папке /etc/systemd/system) достаточно прост - всю работу делают скрипты startmodem4.sh и stopmodem4.sh
root@microserver:/etc/systemd/system# cat modem4.service
[Unit]
Description=LTE Module preparation and configuration
Documentation=man:microserver
After=network.target
Before=network-online.target
[Service]
Type=oneshot
ExecStart=/home/gimmor/startmodem4.sh
ExecStop=/home/gimmor/stopmodem4.sh
RemainAfterExit=yes
[Install]
WantedBy=network.target
Из особенностей, для того чтобы наблюдать красивый зелёный сигнал при выводе systemctl status modem4, используется опция RemainAfterExit=yes
startmodem4.sh - что-то такое, как например:
root@microserver:/home/gimmor# cat startmodem4.sh
#!/bin/bash
# сервер: microserver.local
# 16 ноября 2023 года
# startmodem4.sh - скрипт для настройки LTE модема с помощью systemd
modemdevice="/dev/cdc-wdm0"
if [ -c $modemdevice ]; then echo "Found character device..."; else echo "Not found character device..."; exit 19; fi
driver=$(realpath /sys/class/usbmisc/cdc-wdm0/device/driver)
drivertype=$(basename $driver)
if [ $drivertype == "cdc_mbim" ]; then echo "Found MBIM driver..."; else echo "Unknown driver: $drivertype"; exit 38; fi
if [ $drivertype == "qmi_wwan" ]; then echo "Found QMI driver..."; echo "QMI protocol not supported"; exit 93; fi
# check SIM card PIN state
mbimcli -d /dev/cdc-wdm0 --device-open-proxy --query-pin-state | grep "unlocked"
if [ $? == 0 ]; then echo "PIN code unlocked and no need to enter one" else echo "PIN locked and need to be provided. Aborting..."; exit 1; fi
# check PID&VID - можно пропустить такую проверку
lsusb -d 2c7c:0125
if [ $? == 0 ]; then echo "Found EC25 LTE modem..."; else echo "No modem..."; exit 19; fi
mbimcli -d /dev/cdc-wdm0 -p --set-radio-state=on
echo "LTE modem radio is on"
mbim-network /dev/cdc-wdm0 start
echo "Setting ip configuration ..."
/home/gimmor/mbim-set-ip /dev/cdc-wdm0 wwan0
# Configure DNS resover
resolvectl default-route enp2s0 no
resolvectl default-route wwan0 yes
echo "DNS resolver configured."
echo "LTE modem configured."
stopmodem4.sh - скрипт для остановки подключения через LTE модем.
root@microserver:/home/gimmor# cat stopmodem4.sh
#!/bin/bash
echo "Stopping LTE modem..."
mbim-network /dev/cdc-wdm0 stop
echo "Disabling radio modem off..."
mbimcli -d /dev/cdc-wdm0 -p --set-radio-state=off
ip addr flush dev wwan0
resolvectl revert wwan0
echo "LTE modem stopped"
Для удобства последующего использования, можно настроить (по-аналогии) подключение своего телефона к микросерверу, для последующего оперативного выхода в сеть Интернет, простым подключением в usb-порт.