Hello community,

here is the log from the commit of package usb_modeswitch for openSUSE:Factory 
checked in at 2016-03-02 14:19:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/usb_modeswitch (Old)
 and      /work/SRC/openSUSE:Factory/.usb_modeswitch.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "usb_modeswitch"

Changes:
--------
--- /work/SRC/openSUSE:Factory/usb_modeswitch/usb_modeswitch.changes    
2015-11-18 22:31:02.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.usb_modeswitch.new/usb_modeswitch.changes       
2016-03-02 14:19:25.000000000 +0100
@@ -1,0 +2,17 @@
+Tue Feb 16 15:03:17 UTC 2016 - joerg.loren...@ki.tng.de
+
+- Update to version 2.3.0
+  * ATTENTION: -I flag is now history and being ignored - determining
+    SCSI attributes is really an 'outside task'.
+  * -n flag (NeedResponse) is being ignored, CSW response will now
+    always be read.
+  * Introduction of parameter "OptionMode", wrapping the standard
+    bulk message for all newer Huawei devices.
+  * Fixed missing variable initialization in dispatcher script which
+    could lead to crash (thanks, Dmitry Kunilov!).
+  * Fixed bug which prevented early logging.
+  * Fixed success report for Cisco AM10.
+  * Some source code formatting and clean-up.
+- Removed fix for bnc#899013, fixed upstream.
+
+-------------------------------------------------------------------

Old:
----
  usb-modeswitch-2.2.6.tar.bz2
  usb-modeswitch-data-20151101.tar.bz2

New:
----
  usb-modeswitch-2.3.0.tar.bz2
  usb-modeswitch-data-20160112.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ usb_modeswitch.spec ++++++
--- /var/tmp/diff_new_pack.gErBHM/_old  2016-03-02 14:19:26.000000000 +0100
+++ /var/tmp/diff_new_pack.gErBHM/_new  2016-03-02 14:19:26.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package usb_modeswitch
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,10 +17,10 @@
 
 
 %define source_name    usb-modeswitch
-%define date           20151101
+%define date           20160112
 %define _udevdir %(pkg-config --variable=udevdir udev)
 Name:           usb_modeswitch
-Version:        2.2.6
+Version:        2.3.0
 Release:        0
 Summary:        A mode switching tool for controlling multiple-device USB gear
 License:        GPL-2.0+
@@ -69,28 +69,6 @@
 cd %{source_name}-data-%{date}
 make DESTDIR=%{buildroot} install %{?_smp_mflags} 
RULESDIR=%{buildroot}%{_udevdir}/rules.d
 
-### TO REMOVE ONCE IN UPSTREAM DATA PACKAGE, FIX BNC 899013 ###
-
-cat > %{buildroot}/%{_datadir}/usb_modeswitch/12d1:1583 <<EOF
-# Vodafone W5101
-
-TargetVendor=0x12d1
-TargetProduct=0x1589
-
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
-EOF
-
-cat > %{buildroot}/%{_datadir}/usb_modeswitch/12d1:1582 <<EOF
-# Vodafone R215
-
-TargetVendor=0x12d1
-TargetProduct=0x1588
-
-MessageContent="55534243123456780000000000000011062000000101000100000000000000"
-EOF
-
-### END SECTION TO REMOVE ###
-
 %fdupes -s %{buildroot}
 
 %files

++++++ usb-modeswitch-2.2.6.tar.bz2 -> usb-modeswitch-2.3.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-2.2.6/ChangeLog 
new/usb-modeswitch-2.3.0/ChangeLog
--- old/usb-modeswitch-2.2.6/ChangeLog  2015-11-01 09:09:22.000000000 +0100
+++ new/usb-modeswitch-2.3.0/ChangeLog  2016-01-13 07:53:03.000000000 +0100
@@ -2,6 +2,15 @@
 History of USB_ModeSwitch
 =========================
 
+Version 2.3.0, 2016/01/12
+    ATTENTION: -I flag is now history and being ignored - determining SCSI
+    attributes is really an 'outside task'; -n flag (NeedResponse) is being
+    ignored, CSW response will now always be read; introduction of parameter
+    "OptionMode", wrapping the standard bulk message for all newer Huawei
+    devices; fixed missing variable initialization in dispatcher script which
+    could lead to crash (thanks, Dmitry Kunilov!); fixed bug which prevented
+    early logging; fixed success report for Cisco AM10; some source code
+    formatting and clean-up
 Version 2.2.6, 2015/11/01
     Renamed function abort(), avoiding possible conflicts in static builds
     with libjim (thanks, Gustavo Zacharias); removed storage class check of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-2.2.6/Makefile 
new/usb-modeswitch-2.3.0/Makefile
--- old/usb-modeswitch-2.2.6/Makefile   2015-11-01 09:10:12.000000000 +0100
+++ new/usb-modeswitch-2.3.0/Makefile   2016-01-11 19:53:39.000000000 +0100
@@ -1,5 +1,5 @@
 PROG        = usb_modeswitch
-VERS        = 2.2.6
+VERS        = 2.3.0
 CC          ?= gcc
 CFLAGS      += -Wall
 LIBS        = `pkg-config --libs --cflags libusb-1.0`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-2.2.6/dispatcher.c 
new/usb-modeswitch-2.3.0/dispatcher.c
--- old/usb-modeswitch-2.2.6/dispatcher.c       2015-06-20 15:19:19.000000000 
+0200
+++ new/usb-modeswitch-2.3.0/dispatcher.c       2016-01-12 23:02:41.000000000 
+0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011-2015 Josua Dietze, usb_modeswitch version 2.2.2
+ * Copyright (c) 2011-2016 Josua Dietze, usb_modeswitch version 2.3.0
  * Contains code under
  * Copyright (c) 2010 Wojciech A. Koszek <wkos...@freebsd.org>
  * All rights reserved.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-2.2.6/usb_modeswitch.1 
new/usb-modeswitch-2.3.0/usb_modeswitch.1
--- old/usb-modeswitch-2.2.6/usb_modeswitch.1   2015-06-27 00:12:45.000000000 
+0200
+++ new/usb-modeswitch-2.3.0/usb_modeswitch.1   2016-01-12 23:07:49.000000000 
+0100
@@ -77,19 +77,14 @@
 After issuing all bulk messages, wait for NUM milliseconds before releasing 
the interface.
 Required for some modems on older systems (especially after an EJECT message)
 .IP "\fB-n\fP \fB\-\-need-response\fP         " 10
-Read the response (command status wrapper) to a mass storage command
-transfer.
-Some devices have trouble switching if the response is not read; most
-are disappearing right away. When sending multiple mass storage commands
-with \fB\-2\fR and \fB\-3\fR, this may need to be set to avoid transfer errors
+Obsolete. CSW is always attempted to being read after mass storage transfers. 
No downside
 .IP "\fB-r\fP \fB\-\-response-endpoint NUM\fP         " 10
-Try to read the response to a storage command from there
-if option \-n is active. Only for testing purposes; usually
-endpoints are determined from the device attributes
+Try to read the response to a storage command from there. Only for testing 
purposes;
+usually endpoints are determined from the device attributes
 .IP "\fB-K\fP \fB\-\-std-eject\fP         " 10
 Apply the standard SCSI sequence of "Allow Medium Removal" and
 "Eject". Implies \fB-n\fP. One 'Message' can be added with \fB-M\fP
-that will be transmitted after the eject sequence
+that will be transmitted after the eject sequence. Used by many modems
 .IP "\fB-d\fP \fB\-\-detach-only\fP         " 10
 Just detach the current driver. This is sufficient for some early
 devices to switch successfully. Otherwise this feature can
@@ -118,6 +113,8 @@
 Value NUM will be used in control message as 'wValue'
 .IP "\fB-Z\fP \fB\-\-blackberry-mode\fP         " 10
 Send a special control message used by some newer Blackberry devices
+.IP "\fB-S\fP \fB\-\-option-mode\fP         " 10
+Send a special control message used by all Option devices
 .IP "\fB-O\fP \fB\-\-sony-mode\fP         " 10
 Apply a special sequence used by Sony Ericsson devices. Implies option 
\--check-success
 .IP "\fB-L\fP \fB\-\-cisco-mode\fP         " 10
@@ -151,10 +148,8 @@
 After switching, keep checking for the result up to max. NUM seconds. If 
target IDs
 or target class were provided, their appearance indicates certain success. 
Otherwise
 the disconnection of the original device is rated as likely proof
-.IP "\fB-I\fP \fB\-\-no-inquire\fP         " 10
-do not obtain SCSI attributes from device (default is on). For proper 
identification
-of differing devices the attributes of the storage part provide valuable 
information.
-This is not needed for devices that are known and supported
+.IP "\fB-I\fP \fB\-\-inquire\fP         " 10
+Obsolete. Formerly obtained SCSI attributes, now ignored
 .IP "\fB-i\fP \fB\-\-interface NUM\fP         " 10
 Select initial USB interface (default: 0). Only for testing purposes
 .IP "\fB-u\fP \fB\-\-configuration NUM\fP         " 10
@@ -174,4 +169,4 @@
 The complete text of the current GNU General Public
 License can be found in http://www.gnu.org/licenses/gpl.txt
 
-.\" last edited 2014-05-29 for version 2.2.0
+.\" last edited 2016-01-11 for version 2.3.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-2.2.6/usb_modeswitch.c 
new/usb-modeswitch-2.3.0/usb_modeswitch.c
--- old/usb-modeswitch-2.2.6/usb_modeswitch.c   2015-11-01 09:10:46.000000000 
+0100
+++ new/usb-modeswitch-2.3.0/usb_modeswitch.c   2016-01-12 23:15:13.000000000 
+0100
@@ -1,8 +1,8 @@
 /*
   Mode switching tool for controlling mode of 'multi-state' USB devices
-  Version 2.2.6, 2015/11/01
+  Version 2.3.0, 2016/01/12
 
-  Copyright (C) 2007 - 2015 Josua Dietze (mail to "digidietze" at the domain
+  Copyright (C) 2007 - 2016 Josua Dietze (mail to "digidietze" at the domain
   of the home page; or write a personal message through the forum to "Josh".
   NO SUPPORT VIA E-MAIL - please use the forum for that)
 
@@ -18,7 +18,7 @@
   Created with initial help from:
     "usbsnoop2libusb.pl" by Timo Lindfors 
(http://iki.fi/lindi/usb/usbsnoop2libusb.pl)
 
-  Config file parsing stuff borrowed from:
+  Config file parsing code borrowed from:
     Guillaume Dargaud (http://www.gdargaud.net/Hack/SourceCode.html)
 
   Hexstr2bin function borrowed from:
@@ -45,7 +45,7 @@
 
 /* Recommended tab size: 4 */
 
-#define VERSION "2.2.5"
+#define VERSION "2.3.0"
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -59,17 +59,17 @@
 #include "usb_modeswitch.h"
 
 
-/* libusb 1.0 wrappers, lazy leftover */
+// Little helpers
 
