summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDidier Raboud <odyx@debian.org>2014-06-09 11:06:27 +0200
committerDidier Raboud <odyx@debian.org>2014-06-09 11:06:27 +0200
commit95010ef64cd7b2b843285e250b09e6296455c77d (patch)
tree9a71ee9a4a0a16eb65bc8806f48fec69267d5cd8
parenteae9ce74c8b3a58b172e87cd251fe3ad97b952f2 (diff)
Imported Upstream version 20140529
-rw-r--r--40-usb_modeswitch.rules222
-rw-r--r--ChangeLog16
-rw-r--r--Makefile2
-rw-r--r--README24
-rw-r--r--REFERENCE203
-rwxr-xr-xgen-rules.tcl11
-rw-r--r--usb_modeswitch.d/0408:f0004
-rw-r--r--usb_modeswitch.d/0408:f0014
-rw-r--r--usb_modeswitch.d/0482:024d1
-rw-r--r--usb_modeswitch.d/04cc:225c1
-rw-r--r--usb_modeswitch.d/04cc:226e2
-rw-r--r--usb_modeswitch.d/04cc:226f2
-rw-r--r--usb_modeswitch.d/04fc:21404
-rw-r--r--usb_modeswitch.d/057c:62ff2
-rw-r--r--usb_modeswitch.d/0b3c:f00c4
-rw-r--r--usb_modeswitch.d/0b3c:f0174
-rw-r--r--usb_modeswitch.d/0bdb:190d2
-rw-r--r--usb_modeswitch.d/0bdb:19102
-rw-r--r--usb_modeswitch.d/0e8d:0002:uPr=MT4
-rw-r--r--usb_modeswitch.d/0fce:d0cf2
-rw-r--r--usb_modeswitch.d/0fce:d0df2
-rw-r--r--usb_modeswitch.d/0fd1:10001
-rw-r--r--usb_modeswitch.d/12d1:#android3
-rw-r--r--usb_modeswitch.d/12d1:#linux3
-rw-r--r--usb_modeswitch.d/12d1:10091
-rw-r--r--usb_modeswitch.d/12d1:101e2
-rw-r--r--usb_modeswitch.d/12d1:14133
-rw-r--r--usb_modeswitch.d/12d1:14141
-rw-r--r--usb_modeswitch.d/12d1:14462
-rw-r--r--usb_modeswitch.d/12d1:14492
-rw-r--r--usb_modeswitch.d/12d1:14ad2
-rw-r--r--usb_modeswitch.d/12d1:14b52
-rw-r--r--usb_modeswitch.d/12d1:14b72
-rw-r--r--usb_modeswitch.d/12d1:14ba2
-rw-r--r--usb_modeswitch.d/12d1:14c12
-rw-r--r--usb_modeswitch.d/12d1:14c32
-rw-r--r--usb_modeswitch.d/12d1:14c42
-rw-r--r--usb_modeswitch.d/12d1:14c52
-rw-r--r--usb_modeswitch.d/12d1:14d12
-rw-r--r--usb_modeswitch.d/12d1:14fe2
-rw-r--r--usb_modeswitch.d/12d1:15052
-rw-r--r--usb_modeswitch.d/12d1:151a2
-rw-r--r--usb_modeswitch.d/12d1:15202
-rw-r--r--usb_modeswitch.d/12d1:15212
-rw-r--r--usb_modeswitch.d/12d1:15232
-rw-r--r--usb_modeswitch.d/12d1:15262
-rw-r--r--usb_modeswitch.d/12d1:15532
-rw-r--r--usb_modeswitch.d/12d1:15572
-rw-r--r--usb_modeswitch.d/12d1:155b2
-rw-r--r--usb_modeswitch.d/12d1:156a2
-rw-r--r--usb_modeswitch.d/12d1:157c2
-rw-r--r--usb_modeswitch.d/12d1:157d2
-rw-r--r--usb_modeswitch.d/12d1:15834
-rw-r--r--usb_modeswitch.d/12d1:15ca4
-rw-r--r--usb_modeswitch.d/12d1:15e74
-rw-r--r--usb_modeswitch.d/12d1:1c0b2
-rw-r--r--usb_modeswitch.d/12d1:1c1b2
-rw-r--r--usb_modeswitch.d/12d1:1c242
-rw-r--r--usb_modeswitch.d/12d1:1d501
-rw-r--r--usb_modeswitch.d/12d1:1f012
-rw-r--r--usb_modeswitch.d/12d1:1f032
-rw-r--r--usb_modeswitch.d/12d1:1f112
-rw-r--r--usb_modeswitch.d/12d1:1f152
-rw-r--r--usb_modeswitch.d/12d1:1f162
-rw-r--r--usb_modeswitch.d/12d1:1f172
-rw-r--r--usb_modeswitch.d/12d1:1f182
-rw-r--r--usb_modeswitch.d/12d1:1f192
-rw-r--r--usb_modeswitch.d/12d1:1f1b2
-rw-r--r--usb_modeswitch.d/12d1:1f1c4
-rw-r--r--usb_modeswitch.d/12d1:1f1d2
-rw-r--r--usb_modeswitch.d/12d1:1f1e2
-rw-r--r--usb_modeswitch.d/1410:50554
-rw-r--r--usb_modeswitch.d/19d2:12324
-rw-r--r--usb_modeswitch.d/1bbb:f0172
-rw-r--r--usb_modeswitch.d/1c9e:91014
-rw-r--r--usb_modeswitch.d/1c9e:94014
-rw-r--r--usb_modeswitch.d/1c9e:9d003
-rw-r--r--usb_modeswitch.d/1c9e:f0006
-rw-r--r--usb_modeswitch.d/1c9e:f000:uMa=USB_Modem5
-rw-r--r--usb_modeswitch.d/1edf:60033
-rw-r--r--usb_modeswitch.d/1fac:00321
-rw-r--r--usb_modeswitch.d/1fac:01511
-rw-r--r--usb_modeswitch.d/2001:a80b1
-rw-r--r--usb_modeswitch.d/2020:f00e4
-rw-r--r--usb_modeswitch.d/2020:f00f5
-rw-r--r--usb_modeswitch.d/2077:f0005
-rw-r--r--usb_modeswitch.d/230d:00011
-rw-r--r--usb_modeswitch.d/230d:00071
-rw-r--r--usb_modeswitch.d/230d:01011
-rw-r--r--usb_modeswitch.d/23a2:10104
90 files changed, 447 insertions, 237 deletions
diff --git a/40-usb_modeswitch.rules b/40-usb_modeswitch.rules
index d24a77d..e122ce9 100644
--- a/40-usb_modeswitch.rules
+++ b/40-usb_modeswitch.rules
@@ -1,6 +1,6 @@
-# Part of usb-modeswitch-data, version 20140327
+# Part of usb-modeswitch-data, version 20140529
#
-# Works with usb_modeswitch versions >= 2.1.0 (introduction of StandardEject)
+# Works with usb_modeswitch versions >= 2.2.0 (introduction of HuaweiNewMode)
#
ACTION!="add|change", GOTO="modeswitch_rules_end"
@@ -20,6 +20,8 @@ ATTR{bInterfaceClass}=="ff", ATTR{bInterfaceNumber}=="00", ATTRS{bNumConfigurati
ACTION!="add", GOTO="modeswitch_rules_end"
+# Generic entry for all Huawei devices
+ATTRS{idVendor}=="12d1", ATTR{bInterfaceNumber}=="00", ATTR{bInterfaceClass}=="08", RUN+="usb_modeswitch '%b/%k'"
# HP LaserJet Professional P1102
ATTR{idVendor}=="03f0", ATTR{idProduct}=="002a", RUN+="usb_modeswitch '%b/%k'"
@@ -36,6 +38,9 @@ ATTR{idVendor}=="0408", ATTR{idProduct}=="ea43", RUN+="usb_modeswitch '%b/%k'"
# Yota Router (Quanta 1QDLZZZ0ST2)
ATTR{idVendor}=="0408", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '%b/%k'"
+# SpeedUp SU-8500U
+ATTR{idVendor}=="0408", ATTR{idProduct}=="f001", RUN+="usb_modeswitch '%b/%k'"
+
# Nokia CS-10
ATTR{idVendor}=="0421", ATTR{idProduct}=="060c", RUN+="usb_modeswitch '%b/%k'"
@@ -78,6 +83,12 @@ ATTR{idVendor}=="04bb", ATTR{idProduct}=="bccd", RUN+="usb_modeswitch '%b/%k'"
# Alcatel-Lucent T930S
ATTR{idVendor}=="04cc", ATTR{idProduct}=="225c", RUN+="usb_modeswitch '%b/%k'"
+# Nexperia TM TD-SCDMA
+ATTR{idVendor}=="04cc", ATTR{idProduct}=="226e", RUN+="usb_modeswitch '%b/%k'"
+
+# Nexperia TM TD-SCDMA (Variant)
+ATTR{idVendor}=="04cc", ATTR{idProduct}=="226f", RUN+="usb_modeswitch '%b/%k'"
+
# Samsung GT-B1110
ATTR{idVendor}=="04e8", ATTR{idProduct}=="680c", RUN+="usb_modeswitch '%b/%k'"
@@ -87,6 +98,9 @@ ATTR{idVendor}=="04e8", ATTR{idProduct}=="689a", RUN+="usb_modeswitch '%b/%k'"
# Samsung U209
ATTR{idVendor}=="04e8", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '%b/%k'"
+# Sunplus Techn. SU-3200U
+ATTR{idVendor}=="04fc", ATTR{idProduct}=="2140", RUN+="usb_modeswitch '%b/%k'"
+
# AVM Fritz!Wlan USB Stick N v2
ATTR{idVendor}=="057c", ATTR{idProduct}=="62ff", RUN+="usb_modeswitch '%b/%k'"
@@ -96,7 +110,7 @@ ATTR{idVendor}=="057c", ATTR{idProduct}=="84ff", RUN+="usb_modeswitch '%b/%k'"
# Axesstel Modems (w/ initial idProduct 0x0010)
ATTR{idVendor}=="05c6", ATTR{idProduct}=="0010", RUN+="usb_modeswitch '%b/%k'"
-# Prolink P2000 CDMA, Samsung SGH-Z810, Older Option devices, Vertex Wireless 100 Series, AnyDATA devices, Bless UC165, Option GlobeTrotter GX0201, Celot K-300, Celot CT-680, StrongRising device
+# Prolink P2000 CDMA, Samsung SGH-Z810, older Option devices, Vertex Wireless 100 Series, AnyDATA devices, Bless UC165, Option GlobeTrotter GX0201, Celot K-300, Celot CT-680, StrongRising device
ATTR{idVendor}=="05c6", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '%b/%k'"
# HSDPA USB modem from dealextreme
@@ -123,7 +137,7 @@ ATTR{idVendor}=="0685", ATTR{idProduct}=="2000", RUN+="usb_modeswitch '%b/%k'"
# InfoCert Business Key (SmartCard/Reader emulation)
ATTR{idVendor}=="072f", ATTR{idProduct}=="100d", RUN+="usb_modeswitch '%b/%k'"
-# D-Link DWM-156 HSUPA 3.75G USB Modem
+# D-Link DWM-156 HSUPA 3.75G USB Modem
ATTR{idVendor}=="07d1", ATTR{idProduct}=="a800", RUN+="usb_modeswitch '%b/%k'"
# D-Link DWM-156 HSUPA 3.75G USB Modem
@@ -324,6 +338,18 @@ ATTR{idVendor}=="0b3c", ATTR{idProduct}=="c700", RUN+="usb_modeswitch '%b/%k'"
# Olivetti Olicard 145, 155
ATTR{idVendor}=="0b3c", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '%b/%k'"
+# Olivetti Olicard 500
+ATTR{idVendor}=="0b3c", ATTR{idProduct}=="f00c", RUN+="usb_modeswitch '%b/%k'"
+
+# Olivetti Olicard 160
+ATTR{idVendor}=="0b3c", ATTR{idProduct}=="f017", RUN+="usb_modeswitch '%b/%k'"
+
+# Ericsson F5521gw
+ATTR{idVendor}=="0bdb", ATTR{idProduct}=="190d", RUN+="usb_modeswitch '%b/%k'"
+
+# Ericsson F5521gw (Variant)
+ATTR{idVendor}=="0bdb", ATTR{idProduct}=="1910", RUN+="usb_modeswitch '%b/%k'"
+
# Atheros Wireless / Netgear WNDA3200
ATTR{idVendor}=="0cf3", ATTR{idProduct}=="20ff", RUN+="usb_modeswitch '%b/%k'"
@@ -336,7 +362,7 @@ ATTR{idVendor}=="0d46", ATTR{idProduct}=="45a5", RUN+="usb_modeswitch '%b/%k'"
# Mobile Action ("Smart Cable")
ATTR{idVendor}=="0df7", ATTR{idProduct}=="0800", RUN+="usb_modeswitch '%b/%k'"
-# MediaTek MT6276M
+# MediaTek MT6276M and others
ATTR{idVendor}=="0e8d", ATTR{idProduct}=="0002", RUN+="usb_modeswitch '%b/%k'"
# MediaTek Wimax USB Card
@@ -348,6 +374,9 @@ ATTR{idVendor}=="0fca", ATTR{idProduct}=="8020", RUN+="usb_modeswitch '%b/%k'"
# Sony Ericsson MD300
ATTR{idVendor}=="0fce", ATTR{idProduct}=="d0cf", RUN+="usb_modeswitch '%b/%k'"
+# Sony Ericsson EC400
+ATTR{idVendor}=="0fce", ATTR{idProduct}=="d0df", RUN+="usb_modeswitch '%b/%k'"
+
# Sony Ericsson MD400
ATTR{idVendor}=="0fce", ATTR{idProduct}=="d0e1", RUN+="usb_modeswitch '%b/%k'"
@@ -426,156 +455,6 @@ ATTR{idVendor}=="1199", ATTR{idProduct}=="0fff", RUN+="usb_modeswitch '%b/%k'"
# Digicom 8E4455 (and all Pirelli devices - EXPERIMENTAL)
ATTR{idVendor}=="1266", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '%b/%k'"
-# Huawei E169
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1001", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei E220, E230, E270, E870
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1003", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei V725 Phone (aka Vodafone 725)
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1009", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei U7510 / U7517
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="101e", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei U8220, T-Mobile Pulse (Android smartphone)
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1030", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei U8110 / Joy, Vodafone 845 (Android smartphone), for Android SDK
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1031", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei E180
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1414", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei, newer modems
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1446", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei E352
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1449", RUN+="usb_modeswitch '%b/%k'"
-
-# Vodafone (Huawei) K3806
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="14ad", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei E173 (Viettel 3G)
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="14b5", RUN+="usb_modeswitch '%b/%k'"
-
-# Vodafone (Huawei) K4511
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="14b7", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei E173u-2, E177
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="14ba", RUN+="usb_modeswitch '%b/%k'"
-
-# Vodafone (Huawei) K4605
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="14c1", RUN+="usb_modeswitch '%b/%k'"
-
-# K5005 Vodafone/Huawei
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="14c3", RUN+="usb_modeswitch '%b/%k'"
-
-# Vodafone/Huawei K3771
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="14c4", RUN+="usb_modeswitch '%b/%k'"
-
-# Vodafone (Huawei) K4510
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="14c5", RUN+="usb_modeswitch '%b/%k'"
-
-# Vodafone / Huawei K3770
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="14d1", RUN+="usb_modeswitch '%b/%k'"
-
-# T-Mobile NL (Huawei E352)
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="14fe", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei EC156, Huawei E372u-8
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1505", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei E392u-12, E3131 (Variant)
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="151a", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei K3765
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1520", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei K4505
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1521", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei R201
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1523", RUN+="usb_modeswitch '%b/%k'"
-
-# Vodafone / Huawei K3772
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1526", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei E1553
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1553", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei E173
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1557", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei E171
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="155b", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei E3276s-151 and E3251
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="156a", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei E3276-s150
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="157c", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei E3331
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="157d", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei U2800 Phone
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1805", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei E173s
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1c0b", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei GP02 (E587 Variant)
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1c1b", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei E173 (Moviestar)
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1c24", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei ET302
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1d50", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei ET8282, Huawei ET127
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1da1", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei E353 (3.se) and others
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1f01", RUN+="usb_modeswitch '%b/%k'"
-
-# KDDI (Huawei) HWD12 LTE
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1f03", RUN+="usb_modeswitch '%b/%k'"
-
-# Vodafone / Huawei K3773
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1f11", RUN+="usb_modeswitch '%b/%k'"
-
-# Vodafone K4305
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1f15", RUN+="usb_modeswitch '%b/%k'"
-
-# Vodafone K5150
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1f16", RUN+="usb_modeswitch '%b/%k'"
-
-# Vodafone K4201
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1f17", RUN+="usb_modeswitch '%b/%k'"
-
-# Vodafone K4202
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1f18", RUN+="usb_modeswitch '%b/%k'"
-
-# Vodafone K4606
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1f19", RUN+="usb_modeswitch '%b/%k'"
-
-# Vodafone / Huawei Kxxxx
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1f1b", RUN+="usb_modeswitch '%b/%k'"
-
-# Vodafone / Huawei Kxxxx
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1f1c", RUN+="usb_modeswitch '%b/%k'"
-
-# Vodafone / Huawei Kxxxx
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1f1d", RUN+="usb_modeswitch '%b/%k'"
-
-# Vodafone / Huawei Kxxxx
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="1f1e", RUN+="usb_modeswitch '%b/%k'"
-
-# Huawei BM358 WiMAX
-ATTR{idVendor}=="12d1", ATTR{idProduct}=="380b", RUN+="usb_modeswitch '%b/%k'"
-
# Cisco AM10 "Valet Connector"
ATTR{idVendor}=="1307", ATTR{idProduct}=="1169", RUN+="usb_modeswitch '%b/%k'"
@@ -597,6 +476,9 @@ ATTR{idVendor}=="1410", ATTR{idProduct}=="5031", RUN+="usb_modeswitch '%b/%k'"
# Novatel Generic MiFi 2352 / Vodafone MiFi 2352
ATTR{idVendor}=="1410", ATTR{idProduct}=="5041", RUN+="usb_modeswitch '%b/%k'"
+# Novatel MiFi 4082
+ATTR{idVendor}=="1410", ATTR{idProduct}=="5055", RUN+="usb_modeswitch '%b/%k'"
+
# Novatel Wireless MC545 HSPA, U679 LTE
ATTR{idVendor}=="1410", ATTR{idProduct}=="5059", RUN+="usb_modeswitch '%b/%k'"
@@ -748,6 +630,9 @@ ATTR{idVendor}=="19d2", ATTR{idProduct}=="1225", RUN+="usb_modeswitch '%b/%k'"
ATTR{idVendor}=="19d2", ATTR{idProduct}=="1227", RUN+="usb_modeswitch '%b/%k'"
# ZTE MFxxx
+ATTR{idVendor}=="19d2", ATTR{idProduct}=="1232", RUN+="usb_modeswitch '%b/%k'"
+
+# ZTE MFxxx
ATTR{idVendor}=="19d2", ATTR{idProduct}=="1233", RUN+="usb_modeswitch '%b/%k'"
# ZTE MF825A
@@ -804,7 +689,7 @@ ATTR{idVendor}=="1a8d", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '%b/%k'"
# BandRich BandLuxe C339
ATTR{idVendor}=="1a8d", ATTR{idProduct}=="2000", RUN+="usb_modeswitch '%b/%k'"
-# Hummer DTM5731, Aircard 901
+# Hummer DTM5731, Aircard 901
ATTR{idVendor}=="1ab7", ATTR{idProduct}=="5700", RUN+="usb_modeswitch '%b/%k'"
# EpiValley SEC-7089 (featured by Alegro and Starcomms / iZAP)
@@ -831,25 +716,34 @@ ATTR{idVendor}=="1bbb", ATTR{idProduct}=="f052", RUN+="usb_modeswitch '%b/%k'"
# Alcatel One Touch X020
ATTR{idVendor}=="1c9e", ATTR{idProduct}=="1001", RUN+="usb_modeswitch '%b/%k'"
-# Vibe 3G Modem
+# Vibe 3G Modem
ATTR{idVendor}=="1c9e", ATTR{idProduct}=="6061", RUN+="usb_modeswitch '%b/%k'"
+# Emobile D21LC (Variant)
+ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9101", RUN+="usb_modeswitch '%b/%k'"
+
# MyWave SW006 Sport Phone/Modem Combination
ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9200", RUN+="usb_modeswitch '%b/%k'"
+# Emobile D21LC
+ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9401", RUN+="usb_modeswitch '%b/%k'"
+
# Longcheer SU9800
ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9800", RUN+="usb_modeswitch '%b/%k'"
# Telewell TW-3G HSPA+, FS01BU 3G
ATTR{idVendor}=="1c9e", ATTR{idProduct}=="98ff", RUN+="usb_modeswitch '%b/%k'"
+# Prolink PCM100
+ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9d00", RUN+="usb_modeswitch '%b/%k'"
+
# BSNL Capitel
ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9e00", RUN+="usb_modeswitch '%b/%k'"
# Explay Slim
ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9e08", RUN+="usb_modeswitch '%b/%k'"
-# MobiData MBD-200HU and others
+# MobiData MBD-200HU and others, Longcheer/Longsoon (aka Omega Technology) devices
ATTR{idVendor}=="1c9e", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '%b/%k'"
# Qisda H21 Flying Beetle
@@ -927,19 +821,22 @@ ATTR{idVendor}=="2001", ATTR{idProduct}=="a80b", RUN+="usb_modeswitch '%b/%k'"
# Haier CE682 (EVDO)
ATTR{idVendor}=="201e", ATTR{idProduct}=="1023", RUN+="usb_modeswitch '%b/%k'"
-# Haier CE 100
+# Haier CE 100
ATTR{idVendor}=="201e", ATTR{idProduct}=="2009", RUN+="usb_modeswitch '%b/%k'"
# Mediatek MT6229
ATTR{idVendor}=="2020", ATTR{idProduct}=="0002", RUN+="usb_modeswitch '%b/%k'"
-# SpeedUp SU-8000U
+# SpeedUp SU-8000
ATTR{idVendor}=="2020", ATTR{idProduct}=="f00e", RUN+="usb_modeswitch '%b/%k'"
+# SpeedUp SU-8000U
+ATTR{idVendor}=="2020", ATTR{idProduct}=="f00f", RUN+="usb_modeswitch '%b/%k'"
+
# Changhong CH690
ATTR{idVendor}=="2077", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '%b/%k'"
-# Telenet 3G dongle (T&W WU160)
+# Telenet 3G dongle (T&W WU160) and others
ATTR{idVendor}=="2077", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '%b/%k'"
# StrongRising (China Telcom), Air FlexiNet
@@ -972,6 +869,9 @@ ATTR{idVendor}=="2357", ATTR{idProduct}=="0200", RUN+="usb_modeswitch '%b/%k'"
# TP-Link MA260
ATTR{idVendor}=="2357", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '%b/%k'"
+# Titan 3.5G
+ATTR{idVendor}=="23a2", ATTR{idProduct}=="1010", RUN+="usb_modeswitch '%b/%k'"
+
# Exiss Mobile E-190 series (made by C-motech)
ATTR{idVendor}=="8888", ATTR{idProduct}=="6500", RUN+="usb_modeswitch '%b/%k'"
diff --git a/ChangeLog b/ChangeLog
index 4f508e1..21b0889 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,20 @@
+20140529:
+ ATTENTION: requires usb-modeswitch version >= 2.2.0 due to new para-
+ meter HuaweiNewMode (further reducing config file size);
+ Added devices: Nexperia TM TD-SCDMA, Sunplus SU-3200U, Olivetti
+ Olicard 160 and Olicard 500, Ericsson F5521gw, Sony Ericsson EC400,
+ Huawei EC168, Huawei/Vod. W5101 Router, Huawei E3531, Huawei E3131
+ (Variant), Novatel MiFi 4082, Emobile D12LC, Emobile D21LC, Prolink
+ PCM100, Titan 3.5G, several nameless ZTE modems, several minor device
+ configuration corrections (thanks once again to Lars Melin for the
+ tedious device research and compilation!);
+ Substantial change in handling of Huawei devices - generic udev rule and
+ additional generic configuration files (as fallback for unknown models
+ or as OS-specific catch-all); see README for details
20140327:
Plenty of Huawei and ZTE devices added, several target IDs added (thanks
to Lars Melin for the compilation); fix for Option GI1515 (0af0:d001) to
- be used with usb-modeswitch >= 2.1.1; unified switching message for
- nearly all Huawei devices
+ be used with usb-modeswitch >= 2.1.1
20140129:
Minor bug fix in configs 19d2:0149 and 19d2:2000 (Lars Melin reported)
20140128:
diff --git a/Makefile b/Makefile
index e1b7380..2978d58 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
PROG = usb-modeswitch-data
-VERS = 20140327
+VERS = 20140529
RM = /bin/rm -f
PREFIX = $(DESTDIR)/usr
ETCDIR = $(DESTDIR)/etc
diff --git a/README b/README
index 81c510a..2c9b9ea 100644
--- a/README
+++ b/README
@@ -68,6 +68,23 @@ Example:
<vid>:<pid>:uPr=CDMA_Mo will match iProduct "CDMA Modem" or "MyCDMA_Mordor"
+Generic config files (per vendor ID):
+=====================================
+
+Introduced in program package 2.2.0, this feature allows config files with a
+name in the form <idVendor>:#<system flavour>. The default flavour is "linux".
+
+The system parameter is taken from "/proc/version". The main use currently is
+a sort of OS switch to treat all Huawei devices differently on Android.
+There is no guarantee though that the /proc/version information will always
+point to Android, so this method may change in future versions.
+
+Annother form of usage is a fallback if the device ID is yet unknown. For
+Huawei devices, the switching method is uniform and not likely to change,
+so it is possible to provide a generic configuration.
+
+Example files: see "12d1:#android" and "12d1:#linux"
+
Parameters used only in config files:
=====================================
@@ -88,6 +105,11 @@ DriverIDPath=<path to attribute>
Notes about specific devices:
=============================
+- Huawei devices have a generic entry in the rules file; also there are
+ generic config files for these devices (Linux/Android) as fall-back or
+ as OS-specific mode control. This was suggested and approved by the
+ manufacturer
+
- 1004:607f (LG KP500): switching message derived from report but untested
- 1266:1000 (Royaltek Q110): switching method very likely but unconfirmed
@@ -123,4 +145,4 @@ Or find it as the file COPYING in this folder.
-Last revised: 2013-06-02, Josua Dietze
+Last revised: 2014-05-29, Josua Dietze
diff --git a/REFERENCE b/REFERENCE
new file mode 100644
index 0000000..0fc8326
--- /dev/null
+++ b/REFERENCE
@@ -0,0 +1,203 @@
+Configuration File Reference for USB_ModeSwitch
+-----------------------------------------------
+
+Last modified: 2014-05-29
+
+
+
+General Rules:
+
+Numbers can be decimal or hexadecimal, Bulk message strings must be
+hexadecimal without prepended "0x". Digits 9-16 (command tag) in
+mass storage messages (starting with "55534243") are random; I set
+them to "12345678". Mind that you should make them unique if more
+than one MessageContent is used.
+
+-> ALL MISTYPED PARAMETERS AND OTHER ENTRIES ARE SILENTLY IGNORED <-
+
+
+
+Parameter Reference:
+
+Note: if there is a short command line flag for a parameter, then it
+is appended to the line. For the full command line parameter reference
+see the usb_modeswitch(1) man page.
+
+
+* DefaultVendor -v <hex number>
+* DefaultProduct -p <hex number>
+
+This is the ID the USB device shows after having been plugged in.
+The program needs this, either on the command line or in the config
+file; if not found -> no action.
+
+Note: newer config files do not contain these parameters because of
+the redundancy with regard to the config file name.
+
+
+* TargetVendor -V <hex number>
+* TargetProduct -P <hex number>
+
+These are the IDs of the USB device after successful mode switching.
+They are optional, but required for a proper success check
+
+
+* TargetProductList <comma separated hex strings without "0x">
+
+Like TargetProduct, but multiple targets
+
+
+* TargetClass -C <hex number>
+
+Some devices don't change their ID, only their layout. To check for a
+successfull mode switch, the class of the first interface is checked
+
+
+* MessageEndpoint -m <hex number>
+* ResponseEndpoint -r <hex number>
+
+A kind of address inside the interface to which the "message"
+(the sequence that does the actual switching) is directed or
+from which the reply is read if NeedResponse is active.
+OBSOLETE since version 0.9.7 due to autodetection, only useful for
+testing
+
+
+* MessageContent -M <hex string>
+
+A hex string containing the "message" sequence; it will be
+sent as a USB bulk transfer
+
+
+* MessageContent2, ...3 -2/-3 <hex string>
+
+Additional "messages". Use with "NeedResponse"!
+
+
+* ReleaseDelay -w <milliseconds>
+
+Waiting time after message transfers. Helps with some sensitive devices
+that don't want any traffic after the mode switch initialisation
+
+
+* NeedResponse <0/1> -n
+
+Some devices were reported to require receiving the response of the
+bulk transfer to do the switching properly. Usually not needed.
+
+
+* DetachStorageOnly <0/1> -d
+
+Some early devices just needed to be detached from the usb-storage
+driver to initiate the mode switching. Now practically obsolete for
+switching, but still comes handy sometimes
+
+
+* StandardEject <0/1> -K
+
+Sends a specific bulk message sequence representing the SCSI commands
+"ALLOW MEDIUM REMOVAL" and "START STOP UNIT", basically an eject
+action. Many modems are using this for mode switching
+
+
+* HuaweiMode <0/1> -H
+
+Some early Huawei devices can be switched by a special control
+message. Don't use with recent devices
+
+
+* HuaweiNewMode <0/1> -J
+
+The standard for all newer Huawei devices. Sends a specific bulk message,
+but different target layouts may be reached with variants of that
+message; use MessageContent for these
+
+
+* SonyMode <0/1> -O
+
+Some Sony-Ericsson devices can be switched by a special control
+message. May take a long time (20+ seconds).
+
+
+* SierraMode <0/1> -S
+* KobilMode <0/1> -T
+* GCTMode <0/1> -G
+* SequansMode <0/1> -N
+* MobileActionMode <0/1> -A
+* QisdaMode <0/1> -B
+* QuantaMode <0/1> -E
+* PantechMode <0/1> -F
+* BlackberryMode <0/1> -Z
+* CiscoMode <0/1> -L
+
+
+Flags to support devices that need special control messages.
+The names are referring to the respective manufacturers.
+
+
+* ResetUSB <0/1> -R
+
+Few devices or systems need a rougher treatment. If the switching seems
+to do something but your system does not reflect it, try this somewhat
+brutal method to do a reset after switching. May also be useful for
+all kinds of experiments
+
+
+* Configuration -u <hex number>
+
+Some devices are doing the "right" thing and provide different layouts
+in the standard-compliant way. They don't "restart", so don't have to be
+rediscovered by the system after the change. Strictly speaking, they are
+not doing a mode switch
+
+
+* Interface -i <hex number>
+* AltSetting -a <hex number>
+
+More USB parameter to help with tricky devices and for doing lots
+of cruel experiments; usually not needed ...
+
+
+Note:
+AltSetting/Configuration changes and ResetUSB are executed after all
+other steps and can be combined or used on their own (e.g. a reset
+might have the same effect as a manual replug)
+
+
+* InquireDevice <0|1> -I (enables inquiry)
+
+Prints out SCSI device attributes in addition to USB device attributes.
+These may be used later to tell apart ambiguous device IDs. Only needed
+for creating new configurations
+
+
+* CheckSuccess -s <number>
+
+Check continuously if the switch succeeded for max <number> seconds.
+If the target ID is given, the check waits for it to appear.
+Otherwise, the check waits for the device to "go away"; most devices
+vanish after switching and can't be accessed anymore. It also checks
+the bus/device count, trying to determine if the device "came back"
+
+Note: this feature is not used in the full-featured Linux package of
+usb_modeswitch where the success check is done by the wrapper script
+
+
+* NoDriverLoading <0|1> (no command line parameter)
+
+The binary tells the wrapper script NOT to check for and initiate
+binding of the serial driver after switching.
+Mostly useful for non-modem devices and newer modems which do not use
+the serial driver.
+
+
+* WaitBefore <seconds> (no command line parameter)
+
+Waiting time before taking any action. Helps with some sensitive setups.
+
+
+* NoMBIMCheck <0|1> (no command line parameter)
+
+Disable the check for new MBIM standard devices, which is always done
+by default.
+
diff --git a/gen-rules.tcl b/gen-rules.tcl
index 53e8b70..3ec405d 100755
--- a/gen-rules.tcl
+++ b/gen-rules.tcl
@@ -9,7 +9,7 @@
# Default version string
-set version "20140327"
+set version "20140529"
if {[lindex $argv 0] == "--set-version" && [regexp {\d\d\d\d\d\d\d\d} [lindex $argv 1]]} {
set version [lindex $argv 1]
@@ -35,7 +35,7 @@ set wc [open "40-usb_modeswitch.rules" w]
puts -nonewline $wc {# Part of usb-modeswitch-data, version }
puts $wc $version
puts $wc {#
-# Works with usb_modeswitch versions >= 2.1.0 (introduction of StandardEject)
+# Works with usb_modeswitch versions >= 2.2.0 (introduction of HuaweiNewMode)
#
ACTION!="add|change", GOTO="modeswitch_rules_end"
@@ -53,13 +53,18 @@ ATTR{bInterfaceClass}=="ff", ATTR{bInterfaceNumber}=="00", ATTRS{bNumConfigurati
# Don't continue on "change" event, prevent trigger by changed configuration
ACTION!="add", GOTO="modeswitch_rules_end"
-}
+
+
+# Generic entry for all Huawei devices
+ATTRS{idVendor}=="12d1", ATTR{bInterfaceNumber}=="00", ATTR{bInterfaceClass}=="08", RUN+="usb_modeswitch '%b/%k'"}
+
set vendorList ""
set dvid ""
foreach idfile $filelist {
if {![regexp -nocase {./([0-9A-F]{4}:[0-9A-F]{4})} $idfile d id]} {continue}
+ if [regexp -nocase {^12d1:} $id] {continue}
if [info exists entry($id)] {
append entry($id) ", "
}
diff --git a/usb_modeswitch.d/0408:f000 b/usb_modeswitch.d/0408:f000
index 0b18e44..49dad5f 100644
--- a/usb_modeswitch.d/0408:f000
+++ b/usb_modeswitch.d/0408:f000
@@ -1,4 +1,4 @@
# Yota Router (Quanta 1QDLZZZ0ST2)
TargetVendor=0x0408
-TargetProduct=0xd009
-MessageContent="5553424312345678000000000000061b004600000000000000000000000000"
+TargetProduct=0xea03
+QuantaMode=1
diff --git a/usb_modeswitch.d/0408:f001 b/usb_modeswitch.d/0408:f001
new file mode 100644
index 0000000..3cb57a0
--- /dev/null
+++ b/usb_modeswitch.d/0408:f001
@@ -0,0 +1,4 @@
+# SpeedUp SU-8500U
+TargetVendor=0x0408
+TargetProduct=0xea03
+QuantaMode=1
diff --git a/usb_modeswitch.d/0482:024d b/usb_modeswitch.d/0482:024d
index 9c69989..570794f 100644
--- a/usb_modeswitch.d/0482:024d
+++ b/usb_modeswitch.d/0482:024d
@@ -1,3 +1,2 @@
# Kyocera W06K CDMA modem
-TargetClass=0x02
Configuration=2
diff --git a/usb_modeswitch.d/04cc:225c b/usb_modeswitch.d/04cc:225c
index 9fba246..3f6e8ab 100644
--- a/usb_modeswitch.d/04cc:225c
+++ b/usb_modeswitch.d/04cc:225c
@@ -1,3 +1,2 @@
# Alcatel-Lucent T930S
-TargetClass=0xff
Configuration=2
diff --git a/usb_modeswitch.d/04cc:226e b/usb_modeswitch.d/04cc:226e
new file mode 100644
index 0000000..fe4bd3a
--- /dev/null
+++ b/usb_modeswitch.d/04cc:226e
@@ -0,0 +1,2 @@
+# Nexperia TM TD-SCDMA
+Configuration=2
diff --git a/usb_modeswitch.d/04cc:226f b/usb_modeswitch.d/04cc:226f
new file mode 100644
index 0000000..a65c5cf
--- /dev/null
+++ b/usb_modeswitch.d/04cc:226f
@@ -0,0 +1,2 @@
+# Nexperia TM TD-SCDMA (Variant)
+Configuration=2
diff --git a/usb_modeswitch.d/04fc:2140 b/usb_modeswitch.d/04fc:2140
new file mode 100644
index 0000000..cd9f724
--- /dev/null
+++ b/usb_modeswitch.d/04fc:2140
@@ -0,0 +1,4 @@
+# Sunplus Techn. SU-3200U
+TargetVendor=0x04fc
+TargetProduct=0x0615
+MessageContent="55534243123456782400000080000612000024000000000000000000000000"
diff --git a/usb_modeswitch.d/057c:62ff b/usb_modeswitch.d/057c:62ff
index 8381428..bdd3dc2 100644
--- a/usb_modeswitch.d/057c:62ff
+++ b/usb_modeswitch.d/057c:62ff
@@ -1,5 +1,5 @@
# AVM Fritz!Wlan USB Stick N v2
TargetVendor=0x057c
-TargetProduct=0x8501
+TargetProductList="8501,8502"
MessageContent="5553424312345678000000000000061b000000ff0000000000000000000000"
NoDriverLoading=1
diff --git a/usb_modeswitch.d/0b3c:f00c b/usb_modeswitch.d/0b3c:f00c
new file mode 100644
index 0000000..00f1298
--- /dev/null
+++ b/usb_modeswitch.d/0b3c:f00c
@@ -0,0 +1,4 @@
+# Olivetti Olicard 160
+TargetVendor=0x0b3c
+TargetProduct=0xc00a
+MessageContent="55534243123456788000000080000606f50402527000000000000000000000"
diff --git a/usb_modeswitch.d/0b3c:f017 b/usb_modeswitch.d/0b3c:f017
new file mode 100644
index 0000000..72df51d
--- /dev/null
+++ b/usb_modeswitch.d/0b3c:f017
@@ -0,0 +1,4 @@
+# Olivetti Olicard 500
+TargetVendor=0x0b3c
+TargetProduct=0xc00b
+StandardEject=1
diff --git a/usb_modeswitch.d/0bdb:190d b/usb_modeswitch.d/0bdb:190d
new file mode 100644
index 0000000..aa901b8
--- /dev/null
+++ b/usb_modeswitch.d/0bdb:190d
@@ -0,0 +1,2 @@
+# Ericsson F5521gw
+Configuration=2
diff --git a/usb_modeswitch.d/0bdb:1910 b/usb_modeswitch.d/0bdb:1910
new file mode 100644
index 0000000..5e9049e
--- /dev/null
+++ b/usb_modeswitch.d/0bdb:1910
@@ -0,0 +1,2 @@
+# Ericsson F5521gw (Variant)
+Configuration=2
diff --git a/usb_modeswitch.d/0e8d:0002:uPr=MT b/usb_modeswitch.d/0e8d:0002:uPr=MT
index 2ae333b..f23f468 100644
--- a/usb_modeswitch.d/0e8d:0002:uPr=MT
+++ b/usb_modeswitch.d/0e8d:0002:uPr=MT
@@ -1,4 +1,4 @@
-# MediaTek MT6276M
+# MediaTek MT6276M and others
TargetVendor=0x0e8d
-TargetProductList="00a1,00a2"
+TargetProductList="00a1,00a2,00a5"
MessageContent="555342431234567800000000000006f0010300000000000000000000000000"
diff --git a/usb_modeswitch.d/0fce:d0cf b/usb_modeswitch.d/0fce:d0cf
index 0f478d4..85dc2c8 100644
--- a/usb_modeswitch.d/0fce:d0cf
+++ b/usb_modeswitch.d/0fce:d0cf
@@ -1,4 +1,2 @@
# Sony Ericsson MD300
-TargetClass=0x02
-DetachStorageOnly=1
Configuration=3
diff --git a/usb_modeswitch.d/0fce:d0df b/usb_modeswitch.d/0fce:d0df
new file mode 100644
index 0000000..4bb9dca
--- /dev/null
+++ b/usb_modeswitch.d/0fce:d0df
@@ -0,0 +1,2 @@
+# Sony Ericsson EC400
+Configuration=2
diff --git a/usb_modeswitch.d/0fd1:1000 b/usb_modeswitch.d/0fd1:1000
index 17927bc..04101aa 100644
--- a/usb_modeswitch.d/0fd1:1000
+++ b/usb_modeswitch.d/0fd1:1000
@@ -1,3 +1,2 @@
# GW D301 (Advinne AMC)
-TargetClass=0xff
Configuration=3
diff --git a/usb_modeswitch.d/12d1:#android b/usb_modeswitch.d/12d1:#android
new file mode 100644
index 0000000..f7d7928
--- /dev/null
+++ b/usb_modeswitch.d/12d1:#android
@@ -0,0 +1,3 @@
+# Huawei generic for Android
+TargetVendor= 0x12d1
+MessageContent="55534243123456780000000000000011063000000100010000000000000000"
diff --git a/usb_modeswitch.d/12d1:#linux b/usb_modeswitch.d/12d1:#linux
new file mode 100644
index 0000000..78e7ea5
--- /dev/null
+++ b/usb_modeswitch.d/12d1:#linux
@@ -0,0 +1,3 @@
+# Huawei generic for Linux (fall-back for unknown products)
+TargetVendor= 0x12d1
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1009 b/usb_modeswitch.d/12d1:1009
index fa65548..2b03464 100644
--- a/usb_modeswitch.d/12d1:1009
+++ b/usb_modeswitch.d/12d1:1009
@@ -1,4 +1,3 @@
# Huawei V725 Phone (aka Vodafone 725)
TargetClass=0xff
HuaweiMode=1
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
diff --git a/usb_modeswitch.d/12d1:101e b/usb_modeswitch.d/12d1:101e
index 7afdd13..5a03171 100644
--- a/usb_modeswitch.d/12d1:101e
+++ b/usb_modeswitch.d/12d1:101e
@@ -1,3 +1,3 @@
# Huawei U7510 / U7517
TargetClass=0xff
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1413 b/usb_modeswitch.d/12d1:1413
new file mode 100644
index 0000000..1158582
--- /dev/null
+++ b/usb_modeswitch.d/12d1:1413
@@ -0,0 +1,3 @@
+# Huawei EC168
+TargetClass=0xff
+HuaweiMode=1
diff --git a/usb_modeswitch.d/12d1:1414 b/usb_modeswitch.d/12d1:1414
index 8cd0edd..742d75d 100644
--- a/usb_modeswitch.d/12d1:1414
+++ b/usb_modeswitch.d/12d1:1414
@@ -1,4 +1,3 @@
# Huawei E180
TargetClass=0xff
HuaweiMode=1
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
diff --git a/usb_modeswitch.d/12d1:1446 b/usb_modeswitch.d/12d1:1446
index b31ea2e..01898e9 100644
--- a/usb_modeswitch.d/12d1:1446
+++ b/usb_modeswitch.d/12d1:1446
@@ -1,4 +1,4 @@
# Huawei, newer modems
TargetVendor=0x12d1
TargetProductList="1001,1406,140b,140c,1412,141b,1432,1433,1436,14ac,1506,150c,1511"
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1449 b/usb_modeswitch.d/12d1:1449
index bbc687a..1713857 100644
--- a/usb_modeswitch.d/12d1:1449
+++ b/usb_modeswitch.d/12d1:1449
@@ -1,4 +1,4 @@
# Huawei E352
TargetVendor=0x12d1
TargetProduct=0x1444
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:14ad b/usb_modeswitch.d/12d1:14ad
index 4106e60..e3d4328 100644
--- a/usb_modeswitch.d/12d1:14ad
+++ b/usb_modeswitch.d/12d1:14ad
@@ -1,4 +1,4 @@
# Vodafone (Huawei) K3806
TargetVendor=0x12d1
TargetProduct=0x14ae
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:14b5 b/usb_modeswitch.d/12d1:14b5
index 9a251c5..322da5f 100644
--- a/usb_modeswitch.d/12d1:14b5
+++ b/usb_modeswitch.d/12d1:14b5
@@ -1,4 +1,4 @@
# Huawei E173 (Viettel 3G)
TargetVendor=0x12d1
TargetProductList="14a8,14aa"
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:14b7 b/usb_modeswitch.d/12d1:14b7
index 07151fa..e9f7cee 100644
--- a/usb_modeswitch.d/12d1:14b7
+++ b/usb_modeswitch.d/12d1:14b7
@@ -1,4 +1,4 @@
# Vodafone (Huawei) K4511
TargetVendor=0x12d1
TargetProduct=0x14cc
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:14ba b/usb_modeswitch.d/12d1:14ba
index 93a645f..a2c257e 100644
--- a/usb_modeswitch.d/12d1:14ba
+++ b/usb_modeswitch.d/12d1:14ba
@@ -1,4 +1,4 @@
# Huawei E173u-2, E177
TargetVendor=0x12d1
TargetProduct=0x14d2
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:14c1 b/usb_modeswitch.d/12d1:14c1
index b199c29..309830f 100644
--- a/usb_modeswitch.d/12d1:14c1
+++ b/usb_modeswitch.d/12d1:14c1
@@ -1,4 +1,4 @@
# Vodafone (Huawei) K4605
TargetVendor=0x12d1
TargetProduct=0x14c6
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:14c3 b/usb_modeswitch.d/12d1:14c3
index 7fe1c1a..413e8d2 100644
--- a/usb_modeswitch.d/12d1:14c3
+++ b/usb_modeswitch.d/12d1:14c3
@@ -1,4 +1,4 @@
# K5005 Vodafone/Huawei
TargetVendor=0x12d1
TargetProduct=0x14c8
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:14c4 b/usb_modeswitch.d/12d1:14c4
index aeebac1..e7ffc66 100644
--- a/usb_modeswitch.d/12d1:14c4
+++ b/usb_modeswitch.d/12d1:14c4
@@ -1,4 +1,4 @@
# Vodafone/Huawei K3771
TargetVendor=0x12d1
TargetProduct=0x14ca
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:14c5 b/usb_modeswitch.d/12d1:14c5
index 60fda49..17ecd3c 100644
--- a/usb_modeswitch.d/12d1:14c5
+++ b/usb_modeswitch.d/12d1:14c5
@@ -1,4 +1,4 @@
# Vodafone (Huawei) K4510
TargetVendor=0x12d1
TargetProduct=0x14cb
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:14d1 b/usb_modeswitch.d/12d1:14d1
index d43548f..2ab14e6 100644
--- a/usb_modeswitch.d/12d1:14d1
+++ b/usb_modeswitch.d/12d1:14d1
@@ -1,4 +1,4 @@
# Vodafone / Huawei K3770
TargetVendor=0x12d1
TargetProduct=0x14c9
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:14fe b/usb_modeswitch.d/12d1:14fe
index 44eeb4c..bffcfe2 100644
--- a/usb_modeswitch.d/12d1:14fe
+++ b/usb_modeswitch.d/12d1:14fe
@@ -1,4 +1,4 @@
# T-Mobile NL (Huawei E352)
TargetVendor=0x12d1
TargetProductList="1506,150f,151d"
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1505 b/usb_modeswitch.d/12d1:1505
index 2cdfb99..ab5e1cd 100644
--- a/usb_modeswitch.d/12d1:1505
+++ b/usb_modeswitch.d/12d1:1505
@@ -1,4 +1,4 @@
# Huawei EC156, Huawei E372u-8
TargetVendor=0x12d1
TargetProductList="140b,140c,1506,150f,150a"
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:151a b/usb_modeswitch.d/12d1:151a
index dd0c098..dcff626 100644
--- a/usb_modeswitch.d/12d1:151a
+++ b/usb_modeswitch.d/12d1:151a
@@ -1,4 +1,4 @@
# Huawei E392u-12, E3131 (Variant)
TargetVendor=0x12d1
TargetProductList="151b,151d"
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1520 b/usb_modeswitch.d/12d1:1520
index 9288b55..d03f821 100644
--- a/usb_modeswitch.d/12d1:1520
+++ b/usb_modeswitch.d/12d1:1520
@@ -1,4 +1,4 @@
# Huawei K3765
TargetVendor=0x12d1
TargetProduct=0x1465
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1521 b/usb_modeswitch.d/12d1:1521
index 68563f1..620690c 100644
--- a/usb_modeswitch.d/12d1:1521
+++ b/usb_modeswitch.d/12d1:1521
@@ -1,4 +1,4 @@
# Huawei K4505
TargetVendor=0x12d1
TargetProduct=0x1464
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1523 b/usb_modeswitch.d/12d1:1523
index 1f9fcd3..0eb4b7a 100644
--- a/usb_modeswitch.d/12d1:1523
+++ b/usb_modeswitch.d/12d1:1523
@@ -1,4 +1,4 @@
# Huawei R201
TargetVendor=0x12d1
TargetProduct=0x1491
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1526 b/usb_modeswitch.d/12d1:1526
index 2d18516..60b8457 100644
--- a/usb_modeswitch.d/12d1:1526
+++ b/usb_modeswitch.d/12d1:1526
@@ -1,4 +1,4 @@
# Vodafone / Huawei K3772
TargetVendor=0x12d1
TargetProduct=0x14cf
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1553 b/usb_modeswitch.d/12d1:1553
index a37fcac..0d2552e 100644
--- a/usb_modeswitch.d/12d1:1553
+++ b/usb_modeswitch.d/12d1:1553
@@ -1,4 +1,4 @@
# Huawei E1553
TargetVendor=0x12d1
TargetProduct=0x1001
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1557 b/usb_modeswitch.d/12d1:1557
index 8446e55..beef342 100644
--- a/usb_modeswitch.d/12d1:1557
+++ b/usb_modeswitch.d/12d1:1557
@@ -1,4 +1,4 @@
# Huawei E173
TargetVendor=0x12d1
TargetProduct=0x14a5
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:155b b/usb_modeswitch.d/12d1:155b
index 66e13e1..d10d02d 100644
--- a/usb_modeswitch.d/12d1:155b
+++ b/usb_modeswitch.d/12d1:155b
@@ -1,4 +1,4 @@
# Huawei E171
TargetVendor=0x12d1
TargetProduct=0x1506
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:156a b/usb_modeswitch.d/12d1:156a
index 8118978..55e6d38 100644
--- a/usb_modeswitch.d/12d1:156a
+++ b/usb_modeswitch.d/12d1:156a
@@ -1,4 +1,4 @@
# Huawei E3276s-151 and E3251
TargetVendor=0x12d1
TargetProductList="156b,156c"
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:157c b/usb_modeswitch.d/12d1:157c
index 1272b41..35d811d 100644
--- a/usb_modeswitch.d/12d1:157c
+++ b/usb_modeswitch.d/12d1:157c
@@ -1,4 +1,4 @@
# Huawei E3276-s150
TargetVendor=0x12d1
TargetProduct=0x1506
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:157d b/usb_modeswitch.d/12d1:157d
index 940f75e..021ae70 100644
--- a/usb_modeswitch.d/12d1:157d
+++ b/usb_modeswitch.d/12d1:157d
@@ -1,4 +1,4 @@
# Huawei E3331
TargetVendor=0x12d1
TargetProduct=0x14db
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1583 b/usb_modeswitch.d/12d1:1583
new file mode 100644
index 0000000..d45b089
--- /dev/null
+++ b/usb_modeswitch.d/12d1:1583
@@ -0,0 +1,4 @@
+# Vodafone / Huawei W5101 Router
+TargetVendor=0x12d1
+TargetProduct=0x1589
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:15ca b/usb_modeswitch.d/12d1:15ca
new file mode 100644
index 0000000..cf9da86
--- /dev/null
+++ b/usb_modeswitch.d/12d1:15ca
@@ -0,0 +1,4 @@
+# Huawei E3131
+TargetVendor=0x12d1
+TargetProduct=0x1506
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:15e7 b/usb_modeswitch.d/12d1:15e7
new file mode 100644
index 0000000..6be0d6f
--- /dev/null
+++ b/usb_modeswitch.d/12d1:15e7
@@ -0,0 +1,4 @@
+# Huawei E3531
+TargetVendor=0x12d1
+TargetProduct=0x1506
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1c0b b/usb_modeswitch.d/12d1:1c0b
index f39f2dd..9b96b76 100644
--- a/usb_modeswitch.d/12d1:1c0b
+++ b/usb_modeswitch.d/12d1:1c0b
@@ -1,4 +1,4 @@
# Huawei E173s
TargetVendor=0x12d1
TargetProductList="1c05,1c07,1c08,1c10"
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1c1b b/usb_modeswitch.d/12d1:1c1b
index 5f34b99..579e8ef 100644
--- a/usb_modeswitch.d/12d1:1c1b
+++ b/usb_modeswitch.d/12d1:1c1b
@@ -1,5 +1,5 @@
# Huawei GP02 (E587 Variant)
TargetVendor=0x12d1
TargetProduct=0x1506
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
NoDriverLoading=1
diff --git a/usb_modeswitch.d/12d1:1c24 b/usb_modeswitch.d/12d1:1c24
index 71c8d7f..c8689cd 100644
--- a/usb_modeswitch.d/12d1:1c24
+++ b/usb_modeswitch.d/12d1:1c24
@@ -1,4 +1,4 @@
# Huawei E173 (Moviestar)
TargetVendor=0x12d1
TargetProduct=0x1c12
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1d50 b/usb_modeswitch.d/12d1:1d50
index c9a4f59..b218355 100644
--- a/usb_modeswitch.d/12d1:1d50
+++ b/usb_modeswitch.d/12d1:1d50
@@ -1,3 +1,2 @@
# Huawei ET302
-TargetClass=0xff
Configuration=2
diff --git a/usb_modeswitch.d/12d1:1f01 b/usb_modeswitch.d/12d1:1f01
index f247ffe..3dc34dd 100644
--- a/usb_modeswitch.d/12d1:1f01
+++ b/usb_modeswitch.d/12d1:1f01
@@ -1,5 +1,5 @@
# Huawei E353 (3.se) and others
TargetVendor=0x12d1
TargetProductList="14db,14dc"
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
NoDriverLoading=1
diff --git a/usb_modeswitch.d/12d1:1f03 b/usb_modeswitch.d/12d1:1f03
index 52d6764..6a577ec 100644
--- a/usb_modeswitch.d/12d1:1f03
+++ b/usb_modeswitch.d/12d1:1f03
@@ -1,5 +1,5 @@
# KDDI (Huawei) HWD12 LTE
TargetVendor=0x12d1
TargetProduct=0x14db
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
NoDriverLoading=1
diff --git a/usb_modeswitch.d/12d1:1f11 b/usb_modeswitch.d/12d1:1f11
index ee5ef8b..0786aad 100644
--- a/usb_modeswitch.d/12d1:1f11
+++ b/usb_modeswitch.d/12d1:1f11
@@ -1,4 +1,4 @@
# Vodafone / Huawei K3773
TargetVendor=0x12d1
TargetProduct=0x14bc
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1f15 b/usb_modeswitch.d/12d1:1f15
index 93918a3..93de9b3 100644
--- a/usb_modeswitch.d/12d1:1f15
+++ b/usb_modeswitch.d/12d1:1f15
@@ -1,4 +1,4 @@
# Vodafone K4305
TargetVendor=0x12d1
TargetProductList="1400,14f7"
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1f16 b/usb_modeswitch.d/12d1:1f16
index 4186d69..a32d517 100644
--- a/usb_modeswitch.d/12d1:1f16
+++ b/usb_modeswitch.d/12d1:1f16
@@ -1,4 +1,4 @@
# Vodafone K5150
TargetVendor=0x12d1
TargetProductList="14f8,1575"
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1f17 b/usb_modeswitch.d/12d1:1f17
index 69a5130..e31f0b4 100644
--- a/usb_modeswitch.d/12d1:1f17
+++ b/usb_modeswitch.d/12d1:1f17
@@ -1,4 +1,4 @@
# Vodafone K4201
TargetVendor=0x12d1
TargetProduct=0x1576
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1f18 b/usb_modeswitch.d/12d1:1f18
index 7b060cd..767644a 100644
--- a/usb_modeswitch.d/12d1:1f18
+++ b/usb_modeswitch.d/12d1:1f18
@@ -1,4 +1,4 @@
# Vodafone K4202
TargetVendor=0x12d1
TargetProduct=0x1577
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1f19 b/usb_modeswitch.d/12d1:1f19
index c59d37b..b823b1a 100644
--- a/usb_modeswitch.d/12d1:1f19
+++ b/usb_modeswitch.d/12d1:1f19
@@ -1,4 +1,4 @@
# Vodafone K4606
TargetVendor=0x12d1
TargetProductList="14fa,1575,1578"
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1f1b b/usb_modeswitch.d/12d1:1f1b
index e5eae35..6068a4c 100644
--- a/usb_modeswitch.d/12d1:1f1b
+++ b/usb_modeswitch.d/12d1:1f1b
@@ -1,4 +1,4 @@
# Vodafone / Huawei Kxxxx
TargetVendor=0x12d1
TargetProduct=0x1579
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1f1c b/usb_modeswitch.d/12d1:1f1c
index 14d2e55..cf43358 100644
--- a/usb_modeswitch.d/12d1:1f1c
+++ b/usb_modeswitch.d/12d1:1f1c
@@ -1,4 +1,4 @@
-# Vodafone / Huawei Kxxxx
+# Vodafone / Huawei K4203
TargetVendor=0x12d1
TargetProductList="157a,1590"
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1f1d b/usb_modeswitch.d/12d1:1f1d
index 76b34ff..eb4c393 100644
--- a/usb_modeswitch.d/12d1:1f1d
+++ b/usb_modeswitch.d/12d1:1f1d
@@ -1,4 +1,4 @@
# Vodafone / Huawei Kxxxx
TargetVendor=0x12d1
TargetProductList="157b,1591"
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/12d1:1f1e b/usb_modeswitch.d/12d1:1f1e
index c435e72..411254c 100644
--- a/usb_modeswitch.d/12d1:1f1e
+++ b/usb_modeswitch.d/12d1:1f1e
@@ -1,4 +1,4 @@
# Vodafone / Huawei Kxxxx
TargetVendor=0x12d1
TargetProductList="157f,1592"
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
+HuaweiNewMode=1
diff --git a/usb_modeswitch.d/1410:5055 b/usb_modeswitch.d/1410:5055
new file mode 100644
index 0000000..bce995d
--- /dev/null
+++ b/usb_modeswitch.d/1410:5055
@@ -0,0 +1,4 @@
+# Novatel MiFi 4082
+TargetVendor=0x1410
+TargetProduct=0x6032
+StandardEject=1
diff --git a/usb_modeswitch.d/19d2:1232 b/usb_modeswitch.d/19d2:1232
new file mode 100644
index 0000000..086af2c
--- /dev/null
+++ b/usb_modeswitch.d/19d2:1232
@@ -0,0 +1,4 @@
+# ZTE MFxxx
+TargetVendor=0x19d2
+TargetProductList="1268,2003"
+StandardEject=1
diff --git a/usb_modeswitch.d/1bbb:f017 b/usb_modeswitch.d/1bbb:f017
index 81a0c21..d68767d 100644
--- a/usb_modeswitch.d/1bbb:f017
+++ b/usb_modeswitch.d/1bbb:f017
@@ -1,4 +1,4 @@
# Alcatel OT-X220D, L100V
TargetVendor=0x1bbb
-TargetProductList="0017,011e"
+TargetProductList="0017,011e,0203"
MessageContent="55534243123456788000000080000606f50402527000000000000000000000"
diff --git a/usb_modeswitch.d/1c9e:9101 b/usb_modeswitch.d/1c9e:9101
new file mode 100644
index 0000000..ed42e10
--- /dev/null
+++ b/usb_modeswitch.d/1c9e:9101
@@ -0,0 +1,4 @@
+# Emobile D12LC
+TargetVendor=0x1c9e
+TargetProduct=0x9104
+MessageContent="55534243123456780000000000000606f50402527000000000000000000000"
diff --git a/usb_modeswitch.d/1c9e:9401 b/usb_modeswitch.d/1c9e:9401
new file mode 100644
index 0000000..e02d00d
--- /dev/null
+++ b/usb_modeswitch.d/1c9e:9401
@@ -0,0 +1,4 @@
+# Emobile D21LC
+TargetVendor=0x1c9e
+TargetProduct=0x9404
+MessageContent="55534243123456780000000000000606f50402527000000000000000000000"
diff --git a/usb_modeswitch.d/1c9e:9d00 b/usb_modeswitch.d/1c9e:9d00
new file mode 100644
index 0000000..f8bbedd
--- /dev/null
+++ b/usb_modeswitch.d/1c9e:9d00
@@ -0,0 +1,3 @@
+# Prolink PCM100
+TargetClass=0xff
+MessageContent="55534243123456780000000000000606f50402527000000000000000000000"
diff --git a/usb_modeswitch.d/1c9e:f000 b/usb_modeswitch.d/1c9e:f000
index 250cba5..a5b7a8e 100644
--- a/usb_modeswitch.d/1c9e:f000
+++ b/usb_modeswitch.d/1c9e:f000
@@ -1,5 +1,5 @@
-# MobiData MBD-200HU and others
+# Longcheer/Longsoon (aka Omega Technology) devices
TargetVendor=0x1c9e
-TargetProductList="9000,9603,9605,9607"
-MessageContent="55534243123456788000000080000606f50402527000000000000000000000"
+TargetProductList="9000,9603,9605,9607,9900"
+MessageContent="555342431234567800000000000001ff000000000000000000000000000000"
WaitBefore=1
diff --git a/usb_modeswitch.d/1c9e:f000:uMa=USB_Modem b/usb_modeswitch.d/1c9e:f000:uMa=USB_Modem
new file mode 100644
index 0000000..4e9f768
--- /dev/null
+++ b/usb_modeswitch.d/1c9e:f000:uMa=USB_Modem
@@ -0,0 +1,5 @@
+# MobiData MBD-200HU and others
+TargetVendor=0x1c9e
+TargetProductList="9000,9603,9605,9607,9900"
+MessageContent="55534243123456788000000080000606f50402527000000000000000000000"
+WaitBefore=1
diff --git a/usb_modeswitch.d/1edf:6003 b/usb_modeswitch.d/1edf:6003
index 4d2e1c2..eb04ecd 100644
--- a/usb_modeswitch.d/1edf:6003
+++ b/usb_modeswitch.d/1edf:6003
@@ -1,3 +1,2 @@
# AirPlus MCD-800
-TargetClass=0xff
-Configuration=3
+Configuration=2
diff --git a/usb_modeswitch.d/1fac:0032 b/usb_modeswitch.d/1fac:0032
index 9292973..2eabd0a 100644
--- a/usb_modeswitch.d/1fac:0032
+++ b/usb_modeswitch.d/1fac:0032
@@ -1,3 +1,2 @@
# Franklin Wireless U210 (Variant)
-TargetClass=0xff
Configuration=2
diff --git a/usb_modeswitch.d/1fac:0151 b/usb_modeswitch.d/1fac:0151
index b80e994..9db4de7 100644
--- a/usb_modeswitch.d/1fac:0151
+++ b/usb_modeswitch.d/1fac:0151
@@ -1,3 +1,2 @@
# Franklin Wireless U600
-TargetClass=0xff
Configuration=2 \ No newline at end of file
diff --git a/usb_modeswitch.d/2001:a80b b/usb_modeswitch.d/2001:a80b
index 70c2179..fbbb6c8 100644
--- a/usb_modeswitch.d/2001:a80b
+++ b/usb_modeswitch.d/2001:a80b
@@ -2,3 +2,4 @@
TargetVendor=0x2001
TargetProduct=0x7d00
MessageContent="555342431234567800000000000003f0010100000000000000000000000000"
+NeedResponse=1
diff --git a/usb_modeswitch.d/2020:f00e b/usb_modeswitch.d/2020:f00e
index 409f5c5..3eeccce 100644
--- a/usb_modeswitch.d/2020:f00e
+++ b/usb_modeswitch.d/2020:f00e
@@ -1,5 +1,5 @@
-# SpeedUp SU-8000U
+# SpeedUp SU-8000
TargetVendor=0x2020
-TargetProductList="1005,1008"
+TargetProduct=0x1008
StandardEject=1
WaitBefore=2
diff --git a/usb_modeswitch.d/2020:f00f b/usb_modeswitch.d/2020:f00f
new file mode 100644
index 0000000..64e60f0
--- /dev/null
+++ b/usb_modeswitch.d/2020:f00f
@@ -0,0 +1,5 @@
+# SpeedUp SU-8000U
+TargetVendor=0x2020
+TargetProduct=0x1005
+StandardEject=1
+WaitBefore=2
diff --git a/usb_modeswitch.d/2077:f000 b/usb_modeswitch.d/2077:f000
index 39b514b..50c9668 100644
--- a/usb_modeswitch.d/2077:f000
+++ b/usb_modeswitch.d/2077:f000
@@ -1,4 +1,5 @@
-# Telenet 3G dongle (T&W WU160)
+# Telenet 3G dongle (T&W WU160) and others
TargetVendor=0x2077
-TargetProduct=0x9000
+TargetProductList="9000,a000"
StandardEject=1
+MessageContent="55534243123456700000000000000616aa0000000000000000000000000000"
diff --git a/usb_modeswitch.d/230d:0001 b/usb_modeswitch.d/230d:0001
index 307ad60..5008f5c 100644
--- a/usb_modeswitch.d/230d:0001
+++ b/usb_modeswitch.d/230d:0001
@@ -1,3 +1,2 @@
# Linktop LW272/LW273 (BSNL Teracom)
-TargetClass=0xff
Configuration=3
diff --git a/usb_modeswitch.d/230d:0007 b/usb_modeswitch.d/230d:0007
index c5d3c8f..63996da 100644
--- a/usb_modeswitch.d/230d:0007
+++ b/usb_modeswitch.d/230d:0007
@@ -1,3 +1,2 @@
# Visiontek 82GH 3G
-TargetClass=0xff
Configuration=3
diff --git a/usb_modeswitch.d/230d:0101 b/usb_modeswitch.d/230d:0101
index 1069d07..721e5c4 100644
--- a/usb_modeswitch.d/230d:0101
+++ b/usb_modeswitch.d/230d:0101
@@ -1,3 +1,2 @@
# Linktop LW272/LW273
-TargetClass=0xff
Configuration=2
diff --git a/usb_modeswitch.d/23a2:1010 b/usb_modeswitch.d/23a2:1010
new file mode 100644
index 0000000..95cee31
--- /dev/null
+++ b/usb_modeswitch.d/23a2:1010
@@ -0,0 +1,4 @@
+# Titan 3.5G
+TargetVendor=0x23a2
+TargetProduct=0x1234
+MessageContent="555342431234567800000000000006161f6d62706b00000000000000000000"