LINUX.ORG.RU
ФорумAdmin

Как запретить ModemManager-у управлять USB-модемами?

 ,


1

1

Есть модемы Vodafone K5160 (Huawei E3272H-153), если подключить к серверу модемы Quectel EP06-E (чтобы они работали на стадии включения), то при попытке переподключить модем K5160 уже во время работы сервера, ModemManager начинает им управлять и не даём ему перейти в cdc_ether устройство и делает из него cdc_mbim, как это можно ограничить?



Последнее исправление: EarlyGamer (всего исправлений: 3)

Да, снеси modemmanager.

Модем, если что, он этого работать не перестанет, для его работы достаточно одного pppd + маленький чат-скрипт для отправки в него нескольких команд для запуска инета.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)

Если отвечать на заданный вопрос, то: с помощью udev правил. Вот тут https://modemmanager.org/docs/modemmanager/ в документации описан тэг ID_MM_DEVICE_IGNORE. Надо с помощью udev правила повесить его на usb устройство.

Я бы на твоём месте задал себе другой вопрос. Почему бы всеми модемами не управлять с помощью MM? Если все твои модемы поддерживают mbim, имеет ли смысл использовать что-то другое? Потому что схема, когда модем реализует роутинг и нат, и реализует dhcp сервер, и раздаёт приватные адреса — она выглядит уродливо.

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