-int usb_bulk_io(struct libusb_device_handle *handle, int ep, char *bytes,
-       int size, int timeout)
+int usb_bulk_io(struct libusb_device_handle *handle, int ep, unsigned char 
*bytes,
+               int size, int timeout)
 {
        int actual_length;
        int r;
 //     usbi_dbg("endpoint %x size %d timeout %d", ep, size, timeout);
-       r = libusb_bulk_transfer(handle, ep & 0xff, (unsigned char *)bytes, 
size,
+       r = libusb_bulk_transfer(handle, ep & 0xff, bytes, size,
                &actual_length, timeout);
-       
+
        /* if we timed out but did transfer some data, report as successful 
short
         * read. FIXME: is this how libusb-0.1 works? */
        if (r == 0 || (r == LIBUSB_ERROR_TIMEOUT && actual_length > 0))
@@ -78,15 +78,16 @@
        return r;
 }
 
-static int usb_interrupt_io(libusb_device_handle *handle, int ep, char *bytes,
-       int size, int timeout)
+
+static int usb_interrupt_io(libusb_device_handle *handle, int ep, unsigned 
char *bytes,
+               int size, int timeout)
 {
        int actual_length;
        int r;
 //     usbi_dbg("endpoint %x size %d timeout %d", ep, size, timeout);
-       r = libusb_interrupt_transfer(handle, ep & 0xff, (unsigned char 
*)bytes, size,
+       r = libusb_interrupt_transfer(handle, ep & 0xff, bytes, size,
                &actual_length, timeout);
-       
+
        /* if we timed out but did transfer some data, report as successful 
short
         * read. FIXME: is this how libusb-0.1 works? */
        if (r == 0 || (r == LIBUSB_ERROR_TIMEOUT && actual_length > 0))
@@ -136,21 +137,21 @@
 #define BLACKBERRY_MODE                0x00000800
 #define PANTECH_MODE           0x00001000
 #define HUAWEINEW_MODE         0x00002000
+#define OPTION_MODE                    0x00004000
+
 
 int PantechMode=0;
 char verbose=0, show_progress=1, ResetUSB=0, CheckSuccess=0, config_read=0;
-char NeedResponse=0, NoDriverLoading=0, InquireDevice=0, sysmode=0, mbim=0;
+char NoDriverLoading=0, sysmode=0, mbim=0;
 char StandardEject=0;
 
-char imanufact[DESCR_MAX], iproduct[DESCR_MAX], iserial[DESCR_MAX];
-
 char MessageContent[LINE_DIM];
 char MessageContent2[LINE_DIM];
 char MessageContent3[LINE_DIM];
 char TargetProductList[LINE_DIM];
 char DefaultProductList[5];
-char ByteString[LINE_DIM/2];
-char buffer[BUF_SIZE];
+unsigned char ByteString[LINE_DIM/2];
+unsigned char buffer[BUF_SIZE];
 
 FILE *output;
 
@@ -177,6 +178,7 @@
        {"device-num",                  required_argument, 0, 'g'},
        {"detach-only",                 no_argument, 0, 'd'},
        {"huawei-mode",                 no_argument, 0, 'H'},
+       {"huawei-new-mode",             no_argument, 0, 'J'},
        {"sierra-mode",                 no_argument, 0, 'S'},
        {"sony-mode",                   no_argument, 0, 'O'},
        {"qisda-mode",                  no_argument, 0, 'B'},
@@ -187,6 +189,7 @@
        {"mobileaction-mode",   no_argument, 0, 'A'},
        {"cisco-mode",          no_argument, 0, 'L'},
        {"blackberry-mode",             no_argument, 0, 'Z'},
+       {"option-mode",                 no_argument, 0, 'U'},
        {"pantech-mode",                required_argument, 0, 'F'},
        {"std-eject",                   no_argument, 0, 'K'},
        {"need-response",               no_argument, 0, 'n'},
@@ -227,6 +230,7 @@
        ParseParamBoolMap(configFilename, CiscoMode, ModeMap, CISCO_MODE);
        ParseParamBoolMap(configFilename, QisdaMode, ModeMap, QISDA_MODE);
        ParseParamBoolMap(configFilename, QuantaMode, ModeMap, QUANTA_MODE);
+       ParseParamBoolMap(configFilename, OptionMode, ModeMap, OPTION_MODE);
        ParseParamBoolMap(configFilename, BlackberryMode, ModeMap, 
BLACKBERRY_MODE);
        ParseParamInt(configFilename, PantechMode);
        if (PantechMode)
@@ -238,10 +242,8 @@
        ParseParamString(configFilename, MessageContent2);
        ParseParamString(configFilename, MessageContent3);
        ParseParamInt(configFilename, ReleaseDelay);
-       ParseParamHex(configFilename, NeedResponse);
        ParseParamHex(configFilename, ResponseEndpoint);
        ParseParamHex(configFilename, ResetUSB);
-       ParseParamHex(configFilename, InquireDevice);
        ParseParamInt(configFilename, CheckSuccess);
        ParseParamHex(configFilename, Interface);
        ParseParamHex(configFilename, Configuration);
@@ -260,17 +262,17 @@
 void printConfig()
 {
        if ( DefaultVendor )
-               fprintf (output,"DefaultVendor=  0x%04x\n",                     
DefaultVendor);
+               fprintf (output,"DefaultVendor=  0x%04x\n",     DefaultVendor);
        if ( DefaultProduct )
-               fprintf (output,"DefaultProduct= 0x%04x\n",                     
DefaultProduct);
+               fprintf (output,"DefaultProduct= 0x%04x\n",     DefaultProduct);
        if ( TargetVendor )
-               fprintf (output,"TargetVendor=   0x%04x\n",             
TargetVendor);
+               fprintf (output,"TargetVendor=   0x%04x\n",     TargetVendor);
        if ( TargetProduct > -1 )
-               fprintf (output,"TargetProduct=  0x%04x\n",             
TargetProduct);
+               fprintf (output,"TargetProduct=  0x%04x\n",     TargetProduct);
        if ( TargetClass )
-               fprintf (output,"TargetClass=    0x%02x\n",             
TargetClass);
+               fprintf (output,"TargetClass=    0x%02x\n",     TargetClass);
        if ( strlen(TargetProductList) )
-               fprintf (output,"TargetProductList=\"%s\"\n",           
TargetProductList);
+               fprintf (output,"TargetProductList=\"%s\"\n", 
TargetProductList);
        if (StandardEject)
                fprintf (output,"\nStandardEject=1\n");
        if (ModeMap & DETACHONLY_MODE)
@@ -299,6 +301,8 @@
                fprintf (output,"CiscoMode=1\n");
        if (ModeMap & BLACKBERRY_MODE)
                fprintf (output,"BlackberryMode=1\n");
+       if (ModeMap & OPTION_MODE)
+               fprintf (output,"OptionMode=1\n");
        if (ModeMap & PANTECH_MODE)
                fprintf (output,"PantechMode=1\n");
        if ( MessageEndpoint )
@@ -309,7 +313,6 @@
                fprintf (output,"MessageContent2=\"%s\"\n",     
MessageContent2);
        if ( strlen(MessageContent3) )
                fprintf (output,"MessageContent3=\"%s\"\n",     
MessageContent3);
-       fprintf (output,"NeedResponse=%i\n",            (int)NeedResponse);
        if ( ResponseEndpoint )
                fprintf (output,"ResponseEndpoint=0x%02x\n",    
ResponseEndpoint);
        if ( Interface > -1 )
@@ -318,8 +321,6 @@
                fprintf (output,"Configuration=0x%02x\n",       Configuration);
        if ( AltSetting > -1 )
                fprintf (output,"AltSetting=0x%02x\n",  AltSetting);
-       if ( InquireDevice )
-               fprintf (output,"\nInquireDevice=1\n");
        if ( CheckSuccess )
                fprintf (output,"Success check enabled, max. wait time %d 
seconds\n", CheckSuccess);
        if ( sysmode )
@@ -340,7 +341,7 @@
 
        while (1)
        {
-               c = getopt_long (argc, argv, 
"hejWQDndKHJSOBEGTNALZF:RItv:p:V:P:C:m:M:2:3:w:r:c:i:u:a:s:f:b:g:",
+               c = getopt_long (argc, argv, 
"hejWQDndKHJSOBEGTNALZUF:RItv:p:V:P:C:m:M:2:3:w:r:c:i:u:a:s:f:b:g:",
                                        long_options, &option_index);
 
                /* Detect the end of the options. */
@@ -360,7 +361,7 @@
                        case '2': strncpy(MessageContent2, optarg, LINE_DIM); 
break;
                        case '3': strncpy(MessageContent3, optarg, LINE_DIM); 
break;
                        case 'w': ReleaseDelay = strtol(optarg, NULL, 10); 
break;
-                       case 'n': NeedResponse = 1; break;
+                       case 'n': break;
                        case 'r': ResponseEndpoint = strtol(optarg, NULL, 16); 
break;
                        case 'K': StandardEject = 1; break;
                        case 'd': ModeMap = ModeMap + DETACHONLY_MODE; break;
@@ -376,6 +377,7 @@
                        case 'A': ModeMap = ModeMap + MOBILEACTION_MODE; break;
                        case 'L': ModeMap = ModeMap + CISCO_MODE; break;
                        case 'Z': ModeMap = ModeMap + BLACKBERRY_MODE; break;
+                       case 'U': ModeMap = ModeMap + OPTION_MODE; break;
                        case 'F': ModeMap = ModeMap + PANTECH_MODE;
                                                PantechMode = strtol(optarg, 
NULL, 10); break;
                        case 'c': readConfigFile(optarg); break;
@@ -384,7 +386,7 @@
                        case 'Q': show_progress = 0; verbose = 0; count--; 
break;
                        case 'D': sysmode = 1; count--; break;
                        case 's': CheckSuccess = strtol(optarg, NULL, 10); 
count--; break;
-                       case 'I': InquireDevice = 1; break;
+                       case 'I': break;
                        case 'b': busnum = strtol(optarg, NULL, 10); break;
                        case 'g': devnum = strtol(optarg, NULL, 10); break;
 
@@ -418,7 +420,6 @@
                                exit(1);
                }
        }
-
        return count;
 }
 
@@ -426,7 +427,7 @@
 int main(int argc, char **argv)
 {
        int ret=0, numDefaults=0, sonySuccess=0;
-       int currentConfig=0, defaultClass=0, interfaceClass=0;
+       int currentConfigVal=0, defaultClass=0, interfaceClass=0;
        struct libusb_device_descriptor descriptor;
        enum libusb_error libusbError;
 
@@ -474,7 +475,9 @@
                        exit(1);
                }
                if ( hexstr2bin(MessageContent, ByteString, 
strlen(MessageContent)/2) == -1) {
-                       fprintf(stderr, "Error: MessageContent %s\n is not a 
hex string. Abort\n\n", MessageContent);
+                       fprintf(stderr, "Error: MessageContent %s\n is not a 
hex string. Abort\n\n",
+                                       MessageContent);
+
                        exit(1);
                }
        }
@@ -487,7 +490,9 @@
        }
 
        if (show_progress)
-               if (CheckSuccess && !(TargetVendor || TargetProduct > -1 || 
TargetProductList[0] != '\0') && !TargetClass)
+               if (CheckSuccess && !(TargetVendor || TargetProduct > -1 || 
TargetProductList[0] != '\0')
+                                && !TargetClass)
+
                        fprintf(output,"Note: No target parameter given; 
success check limited\n");
 
        if (TargetProduct > -1 && TargetProductList[0] == '\0') {
@@ -497,7 +502,8 @@
 
        /* libusb initialization */
        if ((libusbError = libusb_init(&ctx)) != LIBUSB_SUCCESS) {
-               fprintf(stderr, "Error: Failed to initialize libusb. %s 
(%d)\n\n", libusb_error_name(libusbError), libusbError);
+               fprintf(stderr, "Error: Failed to initialize libusb. %s 
(%d)\n\n",
+                               libusb_error_name(libusbError), libusbError);
                exit(1);
        }
 
@@ -512,7 +518,9 @@
        /* Count existing target devices, remember for success check */
        if (searchMode != SEARCH_BUSDEV && (TargetVendor || TargetClass)) {
                SHOW_PROGRESS(output,"Look for target devices ...\n");
-               search_devices(&targetDeviceCount, TargetVendor, 
TargetProductList, TargetClass, 0, SEARCH_TARGET);
+               search_devices(&targetDeviceCount, TargetVendor, 
TargetProductList, TargetClass, 0,
+                               SEARCH_TARGET);
+
                if (targetDeviceCount) {
                        SHOW_PROGRESS(output," Found devices in target mode or 
class (%d)\n", targetDeviceCount);
                } else
@@ -523,7 +531,9 @@
        SHOW_PROGRESS(output,"Look for default devices ...\n");
 
        sprintf(DefaultProductList,"%04x",DefaultProduct);
-       dev = search_devices(&numDefaults, DefaultVendor, DefaultProductList, 
TargetClass, Configuration, searchMode);
+       dev = search_devices(&numDefaults, DefaultVendor, DefaultProductList, 
TargetClass,
+               Configuration, searchMode);
+
        if (numDefaults) {
                SHOW_PROGRESS(output," Found devices in default mode (%d)\n", 
numDefaults);
        } else {
@@ -531,6 +541,7 @@
                close_all();
                exit(0);
        }
+
        if (dev == NULL) {
                SHOW_PROGRESS(output," No bus/device match. Is device 
connected? Abort\n\n");
                close_all();
@@ -548,14 +559,14 @@
                }
        }
 
-
-       /* Get current configuration of default device if parameter is set */
-       libusb_get_active_config_descriptor(dev, &active_config);
+       /* Get current configuration of default device, note value if 
Configuration
+        * parameter is set. Also sets active_config
+        */
+       currentConfigVal = get_current_config_value(dev);
        if (Configuration > -1) {
-               currentConfig = active_config->bConfigurationValue;
-               SHOW_PROGRESS(output,"Current configuration number is %d\n", 
currentConfig);
+               SHOW_PROGRESS(output,"Current configuration number is %d\n", 
currentConfigVal);
        } else
-               currentConfig = 0;
+               currentConfigVal = 0;
 
        libusb_get_device_descriptor(dev, &descriptor);
        defaultClass = descriptor.bDeviceClass;
@@ -567,7 +578,9 @@
        interfaceClass = get_interface_class();
 
        /* Check or get endpoints */
-       if (strlen(MessageContent) || StandardEject || InquireDevice || ModeMap 
& CISCO_MODE || ModeMap & HUAWEINEW_MODE) {
+       if (strlen(MessageContent) || StandardEject || ModeMap & CISCO_MODE
+                               || ModeMap & HUAWEINEW_MODE || ModeMap & 
OPTION_MODE) {
+
                if (!MessageEndpoint)
                        MessageEndpoint = 
find_first_bulk_endpoint(LIBUSB_ENDPOINT_OUT);
                if (!ResponseEndpoint)
@@ -580,7 +593,9 @@
                        fprintf(stderr,"Error: response endpoint not given or 
found. Abort\n\n");
                        abortExit();
                }
-               SHOW_PROGRESS(output,"Use endpoints 0x%02x (out) and 0x%02x 
(in)\n", MessageEndpoint, ResponseEndpoint);
+               SHOW_PROGRESS(output,"Use endpoints 0x%02x (out) and 0x%02x 
(in)\n", MessageEndpoint,
+                               ResponseEndpoint);
+
        }
 
        if (interfaceClass == -1) {
@@ -591,7 +606,9 @@
        if (defaultClass == 0)
                defaultClass = interfaceClass;
        else
-               if (interfaceClass == 8 && defaultClass != 8 && defaultClass != 
0xef && defaultClass != 0xff) {
+               if (interfaceClass == LIBUSB_CLASS_MASS_STORAGE && defaultClass 
!= LIBUSB_CLASS_MASS_STORAGE
+                               && defaultClass != 0xef && defaultClass != 
LIBUSB_CLASS_VENDOR_SPEC) {
+
                        /* Unexpected default class combined with differing 
interface class */
                        SHOW_PROGRESS(output,"Bogus Class/InterfaceClass: 
0x%02x/0x08\n", defaultClass);
                        defaultClass = 8;
@@ -604,24 +621,9 @@
                        abortExit();
                }
 
-       if (InquireDevice && show_progress) {
-               if (defaultClass == 0x08) {
-                       SHOW_PROGRESS(output,"Inquire device details; driver 
will be detached ...\n");
-                       detachDriver();
-                       if (deviceInquire() >= 0)
-                               InquireDevice = 2;
-               } else
-                       SHOW_PROGRESS(output,"Not a storage device, skip SCSI 
inquiry\n");
-       }
-
-       deviceDescription();
        if (show_progress) {
                fprintf(output,"\nUSB description data (for identification)\n");
-               fprintf(output,"-------------------------\n");
-               fprintf(output,"Manufacturer: %s\n", imanufact);
-               fprintf(output,"     Product: %s\n", iproduct);
-               fprintf(output,"  Serial No.: %s\n", iserial);
-               fprintf(output,"-------------------------\n");
+               deviceDescription();
        }
 
        /* Special modes are exclusive, so check for illegal combinations.
@@ -651,18 +653,16 @@
 
        if (sysmode) {
                openlog("usb_modeswitch", 0, LOG_SYSLOG);
-               syslog(LOG_NOTICE, "switch device %04x:%04x on %03d/%03d", 
DefaultVendor, DefaultProduct, busnum, devnum);
+               syslog(LOG_NOTICE, "switch device %04x:%04x on %03d/%03d", 
DefaultVendor, DefaultProduct,
+                               busnum, devnum);
+
        }
 
        if (ModeMap & DETACHONLY_MODE) {
                SHOW_PROGRESS(output,"Detach storage driver as switching method 
...\n");
-               if (InquireDevice == 2) {
-                       SHOW_PROGRESS(output," Any driver was already detached 
for inquiry. Do nothing\n");
-               } else {
-                       ret = detachDriver();
-                       if (ret == 2)
-                               SHOW_PROGRESS(output," You may want to remove 
the storage driver manually\n");
-               }
+               ret = detachDriver();
+               if (ret == 2)
+                       SHOW_PROGRESS(output," You may want to remove the 
storage driver manually\n");
        }
 
        if(ModeMap & HUAWEI_MODE) {
@@ -723,32 +723,35 @@
 
                
strcpy(MessageContent,"5553424387654321000000000000061e000000000000000000000000000000");
                
strcpy(MessageContent2,"5553424397654321000000000000061b000000020000000000000000000000");
-               NeedResponse = 1;
                switchSendMessage();
        } else if (ModeMap & HUAWEINEW_MODE) {
                SHOW_PROGRESS(output,"Using standard Huawei switching 
message\n");
                detachDriver();
                
strcpy(MessageContent,"55534243123456780000000000000011062000000101000100000000000000");
-               NeedResponse = 0;
+               switchSendMessage();
+       } else if (ModeMap & OPTION_MODE) {
+               SHOW_PROGRESS(output,"Using standard Option switching 
message\n");
+               detachDriver();
+//             
strcpy(MessageContent,"55534243123456780100000080000601000000000000000000000000000000");
+               
strcpy(MessageContent,"55534243123456780000000000000601000000000000000000000000000000");
                switchSendMessage();
        } else if (strlen(MessageContent)) {
-               if (InquireDevice != 2)
-                       detachDriver();
+               detachDriver();
                switchSendMessage();
        }
 
        if (Configuration > 0) {
-               if (currentConfig != Configuration) {
+               if (currentConfigVal != Configuration) {
                        if (switchConfiguration()) {
-                               currentConfig = get_current_configuration(dev);
-                               if (currentConfig == Configuration) {
+                               currentConfigVal = 
get_current_config_value(dev);
+                               if (currentConfigVal == Configuration) {
                                        SHOW_PROGRESS(output,"The configuration 
was set successfully\n");
                                } else {
                                        SHOW_PROGRESS(output,"Changing the 
configuration has failed\n");
                                }
                        }
                } else {
-                       SHOW_PROGRESS(output,"Target configuration %d found. Do 
nothing\n", currentConfig);
+                       SHOW_PROGRESS(output,"Target configuration %d found. Do 
nothing\n", currentConfigVal);
                }
        }
 
@@ -811,6 +814,7 @@
 /* Get descriptor strings if available (identification details) */
 void deviceDescription ()
 {
+       char imanufact[DESCR_MAX], iproduct[DESCR_MAX], iserial[DESCR_MAX];
        int ret=0;
        char* c;
        memset (imanufact, ' ', DESCR_MAX);
@@ -826,8 +830,10 @@
 
        if (iManufacturer) {
                ret = libusb_get_string_descriptor_ascii(devh, iManufacturer, 
(unsigned char *)imanufact, DESCR_MAX);
-               if (ret < 0)
+               if (ret < 0) {
                        fprintf(stderr, "Error: could not get description 
string \"manufacturer\"\n");
+                       strcpy(imanufact, "read error");
+               }
        } else
                strcpy(imanufact, "not provided");
        c = strstr(imanufact, "    ");
@@ -836,8 +842,10 @@
 
        if (iProduct) {
                ret = libusb_get_string_descriptor_ascii(devh, iProduct, 
(unsigned char *)iproduct, DESCR_MAX);
-               if (ret < 0)
+               if (ret < 0) {
                        fprintf(stderr, "Error: could not get description 
string \"product\"\n");
+                       strcpy(iproduct, "read error");
+               }
        } else
                strcpy(iproduct, "not provided");
        c = strstr(iproduct, "    ");
@@ -846,81 +854,20 @@
 
        if (iSerialNumber) {
                ret = libusb_get_string_descriptor_ascii(devh, iSerialNumber, 
(unsigned char *)iserial, DESCR_MAX);
-               if (ret < 0)
+               if (ret < 0) {
                        fprintf(stderr, "Error: could not get description 
string \"serial number\"\n");
+                       strcpy(iserial, "read error");
+               }
        } else
                strcpy(iserial, "not provided");
        c = strstr(iserial, "    ");
        if (c)
                memset((void*)c, '\0', 1);
-
-}
-
-/* Print result of SCSI command INQUIRY (identification details) */
-int deviceInquire ()
-{
-       const unsigned char inquire_msg[] = {
-         0x55, 0x53, 0x42, 0x43, 0x12, 0x34, 0x56, 0x78,
-         0x24, 0x00, 0x00, 0x00, 0x80, 0x00, 0x06, 0x12,
-         0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00,
-         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-       };
-       char *command;
-       char data[36];
-       int i, ret=0;
-
-       command = malloc(31);
-       if (command == NULL) {
-               ret = 1;
-               goto out;
-       }
-
-       memcpy(command, inquire_msg, sizeof (inquire_msg));
-
-       ret = libusb_claim_interface(devh, Interface);
-       if (ret != 0) {
-               SHOW_PROGRESS(output," Could not claim interface (error %d). 
Skip device inquiry\n", ret);
-               goto out;
-       }
-       libusb_clear_halt(devh, MessageEndpoint);
-
-       ret = usb_bulk_io(devh, MessageEndpoint, (char *)command, 31, 0);
-       if (ret < 0) {
-               SHOW_PROGRESS(output," INQUIRY message failed (error %d)\n", 
ret);
-               goto out;
-       }
-
-       ret = usb_bulk_io(devh, ResponseEndpoint, data, 36, 0);
-       if (ret < 0) {
-               SHOW_PROGRESS(output," INQUIRY response failed (error %d)\n", 
ret);
-               goto out;
-       }
-
-       i = usb_bulk_io(devh, ResponseEndpoint, command, 13, 0);
-
-       fprintf(output,"\nSCSI inquiry data (for identification)\n");
        fprintf(output,"-------------------------\n");
-
-       fprintf(output,"  Vendor String: ");
-       for (i = 8; i < 16; i++) printf("%c",data[i]);
-       fprintf(output,"\n");
-
-       fprintf(output,"   Model String: ");
-       for (i = 16; i < 32; i++) printf("%c",data[i]);
-       fprintf(output,"\n");
-
-       fprintf(output,"Revision String: ");
-       for (i = 32; i < 36; i++) printf("%c",data[i]);
-
-       fprintf(output,"\n-------------------------\n");
-
-out:
-       if (strlen(MessageContent) == 0) {
-               libusb_clear_halt(devh, MessageEndpoint);
-               libusb_release_interface(devh, Interface);
-       }
-       free(command);
-       return ret;
+       fprintf(output,"Manufacturer: %s\n", imanufact);
+       fprintf(output,"     Product: %s\n", iproduct);
+       fprintf(output,"  Serial No.: %s\n", iserial);
+       fprintf(output,"-------------------------\n");
 }
 
 
@@ -979,6 +926,7 @@
        return 0;
 }
 
+
 void resetUSB ()
 {
        int success;
@@ -1020,17 +968,11 @@
        msg[1] = MessageContent2;
        msg[2] = MessageContent3;
 
-       /* May be activated in future versions */
-//     if (MessageContent2[0] != '\0' || MessageContent3[0] != '\0')
-//             NeedResponse = 1;
-
        SHOW_PROGRESS(output,"Set up interface %d\n", Interface);
-       if (InquireDevice != 2) {
-               ret = libusb_claim_interface(devh, Interface);
-               if (ret != 0) {
-                       SHOW_PROGRESS(output," Could not claim interface (error 
%d). Skip message sending\n", ret);
-                       return 0;
-               }
+       ret = libusb_claim_interface(devh, Interface);
+       if (ret != 0) {
+               SHOW_PROGRESS(output," Could not claim interface (error %d). 
Skip message sending\n", ret);
+               return 0;
        }
        libusb_clear_halt(devh, MessageEndpoint);
        SHOW_PROGRESS(output,"Use endpoint 0x%02x for message sending ...\n", 
MessageEndpoint);
@@ -1042,21 +984,19 @@
                        continue;
 
                if ( sendMessage(msg[i], i+1) )
-               goto skip;
+                       goto skip;
 
-               if (NeedResponse) {
-                       if ( strstr(msg[i],cmdHead) != NULL ) {
-                               // UFI command
-                               SHOW_PROGRESS(output,"Read the response to 
message %d (CSW) ...\n", i+1);
-                               ret = read_bulk(ResponseEndpoint, ByteString, 
13);
-                       } else {
-                               // Other bulk transfer
-                               SHOW_PROGRESS(output,"Read the response to 
message %d ...\n", i+1);
-                               ret = read_bulk(ResponseEndpoint, ByteString, 
strlen(msg[i])/2 );
-                       }
-                       if (ret < 0)
-                               goto skip;
+               if ( strstr(msg[i],cmdHead) != NULL ) {
+                       // UFI command
+                       SHOW_PROGRESS(output,"Read the response to message %d 
(CSW) ...\n", i+1);
+                       ret = read_bulk(ResponseEndpoint, ByteString, 13);
+               } else {
+                       // Other bulk transfer
+                       SHOW_PROGRESS(output,"Read the response to message %d 
...\n", i+1);
+                       ret = read_bulk(ResponseEndpoint, ByteString, 
strlen(msg[i])/2 );
                }
+               if (ret < 0)
+                       goto skip;
        }
 
        SHOW_PROGRESS(output,"Reset response endpoint 0x%02x\n", 
ResponseEndpoint);
@@ -1104,6 +1044,7 @@
        }
 }
 
+
 int switchAltSetting ()
 {
        int ret;
@@ -1127,8 +1068,9 @@
 {
        int ret;
        SHOW_PROGRESS(output,"Send old Huawei control message ...\n");
-       ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_STANDARD | 
LIBUSB_RECIPIENT_DEVICE, \
-               LIBUSB_REQUEST_SET_FEATURE, 00000001, 0, (unsigned char 
*)buffer, 0, 1000);
+       ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_STANDARD | 
LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_OUT,
+                       LIBUSB_REQUEST_SET_FEATURE, 00000001, 0, buffer, 0, 
1000);
+
        if (ret != 0) {
                fprintf(stderr, "Error: Huawei control message failed (error 
%d). Abort\n\n", ret);
                exit(0);
@@ -1140,7 +1082,8 @@
 {
        int ret;
        SHOW_PROGRESS(output,"Send Sierra control message\n");
-       ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_VENDOR, 0x0b, 
00000001, 0, (unsigned char *)buffer, 0, 1000);
+       ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_VENDOR | 
LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_OUT,
+               LIBUSB_REQUEST_SET_INTERFACE, 00000001, 0, buffer, 0, 1000);
        if (ret == LIBUSB_ERROR_PIPE) {
                SHOW_PROGRESS(output," communication with device stopped. May 
have switched modes anyway\n");
            return;
@@ -1160,13 +1103,19 @@
                SHOW_PROGRESS(output," Could not claim interface (error %d). 
Skip GCT sequence\n", ret);
                return;
        }
-       SHOW_PROGRESS(output,"Send GCT control message 1 ...\n");
-       ret = libusb_control_transfer(devh, 0xa1, 0xa0, 0, Interface, (unsigned 
char *)buffer, 1, 1000);
+       SHOW_PROGRESS(output,"Send GCT control message 1 ...\n type (should be 
161/0xA1): %d",
+                       LIBUSB_REQUEST_TYPE_CLASS | LIBUSB_RECIPIENT_INTERFACE 
| LIBUSB_ENDPOINT_IN);
+
+       ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_CLASS | 
LIBUSB_RECIPIENT_INTERFACE | LIBUSB_ENDPOINT_IN,
+                       0xa0, 0, Interface, buffer, 1, 1000);
+
        if (ret < 0) {
                SHOW_PROGRESS(output," GCT control message 1 failed (error %d), 
continue anyway ...\n", ret);
        }
        SHOW_PROGRESS(output,"Send GCT control message 2 ...\n");
-       ret = libusb_control_transfer(devh, 0xa1, 0xfe, 0, Interface, (unsigned 
char *)buffer, 1, 1000);
+       ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_CLASS | 
LIBUSB_RECIPIENT_INTERFACE | LIBUSB_ENDPOINT_IN,
+                       0xfe, 0, Interface, buffer, 1, 1000);
+
        if (ret < 0) {
                SHOW_PROGRESS(output," GCT control message 2 failed (error %d). 
Abort\n\n", ret);
        }
@@ -1180,7 +1129,8 @@
        int ret;
        SHOW_PROGRESS(output,"Send Kobil control message ...\n");
        ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_VENDOR | 
LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_IN,
-                       0x88, 0, 0, (unsigned char *)buffer, 8, 1000);
+                       0x88, 0, 0, buffer, 8, 1000);
+
        if (ret < 0) {
                fprintf(stderr, "Error: Kobil control message failed (error 
%d). Abort\n\n", ret);
                exit(0);
@@ -1192,7 +1142,7 @@
        int ret;
        SHOW_PROGRESS(output,"Sending Qisda control message ...\n");
        memcpy(buffer, 
"\x05\x8c\x04\x08\xa0\xee\x20\x00\x5c\x01\x04\x08\x98\xcd\xea\xbf", 16);
-       ret = libusb_control_transfer(devh, 0x40, 0x04, 0, 0, (unsigned char 
*)buffer, 16, 1000);
+       ret = libusb_control_transfer(devh, 0x40, 0x04, 0, 0, buffer, 16, 1000);
        if (ret < 0) {
                fprintf(stderr, "Error: Qisda control message failed (error 
%d). Abort\n\n", ret);
                exit(0);
@@ -1204,7 +1154,8 @@
        int ret;
        SHOW_PROGRESS(output,"Send Quanta control message ...\n");
        ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_VENDOR | 
LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_IN,
-                       0xff, 0, 0, (unsigned char *)buffer, 0, 1000);
+                       0xff, 0, 0, buffer, 0, 1000);
+
        if (ret < 0) {
                SHOW_PROGRESS(output,"Error: Quanta control message failed 
(error %d). Abort\n\n", ret);
                exit(0);
@@ -1217,13 +1168,15 @@
        int ret;
        SHOW_PROGRESS(output,"Send Blackberry control message 1 ...\n");
        ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_VENDOR | 
LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_IN,
-                       0xb1, 0x0000, 0, (unsigned char *)buffer, 8, 1000);
+                       0xb1, 0x0000, 0, buffer, 8, 1000);
+
        if (ret != 8) {
                fprintf(stderr, "Error: Blackberry control message 1 failed 
(result %d)\n", ret);
        }
        SHOW_PROGRESS(output,"Send Blackberry control message 2 ...\n");
        ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_VENDOR | 
LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_IN,
-                       0xa9, 0x000e, 0, (unsigned char *)buffer, 2, 1000);
+                       0xa9, 0x000e, 0, buffer, 2, 1000);
+
        if (ret != 2) {
                fprintf(stderr, "Error: Blackberry control message 2 failed 
(result %d). Abort\n\n", ret);
                exit(0);
@@ -1235,7 +1188,9 @@
 {
        int ret;
        SHOW_PROGRESS(output,"Send Pantech control message, wValue %d ...\n", 
PantechMode);
-       ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_VENDOR | 
LIBUSB_RECIPIENT_DEVICE, 0x70, PantechMode, 0, (unsigned char *)buffer, 0, 
1000);
+       ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_VENDOR | 
LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_OUT,
+                       0x70, PantechMode, 0, buffer, 0, 1000);
+
        if (ret < 0) {
                SHOW_PROGRESS(output," Error: Pantech control message failed 
(error %d). Abort\n\n", ret);
                exit(0);
@@ -1250,9 +1205,8 @@
 #define MOBILE_ACTION_READLOOP1 63
 #define MOBILE_ACTION_READLOOP2 73
 
-/* If anyone can test the MobileAction cable - I bet this
- * function (which is confirmed working) can be greatly
- * simplified ...
+/* The code here is statically derived from sniffing (and confirmed working).
+ * However I bet it could be simplified significantly.
  */
 
 void switchActionMode ()
@@ -1260,9 +1214,13 @@
        int ret, i;
        SHOW_PROGRESS(output,"Send MobileAction control sequence ...\n");
        memcpy(buffer, "\xb0\x04\x00\x00\x02\x90\x26\x86", SIZE);
-       libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_CLASS + 
LIBUSB_RECIPIENT_INTERFACE, 0x09, 0x0300, 0, (unsigned char *)buffer, SIZE, 
1000);
+       libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_CLASS | 
LIBUSB_RECIPIENT_INTERFACE | LIBUSB_ENDPOINT_OUT,
+                       0x09, 0x0300, 0, buffer, SIZE, 1000);
+
        memcpy(buffer, "\xb0\x04\x00\x00\x02\x90\x26\x86", SIZE);
-       libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_CLASS + 
LIBUSB_RECIPIENT_INTERFACE, 0x09, 0x0300, 0, (unsigned char *)buffer, SIZE, 
1000);
+       libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_CLASS | 
LIBUSB_RECIPIENT_INTERFACE | LIBUSB_ENDPOINT_OUT,
+                       0x09, 0x0300, 0, buffer, SIZE, 1000);
+
        usb_interrupt_io(devh, EP_IN, buffer, SIZE, 1000);
        usb_interrupt_io(devh, EP_IN, buffer, SIZE, 1000);
        memcpy(buffer, "\x37\x01\xfe\xdb\xc1\x33\x1f\x83", SIZE);
@@ -1308,19 +1266,24 @@
 #define SQN_MASS_STORAGE_MODE                  0x01
 #define SQN_CUSTOM_DEVICE_MODE                 0x02
 
-void switchSequansMode() {
+void switchSequansMode()
+{
 
        int ret;
        SHOW_PROGRESS(output,"Send Sequans control message\n");
-       ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_VENDOR | 
LIBUSB_RECIPIENT_DEVICE, SQN_SET_DEVICE_MODE_REQUEST, SQN_CUSTOM_DEVICE_MODE, 
0, (unsigned char *)buffer, 0, 1000);
+       ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_VENDOR | 
LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_OUT,
+                       SQN_SET_DEVICE_MODE_REQUEST, SQN_CUSTOM_DEVICE_MODE, 0, 
buffer, 0, 1000);
+
        if (ret < 0) {
                fprintf(stderr, "Error: Sequans request failed (error %d). 
Abort\n\n", ret);
            exit(0);
        }
 }
 
-void switchCiscoMode() {
-       int ret, i;
+
+void switchCiscoMode()
+{
+       int ret, i, j;
        char* msg[11];
 
        msg[0] = 
"55534243f83bcd810002000080000afd000000030000000100000000000000";
@@ -1352,20 +1315,21 @@
                if ( sendMessage(msg[i], i+1) )
                        goto skip;
 
-               SHOW_PROGRESS(output," Read the response (CSW) to bulk message 
%d ...\n",i+1);
-               ret = read_bulk(ResponseEndpoint, ByteString, 13);
-               if (ret < 0)
-                       goto skip;
-               if (ret < 13) {
-                       SHOW_PROGRESS(output," Repeat reading the response to 
bulk message %d ...\n",i+1);
-                       ret = read_bulk(ResponseEndpoint, ByteString, 13);
-               }
-               if (ret < 13) {
-                       SHOW_PROGRESS(output," Repeat reading the response to 
bulk message %d ...\n",i+1);
+               for (j=1; j<4; j++) {
+
+                       SHOW_PROGRESS(output," Read the CSW for bulk message %d 
(attempt %d) ...\n",i+1,j);
                        ret = read_bulk(ResponseEndpoint, ByteString, 13);
+
+                       if (ret < 0)
+                               goto skip;
+                       if (ret == 13)
+                               break;
                }
        }
+       libusb_clear_halt(devh, MessageEndpoint);
+       libusb_clear_halt(devh, ResponseEndpoint);
 
+ReleaseDelay = 2000;
        if (ReleaseDelay) {
                SHOW_PROGRESS(output,"Wait for %d ms before releasing interface 
...\n", ReleaseDelay);
                usleep(ReleaseDelay*1000);
@@ -1392,7 +1356,9 @@
        }
 
        SHOW_PROGRESS(output,"Send Sony control message\n");
-       ret = libusb_control_transfer(devh, 0xc0, 0x11, 2, 0, (unsigned char 
*)buffer, 3, 100);
+       ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_VENDOR | 
LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_IN,
+                       0x11, 2, 0, buffer, 3, 100);
+
        if (ret < 0) {
                fprintf(stderr, "Error: Sony control message failed (error %d). 
Abort\n\n", ret);
                exit(0);
@@ -1435,7 +1401,9 @@
        sleep(1);
 
        SHOW_PROGRESS(output,"Send Sony control message again ...\n");
-       ret = libusb_control_transfer(devh, 0xc0, 0x11, 2, 0, (unsigned char 
*)buffer, 3, 100);
+       ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_VENDOR | 
LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_IN,
+                       0x11, 2, 0, buffer, 3, 100);
+
        if (ret < 0) {
                fprintf(stderr, "Error: Sony control message (2) failed (error 
%d)\n", ret);
                return 0;
@@ -1451,9 +1419,6 @@
 {
 
        int ret;
-       // Driver already detached during SCSI inquiry ?
-       if (InquireDevice == 2)
-               return 1;
        SHOW_PROGRESS(output,"Looking for active driver ...\n");
        ret = libusb_kernel_driver_active(devh, 0);
        if (ret == LIBUSB_ERROR_NOT_SUPPORTED) {
@@ -1492,7 +1457,9 @@
        }
        message_length = strlen(message) / 2;
        if ( hexstr2bin(message, ByteString, message_length) == -1) {
-               fprintf(stderr, "Error: MessageContent %d %s\n is not a hex 
string. Skipping ...\n", count, MessageContent);
+               fprintf(stderr, "Error: MessageContent %d %s\n is not a hex 
string. Skipping ...\n",
+                               count, MessageContent);
+
                return 1;
        }
        SHOW_PROGRESS(output,"Trying to send message %d to endpoint 0x%02x 
...\n", count, MessageEndpoint);
@@ -1549,7 +1516,8 @@
                                break;
                        }
                        if (i == CheckSuccess-1) {
-                               SHOW_PROGRESS(output," Original device still 
present after the timeout\n\nMode switch most likely failed. Bye!\n\n");
+                               SHOW_PROGRESS(output," Original device still 
present after the timeout\n\n"
+                                               "Mode switch most likely 
failed. Bye!\n\n");
                        } else
                                sleep(1);
                }
@@ -1562,29 +1530,29 @@
                 */
                for (i=i; i < CheckSuccess; i++) {
                        SHOW_PROGRESS(output," Search for target devices 
...\n");
-                       dev = search_devices(&newTargetCount, TargetVendor, 
TargetProductList, TargetClass, 0, SEARCH_TARGET);
+                       dev = search_devices(&newTargetCount, TargetVendor, 
TargetProductList, TargetClass,
+                                       0, SEARCH_TARGET);
+
                        if (dev && (newTargetCount > targetDeviceCount)) {
-                               fprintf(output,"\nFound target device, open 
it\n");
-                               libusb_open(dev, &devh);
-                               deviceDescription();
-                               libusb_close(devh);
-                               devh = NULL;
                                if (verbose) {
-                                       fprintf(output,"\nFound target device 
%03d on bus %03d\n", \
-                                       libusb_get_device_address(dev), 
libusb_get_bus_number(dev));
+                                       libusb_open(dev, &devh);
+                                       fprintf(output,"\nFound target device 
%03d on bus %03d\n",
+                                                       
libusb_get_device_address(dev), libusb_get_bus_number(dev));
+
                                        fprintf(output,"\nTarget device 
description data\n");
-                                       
fprintf(output,"-------------------------\n");
-                                       fprintf(output,"Manufacturer: %s\n", 
imanufact);
-                                       fprintf(output,"     Product: %s\n", 
iproduct);
-                                       fprintf(output,"  Serial No.: %s\n", 
iserial);
-                                       
fprintf(output,"-------------------------\n");
+                                       deviceDescription();
+                                       libusb_close(devh);
+                                       devh = NULL;
                                }
-                               SHOW_PROGRESS(output," Found correct target 
device\n\nMode switch succeeded. Bye!\n\n");
+                               SHOW_PROGRESS(output," Found correct target 
device\n\n"
+                                               "Mode switch succeeded. 
Bye!\n\n");
+
                                success = 2;
                                break;
                        }
                        if (i == CheckSuccess-1) {
-                               SHOW_PROGRESS(output," No new devices in target 
mode or class found\n\nMode switch has failed. Bye!\n\n");
+                               SHOW_PROGRESS(output," No new devices in target 
mode or class found\n\n"
+                                               "Mode switch has failed. 
Bye!\n\n");
                        } else
                                sleep(1);
                }
@@ -1592,7 +1560,8 @@
                /* No target data given, rely on the vanished device */
                if (!devh) {
                        SHOW_PROGRESS(output," (For a better success check 
provide target IDs or class)\n");
-                       SHOW_PROGRESS(output," Original device vanished after 
switching\n\nMode switch most likely succeeded. Bye!\n\n");
+                       SHOW_PROGRESS(output," Original device vanished after 
switching\n\n"
+                                       "Mode switch most likely succeeded. 
Bye!\n\n");
                        success = 1;
                }
 
@@ -1605,7 +1574,9 @@
                        break;
                case 2: 
                        if (sysmode)
-                               syslog(LOG_NOTICE, "switched to %04x:%04x on 
%03d/%03d", TargetVendor, TargetProduct, busnum, devnum);
+                               syslog(LOG_NOTICE, "switched to %04x:%04x on 
%03d/%03d", TargetVendor,
+                                               TargetProduct, busnum, devnum);
+
                        success = 1;
                        break;
                case 1:
@@ -1622,7 +1593,7 @@
 }
 
 
-int write_bulk(int endpoint, char *message, int length)
+int write_bulk(int endpoint, unsigned char *message, int length)
 {
        int ret = usb_bulk_io(devh, endpoint, message, length, 3000);
        if (ret >= 0 ) {
@@ -1636,7 +1607,8 @@
 
 }
 
-int read_bulk(int endpoint, char *buffer, int length)
+
+int read_bulk(int endpoint, unsigned char *buffer, int length)
 {
        int ret = usb_bulk_io(devh, endpoint, buffer, length, 3000);
        if (ret >= 0 ) {
@@ -1650,7 +1622,9 @@
 
 }
 
-void release_usb_device(int __attribute__((unused)) dummy) {
+
+void release_usb_device(int __attribute__((unused)) dummy)
+{
        SHOW_PROGRESS(output,"Program cancelled by system. Bye!\n\n");
        if (devh)
                libusb_release_interface(devh, Interface);
@@ -1663,9 +1637,11 @@
 /* Iterates over busses and devices, counts the ones which match the given
  * parameters and returns the last one of them
 */
-struct libusb_device* search_devices( int *numFound, int vendor, char* 
productList, int targetClass, int configuration, int mode)
+struct libusb_device* search_devices( int *numFound, int vendor, char* 
productList,
+               int targetClass, int configuration, int mode)
 {
-       char *listcopy=NULL, *token, buffer[2];
+       char *listcopy=NULL, *token;
+       unsigned char buffer[2];
        int devClass, product;
        struct libusb_device* right_dev = NULL;
 //     struct libusb_device_handle *testdevh;
@@ -1714,11 +1690,15 @@
                token = strtok(listcopy, ",");
                while (token != NULL) {
                        if (strlen(token) != 4) {
-                               SHOW_PROGRESS(output,"Error: entry in product 
ID list has wrong length: %s. Ignored\n", token);
+                               SHOW_PROGRESS(output,"Error: entry in product 
ID list has wrong length: %s. "
+                                               "Ignored\n", token);
+
                                goto NextToken;
                        }
                        if ( hexstr2bin(token, buffer, strlen(token)/2) == -1) {
-                               SHOW_PROGRESS(output,"Error: entry in product 
ID list is not a hex string: %s. Ignored\n", token);
+                               SHOW_PROGRESS(output,"Error: entry in product 
ID list is not a hex string: %s. "
+                                               "Ignored\n", token);
+
                                goto NextToken;
                        }
                        product = 0;
@@ -1766,10 +1746,12 @@
                                        }
                                } else if (configuration > 0) {
                                        // Configuration parameter is set, 
check device configuration
-                                       int testconfig = 
get_current_configuration(dev);
+                                       int testconfig = 
get_current_config_value(dev);
                                        if (testconfig != configuration) {
                                                if (verbose)
-                                                       fprintf (output,"   
device configuration %d not matching target\n", testconfig);
+                                                       fprintf (output,"   
device configuration %d not matching target\n",
+                                                                       
testconfig);
+
                                                (*numFound)++;
                                                right_dev = dev;
                                                if (verbose)
@@ -1796,9 +1778,6 @@
 }
 
 
-#define USB_DIR_OUT 0x00
-#define USB_DIR_IN  0x80
-
 /* Autodetect bulk endpoints (ab) */
 
 int find_first_bulk_endpoint(int direction)
@@ -1810,10 +1789,11 @@
        for (j=0; j < active_config->bNumInterfaces; j++) {
                alt = &(active_config->interface[j].altsetting[0]);
                if (alt->bInterfaceNumber == Interface) {
-                       for(i=0; i < alt->bNumEndpoints; i++) {
-                               ep=&(alt->endpoint[i]);
-                               if( ( (ep->bmAttributes & 
LIBUSB_ENDPOINT_ADDRESS_MASK) == LIBUSB_TRANSFER_TYPE_BULK) &&
-                                   ( (ep->bEndpointAddress & 
LIBUSB_ENDPOINT_DIR_MASK) == direction ) ) {
+                       for (i=0; i < alt->bNumEndpoints; i++) {
+                               ep = &(alt->endpoint[i]);
+                               if ( ( (ep->bmAttributes & 
LIBUSB_ENDPOINT_ADDRESS_MASK) == LIBUSB_TRANSFER_TYPE_BULK)
+                                               && ( (ep->bEndpointAddress & 
LIBUSB_ENDPOINT_DIR_MASK) == direction ) ) {
+
                                        return ep->bEndpointAddress;
                                }
                        }
@@ -1822,7 +1802,8 @@
        return 0;
 }
 
-int get_current_configuration()
+
+int get_current_config_value()
 {
        SHOW_PROGRESS(output,"Get the current device configuration ...\n");
        if (active_config != NULL) {
@@ -1837,6 +1818,7 @@
        return active_config->bConfigurationValue;
 }
 
+
 int get_interface_class()
 {
        int i;
@@ -1847,6 +1829,7 @@
        return -1;
 }
 
+
 /* Parameter parsing */
 
 char* ReadParseParam(const char* FileName, char *VariableName)
@@ -1923,7 +1906,9 @@
                LastQuote=strrchr (Equal, '"');
                if (FirstQuote!=NULL) {
                        if (LastQuote==NULL) {
-                               fprintf(stderr, "Error reading parameters from 
file %s - Missing end quote:\n%s\n", FileName, Str);
+                               fprintf(stderr, "Error reading parameters from 
file %s - "
+                                               "Missing end quote:\n%s\n", 
FileName, Str);
+
                                goto Next;
                        }
                        *FirstQuote=*LastQuote='\0';
@@ -1933,7 +1918,9 @@
                // removes leading/trailing spaces
                Pos=strspn (Str, " \t");
                if (Pos==strlen(Str)) {
-                       fprintf(stderr, "Error reading parameters from file %s 
- Missing variable name:\n%s\n", FileName, Str);
+                       fprintf(stderr, "Error reading parameters from file %s 
- "
+                                       "Missing variable name:\n%s\n", 
FileName, Str);
+
                        goto Next;
                }
                while ((P1=strrchr(Str, ' '))!=NULL or (P2=strrchr(Str, 
'\t'))!=NULL)
@@ -1943,7 +1930,9 @@
 
                Pos=strspn (Equal, " \t");
                if (Pos==strlen(Equal)) {
-                       fprintf(stderr, "Error reading parameter from file %s - 
Missing value:\n%s\n", FileName, Str);
+                       fprintf(stderr, "Error reading parameter from file %s - 
"
+                                       "Missing value:\n%s\n", FileName, Str);
+
                        goto Next;
                }
                Equal+=Pos;
@@ -1983,23 +1972,25 @@
        return (a << 4) | b;
 }
 
-int hexstr2bin(const char *hex, char *buffer, int len)
+
+int hexstr2bin(const char *hex, unsigned char *buffer, int len)
 {
        int i;
        int a;
        const char *ipos = hex;
-       char *opos = buffer;
+       unsigned char *opos = buffer;
 
        for (i = 0; i < len; i++) {
        a = hex2byte(ipos);
        if (a < 0)
                return -1;
-       *opos++ = a;
+       *opos++ = (unsigned char) a;
        ipos += 2;
        }
        return 0;
 }
 
+
 void close_all()
 {
        if (active_config)
@@ -2014,6 +2005,7 @@
                closelog();
 }
 
+
 void abortExit()
 {
        close_all();
@@ -2030,6 +2022,7 @@
                " ! PLEASE REPORT NEW CONFIGURATIONS !\n\n", version);
 }
 
+
 void printHelp()
 {
        fprintf(output,"\nUsage: usb_modeswitch [<params>] [-c filename]\n\n"
@@ -2046,7 +2039,8 @@
        " -m, --message-endpoint NUM    direct the message transfer there 
(optional)\n"
        " -M, --message-content <msg>   message to send (hex number as 
string)\n"
        " -2 <msg>, -3 <msg>            additional messages to send (-n 
recommended)\n"
-       " -n, --need-response           read response to the message transfer 
(CSW)\n"
+       " -w, --release-delay NUM       wait NUM ms before releasing the 
interface\n"
+       " -n, --need-response           obsolete, no effect (always on)\n"
        " -r, --response-endpoint NUM   read response from there (optional)\n"
        " -K, --std-eject               send standard EJECT sequence\n"
        " -d, --detach-only             detach the active driver, no further 
action\n"
@@ -2062,12 +2056,14 @@
        " -B, --qisda-mode              apply a special procedure\n"
        " -E, --quanta-mode             apply a special procedure\n"
        " -F, --pantech-mode NUM        apply a special procedure, pass NUM 
through\n"
+       " -Z, --blackberry-mode         apply a special procedure\n"
+       " -U, --option-mode             apply a special procedure\n"
        " -R, --reset-usb               reset the device after all other 
actions\n"
        " -Q, --quiet                   don't show progress or error messages\n"
        " -W, --verbose                 print all settings and debug output\n"
        " -D, --sysmode                 specific result and syslog message\n"
        " -s, --success <seconds>       switching result check with timeout\n"
-       " -I, --inquire                 retrieve SCSI attributes initially\n\n"
+       " -I, --inquire                 obsolete, no effect\n\n"
        " -c, --config-file <filename>  load long configuration from file\n\n"
        " -t, --stdinput                read long configuration from stdin\n\n"
        " -f, --long-config <text>      get long configuration from string\n\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-2.2.6/usb_modeswitch.h 
new/usb-modeswitch-2.3.0/usb_modeswitch.h
--- old/usb-modeswitch-2.2.6/usb_modeswitch.h   2015-11-01 08:53:34.000000000 
+0100
+++ new/usb-modeswitch-2.3.0/usb_modeswitch.h   2016-01-12 23:03:12.000000000 
+0100
@@ -2,8 +2,8 @@
   This file is part of usb_modeswitch, a mode switching tool for controlling
   the mode of 'multi-state' USB devices
 
-  Version 2.2.6, 2015/11/01
-  Copyright (C) 2007 - 2015  Josua Dietze
+  Version 2.3.0, 2016/01/12
+  Copyright (C) 2007 - 2016  Josua Dietze
 
   Config file parsing stuff borrowed from Guillaume Dargaud
   (http://www.gdargaud.net/Hack/SourceCode.html)
@@ -46,25 +46,24 @@
 int detachDriver();
 int checkSuccess();
 int sendMessage(char* message, int count);
-int write_bulk(int endpoint, char *message, int length);
-int read_bulk(int endpoint, char *buffer, int length);
+int write_bulk(int endpoint, unsigned char *message, int length);
+int read_bulk(int endpoint, unsigned char *buffer, int length);
 void release_usb_device(int dummy);
 struct libusb_device* search_devices( int *numFound, int vendor, char* 
productList,
                int targetClass, int configuration, int mode);
 int find_first_bulk_endpoint(int direction);
-int get_current_configuration();
+int get_current_config_value();
 int get_interface_class();
 char* ReadParseParam(const char* FileName, char *VariableName);
 int hex2num(char c);
 int hex2byte(const char *hex);
-int hexstr2bin(const char *hex, char *buffer, int len);
+int hexstr2bin(const char *hex, unsigned char *buffer, int len);
 void printVersion();
 void printHelp();
 void close_all();
 void abortExit();
 int readArguments(int argc, char **argv);
 void deviceDescription();
-int deviceInquire();
 void resetUSB();
 void release_usb_device(int dummy);
 int findMBIMConfig(int vendor, int product, int mode);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-2.2.6/usb_modeswitch.sh 
new/usb-modeswitch-2.3.0/usb_modeswitch.sh
--- old/usb-modeswitch-2.2.6/usb_modeswitch.sh  2015-11-01 09:11:07.000000000 
+0100
+++ new/usb-modeswitch-2.3.0/usb_modeswitch.sh  2016-01-11 20:18:57.000000000 
+0100
@@ -1,5 +1,5 @@
 #!/bin/sh
-# part of usb_modeswitch 2.2.6
+# part of usb_modeswitch 2.3.0
 device_in()
 {
        if [ ! -e /var/lib/usb_modeswitch/$1 ]; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-2.2.6/usb_modeswitch.tcl 
new/usb-modeswitch-2.3.0/usb_modeswitch.tcl
--- old/usb-modeswitch-2.2.6/usb_modeswitch.tcl 2015-11-01 09:11:22.000000000 
+0100
+++ new/usb-modeswitch-2.3.0/usb_modeswitch.tcl 2016-01-12 22:48:53.000000000 
+0100
@@ -9,8 +9,8 @@
 # the mode switching program with the matching parameter
 # file from /usr/share/usb_modeswitch
 #
-# Part of usb-modeswitch-2.2.6 package
-# (C) Josua Dietze 2009-2015
+# Part of usb-modeswitch-2.3.0 package
+# (C) Josua Dietze 2009-2016
 
 set arg0 [lindex $argv 0]
 if [regexp {\.tcl$} $arg0] {
@@ -28,6 +28,8 @@
 set flags(noswitching) 0
 set flags(stordelay) 0
 set flags(logwrite) 0
+# also settable in device config files
+set flags(nombim) 0
 
 # Execution starts at file bottom
 
@@ -129,14 +131,14 @@
 
 set iface 0
 Log "Check class of first interface ..."
-set config(class) [IfClass 0]
+set config(class) [IfClass 0 $devdir]
 if {$config(class) < 0} {
        Log " No access to interface 0. Exit"
        SafeExit
 }
 Log " Interface 0 class is $config(class)."
 
-set ifdir [file tail [IfDir $iface]]
+set ifdir [file tail [IfDir $iface $devdir]]
 regexp {:([0-9]+\.[0-9]+)$} $ifdir d iface
 
 set flags(logwrite) 1
@@ -241,7 +243,7 @@
        Log "Check config: $mconfig"
        if [MatchDevice $mconfig] {
                Log "! matched. Read config data"
-               set flags(config) $mconfig
+#              set flags(config) $mconfig
                if [string length $usb(busnum)] {
                        set busParam "-b [string trimleft $usb(busnum) 0]"
                        set devParam "-g [string trimleft $usb(devnum) 0]"
@@ -346,7 +348,7 @@
 # Checking for bound drivers if there is an interface with class 0xff
 
 if {$config(DriverModule) != "" && [regexp {ok:} $report]} {
-       if [HasFF] {
+       if [HasFF $devdir] {
                AddToList link_list $usb(idVendor):$usb(idProduct)
        } else {
                set config(DriverModule) ""
@@ -715,7 +717,7 @@
 proc {SafeExit} {} {
 
 global flags
-set $flags(logwrite) 1
+set flags(logwrite) 1
 Log ""
 exit
 
@@ -978,8 +980,12 @@
 proc {CheckSuccess} {devdir} {
 
 global config usb flags
-set ifdir [file tail [IfDir 0]]
 
+# For Cisco AM10, target device not on same port
+if {$usb(idVendor) == "1307" && $usb(idProduct) == "1169"} {
+       set devdir [string range $devdir 0 end-1]2
+}
+set ifdir [file tail [IfDir 0 $devdir]]
 if {[string length $config(TargetClass)] || [string length 
$config(Configuration)]} {
        set config(TargetVendor) $usb(idVendor)
        set config(TargetProduct) $usb(idProduct)
@@ -995,7 +1001,7 @@
        } else {
                Log " Read attributes ..."
        }
-       set ifdir [IfDir 0]
+       set ifdir [IfDir 0 $devdir]
        if {$ifdir == ""} {continue}
        set ifdir [file tail $ifdir]
        if {![ReadUSBAttrs $devdir $ifdir]} {
@@ -1041,9 +1047,8 @@
 # end of proc {CheckSuccess}
 
 
-proc {IfDir} {iface} {
+proc {IfDir} {iface devdir} {
 
-global devdir
 set allfiles [glob -nocomplain $devdir/*]
 set files [glob -nocomplain $devdir/*.$iface]
 if {[llength $files] == 0} {
@@ -1058,9 +1063,9 @@
 }
 # end of proc {IfDir}
 
-proc {IfClass} {iface} {
+proc {IfClass} {iface devdir} {
 
-set ifdir [IfDir $iface]
+set ifdir [IfDir $iface $devdir]
 
 if {![file exists $ifdir/bInterfaceClass]} {
        return -1
@@ -1179,10 +1184,10 @@
 
 }
 
-proc {HasFF} {} {
+proc {HasFF} {devdir} {
 
 set i 0
-while {[set dir [IfDir $i]] != ""} {
+while {[set dir [IfDir $i $devdir]] != ""} {
        set c [exec cat $dir/bInterfaceClass]
        if {$c == "ff"} {return 1}
        incr i

++++++ usb-modeswitch-data-20151101.tar.bz2 -> 
usb-modeswitch-data-20160112.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-data-20151101/40-usb_modeswitch.rules 
new/usb-modeswitch-data-20160112/40-usb_modeswitch.rules
--- old/usb-modeswitch-data-20151101/40-usb_modeswitch.rules    2015-11-01 
16:20:08.000000000 +0100
+++ new/usb-modeswitch-data-20160112/40-usb_modeswitch.rules    2016-01-12 
21:31:06.000000000 +0100
@@ -1,4 +1,4 @@
-# Part of usb-modeswitch-data, version 20151101
+# Part of usb-modeswitch-data, version 20160112
 #
 # Works with usb_modeswitch versions >= 2.2.2 (extension of PantechMode)
 #
@@ -116,7 +116,7 @@
 # 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, Celot K-300, Celot CT-680, 
StrongRising device, TechFaith Venus VT-18
+# 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, TechFaith Venus VT-18
 ATTR{idVendor}=="05c6", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '%b/%k'"
 
 # Various USB modems
@@ -149,12 +149,18 @@
 # D-Link DWM-156 HSUPA 3.75G USB Modem
 ATTR{idVendor}=="07d1", ATTR{idProduct}=="a804", RUN+="usb_modeswitch '%b/%k'"
 
+# D-Link DWM-151 A1
+ATTR{idVendor}=="07d1", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '%b/%k'"
+
 # Dymo LabelManager
 ATTR{idVendor}=="0922", ATTR{idProduct}=="1001", RUN+="usb_modeswitch '%b/%k'"
 
 # Dymo LabelManager 420P
 ATTR{idVendor}=="0922", ATTR{idProduct}=="1003", RUN+="usb_modeswitch '%b/%k'"
 
+# Dymo LabelManager Wireless PnP
+ATTR{idVendor}=="0922", ATTR{idProduct}=="1007", RUN+="usb_modeswitch '%b/%k'"
+
 # Toshiba G450
 ATTR{idVendor}=="0930", ATTR{idProduct}=="0d46", RUN+="usb_modeswitch '%b/%k'"
 
@@ -464,6 +470,36 @@
 # Sierra devices (specific driver)
 ATTR{idVendor}=="1199", ATTR{idProduct}=="0fff", RUN+="usb_modeswitch '%b/%k'"
 
+# Sierra MC8305
+ATTR{idVendor}=="1199", ATTR{idProduct}=="9011", RUN+="usb_modeswitch '%b/%k'"
+
+# Sierra MC8355
+ATTR{idVendor}=="1199", ATTR{idProduct}=="9013", RUN+="usb_modeswitch '%b/%k'"
+
+# Sierra MC8355 Variant
+ATTR{idVendor}=="1199", ATTR{idProduct}=="9017", RUN+="usb_modeswitch '%b/%k'"
+
+# Sierra MC7770
+ATTR{idVendor}=="1199", ATTR{idProduct}=="901b", RUN+="usb_modeswitch '%b/%k'"
+
+# Sierra EM7700
+ATTR{idVendor}=="1199", ATTR{idProduct}=="901c", RUN+="usb_modeswitch '%b/%k'"
+
+# Sierra EM7355
+ATTR{idVendor}=="1199", ATTR{idProduct}=="901f", RUN+="usb_modeswitch '%b/%k'"
+
+# Sierra EM7305
+ATTR{idVendor}=="1199", ATTR{idProduct}=="9041", RUN+="usb_modeswitch '%b/%k'"
+
+# Sierra AC340U
+ATTR{idVendor}=="1199", ATTR{idProduct}=="9051", RUN+="usb_modeswitch '%b/%k'"
+
+# Sierra AC770S
+ATTR{idVendor}=="1199", ATTR{idProduct}=="9053", RUN+="usb_modeswitch '%b/%k'"
+
+# Sierra EM7305
+ATTR{idVendor}=="1199", ATTR{idProduct}=="9063", RUN+="usb_modeswitch '%b/%k'"
+
 # Digicom 8E4455 (and all Pirelli devices - EXPERIMENTAL)
 ATTR{idVendor}=="1266", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '%b/%k'"
 
@@ -503,9 +539,6 @@
 # Novatel U620L
 ATTR{idVendor}=="1410", ATTR{idProduct}=="9020", RUN+="usb_modeswitch '%b/%k'"
 
-# Novatel U620L
-ATTR{idVendor}=="1410", ATTR{idProduct}=="9022", RUN+="usb_modeswitch '%b/%k'"
-
 # Sequans SQN1210/SQN1220 (generic chipsets)
 ATTR{idVendor}=="148e", ATTR{idProduct}=="a000", RUN+="usb_modeswitch '%b/%k'"
 
@@ -716,7 +749,10 @@
 # ZTE MF710M Variants
 ATTR{idVendor}=="19d2", ATTR{idProduct}=="1588", RUN+="usb_modeswitch '%b/%k'"
 
-# ZTE devices
+# ZTE MF710 (Vietnam)
+ATTR{idVendor}=="19d2", ATTR{idProduct}=="1595", RUN+="usb_modeswitch '%b/%k'"
+
+# ZTE devices, some Onda devices
 ATTR{idVendor}=="19d2", ATTR{idProduct}=="2000", RUN+="usb_modeswitch '%b/%k'"
 
 # ZTE MF60
@@ -794,6 +830,9 @@
 # Telewell TW-3G HSPA+, FS01BU 3G, SmartBro WM66E
 ATTR{idVendor}=="1c9e", ATTR{idProduct}=="98ff", RUN+="usb_modeswitch '%b/%k'"
 
+# XS Stick W100 (Omega)
+ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9bfe", RUN+="usb_modeswitch '%b/%k'"
+
 # Prolink PCM100
 ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9d00", RUN+="usb_modeswitch '%b/%k'"
 
@@ -839,6 +878,9 @@
 # Onda MV815U
 ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0003", RUN+="usb_modeswitch '%b/%k'"
 
+# Onda POM1051
+ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0007", RUN+="usb_modeswitch '%b/%k'"
+
 # Onda MW833UP
 ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0009", RUN+="usb_modeswitch '%b/%k'"
 
@@ -854,6 +896,9 @@
 # Onda MDC655
 ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0045", RUN+="usb_modeswitch '%b/%k'"
 
+# Onda MT655
+ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0048", RUN+="usb_modeswitch '%b/%k'"
+
 # Onda MDC655
 ATTR{idVendor}=="1ee8", ATTR{idProduct}=="004a", RUN+="usb_modeswitch '%b/%k'"
 
@@ -866,7 +911,7 @@
 # Onda MSA 14.4 (TIM Brasil)
 ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0060", RUN+="usb_modeswitch '%b/%k'"
 
-# Onda TM201 14.4 (TIM Italy)
+# Onda TM201, CM201
 ATTR{idVendor}=="1ee8", ATTR{idProduct}=="0063", RUN+="usb_modeswitch '%b/%k'"
 
 # Onda WM301
@@ -938,6 +983,9 @@
 # Telenet 3G dongle (T&W WU160) and others
 ATTR{idVendor}=="2077", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '%b/%k'"
 
+# BM WM78
+ATTR{idVendor}=="20a6", ATTR{idProduct}=="f00a", RUN+="usb_modeswitch '%b/%k'"
+
 # Intex 3.5G
 ATTR{idVendor}=="20a6", ATTR{idProduct}=="f00e", RUN+="usb_modeswitch '%b/%k'"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-data-20151101/ChangeLog 
new/usb-modeswitch-data-20160112/ChangeLog
--- old/usb-modeswitch-data-20151101/ChangeLog  2015-11-01 16:18:34.000000000 
+0100
+++ new/usb-modeswitch-data-20160112/ChangeLog  2016-01-12 21:45:22.000000000 
+0100
@@ -1,3 +1,18 @@
+20160112:
+    ATTENTION: requires usb-modeswitch version >= 2.3.0 due to new para-
+    meter OptionMode (further reducing config file space demand);
+    Added devices: D-Link DWM-151 A1 [07d1:f000], Dymo LabelManager Wireless
+    PnP [0922:1007], Sierra MC8305 [1199:9011], Sierra MC8355 [1199:9013],
+    Sierra MC8355 Variant [1199:9017], Sierra MC7770 [1199:901b], Sierra
+    EM7700 [1199:901c], Sierra EM7355 [1199:901f], Sierra EM7305 [1199:9041],
+    Sierra AC340U [1199:9051], Sierra AC770S [1199:9053], Sierra EM7305
+    [1199:9063], ZTE MF710 (Vietnam) [19d2:1595], XS Stick W100 (Omega)
+    [1c9e:9bfe], Onda POM1051 [1ee8:0007], Onda MT655 [1ee8:0048], BM WM78
+    [20a6:f00a]; Corrected: Quanta MU-Q101 [0408:1000], Huawei U7510 / U7517
+    [12d1:101e], Novatel U620L [1410:9020], D-Link DWM-221 B1 [2001:a401];
+    Removed: [1410:9022] which was just one of the modes of [1410:9020];
+    some new target IDs added to existing device configs; all Option configs
+    updated with new parameter
 20151101:
     Added devices: Huawei ME909u-521 [12d1:1573], Huawei E327s-150 (Variant)
     [12d1:1597], Huawei E3531s-2, E3131 (Variant) [12d1:15ce], Huawei E3131
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-data-20151101/Makefile 
new/usb-modeswitch-data-20160112/Makefile
--- old/usb-modeswitch-data-20151101/Makefile   2015-11-01 10:29:27.000000000 
+0100
+++ new/usb-modeswitch-data-20160112/Makefile   2016-01-12 21:34:25.000000000 
+0100
@@ -1,5 +1,5 @@
 PROG        = usb-modeswitch-data
-VERS        = 20151101
+VERS        = 20160112
 RM          = /bin/rm -f
 PREFIX      = $(DESTDIR)/usr
 ETCDIR      = $(DESTDIR)/etc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-data-20151101/README 
new/usb-modeswitch-data-20160112/README
--- old/usb-modeswitch-data-20151101/README     2015-06-27 22:58:13.000000000 
+0200
+++ new/usb-modeswitch-data-20160112/README     2016-01-13 08:12:16.000000000 
+0100
@@ -1,11 +1,16 @@
 README for USB_ModeSwitch Data
 
+Almost all new and corrected device configurations since around 2012
+were collected and compiled by Lars Melin. Thank you!
 
-For up-to-date and detailed information (plus a friendly forum) visit
-http://www.draisberghof.de/usb_modeswitch
+Without a well-maintained base of configuration info, usb_modeswitch
+would just be a useless blob of code. So:
 
 PLEASE REPORT NEW DEVICES !
 
+For up-to-date and detailed information (plus a friendly forum) visit
+http://www.draisberghof.de/usb_modeswitch
+
 
 
 This is a data package to complement the full release package of
@@ -144,4 +149,4 @@
 
 
 
-Last revised: 2015-06-27, Josua Dietze
+Last revised: 2016-01-12, Josua Dietze
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-data-20151101/REFERENCE 
new/usb-modeswitch-data-20160112/REFERENCE
--- old/usb-modeswitch-data-20151101/REFERENCE  2015-06-27 23:56:10.000000000 
+0200
+++ new/usb-modeswitch-data-20160112/REFERENCE  2016-01-12 21:54:12.000000000 
+0100
@@ -1,7 +1,7 @@
 Configuration File Reference for USB_ModeSwitch
 -----------------------------------------------
 
-Last modified: 2015-06-27
+Last modified: 2016-01-12
 
 
 
@@ -113,6 +113,11 @@
 message; use MessageContent for these
 
 
+* OptionMode <0/1>         -U
+
+The standard for all devices by Option. Sends a specific bulk message
+
+
 * SonyMode <0/1>           -O
 
 Some Sony-Ericsson devices can be switched by a special control
@@ -179,9 +184,8 @@
 
 * 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
+Formerly printed out SCSI device attributes. Obsolete and ignored since
+version 2.3.0.
 
 
 * CheckSuccess             -s <number>
@@ -214,3 +218,8 @@
 Disable the check for devices providing the MBIM standard; this check
 is otherwise done by default. See /etc/usb_modeswitch.conf from the
 program package for a global setting regarding this.
+The usb_modeswitch wrapper will test if a device has a configuration
+according to the MBIM standard. If so, it will search for the matching
+kernel driver. It it's available, the device will be configured for
+MBIM usage which is preferable to other modes and configurations
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-data-20151101/gen-rules.tcl 
new/usb-modeswitch-data-20160112/gen-rules.tcl
--- old/usb-modeswitch-data-20151101/gen-rules.tcl      2015-11-01 
16:23:05.000000000 +0100
+++ new/usb-modeswitch-data-20160112/gen-rules.tcl      2016-01-12 
21:34:07.000000000 +0100
@@ -4,12 +4,14 @@
 #
 # <date> should be in the form YYYYMMDD
 #
+# Config files are expected to be in subfolder "usb_modeswitch.d"
+#
 # A config file is expected to have one comment line containing
 # a model name or other concise device specifications
 
 
 # Default version string
-set version "20151101"
+set version "20160112"
 
 # Devices excluded from Huawei catch-all rule
 set x_huaweiList {12d1:1573}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0408:1000 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0408:1000
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0408:1000 2015-01-14 
23:39:14.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0408:1000 2016-01-12 
20:19:50.000000000 +0100
@@ -1,4 +1,4 @@
 # Quanta MU-Q101
 TargetVendor=0x0408
 TargetProduct=0xea02
-Message="5553424338474ffc0002000000000a2a000000003300000100000000000000"
+MessageContent="55534243123456780002000000000a2a000000003300000100000000000000"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/05c6:1000:sVe=GT 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/05c6:1000:sVe=GT
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/05c6:1000:sVe=GT  
2014-03-26 20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/05c6:1000:sVe=GT  
2016-01-11 20:57:00.000000000 +0100
@@ -1,5 +1,4 @@
 # Option GlobeTrotter GX0201
 TargetVendor=0x0af0
 TargetProduct=0x6701
-MessageContent="55534243123456780000000000000601000000000000000000000000000000"
-NeedResponse=1
+OptionMode=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/05c6:1000:sVe=Option 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/05c6:1000:sVe=Option
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/05c6:1000:sVe=Option      
2014-03-26 20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/05c6:1000:sVe=Option      
2016-01-11 20:57:00.000000000 +0100
@@ -1,5 +1,4 @@
 # Older Option devices
 TargetVendor= 0x0af0
 TargetProductList="6901,6701,6600"
-MessageContent="55534243123456780000000000000601000000000000000000000000000000"
-NeedResponse=1
+OptionMode=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/05c6:1000:uMa=Option 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/05c6:1000:uMa=Option
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/05c6:1000:uMa=Option      
2014-03-26 20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/05c6:1000:uMa=Option      
2016-01-11 20:57:00.000000000 +0100
@@ -1,5 +1,4 @@
 # Quirky Option devices
 TargetVendor=0x0af0
 TargetProduct=0x6901
-MessageContent="55534243123456780000000000000601000000000000000000000000000000"
-NeedResponse=1
+OptionMode=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/07d1:f000 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/07d1:f000
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/07d1:f000 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/07d1:f000 2016-01-12 
20:42:32.000000000 +0100
@@ -0,0 +1,4 @@
+# D-Link DWM-151 A1
+TargetVendor=0x07d1
+TargetProduct=0x7e07
+MessageContent="555342431234567800000000000006bd000000020000000000000000000000"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0922:1007 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0922:1007
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0922:1007 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0922:1007 2016-01-12 
20:56:12.000000000 +0100
@@ -0,0 +1,5 @@
+# Dymo LabelManager Wireless PnP
+TargetVendor= 0x0922
+TargetProduct= 0x1008
+MessageContent="1b5a01"
+NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6711 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6711
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6711 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6711 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6731 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6731
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6731 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6731 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6751 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6751
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6751 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6751 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6771 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6771
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6771 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6771 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6791 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6791
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6791 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6791 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6811 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6811
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6811 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6811 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6911 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6911
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6911 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6911 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6951 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6951
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6951 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6951 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6971 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6971
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:6971 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:6971 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7011 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7011
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7011 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7011 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7031 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7031
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7031 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7031 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7051 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7051
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7051 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7051 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7071 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7071
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7071 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7071 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7111 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7111
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7111 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7111 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7211 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7211
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7211 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7211 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7251 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7251
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7251 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7251 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7271 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7271
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7271 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7271 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7301 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7301
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7301 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7301 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7311 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7311
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7311 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7311 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7361 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7361
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7361 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7361 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7381 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7381
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7381 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7381 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7401 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7401
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7401 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7401 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7501 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7501
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7501 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7501 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7601 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7601
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7601 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7601 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7701 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7701
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7701 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7701 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7706 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7706
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7706 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7706 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7801 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7801
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7801 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7801 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7901 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7901
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7901 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7901 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7a01 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7a01
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7a01 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7a01 2016-01-11 
20:52:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243123456780000000000000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7a05 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7a05
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:7a05 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:7a05 2016-01-11 
20:52:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option iCon 461
 TargetClass=0xff
-MessageContent="55534243123456780000000000000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8006 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8006
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8006 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8006 2016-01-11 
20:51:00.000000000 +0100
@@ -1,5 +1,5 @@
 # Option Globetrotter (Variant)
 TargetVendor=0x0af0
 TargetProduct=0x9100
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8200 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8200
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8200 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8200 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8201 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8201
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8201 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8201 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8300 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8300
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8300 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8300 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8302 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8302
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8302 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8302 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8304 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8304
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8304 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8304 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8400 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8400
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8400 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8400 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8600 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8600
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8600 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8600 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8700 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8700
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8700 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8700 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option GI0643 (aka XYFI)
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8800 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8800
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8800 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8800 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8900 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8900
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:8900 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:8900 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:9000 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:9000
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:9000 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:9000 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:9200 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:9200
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:9200 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:9200 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:c031 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:c031
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:c031 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:c031 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:c100 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:c100
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:c100 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:c100 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d001 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d001
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d001 2014-03-26 
20:49:48.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d001 2016-01-11 
20:52:00.000000000 +0100
@@ -1,6 +1,5 @@
 # Option GlobeTrotter GI1515
 TargetVendor=0x0af0
 TargetProductList="d157,d255,d257"
-Interface=0x01
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d013 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d013
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d013 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d013 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d031 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d031
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d031 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d031 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d033 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d033
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d033 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d033 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d035 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d035
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d035 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d035 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d055 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d055
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d055 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d055 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d057 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d057
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d057 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d057 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d058 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d058
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d058 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d058 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d155 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d155
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d155 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d155 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d157 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d157
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d157 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d157 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d255 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d255
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d255 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d255 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d257 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d257
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d257 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d257 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d357 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d357
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/0af0:d357 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/0af0:d357 2016-01-11 
20:51:00.000000000 +0100
@@ -1,4 +1,4 @@
 # Option HSO device
 TargetClass=0xff
-MessageContent="55534243785634120100000080000601000000000000000000000000000000"
+OptionMode=1
 NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:9011 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:9011
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:9011 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:9011 2016-01-12 
20:57:47.000000000 +0100
@@ -0,0 +1,3 @@
+# Sierra MC8305
+Configuration=1
+NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:9013 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:9013
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:9013 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:9013 2016-01-12 
20:59:46.000000000 +0100
@@ -0,0 +1,3 @@
+# Sierra MC8355
+Configuration=1
+NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:9017 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:9017
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:9017 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:9017 2016-01-12 
21:00:10.000000000 +0100
@@ -0,0 +1,3 @@
+# Sierra MC8355 Variant
+Configuration=1
+NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:901b 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:901b
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:901b 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:901b 2016-01-12 
21:05:08.000000000 +0100
@@ -0,0 +1,3 @@
+# Sierra MC7770
+Configuration=1
+NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:901c 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:901c
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:901c 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:901c 2016-01-12 
21:05:33.000000000 +0100
@@ -0,0 +1,3 @@
+# Sierra EM7700
+Configuration=1
+NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:901f 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:901f
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:901f 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:901f 2016-01-12 
21:06:03.000000000 +0100
@@ -0,0 +1,3 @@
+# Sierra EM7355
+Configuration=1
+NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:9041 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:9041
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:9041 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:9041 2016-01-12 
21:15:25.000000000 +0100
@@ -0,0 +1,3 @@
+# Sierra EM7305
+Configuration=1
+NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:9051 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:9051
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:9051 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:9051 2016-01-12 
21:15:46.000000000 +0100
@@ -0,0 +1,3 @@
+# Sierra AC340U
+Configuration=1
+NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:9053 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:9053
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:9053 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:9053 2016-01-12 
21:16:06.000000000 +0100
@@ -0,0 +1,3 @@
+# Sierra AC770S
+Configuration=1
+NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:9063 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:9063
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/1199:9063 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/1199:9063 2016-01-12 
21:16:23.000000000 +0100
@@ -0,0 +1,3 @@
+# Sierra EM7305
+Configuration=1
+NoDriverLoading=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/12d1:101e 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/12d1:101e
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/12d1:101e 2015-01-14 
21:25:31.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/12d1:101e 2016-01-12 
20:20:18.000000000 +0100
@@ -1,3 +1,3 @@
 # Huawei U7510 / U7517
 TargetClass=0xff
-Message="55534243123456780600000080000601000000000000000000000000000000"
+MessageContent="55534243123456780600000080000601000000000000000000000000000000"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/1410:9020 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/1410:9020
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/1410:9020 2015-10-27 
21:51:38.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/1410:9020 2016-01-12 
20:20:48.000000000 +0100
@@ -1,2 +1,2 @@
 # Novatel U620L
-Configuration=2
+Configuration=4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/1410:9022 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/1410:9022
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/1410:9022 2015-10-27 
21:51:38.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/1410:9022 1970-01-01 
01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-# Novatel U620L
-Configuration=2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/19d2:1595 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/19d2:1595
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/19d2:1595 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/19d2:1595 2016-01-12 
20:39:14.000000000 +0100
@@ -0,0 +1,5 @@
+# ZTE MF710 (Vietnam)
+TargetVendor= 0x19d2
+TargetProductList=0x1596
+StandardEject=1
+MessageContent="55534243123456702000000080000c85010101180101010101000000000000"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/19d2:2000 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/19d2:2000
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/19d2:2000 2015-01-15 
19:46:36.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/19d2:2000 2016-01-12 
20:37:33.000000000 +0100
@@ -1,5 +1,5 @@
-# ZTE devices
+# ZTE devices, some Onda devices
 TargetVendor= 0x19d2
-TargetProductList="0001,0002,0015,0016,0017,0019,0031,0033,0037,0042,0052,0055,0061,0063,0064,0066,0091,0108,0117,0128,0151,0157,0177,1402,2002,2003"
+TargetProductList="0001,0002,0015,0016,0017,0019,0024,0031,0033,0037,0042,0052,0055,0061,0063,0064,0066,0091,0108,0117,0128,0151,0157,0177,1402,2002,2003"
 StandardEject=1
 MessageContent="55534243123456702000000080000c85010101180101010101000000000000"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/1c9e:9bfe 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/1c9e:9bfe
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/1c9e:9bfe 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/1c9e:9bfe 2016-01-12 
20:55:00.000000000 +0100
@@ -0,0 +1,4 @@
+# XS Stick W100 (Omega)
+TargetVendor=0x1c9e
+TargetProduct=0x9b01
+MessageContent="55534243123456780000000000000606f50402527000000000000000000000"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/1ee8:0007 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/1ee8:0007
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/1ee8:0007 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/1ee8:0007 2016-01-12 
20:28:39.000000000 +0100
@@ -0,0 +1,4 @@
+# Onda POM1051
+TargetVendor=0x1ee8
+TargetProduct=0x000b
+MessageContent="555342431234567800000000000010ff000000000000000000000000000000"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/1ee8:0048 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/1ee8:0048
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/1ee8:0048 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/1ee8:0048 2016-01-12 
20:35:26.000000000 +0100
@@ -0,0 +1,4 @@
+# Onda MT655
+TargetVendor=0x1ee8
+TargetProduct=0x0049
+MessageContent="555342431234567800000000000010ff000000000000000000000000000000"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/1ee8:0063 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/1ee8:0063
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/1ee8:0063 2015-01-14 
21:27:10.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/1ee8:0063 2016-01-12 
20:30:15.000000000 +0100
@@ -1,4 +1,4 @@
-# Onda TM201 14.4 (TIM Italy)
+# Onda TM201, CM201
 TargetVendor=0x1ee8
-TargetProduct=0x0064
+TargetProductList="0064,0065"
 MessageContent="555342431234567800000000000008ff000000000000030000000000000000"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/2001:a401 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/2001:a401
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/2001:a401 2015-06-21 
18:33:22.000000000 +0200
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/2001:a401 2016-01-12 
19:11:45.000000000 +0100
@@ -1,7 +1,5 @@
 # D-Link DWM-221 B1
 TargetVendor=0x2001
 TargetProduct=0x7e19
-#StandardEject=1
-MessageContent="5553424312345678000000000000061e000000000000000000000000000000"
-MessageContent2="5553424312345679000000000001061b000000010000000000000000000000"
-MessageContent3="5553424312345670000000000000061b000000020000000000000000000000"
+MessageContent="5553424312345678000000000001061e000000000000000000000000000000"
+MessageContent2="5553424312345679000000000001061b000000020000000000000000000000"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20151101/usb_modeswitch.d/20a6:f00a 
new/usb-modeswitch-data-20160112/usb_modeswitch.d/20a6:f00a
--- old/usb-modeswitch-data-20151101/usb_modeswitch.d/20a6:f00a 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160112/usb_modeswitch.d/20a6:f00a 2016-01-12 
20:45:51.000000000 +0100
@@ -0,0 +1,4 @@
+# BM WM78
+TargetVendor=0x20a6
+TargetProduct=0x1000
+StandardEject=1


Reply via email to