Главное Авторские колонки Пресс-релизы Промо Вакансии Вопросы
75 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Модем подключен, а интернета нет - разбираем eSIM на Linux

Пользователи, впервые столкнувшиеся с LTE-модемами Dell в Linux, часто описывают одну и ту же картину: устройство в системе есть, драйвер работает, статус соединения показывает активность, а страницы не открываются.
Мнение автора может не совпадать с мнением редакции

Открытый проект dell-dw5821e-dw5829e-esim-linux существует именно для того, чтобы отделить видимость работы от её фактического наличия. Команда разобрала полный маршрут от появления модема в системе до момента, когда пакет уходит через нужный оператор, и зафиксировала все точки, где маршрут рвётся. Оказалось, что драйверы ядра — самая простая часть, а сложности начинаются в том, что находится над ними: управление профилями eSIM, согласование точки доступа, изоляция маршрутов и защита от собственной автоматики. Далее разбор идёт строго по материалам репозитория; с испытаниями авторов можно ознакомиться на странице методики.

Как устроен проект и почему без lpac не обойтись

Собственных драйверов и прошивок Dell в репозитории нет, как нет и бинарников производителя. Модули qmi_wwan, cdc_mbim и option поставляются с ядром Linux, а проект покрывает слой, который драйвер оставляет пользователю: скрипты переключения профилей, правила udev для предсказуемых имён портов, юниты systemd для подготовки окружения и документацию по каждому встреченному отказу.

Управление профилями eSIM выполняет сторонняя утилита lpac под AGPL-3.0. Сборка зависит от модели: DW5829e работает через QMI-бэкенд поверх qmi-proxy, DW5821e — через AT-бэкенд на последовательном порту, который в момент работы lpac должен быть свободен от pppd. Профиль распознаётся по идентификатору ISD-P AID, а не по ICCID, что принципиально при автоматизации.

Авторы предупреждают о конфликте с ModemManager: служба занимает управляющий интерфейс и AT-порты при появлении модема, после чего lpac завершается с ошибками, внешне напоминающими неисправность eUICC. Перед запуском автоматизации службу отключают и маскируют.

Почему DW5821e и DW5829e требуют разного подхода

Обе модели построены на Qualcomm Snapdragon X20 со встроенной eUICC и физического слота под карту не имеют. Различие — в способе общения с Linux. DW5829e определяется в конфигурации MBIM и переводится в QMI правилом udev. DW5821e обращается к eUICC через AT-команды, а данные передаёт по PPP. Режим MBIM для второй модели авторы не проверяли и не советуют опираться на неподтверждённые сценарии.

Проверка идентификатора USB — обязательный шаг: у DW5821e версия с eSIM маркируется 413c:81e0, вариант без eSIM — 413c:81d7. Внешне устройства неотличимы, но заставить работать eUICC на втором невозможно.

Смена профиля требует времени. У DW5829e цикл включает остановку сессии, отвязку и привязку USB, активацию целевого профиля и сброс через DMS — модем возвращается в систему примерно через полминуты. У DW5821e используется пара AT+CFUN=0 и AT+CFUN=1. Сохранённые профили не означают одновременной работы операторов: активен всегда ровно один.

Где рвется соединение после смены профиля

Наиболее частый отказ на DW5821e связан с APN — точкой доступа для выхода в пакетную сеть. После смены профиля модем мог присоединиться с APN предыдущего оператора. Причина — в порядке операций: радио включается раньше, чем скрипт выставляет новые параметры, и регистрация проходит со старыми настройками. Внешне всё благополучно — адрес получен, соединение поднято, — но пакеты не проходят. Один оператор молчал, второй отвечал сбросом TCP, третий переадресовывал HTTP-запросы на служебную страницу с сообщением о неверном APN.

В проекте для этого есть отдельный скрипт: он задаёт APN при включённом радио, сверяет его с фактическим через AT+CGCONTRDP и при расхождении переприсоединяет модем к сети. Проверка опирается на реальное состояние, а не на отправленные команды.

Второй отказ — выключенное радио после прерванного переключения. Если процесс завершается между AT+CFUN=0 и AT+CFUN=1, модем остаётся без питания на eUICC, lpac не находит профилей, а скрипт соединения зацикливается. В документации зафиксирован случай, когда узел провёл в таком состоянии около тридцати часов. Лечится проверкой AT+CFUN перед обращением к lpac и принудительным включением. Частые циклы CFUN тоже опасны: сто семьдесят переключений за два часа привели к тому, что модем остался на USB-шине, но перестал отвечать.

Зачем нужны отдельные сетевые пространства

Узел с модемом почти всегда имеет и проводной канал. Если мобильная сессия не поднялась, запрос уйдёт через него, а проверка зафиксирует успех, не относящийся к выбранному оператору. В проекте для разграничения используются network namespaces — отдельные сетевые пространства Linux — вместе с правилами маршрутизации. Мобильный аплинк размещается в собственном пространстве, проводное соединение остаётся для управления узлом.

Тот же приём применяется в Freedom Checker для проверки доступности средств обхода и прокси через сети разных операторов.

Поднятое соединение с полученным адресом не гарантирует, что трафик уйдёт через нужный интерфейс. Без изоляции маршрутов и проверки готовности пространства имён результат измерения может относиться к совершенно другому каналу.

Почему автоматика иногда вредит больше сбоя

Восстановление требует не меньшей аккуратности, чем первичная настройка. У DW5829e обновление соединения включает переподключение модема на USB, и устройство исчезает из системы на десять-двадцать секунд. Если проверка состояния в этот момент решит, что модем неисправен, она запустит новое восстановление, оборвав рабочие задачи действиями самой автоматики.

В проекте описана лестница восстановления с интервалами: проверка раз в минуту, три последовательных отказа до обновления соединения, не более трёх сбросов модема в час. Пока аплинк восстанавливается, новые задания на него не отправляются. Для удалённых узлов это особенно существенно: бесконечные попытки починить соединение делают узел менее доступным, чем исходный сбой.

С чего начать на практике

Сверяют модель и USB ID, затем выбирают инструкцию: QMI для DW5829e или вариант через PPP для DW5821e. Авторы проверяли сборку на Ubuntu 24.04 с ядром 6.8 — на другой системе возможны правки в зависимостях. Сначала добиваются стабильной работы с одним профилем, затем проверяют переключение и восстановление после перезапуска: так проще отделить ошибки базового подключения от ошибок автоматики. Скрипты и документация распространяются по лицензии MIT, lpac устанавливается отдельно под AGPL-3.0. Код и разбор отказов собраны в репозитории на GitHub — начинать стоит с README и раздела с описанными сбоями.

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем