
У меня есть модуль 4G, который требует от меня запуска
echo '03f0 581d' > /sys/bus/usb-serial/drivers/generic/new_id
после каждого запуска/возобновления, чтобы модем был виден. Как сделать это автоматическим?
- Добавьте VID&PID в исходники usb-serial и перекомпилируйте
- Создайте скрипт, который запускается при запуске/возобновлении работы и добавляет их динамически.
- Какое-то правило udev?
Какой подход будет лучшим? Я думаю, что этот udev
подход звучит наиболее разумно. Я предполагаю, что он будет работать и для приостановки/возобновления?
Модем — HP lt4112 LTE/HSPA+ Gobi 4G Modem (Huawei ME906E).
Бонусный вопрос: Почему команду нужно запускать повторно после цикла приостановки/возобновления. Модуль ядра выгружается или каким-то образом сбрасывается, когда ноутбук приостанавливается в ОЗУ?
решение1
Предполагая, что идентификаторы поставщика и продукта вашего устройства настроены так, как указано выше, т.е. 03f0
и 581d
соответственно, вы можете создатьудевправило, которое автоматически инициализирует устройство и привязывает его кlibqmi, как показано ниже:
file /etc/udev/rules.d/98-modem-rules.rules
Создайте файл с помощью вашего любимого текстового редактора ( sudo
требуются соответствующие разрешения) со следующим содержимым:
ACTION!="add|change", GOTO="mbim_to_qmi_rules_end"
SUBSYSTEM!="usb|drivers", GOTO="mbim_to_qmi_rules_end"
# load qmi_wwan module
SUBSYSTEM=="usb", \
ATTR{idVendor}=="03f0", ATTR{idProduct}=="581d", \
RUN+="/sbin/modprobe -b qmi_wwan"
# Initialize the LTE lt112 module to operational status:
SUBSYSTEM=="usb", \
ATTR{idVendor}=="03f0", ATTR{idProduct}=="581d", \
ATTR{bConfigurationValue}="3"
# add the new id in the qmi_wwan driver
SUBSYSTEM=="drivers", \
ENV{DEVPATH}=="/bus/usb/drivers/qmi_wwan", \
ATTR{new_id}="03f0 581d"
# load qcserial module
SUBSYSTEM=="usb", \
ATTR{idVendor}=="03f0", ATTR{idProduct}=="581d", \
RUN+="/sbin/modprobe -b qcserial"
# add the new id in the qcserial driver
SUBSYSTEM=="drivers", \
ENV{DEVPATH}=="/bus/usb-serial/drivers/qcserial", \
ATTR{new_id}="03f0 581d"
LABEL="mbim_to_qmi_rules_end"
На вашем компьютере вам также потребуется установить соответствующие пакеты:
Если у вас Ubuntu (поскольку информация о дистрибутиве не предоставлена), выполните:
sudo apt install libqmi libqmi-utils
После этого активируйте новое правило udev:
sudo udevadm control --reload-rules
sudo udevadm trigger
Вы также можете найтимодем-менеджер, графический интерфейс пользователя для просмотра статистики модема, такой как уровень сигнала сети и т. д., может быть полезен.
Его можно установить через:
sudo apt install modem-manager-gui
После установки SIM-карты потребуется холодный запуск.
Обновлять:
Альтернативой этому может быть установка пакета usb-modeswitch-data
(который также подтянетusb-переключатель режимовкак зависимость).
Пакет содержит правила udev, которые позволяют usb-modeswitch правильно инициализировать устройство, с несколькими записями для нескольких устройств. См. журнал(ы) изменений на том жездесь.
Правила udev в пакете хранятся в файле с именем 40-usb_modeswitch.rules
. Для вашего конкретного оборудования это строки 32-33:
# HP hs4112
ATTR{idVendor}=="03f0", ATTR{idProduct}=="581d", RUN+="usb_modeswitch '/%k'"
После установки usb-modeswitch
вам usb-modeswitch-data
потребуется перезагрузка, даже после перезагрузки правил udev, прежде чем SIM-карта будет распознана.