Интеграция LTE-модулей Neoway с ОС Linux
12 Май, 2021
При организации взаимодействия модулей LTE с системой, работающей под управлением ОС Linux, можно выделить две отдельные задачи:
1. Обеспечение работы модуля LTE как USB-модема.
2. Обеспечение взаимодействия между модулем и системой по последовательным интерфейсам.
Рассмотрим эти задачи подробнее.
Работа модуля LTE как USB-модема
Как правило, при подключении USB-модема в системе появляется новый сетевой интерфейс, взаимодействие с которым осуществляется так же, как с обычным интерфейсом Ethernet. Это достигается за счет использования стандартных протоколов, получивших название Ethernet-over-USB. Чтобы LTE-модуль работал как USB-модем, его предварительно нужно настроить с помощью АТ-команд через последовательный порт. Эти вопросы подробно рассматривались в статье «Использование LTE-модулей формата Mini PCIe в качестве USB-модемов», поэтому здесь повторяться не будем. LTE-модули Neoway сохраняют настройки в энергонезависимой памяти, поэтому достаточно задать эти настройки только один раз.
Конечно, всё это относится не только к модулям в формате карточек Mini PCIe, но и другим встраиваемым LTE-модулям Neoway.
Взаимодействие между LTE-модулем и системой Linux по последовательным интерфейсам
При подключении LTE-модуля по USB в системе должны появиться несколько последовательных интерфейсов. Эти интерфейсы предназначаются для управления модулем с помощью АТ-команд, получения сообщений NMEA (при наличии в LTE-модуле приемника Глонасс/GPS), диагностики. Наличие данных интерфейсов не является обязательным для работы модуля в качестве USB-модема, но обеспечивает дополнительные возможности при интеграции с системой.
Если последовательные интерфейсы после подключения модуля не появляются, то существуют следующие варианты решения данной задачи:
1. Использование драйвера ‘usbserial’ с нужными нам VID и PID. Например, в случае Neoway N58, режим RNDIS:
sudo modprobe usbserial vendor=0x2949 product=0x7401
После этого в системе должны появиться последовательные порты ttyUSB, проверить результат можно с помощью команды:
ls /dev/ttyUSB*
2. Использование драйвера ‘option’. В случае Neoway N58 и режима RNDIS:
sudo modprobe option
sudo chmod ugo+w /sys/bus/usb-serial/drivers/option1/new_id
sudo echo "2949 7401" > /sys/bus/usb-serial/drivers/option1/new_id
После этого в системе должны появиться последовательные порты ttyUSB, относящиеся к LTE-модулю.
В данных примерах использовался идентификатор PID модуля Neoway N58 в режиме RNDIS – 0x7401, некоторые другие идентификаторы LTE-модулей приведены в таблице 1.
Таблица 1. Идентификаторы PID LTE-модулей Neoway, VID = 0x2949
LTE-модуль Neoway | N58, N58 PCIE | N720, N720 PCIE |
---|---|---|
PID, RNDIS mode | 0x7401 | 0x8241 |
PID, ECM mode | 0x7402 | 0x8242 |
Если у модуля был изменен режим RNDIS/ECM, то после перезагрузки USB-устройство будет иметь новый идентификатор PID.
Если после приведенных выше команд интерфейсы появились в системе, то остается только добавить нужные команды в автозагрузку. Если нет, то потребуется провести дополнительную диагностику.
При диагностике могут оказаться полезными следующие команды:
а) убедиться, что в системе появилось USB-устройство с VID = 0x2949:
lsusb | grep 2949:
или
dmesg | grep idVendor=2949
б) вывести информацию о драйвере (модуле ядра):
modinfo usbserial
modinfo option
в) проверить, загружен ли модуль ядра:
sudo lsmod | grep usbserial
sudo lsmod | grep option