Olej писал(а):Логика работы usb_modeswitch совершенно понятна.
Кроме одного вопроса: как? где? взять строку MessageContent для произвольного типа модема?
Или как по тех.описаниям на сайте производителя составить такую строку MessageContent?
Логика работы usb_modeswitch понятна.
Для разборки того, как подключаются модемы, которые в Linux подключаются "легко", возвращаюсь к своему модему AnyDATA ADU-510A.
Он стартует как ZeroCD диск 05c6:1000, а потом с помощью usb_modeswitch перегружается как устройство 16d5:6502 :
Код: Выделить всё
bash-4.2$ dmesg
...
[30943.930077] usb 3-1: new full-speed USB device number 2 using uhci_hcd
[30944.082114] usb 3-1: New USB device found, idVendor=05c6, idProduct=1000
...
[30946.000118] usb 3-1: USB disconnect, device number 2
[30947.320082] usb 3-1: new full-speed USB device number 3 using uhci_hcd
[30947.467139] usb 3-1: New USB device found, idVendor=16d5, idProduct=6502
Файл
/etc/usb_modeswitch.d/05c6uMa=AnyDATA :
Код: Выделить всё
[root@notebook usb_modeswitch.d]# cat 05c6:1000:uMa=AnyDATA
# AnyDATA devices, Bless UC165
TargetVendor= 0x16d5
TargetProduct= 0x6502
MessageContent="5553424312345678000000000000061b000000020000000000000000000000"
Если глянуть файл usb.ids, предписывающий VID:PID всем USB устройствам, то при переключении от ZeroCD к модему меняется даже производитель:
Код: Выделить всё
05c6 Qualcomm, Inc.
...
16d5 AnyDATA Corporation
6202 CDMA/UMTS/GPRS modem
6501 CDMA 2000 1xRTT/EV-DO Modem
6502 CDMA/UMTS/GPRS modem
Единственно непонятной позицией остаётся: как
производитель формирует строку, записываюмую, обычно, по end-point=1 USB-устройства:
Код: Выделить всё
MessageContent="5553424312345678000000000000061b000000020000000000000000000000"
И для некоторых моделей меняется ещё и end-point (откуда?) :
Для показанного модема вот эта end-point конфигурирования #1 (предполагаю что так):
Код: Выделить всё
[root@notebook usb_modeswitch.d]# lsusb -d 16d5:6502 -v
Bus 003 Device 003: ID 16d5:6502 AnyDATA Corporation CDMA/UMTS/GPRS modem
...
idVendor 0x16d5 AnyDATA Corporation
idProduct 0x6502 CDMA/UMTS/GPRS modem
...
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 128
...
P.S. Вот вам на всякий случай полный листинг event-ов для udev при подключении этого модема - это исчерпывающая информация для анализа и понимания.