Bonjour,
J’avais établis une règle udev pour me permettre d’attacher correctement un modem 3G à /dev/modem3G, et tout allait bien dans le meilleur des mondes.
Ca allait tellement bien que j’ai récupéré un deuxième modem (ZTE MF626) pour être sur d’en avoir un toujours fonctionnel.
Je ne fais pas grand chose avec, juste quelque dialogue par commande AT pour envoyer des SMS, donc pas besoin de network manager.
Le problème c’est que ces deux modem semblent différents alors qu’ils sont de même models !
Le premier je l’ai eu en test alors qu’il nétait pas commercialisé, compatible Window et MAC, mais pas Linux. J’ai pu démontrer le contraire.
Le dernier, c’est celui commercialisé, toujours certifié Windows et MAC compatible.
Apparemment ils sont différents.
Avec une règle udev comme ça :
# cat /etc/udev/rules.d/027_zte_modem_3g.rules
SYSFS{idProduct}=="0031", SYSFS{idVendor}=="19d2", ACTION=="add",\
RUN+="/sbin/modprobe usbserial vendor=0x19d2 product=0x0031"
SYSFS{idProduct}=="0031", SYSFS{idVendor}=="19d2", KERNEL=="ttyUSB*", ACTION=="add", SYMLINK+="modem3G"
Pour le premier modèle, j’ai /dev/ttyUSB0 et /dev/ttyUSB1. Je dialogue avec /dev/ttyUSB1 par l’intermediaire de /dev/modem3G.
le premier, /dev/ttyUSB0 correspondrait à une partition contenant les driver windows.
Avec la nouvelle clef (USB bien entendu), je n’ai que /dev/ttyUSB0. Il semblerait qu’il n’y ai donc qu’une seule partition.
Mais quand j’utilise minicom pour dialoguer avec, le modem reste muet. Comme si je dialoguai avec la premiere partition de l’ancien modem.
Comment connaître l’architecture de la clef ? Il semblerait qu’ils aient modifié le firmware, non ?
Fin du message
la suite ce n’est que des logs, ne partez pas
Quelques logs pour comprendre :
// dmesg de l’installation de la 1ere clef
[ 255.671272] usb 6-2: configuration #1 chosen from 1 choice
[ 260.280016] usbserial_generic 6-2:1.0: Generic device with no bulk out, not allowed.
[ 260.280016] usbserial_generic: probe of 6-2:1.0 failed with error -5
[ 260.280016] usbserial_generic 6-2:1.1: Generic device with no bulk out, not allowed.
[ 260.280016] usbserial_generic: probe of 6-2:1.1 failed with error -5
[ 260.280016] usbserial_generic 6-2:1.2: generic converter detected
[ 260.280016] usb 6-2: generic converter now attached to ttyUSB0
[ 260.280016] usbserial_generic 6-2:1.3: generic converter detected
[ 260.280016] usb 6-2: generic converter now attached to ttyUSB1
[ 260.280016] usb 6-2: New USB device found, idVendor=19d2, idProduct=0031
[ 260.280016] usb 6-2: New USB device strings: Mfr=2, Product=1, SerialNumber=3
[ 260.280016] usb 6-2: Product: ZTE CDMA Technologies MSM
[ 260.280016] usb 6-2: Manufacturer: ZTE, Incorporated
[ 260.280016] usb 6-2: SerialNumber: 1234567890ABCDEF
[ 260.956895] Initializing USB Mass Storage driver...
[ 260.956989] usbcore: registered new interface driver usb-storage
[ 260.956997] USB Mass Storage support registered.
// dmesg de l’installation de la 2eme clef
[ 194.456016] usb 6-2: new high speed USB device using ehci_hcd and address 4
[ 194.596159] usb 6-2: configuration #1 chosen from 1 choice
[ 194.600852] usbserial_generic 6-2:1.0: generic converter detected
[ 194.600950] usb 6-2: generic converter now attached to ttyUSB0
[ 194.601111] usb 6-2: New USB device found, idVendor=19d2, idProduct=2000
[ 194.601157] usb 6-2: New USB device strings: Mfr=2, Product=1, SerialNumber=0
[ 194.601204] usb 6-2: Product: ZTE CDMA Technologies MSM
[ 194.601258] usb 6-2: Manufacturer: ZTE, Incorporated
[ 194.961553] Initializing USB Mass Storage driver...
[ 194.961630] usbcore: registered new interface driver usb-storage
[ 194.961677] USB Mass Storage support registered.
Ettonanant pour un même modèle, n’est-ce pas ?
Pourtant udevinfo ne voit pas autant de différence (je ne maitrise pas trop udev en fait)
Première clef
[code]# udevinfo -a -p $(udevinfo -q path -n /dev/ttyUSB0)
Udevinfo starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device ‘/class/tty/ttyUSB0’:
KERNEL==“ttyUSB0"
SUBSYSTEM==“tty"
DRIVER==””
looking at parent device ‘/devices/pci0000:00/0000:00:13.5/usb6/6-2/6-2:1.2/ttyUSB0’:
KERNELS=="ttyUSB0"
SUBSYSTEMS=="usb-serial"
DRIVERS=="generic"
ATTRS{port_number}==“0”
looking at parent device ‘/devices/pci0000:00/0000:00:13.5/usb6/6-2/6-2:1.2’:
KERNELS=="6-2:1.2"
SUBSYSTEMS=="usb"
DRIVERS=="usbserial_generic"
ATTRS{bInterfaceNumber}==“02"
ATTRS{bAlternateSetting}==” 0"
ATTRS{bNumEndpoints}=="02"
ATTRS{bInterfaceClass}=="08"
ATTRS{bInterfaceSubClass}=="06"
ATTRS{bInterfaceProtocol}=="50"
ATTRS{modalias}==“usb:v19D2p0031d0000dc00dsc00dp00ic08isc06ip50”
looking at parent device ‘/devices/pci0000:00/0000:00:13.5/usb6/6-2’:
KERNELS=="6-2"
SUBSYSTEMS=="usb"
DRIVERS==“usb"
ATTRS{configuration}==”“
ATTRS{bNumInterfaces}==” 4"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}=="500mA"
ATTRS{urbnum}=="10"
ATTRS{idVendor}=="19d2"
ATTRS{idProduct}=="0031"
ATTRS{bcdDevice}=="0000"
ATTRS{bDeviceClass}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="6"
ATTRS{devnum}==“4"
ATTRS{version}==” 2.00"
ATTRS{maxchild}=="0"
ATTRS{quirks}=="0x0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="ZTE, Incorporated"
ATTRS{product}=="ZTE CDMA Technologies MSM"
ATTRS{serial}==“1234567890ABCDEF”
looking at parent device ‘/devices/pci0000:00/0000:00:13.5/usb6’:
KERNELS=="usb6"
SUBSYSTEMS=="usb"
DRIVERS==“usb"
ATTRS{configuration}==”“
ATTRS{bNumInterfaces}==” 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}==“e0"
ATTRS{bMaxPower}==” 0mA"
ATTRS{urbnum}=="90"
ATTRS{idVendor}=="1d6b"
ATTRS{idProduct}=="0002"
ATTRS{bcdDevice}=="0206"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="6"
ATTRS{devnum}==“1"
ATTRS{version}==” 2.00"
ATTRS{maxchild}=="10"
ATTRS{quirks}=="0x0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="Linux 2.6.26.081113 ehci_hcd"
ATTRS{product}=="EHCI Host Controller"
ATTRS{serial}=="0000:00:13.5"
ATTRS{authorized_default}==“1”
looking at parent device ‘/devices/pci0000:00/0000:00:13.5’:
KERNELS=="0000:00:13.5"
SUBSYSTEMS=="pci"
DRIVERS=="ehci_hcd"
ATTRS{vendor}=="0x1002"
ATTRS{device}=="0x4386"
ATTRS{subsystem_vendor}=="0x1002"
ATTRS{subsystem_device}=="0x4386"
ATTRS{class}=="0x0c0320"
ATTRS{irq}=="19"
ATTRS{local_cpus}=="ff"
ATTRS{local_cpulist}=="0-7"
ATTRS{modalias}=="pci:v00001002d00004386sv00001002sd00004386bc0Csc03i20"
ATTRS{enable}==“1"
ATTRS{broken_parity_status}==“0"
ATTRS{msi_bus}==””
looking at parent device ‘/devices/pci0000:00’:
KERNELS==“pci0000:00"
SUBSYSTEMS==”“
DRIVERS==”"[/code]
[code]# udevinfo -a -p $(udevinfo -q path -n /dev/ttyUSB1)
Udevinfo starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device ‘/class/tty/ttyUSB1’:
KERNEL==“ttyUSB1"
SUBSYSTEM==“tty"
DRIVER==””
looking at parent device ‘/devices/pci0000:00/0000:00:13.5/usb6/6-2/6-2:1.3/ttyUSB1’:
KERNELS=="ttyUSB1"
SUBSYSTEMS=="usb-serial"
DRIVERS=="generic"
ATTRS{port_number}==“0”
looking at parent device ‘/devices/pci0000:00/0000:00:13.5/usb6/6-2/6-2:1.3’:
KERNELS=="6-2:1.3"
SUBSYSTEMS=="usb"
DRIVERS=="usbserial_generic"
ATTRS{bInterfaceNumber}==“03"
ATTRS{bAlternateSetting}==” 0"
ATTRS{bNumEndpoints}=="03"
ATTRS{bInterfaceClass}=="ff"
ATTRS{bInterfaceSubClass}=="ff"
ATTRS{bInterfaceProtocol}=="ff"
ATTRS{modalias}==“usb:v19D2p0031d0000dc00dsc00dp00icFFiscFFipFF”
looking at parent device ‘/devices/pci0000:00/0000:00:13.5/usb6/6-2’:
KERNELS=="6-2"
SUBSYSTEMS=="usb"
DRIVERS==“usb"
ATTRS{configuration}==”“
ATTRS{bNumInterfaces}==” 4"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}=="500mA"
ATTRS{urbnum}=="10"
ATTRS{idVendor}=="19d2"
ATTRS{idProduct}=="0031"
ATTRS{bcdDevice}=="0000"
ATTRS{bDeviceClass}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="6"
ATTRS{devnum}==“4"
ATTRS{version}==” 2.00"
ATTRS{maxchild}=="0"
ATTRS{quirks}=="0x0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="ZTE, Incorporated"
ATTRS{product}=="ZTE CDMA Technologies MSM"
ATTRS{serial}==“1234567890ABCDEF”
looking at parent device ‘/devices/pci0000:00/0000:00:13.5/usb6’:
KERNELS=="usb6"
SUBSYSTEMS=="usb"
DRIVERS==“usb"
ATTRS{configuration}==”“
ATTRS{bNumInterfaces}==” 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}==“e0"
ATTRS{bMaxPower}==” 0mA"
ATTRS{urbnum}=="90"
ATTRS{idVendor}=="1d6b"
ATTRS{idProduct}=="0002"
ATTRS{bcdDevice}=="0206"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="6"
ATTRS{devnum}==“1"
ATTRS{version}==” 2.00"
ATTRS{maxchild}=="10"
ATTRS{quirks}=="0x0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="Linux 2.6.26.081113 ehci_hcd"
ATTRS{product}=="EHCI Host Controller"
ATTRS{serial}=="0000:00:13.5"
ATTRS{authorized_default}==“1”
looking at parent device ‘/devices/pci0000:00/0000:00:13.5’:
KERNELS=="0000:00:13.5"
SUBSYSTEMS=="pci"
DRIVERS=="ehci_hcd"
ATTRS{vendor}=="0x1002"
ATTRS{device}=="0x4386"
ATTRS{subsystem_vendor}=="0x1002"
ATTRS{subsystem_device}=="0x4386"
ATTRS{class}=="0x0c0320"
ATTRS{irq}=="19"
ATTRS{local_cpus}=="ff"
ATTRS{local_cpulist}=="0-7"
ATTRS{modalias}=="pci:v00001002d00004386sv00001002sd00004386bc0Csc03i20"
ATTRS{enable}==“1"
ATTRS{broken_parity_status}==“0"
ATTRS{msi_bus}==””
looking at parent device ‘/devices/pci0000:00’:
KERNELS==“pci0000:00"
SUBSYSTEMS==”“
DRIVERS==”"[/code]
Deuxième clef
[code]# udevinfo -a -p $(udevinfo -q path -n /dev/ttyUSB0)
Udevinfo starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device ‘/class/tty/ttyUSB0’:
KERNEL==“ttyUSB0"
SUBSYSTEM==“tty"
DRIVER==””
looking at parent device ‘/devices/pci0000:00/0000:00:13.5/usb6/6-2/6-2:1.0/ttyUSB0’:
KERNELS=="ttyUSB0"
SUBSYSTEMS=="usb-serial"
DRIVERS=="generic"
ATTRS{port_number}==“0”
looking at parent device ‘/devices/pci0000:00/0000:00:13.5/usb6/6-2/6-2:1.0’:
KERNELS=="6-2:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="usbserial_generic"
ATTRS{bInterfaceNumber}==“00"
ATTRS{bAlternateSetting}==” 0"
ATTRS{bNumEndpoints}=="02"
ATTRS{bInterfaceClass}=="08"
ATTRS{bInterfaceSubClass}=="05"
ATTRS{bInterfaceProtocol}=="50"
ATTRS{modalias}==“usb:v19D2p2000d0000dc00dsc00dp00ic08isc05ip50”
looking at parent device ‘/devices/pci0000:00/0000:00:13.5/usb6/6-2’:
KERNELS=="6-2"
SUBSYSTEMS=="usb"
DRIVERS==“usb"
ATTRS{configuration}==”“
ATTRS{bNumInterfaces}==” 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}=="500mA"
ATTRS{urbnum}=="9"
ATTRS{idVendor}=="19d2"
ATTRS{idProduct}=="2000"
ATTRS{bcdDevice}=="0000"
ATTRS{bDeviceClass}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="6"
ATTRS{devnum}==“4"
ATTRS{version}==” 2.00"
ATTRS{maxchild}=="0"
ATTRS{quirks}=="0x0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="ZTE, Incorporated"
ATTRS{product}==“ZTE CDMA Technologies MSM”
looking at parent device ‘/devices/pci0000:00/0000:00:13.5/usb6’:
KERNELS=="usb6"
SUBSYSTEMS=="usb"
DRIVERS==“usb"
ATTRS{configuration}==”“
ATTRS{bNumInterfaces}==” 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}==“e0"
ATTRS{bMaxPower}==” 0mA"
ATTRS{urbnum}=="90"
ATTRS{idVendor}=="1d6b"
ATTRS{idProduct}=="0002"
ATTRS{bcdDevice}=="0206"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="6"
ATTRS{devnum}==“1"
ATTRS{version}==” 2.00"
ATTRS{maxchild}=="10"
ATTRS{quirks}=="0x0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="Linux 2.6.26.081113 ehci_hcd"
ATTRS{product}=="EHCI Host Controller"
ATTRS{serial}=="0000:00:13.5"
ATTRS{authorized_default}==“1”
looking at parent device ‘/devices/pci0000:00/0000:00:13.5’:
KERNELS=="0000:00:13.5"
SUBSYSTEMS=="pci"
DRIVERS=="ehci_hcd"
ATTRS{vendor}=="0x1002"
ATTRS{device}=="0x4386"
ATTRS{subsystem_vendor}=="0x1002"
ATTRS{subsystem_device}=="0x4386"
ATTRS{class}=="0x0c0320"
ATTRS{irq}=="19"
ATTRS{local_cpus}=="ff"
ATTRS{local_cpulist}=="0-7"
ATTRS{modalias}=="pci:v00001002d00004386sv00001002sd00004386bc0Csc03i20"
ATTRS{enable}==“1"
ATTRS{broken_parity_status}==“0"
ATTRS{msi_bus}==””
looking at parent device ‘/devices/pci0000:00’:
KERNELS==“pci0000:00"
SUBSYSTEMS==”“
DRIVERS==”"[/code]
J’avoue, c’est un peu bourrin comme post. Merci à ceux qui l’on lu !
Je suis sous debian 2.6.26 arch i686, proc AMD Sempron (pas utile mais bon)