Вывод команды lsusb или usb-devices в Linux, где у USB-модема видны строки вида «2 CDC ACM», «3 CDC NCM» и «SS», — это не ошибка, а описание режима работы устройства: модем представляется системе сразу несколькими логическими интерфейсами. Каждая из этих аббревиатур обозначает конкретный класс USB-устройства, и понимание их роли — ключ к тому, чтобы модем определялся корректно и выдавал интернет.
Такая картина типична для современных 4G/LTE-модемов Huawei, ZTE и аналогичных устройств, которые после переключения из режима «виртуальный CD-ROM» переходят в композитный режим с несколькими интерфейсами. Ниже разберём, что означает каждая запись, как проверить, что система видит модем правильно, и что делать, если нужный интерфейс не поднялся.
Что означают CDC ACM, CDC NCM и SS в описании модема
Аббревиатура CDC расшифровывается как Communications Device Class — стандартный класс USB-устройств связи. Внутри него существует несколько подклассов, и модем может экспонировать сразу несколько из них одновременно.
- 📟 CDC ACM (Abstract Control Model) — эмуляция последовательного порта. Через него модем принимает AT-команды, а в системе появляются устройства вида
/dev/ttyUSB*или/dev/ttyACM*. - 🌐 CDC NCM (Network Control Model) — сетевой интерфейс. Модем выглядит как виртуальная сетевая карта (например,
wwan0илиusb0), и данные передаются через неё, а не через PPP. - ⚡ SS (SuperSpeed) — указание на работу в режиме USB 3.x. Это не отдельный интерфейс, а характеристика скоростного режима подключения устройства.
- 💾 Дополнительно часто встречается Mass Storage — виртуальный CD-ROM с драйверами или microSD-картридер.
Цифры перед названиями классов в выводе usb-devices — это номера интерфейсов (interface numbers) внутри USB-конфигурации. Один физический модем может содержать 5–8 таких интерфейсов, и это нормально.
Как проверить, как система видит модем
Первый шаг диагностики — посмотреть, определилось ли устройство и какие драйверы привязались к его интерфейсам. Для этого используются стандартные утилиты, входящие в большинство дистрибутивов Linux.
lsusb
usb-devices | grep -A 8 -i modem
ls /dev/ttyUSB* /dev/ttyACM* 2>/dev/null
ip link show
В выводе usb-devices обратите внимание на строки Driver=. Для ACM-интерфейсов там должно быть cdc_acm или option, для NCM — cdc_ncm (вместе со вспомогательным cdc_wdm). Если вместо драйвера указано none, интерфейс не подхвачен системой, и работать он не будет.
Дополнительно проверьте появление сетевого интерфейса командой ip link: NCM-интерфейс обычно отображается как wwan0, usb0 или похожее имя. Его наличие означает, что модем готов к настройке соединения.
Почему модем определяется как CD-ROM, а не как модем
Многие USB-модемы при первом подключении включаются в режиме виртуального CD-ROM — так задумано для автоматической установки драйверов в Windows. В этом режиме интерфейсов CDC ACM и NCM в системе нет вообще, и интернет через устройство получить невозможно.
Переключение в рабочий режим выполняет утилита usb_modeswitch (в большинстве дистрибутивов она установлена и срабатывает автоматически через правила udev). Если автопереключение не произошло, проверьте следующее:
- 🔍 Установлен ли пакет
usb-modeswitchиusb-modeswitch-dataв вашем дистрибутиве. - 🔌 Попробуйте переподключить модем в другой порт, желательно напрямую, без USB-хаба.
- 📋 Изучите вывод
dmesgна предмет ошибок переключения режима. - 🆔 Сравните VID:PID устройства в
lsusbс базой usb_modeswitch — для неизвестных идентификаторов правило переключения может отсутствовать.
⚠️ Внимание: ручное переключение режима командами usb_modeswitch выполняйте только с параметрами, соответствующими VID:PID именно вашего устройства. Параметры для чужой модели могут не сработать или перевести модем в непредвиденное состояние. Точные значения ищите в базе usb-modeswitch-data или документации к устройству.
Настройка подключения через CDC NCM
Если NCM-интерфейс поднялся и сетевая карта появилась, подключение обычно настраивается через NetworkManager и ModemManager. Эти службы автоматически обнаруживают модем, отправляют нужные AT-команды через ACM-порт и активируют передачу данных через NCM.
Проверьте, что ModemManager видит устройство:
mmcli -L
mmcli -m 0
Вторая команда выводит подробный статус модема: оператора, уровень сигнала, состояние регистрации в сети. Если модем в списке есть, создать соединение можно через графический апплет NetworkManager (тип соединения — «Мобильная широкополосная связь») или командой nmcli. APN уточняйте у своего оператора — именно неправильный APN чаще всего мешает установке соединения при исправном модеме.
☑️ Проверка готовности модема к работе
После активации соединения сетевому интерфейсу обычно назначается адрес автоматически. Проверить наличие адреса и маршрутов можно командами ip addr show wwan0 и ip route.
Типичные проблемы и их диагностика
Что делать, если часть цепочки работает, а интернета нет? Симптомы обычно указывают на конкретное звено.
| Симптом | Вероятная причина | Что проверить |
|---|---|---|
| Модем виден только как CD-ROM | Не сработало переключение режима | usb-modeswitch, правила udev, вывод dmesg |
| ttyUSB есть, сетевого интерфейса нет | Драйвер cdc_ncm не привязался | Строки Driver= в usb-devices, lsmod | grep cdc |
| Интерфейс есть, соединение не устанавливается | Неверный APN или нет регистрации в сети | mmcli -m 0 — статус регистрации, настройки APN |
| Соединение есть, но низкая скорость | Модем работает не в SS-режиме или слабый сигнал | lsusb -t (скорость порта), уровень сигнала в mmcli |
| Модем отваливается периодически | Энергосбережение USB отключает порт | Настройки autosuspend для USB в системе |
Отдельно стоит ситуация, когда модем физически подключён к порту USB 3.x, но в lsusb -t виден на скорости 480M (USB 2.0). Возможные причины — длинный или некачественный кабель, хаб без поддержки SuperSpeed, особенности порта. Для стабильной работы подключайте модем напрямую в порт компьютера.
⚠️ Внимание: не изменяйте прошивку модема и не отправляйте ему AT-команды смены композиции интерфейсов без точной документации на вашу модель. Некоторые команды необратимо меняют конфигурацию устройства, и вернуть исходный режим бывает сложно.
Зачем модему одновременно ACM и NCM
ACM-порты используются для служебного обмена: отправки AT-команд, получения уровня сигнала, SMS, USSD-запросов. NCM-интерфейс — это «труба» для интернет-трафика, работающая эффективнее старого PPP через последовательный порт. Разделение ролей позволяет управлять модемом и передавать данные параллельно, без конфликтов.
Работа с AT-командами через ACM-порт
Через /dev/ttyUSB* или /dev/ttyACM* можно вручную опросить модем терминальной программой, например minicom или socat. Базовые команды вроде AT (проверка связи), ATI (информация об устройстве) и AT+CSQ (уровень сигнала) стандартизированы и безопасны — они только читают данные.
Имейте в виду: если порт уже занят ModemManager, терминал не сможет открыть его одновременно. Либо остановите ModemManager на время отладки, либо используйте его собственный интерфейс mmcli, который покрывает большинство задач без прямого доступа к порту.
FAQ: частые вопросы
Что значит «SS» рядом с модемом в выводе lsusb -t?
Это обозначение режима SuperSpeed — модем подключён по USB 3.x. Если вместо SS вы видите 480M, устройство работает в режиме USB 2.0, что может ограничивать скорость на быстрых LTE-подключениях.
Нужны ли отдельные драйверы для CDC NCM в Linux?
Обычно нет: модули cdc_ncm, cdc_wdm и cdc_acm входят в состав ядра Linux и загружаются автоматически. Проверить их наличие можно командой lsmod | grep cdc.
Модем определяется, но ModemManager его не видит. Что делать?
Проверьте, запущена ли служба (systemctl status ModemManager), и перезапустите её. Также убедитесь, что интерфейсы модема заняты правильными драйверами — ModemManager работает только с корректно инициализированными портами.
Можно ли использовать модем без ModemManager?
Да, возможны ручные варианты: отправка AT-команд через терминал и настройка сетевого интерфейса вручную. Однако этот путь сильно зависит от модели модема, и универсальной инструкции не существует — ориентируйтесь на документацию конкретного устройства.
Почему у модема несколько ttyUSB-портов, какой из них использовать?
Модемы часто экспонируют несколько последовательных портов с разным назначением: AT-команды, диагностика, GPS. Какой из портов отвечает на AT-команды, проще всего проверить опросом через mmcli или по документации модели.