From 3b4a82e97d6722f819288eb419eadfaacf86f01e Mon Sep 17 00:00:00 2001 From: Andrew Bird Date: Wed, 25 Apr 2012 12:00:15 +0100 Subject: [PATCH] Udev rule update - be more like MM, avoids usb_modeswitch bug The usb_modeswitch rules call the /lib/udev/usb_modeswitch script with an argument constructed out of '%b/%k'. Unfortunately when %b is populated usb_modeswitch no longer finds the device, so switching is not performed. Wader was using the udev rules language in such a way that %b was populated for example: Modem Manager: /lib/udev/usb_modeswitch '/1.3:1.0' Wader: /lib/udev/usb_modeswitch '1.3:1.0/1.3:1.0' The easy fix for us is to rewrite our udev rules to be more like Modem Manager's, but potentially the same problem could be caused by an unrelated udev rule. --- resources/udev/77-wader-dell.rules | 20 ++++++++ resources/udev/77-wader-huawei.rules | 83 ++++++++++++++++---------------- resources/udev/77-wader-novatel.rules | 45 ++++++++---------- resources/udev/77-wader-zte.rules | 84 ++++++++++++++++---------------- 4 files changed, 123 insertions(+), 109 deletions(-) create mode 100644 resources/udev/77-wader-dell.rules diff --git a/resources/udev/77-wader-dell.rules b/resources/udev/77-wader-dell.rules new file mode 100644 index 0000000..c11aeb0 --- /dev/null +++ b/resources/udev/77-wader-dell.rules @@ -0,0 +1,20 @@ +# Used to tag the ports with their usage, based on USB interface numbers. +# This can remove the need to probe at all, but generally it's used to +# ensure that the data/modem port is identified + +ACTION!="add|change", GOTO="wader_dell_end" +SUBSYSTEM!="tty", GOTO="wader_dell_end" + +SUBSYSTEMS=="usb", ATTRS{idVendor}=="413c", GOTO="wader_dell_vendormatch" +GOTO="wader_dell_end" + +LABEL="wader_dell_vendormatch" +SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", \ + ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}" + +# Dell D5520 module (rebranded Novatel Expedite EU870) +# Needs confirmation +ATTRS{idProduct}=="8137", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="8137", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" + +LABEL="wader_dell_end" diff --git a/resources/udev/77-wader-huawei.rules b/resources/udev/77-wader-huawei.rules index a930507..22e489c 100644 --- a/resources/udev/77-wader-huawei.rules +++ b/resources/udev/77-wader-huawei.rules @@ -2,84 +2,83 @@ # This can remove the need to probe at all, but generally it's used to # ensure that the data/modem port is identified -ACTION!="add", GOTO="wader_huawei_end" +ACTION!="add|change", GOTO="wader_huawei_end" +SUBSYSTEM!="tty", GOTO="wader_huawei_end" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="12d1", GOTO="wader_huawei_vendormatch" +GOTO="wader_huawei_end" + +LABEL="wader_huawei_vendormatch" SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", \ ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}" - SUBSYSTEMS=="usb", ATTRS{bNumInterfaces}=="?*", \ ENV{.MM_USBNUMIFS}="$attr{bNumInterfaces}" -# Tag the interface with type -SUBSYSTEM!="tty", GOTO="wader_huawei_tty_end" - # Generic 0x1001 -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1001", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1001", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="1001", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="1001", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_AUX}="1" # Generic 0x1003 -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1003", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1003", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="1003", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="1003", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # E1692 -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140c", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140c", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="140c", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="140c", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_AUX}="1" # E510 -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1411", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1411", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="1411", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="1411", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_AUX}="1" # E1752 -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="141b", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="141b", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="141b", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="141b", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # Generic 0x1436 (so far seen E173, E1750) -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1436", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1436", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="1436", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="1436", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_AUX}="1" # K4505 -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1464", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1464", ENV{.MM_USBIFNUM}=="03", ENV{.MM_USBNUMIFS}==" 6", ENV{ID_MM_PORT_TYPE_AUX}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1464", ENV{.MM_USBIFNUM}=="04", ENV{.MM_USBNUMIFS}==" 7", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="1464", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="1464", ENV{.MM_USBIFNUM}=="03", ENV{.MM_USBNUMIFS}==" 6", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="1464", ENV{.MM_USBIFNUM}=="04", ENV{.MM_USBNUMIFS}==" 7", ENV{ID_MM_PORT_TYPE_AUX}="1" # K3765 -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1465", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1465", ENV{.MM_USBIFNUM}=="03", ENV{.MM_USBNUMIFS}==" 6", ENV{ID_MM_PORT_TYPE_AUX}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1465", ENV{.MM_USBIFNUM}=="04", ENV{.MM_USBNUMIFS}==" 7", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="1465", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="1465", ENV{.MM_USBIFNUM}=="03", ENV{.MM_USBNUMIFS}==" 6", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="1465", ENV{.MM_USBIFNUM}=="04", ENV{.MM_USBNUMIFS}==" 7", ENV{ID_MM_PORT_TYPE_AUX}="1" # E173 -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14a5", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14a5", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="14a5", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="14a5", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_AUX}="1" # E1820 -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14ac", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14ac", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="14ac", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="14ac", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_AUX}="1" # K3806 (breaks convention on ordering, but confirmed) -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14ae", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_AUX}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14ae", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="14ae", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="14ae", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_MODEM}="1" # K4605 -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14c6", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14c6", ENV{.MM_USBIFNUM}=="03", ENV{.MM_USBNUMIFS}==" 6", ENV{ID_MM_PORT_TYPE_AUX}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14c6", ENV{.MM_USBIFNUM}=="04", ENV{.MM_USBNUMIFS}==" 7", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="14c6", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="14c6", ENV{.MM_USBIFNUM}=="03", ENV{.MM_USBNUMIFS}==" 6", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="14c6", ENV{.MM_USBIFNUM}=="04", ENV{.MM_USBNUMIFS}==" 7", ENV{ID_MM_PORT_TYPE_AUX}="1" # K3770 -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14c9", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14c9", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="14c9", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="14c9", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_AUX}="1" # K3771 -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14ca", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14ca", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="14ca", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="14ca", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_AUX}="1" # K4510 -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14cb", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14cb", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="14cb", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="14cb", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_AUX}="1" # K4511 -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14cc", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14cc", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_AUX}="1" - -LABEL="wader_huawei_tty_end" +ATTRS{idProduct}=="14cc", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="14cc", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_AUX}="1" LABEL="wader_huawei_end" diff --git a/resources/udev/77-wader-novatel.rules b/resources/udev/77-wader-novatel.rules index 83b06cd..d476dc1 100644 --- a/resources/udev/77-wader-novatel.rules +++ b/resources/udev/77-wader-novatel.rules @@ -2,48 +2,43 @@ # This can remove the need to probe at all, but generally it's used to # ensure that the data/modem port is identified -ACTION!="add", GOTO="wader_novatel_end" +ACTION!="add|change", GOTO="wader_novatel_end" +SUBSYSTEM!="tty", GOTO="wader_novatel_end" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1410", GOTO="wader_novatel_vendormatch" +GOTO="wader_novatel_end" + +LABEL="wader_novatel_vendormatch" SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", \ ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}" -# Tag the interface with type -SUBSYSTEM!="tty", GOTO="wader_novatel_tty_end" - # U740 -ATTRS{idVendor}=="1410", ATTRS{idProduct}=="1400", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="1410", ATTRS{idProduct}=="1400", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="1400", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="1400", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # XU870 -ATTRS{idVendor}=="1410", ATTRS{idProduct}=="1430", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="1410", ATTRS{idProduct}=="1430", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="1430", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="1430", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # X950D -ATTRS{idVendor}=="1410", ATTRS{idProduct}=="1450", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="1410", ATTRS{idProduct}=="1450", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="1450", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="1450", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # EU870 module # Needs confirmation -#ATTRS{idVendor}=="1410", ATTRS{idProduct}=="2420", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -#ATTRS{idVendor}=="1410", ATTRS{idProduct}=="2420", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="2420", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="2420", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # MC950D -ATTRS{idVendor}=="1410", ATTRS{idProduct}=="4400", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="1410", ATTRS{idProduct}=="4400", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="4400", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="4400", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # Generic PID (MiFi2352, MC990D) -ATTRS{idVendor}=="1410", ATTRS{idProduct}=="7001", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="1410", ATTRS{idProduct}=="7001", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="7001", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="7001", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # MiFi2352 (Vodafone only PID) -ATTRS{idVendor}=="1410", ATTRS{idProduct}=="7003", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="1410", ATTRS{idProduct}=="7003", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" - -# Dell D5520 module (rebranded Novatel Expedite EU870) -# Needs confirmation -#ATTRS{idVendor}=="413c", ATTRS{idProduct}=="8137", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" -#ATTRS{idVendor}=="413c", ATTRS{idProduct}=="8137", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" - -LABEL="wader_novatel_tty_end" +ATTRS{idProduct}=="7003", ENV{.MM_USBIFNUM}=="00", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="7003", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" LABEL="wader_novatel_end" diff --git a/resources/udev/77-wader-zte.rules b/resources/udev/77-wader-zte.rules index c34901f..e708eaa 100644 --- a/resources/udev/77-wader-zte.rules +++ b/resources/udev/77-wader-zte.rules @@ -2,70 +2,70 @@ # This can remove the need to probe at all, but generally it's used to # ensure that the data/modem port is identified -ACTION!="add", GOTO="wader_zte_end" +ACTION!="add|change", GOTO="wader_zte_end" +SUBSYSTEM!="tty", GOTO="wader_zte_end" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="19d2", GOTO="wader_zte_vendormatch" +GOTO="wader_zte_end" + +LABEL="wader_zte_vendormatch" SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", \ ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}" -# Tag the interface with type -SUBSYSTEM!="tty", GOTO="wader_zte_tty_end" - # ONDA MT503HS -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0002", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0002", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="0002", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="0002", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_AUX}="1" # MF668 -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0017", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0017", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="0017", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="0017", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # MF626, MF636, MF637U and others -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0031", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0031", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="0031", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="0031", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # ONDA MSA405HS -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0037", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0037", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="0037", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="0037", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # K3520-Z -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0025", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0025", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_AUX}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0055", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0055", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="0025", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="0025", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="0055", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="0055", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_AUX}="1" # K3565-Z -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0049", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0049", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_AUX}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0052", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0052", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0063", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0063", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="0049", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="0049", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="0052", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="0052", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="0063", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="0063", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # K3570-Z -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1008", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1008", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="1008", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="1008", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # K3571-Z -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1010", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1010", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="1010", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="1010", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # K3765-Z -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="2002", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="2002", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="2002", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="2002", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # K4505-Z -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0016", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0016", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0104", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0104", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="0016", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="0016", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="0104", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="0104", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # MF180 -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="2003", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="2003", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="2003", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="2003", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # MF181 -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0117", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0117", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="0117", ENV{.MM_USBIFNUM}=="02", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="0117", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" # MF190 -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0082", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0082", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0124", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_MODEM}="1" -ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0124", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" - -LABEL="wader_zte_tty_end" +ATTRS{idProduct}=="0082", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="0082", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" +ATTRS{idProduct}=="0124", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_PORT_TYPE_MODEM}="1" +ATTRS{idProduct}=="0124", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_PORT_TYPE_AUX}="1" LABEL="wader_zte_end" -- 1.7.6.5