Изначально всё работало на cdc_ether (rndis не выдавал скорость почему-то, хотя у знакомого всё ок было) и таким образом, было достаточно удобно управлять модемами, ибо все правила и маршруты можно было занести в netplan и не париться со скриптами. С Quectel EP06-E к сожалению такого же, не вышло :-( Пришлось делать костыль на Python который отслеживает когда модему задаются новые параметры, и отчищаешь таблицу маршрутизации и правила, после чего заносит те что нужно. Я полагаю что это можно сделать средствами Ubuntu, но у меня нету должного работы с ним, из-за чего пришлось придумывать - велосипед

EarlyGamer
() автор топика
Ответ на: комментарий от iliyap

Блин, добавил через правило ID_MM_DEVICE_IGNORE, но в итоге он просто инициализируется как cdc_mbim и в cdc_ether не переходит Правило 10-ignore-huawei.rules

ACTION!="add|change|move|bind", GOTO="huawei_ignore_rules_end"

SUBSYSTEM=="usb", DRIVERS=="?*", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1f01", ENV{ID_MM_DEVICE_IGNORE}="1"

LABEL="huawei_ignore_rules_end"
root@ubuntu-server:~# udevadm info --path=/sys/bus/usb/devices/2-1.4.3.3.3
P: /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4.3/2-1.4.3.3/2-1.4.3.3.3
N: bus/usb/002/056
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4.3/2-1.4.3.3/2-1.4.3.3.3
E: DEVNAME=/dev/bus/usb/002/056
E: DEVTYPE=usb_device
E: DRIVER=usb
E: PRODUCT=12d1/1f01/102
E: TYPE=0/0/255
E: BUSNUM=002
E: DEVNUM=056
E: MAJOR=189
E: MINOR=183
E: SUBSYSTEM=usb
E: USEC_INITIALIZED=59408836294
E: ID_MM_DEVICE_IGNORE=1
E: ID_VENDOR=Vodafone__Huawei_
E: ID_VENDOR_ENC=Vodafone\x20\x28Huawei\x29
E: ID_VENDOR_ID=12d1
E: ID_MODEL=Vodafone__Huawei_
E: ID_MODEL_ENC=Vodafone\x20\x28Huawei\x29
E: ID_MODEL_ID=1f01
E: ID_REVISION=0102
E: ID_SERIAL=Vodafone__Huawei__Vodafone__Huawei__0123456789ABCDEF
E: ID_SERIAL_SHORT=0123456789ABCDEF
E: ID_BUS=usb
E: ID_USB_INTERFACES=:080650:020e00:0a0002:
E: ID_VENDOR_FROM_DATABASE=Huawei Technologies Co., Ltd.
E: ID_MODEL_FROM_DATABASE=E353/E3131 (Mass storage mode)
E: ID_PATH=pci-0000:00:1d.0-usb-0:1.4.3.3.3
E: ID_PATH_TAG=pci-0000_00_1d_0-usb-0_1_4_3_3_3
root@ubuntu-server:~# udevadm info --path=/sys/bus/usb/devices/2-1.4.3.3.3:2.0
P: /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4.3/2-1.4.3.3/2-1.4.3.3.3/2-1.4.3.3.3:2.0
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4.3/2-1.4.3.3/2-1.4.3.3.3/2-1.4.3.3.3:2.0
E: DEVTYPE=usb_interface
E: DRIVER=cdc_mbim
E: PRODUCT=12d1/1f01/102
E: TYPE=0/0/255
E: INTERFACE=2/14/0
E: MODALIAS=usb:v12D1p1F01d0102dc00dsc00dpFFic02isc0Eip00in00
E: SUBSYSTEM=usb
E: USEC_INITIALIZED=59410109618
E: ID_MM_DEVICE_IGNORE=1
E: ID_VENDOR_FROM_DATABASE=Huawei Technologies Co., Ltd.
E: ID_MODEL_FROM_DATABASE=E353/E3131 (Mass storage mode)
E: ID_PATH=pci-0000:00:1d.0-usb-0:1.4.3.3.3:2.0
E: ID_PATH_TAG=pci-0000_00_1d_0-usb-0_1_4_3_3_3_2_0
EarlyGamer
() автор топика
Ответ на: комментарий от iliyap

Всё атак же, определяется как cdc mbim :-(

root@ubuntu-server:~# echo 1 > /sys/bus/usb/devices/2-1.4.3.3.3/bConfigurationValue
root@ubuntu-server:~# dmesg
[  754.247997] cdc_mbim 2-1.4.3.3.3:2.0 wwan0: unregister 'cdc_mbim' usb-0000:00:1d.0-1.4.3.3.3, CDC MBIM
[  754.467970] usb-storage 2-1.4.3.3.3:1.0: USB Mass Storage device detected
[  754.468166] scsi host25: usb-storage 2-1.4.3.3.3:1.0
[  755.490133] scsi 25:0:0:0: CD-ROM            HUAWEI   Mass Storage     2.31 PQ: 0 ANSI: 2
[  755.492469] sr 25:0:0:0: Power-on or device reset occurred
[  755.497509] sr 25:0:0:0: [sr0] scsi-1 drive
[  755.551485] sr 25:0:0:0: Attached scsi CD-ROM sr0
[  755.551619] sr 25:0:0:0: Attached scsi generic sg20 type 5
[  755.779413] cdc_mbim 2-1.4.3.3.3:2.0: setting rx_max = 16384
[  755.780040] cdc_mbim 2-1.4.3.3.3:2.0: NDP will be placed at end of frame for this device.
[  755.780170] cdc_mbim 2-1.4.3.3.3:2.0: cdc-wdm0: USB WDM device
[  755.780484] cdc_mbim 2-1.4.3.3.3:2.0 wwan0: register 'cdc_mbim' at usb-0000:00:1d.0-1.4.3.3.3, CDC MBIM, 26:07:2f:80:a2:81
[  755.780688] usb-storage 2-1.4.3.3.3:2.2: USB Mass Storage device detected
[  755.780899] scsi host25: usb-storage 2-1.4.3.3.3:2.2
[  756.801406] scsi 25:0:0:0: CD-ROM            HUAWEI   Mass Storage     2.31 PQ: 0 ANSI: 2
[  756.802371] scsi 25:0:0:1: Direct-Access     HUAWEI   TF CARD Storage  2.31 PQ: 0 ANSI: 2
[  756.804343] sr 25:0:0:0: Power-on or device reset occurred
[  756.808260] sr 25:0:0:0: [sr0] scsi-1 drive
[  756.875469] sr 25:0:0:0: Attached scsi CD-ROM sr0
[  756.875590] sr 25:0:0:0: Attached scsi generic sg20 type 5
[  756.875787] sd 25:0:0:1: Attached scsi generic sg31 type 0
[  756.879087] sd 25:0:0:1: Power-on or device reset occurred
[  756.951518] sd 25:0:0:1: [sdae] Attached SCSI removable disk
EarlyGamer
() автор топика
Ответ на: комментарий от EarlyGamer

Я не знаю как переключить модем из режима cdc_mbim в режим cdc_ether. Это какая-то вендор-специфичная магия. Я просто не вижу смысла упираться. cdc_mbim не так плох. mmcli позволяет управлять модемом, разрывать/соединять интернет соединенние. У 3proxy инструкция proxy имеет опцию -De для указания исходящего интерфейса, т.е. фиксированный адрес вроде как и не требуется, достаточно фиксированного имени исходящего интерфейса.

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

Как вариант сменить cdc_ether на rndis, но есть проблема, которую надо решить, если использовать rndis, то очень сильно растут RX ошибки из-за чего скорость очень низкая

EarlyGamer
() автор топика
Ответ на: комментарий от EarlyGamer

Нашёл у себя модем Megafon M150-2 (Huawei E3372s-153). Прошил в него HiLink прошивку. usb_modeswitch переключает его в режим cdc_ether. Если в /etc/usb_modeswitch.conf указать HuaweiAltModeGlobal=1, то переключает в режим cdc_ncm.

На мой взгляд ModemManager не при чём. Он не переключает режим модема. Режим модема переключает usb_modeswitch, с нам и надо разбираться.

iliyap ★★★★★
()