DEV Community

Alex Voronin
Alex Voronin

Posted on

Как поднять 4G-модем на Linux (Raspberry Pi, мини-ПК): APN, nmcli и mmcli

Удалённая метеостанция, камера на Raspberry Pi, мини-ПК на даче или телеметрия на объекте без кабеля — всё это часто сводится к одной задаче: подключить USB-модем 4G к Linux и заставить его держать связь неделями. Ниже порядок, который работает в Debian, Ubuntu и Raspberry Pi OS с NetworkManager и ModemManager.

1. Убедиться, что модем виден

sudo apt install modemmanager network-manager
mmcli -L
Enter fullscreen mode Exit fullscreen mode

Если вывод пустой, проверьте lsusb. Часть модемов при подключении определяется как флешка с драйверами. Для них нужен пакет usb-modeswitch, который переключит устройство в режим модема.

2. Посмотреть состояние и сигнал

mmcli -m 0
mmcli -m 0 --signal-setup=10
mmcli -m 0 --signal-get
Enter fullscreen mode Exit fullscreen mode

Пример вывода:

  LTE  |   rssi: -67.00 dBm
       |   rsrq: -11.00 dB
       |   rsrp: -95.00 dBm
       |    s/n: 9.40 dB
Enter fullscreen mode Exit fullscreen mode

Ориентир: RSRP выше −90 дБм — хорошо, ниже −110 — модем будет терять сеть. Если цифры плохие, удлинитель USB к окну часто даёт больше, чем смена оператора.

3. Создать подключение с APN

nmcli connection add type gsm ifname '*' con-name lte apn <APN_оператора>
nmcli connection up lte
Enter fullscreen mode Exit fullscreen mode

Имя точки доступа берите из инструкции оператора. Пустой или чужой APN — самая частая причина ситуации «модем подключён, интернета нет».

4. Автоподключение после обрыва

nmcli connection modify lte connection.autoconnect yes
nmcli connection modify lte connection.autoconnect-retries 0
Enter fullscreen mode Exit fullscreen mode

Значение 0 означает бесконечные попытки. Без этого после пары неудачных переподключений NetworkManager перестанет пробовать, и устройство останется офлайн до перезагрузки.

5. Проверка, что трафик идёт через модем

ip route
ping -I wwan0 -c 4 8.8.8.8
Enter fullscreen mode Exit fullscreen mode

Имя интерфейса может отличаться (wwan0, ppp0, cdc-wdm0) — смотрите вывод mmcli -m 0 в поле ports.

6. Сторож на случай зависания

Автоподключение спасает от обрыва сети, но не от зависшего модема. Простой сторож через cron раз в пять минут проверяет связь и перезапускает подключение:

*/5 * * * * ping -I wwan0 -c 3 -W 5 8.8.8.8 > /dev/null || (nmcli connection down lte; sleep 5; nmcli connection up lte)
Enter fullscreen mode Exit fullscreen mode

Если не помогает и это, остаётся перезапуск ModemManager или сброс питания USB-порта.

7. Питание

На Raspberry Pi модем 4G в момент регистрации в сети потребляет заметный ток. Слабый блок питания даёт случайные отключения модема, которые выглядят как проблемы связи. Используйте штатный блок питания или USB-хаб с отдельным питанием. В dmesg такие сбои видны как повторное подключение USB-устройства.

Про тариф

Технически всё может быть настроено идеально, но интернета не будет, если тариф не разрешает работу в модеме. Часть телефонных тарифов в USB-модеме данные не отдаёт или режет скорость. Для устройства, которое работает неделями без присмотра, это критично.

Если вы подбираете симку под такой проект, в магазине Безлимитик есть раздел «сим-карта для модема» с тарифами, которые работают в модеме. Карту под проект заказывают на сайте и получают доставкой.

Top comments (0)