Hello community,

here is the log from the commit of package usb_modeswitch for openSUSE:Factory 
checked in at 2016-08-06 20:37:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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    
2016-03-02 14:19:25.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.usb_modeswitch.new/usb_modeswitch.changes       
2016-08-06 20:37:57.000000000 +0200
@@ -1,0 +2,21 @@
+Fri Jul 29 13:55:21 UTC 2016 - [email protected]
+
+- Update to version 2.4.0
+  * ATTENTION: All ad-hoc driver binding code (using new_id driver
+    attribute) removed - was a potential source of side effects and
+    should now be obsoleted by good kernel support for modems.
+  * Added "dummy" setting for config files, to conditionally
+    refrain from handling a device (see this topic:
+    www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?f=4&t=2458).
+  * Extended StandardEject sequence to include LUN 1, required for
+    some D-Link devices.
+  * Add device class 239 ("miscellaneous") to sanity check (thanks
+    to Daniel Drake for reporting).
+  * udev shell script - removed driver binding, removed almost all
+    waiting and forking, improved check for systemd (thanks to
+    Daniel Drake for problem analysis and solution, see this
+    topic/patch:
+    www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?p=16777#p16777,
+    gist.github.com/dsd/9f83c4830ab78ce94078aedb2cf16a8f).
+
+-------------------------------------------------------------------

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

New:
----
  usb-modeswitch-2.4.0.tar.bz2
  usb-modeswitch-data-20160612.tar.bz2

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

Other differences:
------------------
++++++ usb_modeswitch.spec ++++++
--- /var/tmp/diff_new_pack.nLCSVR/_old  2016-08-06 20:37:58.000000000 +0200
+++ /var/tmp/diff_new_pack.nLCSVR/_new  2016-08-06 20:37:58.000000000 +0200
@@ -17,10 +17,10 @@
 
 
 %define source_name    usb-modeswitch
-%define date           20160112
+%define date           20160612
 %define _udevdir %(pkg-config --variable=udevdir udev)
 Name:           usb_modeswitch
-Version:        2.3.0
+Version:        2.4.0
 Release:        0
 Summary:        A mode switching tool for controlling multiple-device USB gear
 License:        GPL-2.0+

++++++ usb-modeswitch-2.3.0.tar.bz2 -> usb-modeswitch-2.4.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-2.3.0/ChangeLog 
new/usb-modeswitch-2.4.0/ChangeLog
--- old/usb-modeswitch-2.3.0/ChangeLog  2016-01-13 07:53:03.000000000 +0100
+++ new/usb-modeswitch-2.4.0/ChangeLog  2016-06-12 14:08:36.000000000 +0200
@@ -2,6 +2,19 @@
 History of USB_ModeSwitch
 =========================
 
+Version 2.4.0, 2016/06/12
+    ATTENTION: All ad-hoc driver binding code (using new_id driver attribute)
+    removed - was a potential source of side effects and should now be
+    obsoleted by good kernel support for modems; Added "dummy" setting for
+    config files, to conditionally refrain from handling a device (see this
+    topic: www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?f=4&t=2458 );
+    extended StandardEject sequence to include LUN 1, required for some D-Link
+    devices; add device class 239 ("miscellaneous") to sanity check (thanks to
+    Daniel Drake for reporting); udev shell script - removed driver binding,
+    removed almost all waiting and forking, improved check for systemd (thanks
+    to Daniel Drake for problem analysis and solution, see this topic/patch:
+    www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?p=16777#p16777 ,
+    gist.github.com/dsd/9f83c4830ab78ce94078aedb2cf16a8f )
 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
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-2.3.0/Makefile 
new/usb-modeswitch-2.4.0/Makefile
--- old/usb-modeswitch-2.3.0/Makefile   2016-01-11 19:53:39.000000000 +0100
+++ new/usb-modeswitch-2.4.0/Makefile   2016-06-12 10:13:53.000000000 +0200
@@ -1,5 +1,5 @@
 PROG        = usb_modeswitch
-VERS        = 2.3.0
+VERS        = 2.4.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.3.0/README 
new/usb-modeswitch-2.4.0/README
--- old/usb-modeswitch-2.3.0/README     2015-06-27 22:00:55.000000000 +0200
+++ new/usb-modeswitch-2.4.0/README     2016-06-12 22:33:35.000000000 +0200
@@ -239,6 +239,7 @@
  Adam Goode
  Leonid Lisovskiy
  Vladislav Grishenko
+ Daniel Drake
 
 Device information contributors are named in the "device_reference.txt" file.
 
@@ -267,4 +268,4 @@
 
 
 
-Last revised: 2015-06-27, Josua Dietze
+Last revised: 2016-06-12, Josua Dietze
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-2.3.0/usb_modeswitch.c 
new/usb-modeswitch-2.4.0/usb_modeswitch.c
--- old/usb-modeswitch-2.3.0/usb_modeswitch.c   2016-01-12 23:15:13.000000000 
+0100
+++ new/usb-modeswitch-2.4.0/usb_modeswitch.c   2016-06-12 19:48:35.000000000 
+0200
@@ -1,8 +1,8 @@
 /*
   Mode switching tool for controlling mode of 'multi-state' USB devices
-  Version 2.3.0, 2016/01/12
+  Version 2.4.0, 2016/06/12
 
-  Copyright (C) 2007 - 2016 Josua Dietze (mail to "digidietze" at the domain
+  Copyright (C) 2007 - 2016 Josua Dietze (mail to "usb_admin" 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)
 
@@ -45,7 +45,7 @@
 
 /* Recommended tab size: 4 */
 
-#define VERSION "2.3.0"
+#define VERSION "2.4.0"
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -98,6 +98,7 @@
 
 
 #define LINE_DIM 1024
+#define MSG_DIM 11
 #define MAXLINES 50
 #define BUF_SIZE 4096
 #define DESCR_MAX 129
@@ -152,6 +153,7 @@
 char DefaultProductList[5];
 unsigned char ByteString[LINE_DIM/2];
 unsigned char buffer[BUF_SIZE];
+char **Messages = NULL;
 
 FILE *output;
 
@@ -426,7 +428,7 @@
 
 int main(int argc, char **argv)
 {
-       int ret=0, numDefaults=0, sonySuccess=0;
+       int ret=0, numDefaults=0, sonySuccess=0, i;
        int currentConfigVal=0, defaultClass=0, interfaceClass=0;
        struct libusb_device_descriptor descriptor;
        enum libusb_error libusbError;
@@ -577,10 +579,16 @@
        /* Get class of default device/interface */
        interfaceClass = get_interface_class();
 
-       /* Check or get endpoints */
+       /* Check or get endpoints and alloc message list if needed*/
        if (strlen(MessageContent) || StandardEject || ModeMap & CISCO_MODE
                                || ModeMap & HUAWEINEW_MODE || ModeMap & 
OPTION_MODE) {
 
+               Messages = (char**) calloc(MSG_DIM, sizeof(char*));
+               for (i = 0; i < MSG_DIM; i++) {
+                       Messages[i] = (char*) calloc(LINE_DIM, sizeof(char));
+                       Messages[i][0] = '\0';
+               }
+
                if (!MessageEndpoint)
                        MessageEndpoint = 
find_first_bulk_endpoint(LIBUSB_ENDPOINT_OUT);
                if (!ResponseEndpoint)
@@ -603,11 +611,11 @@
                abortExit();
        }
 
-       if (defaultClass == 0)
+       if (defaultClass == 0 || defaultClass == 0xef)
                defaultClass = interfaceClass;
        else
                if (interfaceClass == LIBUSB_CLASS_MASS_STORAGE && defaultClass 
!= LIBUSB_CLASS_MASS_STORAGE
-                               && defaultClass != 0xef && defaultClass != 
LIBUSB_CLASS_VENDOR_SPEC) {
+                               && defaultClass != LIBUSB_CLASS_VENDOR_SPEC) {
 
                        /* Unexpected default class combined with differing 
interface class */
                        SHOW_PROGRESS(output,"Bogus Class/InterfaceClass: 
0x%02x/0x08\n", defaultClass);
@@ -716,27 +724,29 @@
        if (StandardEject) {
                SHOW_PROGRESS(output,"Sending standard EJECT sequence\n");
                detachDriver();
+
+               
strcpy(Messages[0],"5553424387654321000000000000061e000000000000000000000000000000");
+               
strcpy(Messages[1],"5553424397654321000000000000061b000000020000000000000000000000");
+               
strcpy(Messages[2],"5553424387654321000000000001061e000000000000000000000000000000");
+               
strcpy(Messages[3],"5553424397654321000000000001061b000000020000000000000000000000");
                if (MessageContent[0] != '\0')
-                       strcpy(MessageContent3, MessageContent);
-               else
-                       MessageContent3[0] = '\0';
+                       strcpy(Messages[4], MessageContent);
 
-               
strcpy(MessageContent,"5553424387654321000000000000061e000000000000000000000000000000");
-               
strcpy(MessageContent2,"5553424397654321000000000000061b000000020000000000000000000000");
                switchSendMessage();
        } else if (ModeMap & HUAWEINEW_MODE) {
                SHOW_PROGRESS(output,"Using standard Huawei switching 
message\n");
                detachDriver();
-               
strcpy(MessageContent,"55534243123456780000000000000011062000000101000100000000000000");
+               
strcpy(Messages[0],"55534243123456780000000000000011062000000101000100000000000000");
                switchSendMessage();
        } else if (ModeMap & OPTION_MODE) {
                SHOW_PROGRESS(output,"Using standard Option switching 
message\n");
                detachDriver();
 //             
strcpy(MessageContent,"55534243123456780100000080000601000000000000000000000000000000");
-               
strcpy(MessageContent,"55534243123456780000000000000601000000000000000000000000000000");
+               
strcpy(Messages[0],"55534243123456780000000000000601000000000000000000000000000000");
                switchSendMessage();
        } else if (strlen(MessageContent)) {
                detachDriver();
+               strcpy(Messages[0],MessageContent);
                switchSendMessage();
        }
 
@@ -963,11 +973,11 @@
 {
        const char* cmdHead = "55534243";
        int ret, i;
-       char* msg[3];
+/*     char* msg[3];
        msg[0] = MessageContent;
        msg[1] = MessageContent2;
        msg[2] = MessageContent3;
-
+*/
        SHOW_PROGRESS(output,"Set up interface %d\n", Interface);
        ret = libusb_claim_interface(devh, Interface);
        if (ret != 0) {
@@ -979,22 +989,25 @@
        if (show_progress)
                fflush(stdout);
 
-       for (i=0; i<3; i++) {
-               if ( strlen(msg[i]) == 0)
-                       continue;
+       for (i=0; i<MSG_DIM; i++) {
+               if ( strlen(Messages[i]) == 0)
+                       break;
 
-               if ( sendMessage(msg[i], i+1) )
+               if ( sendMessage(Messages[i], i+1) )
                        goto skip;
 
-               if ( strstr(msg[i],cmdHead) != NULL ) {
+               if ( strstr(Messages[i],cmdHead) != NULL ) {
                        // UFI command
                        SHOW_PROGRESS(output,"Read the response to message %d 
(CSW) ...\n", i+1);
                        ret = read_bulk(ResponseEndpoint, ByteString, 13);
+                       if (ret >= 0)
+                               SHOW_PROGRESS(output,", status 
%d",ByteString[12]);
                } 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 );
+                       ret = read_bulk(ResponseEndpoint, ByteString, 
strlen(Messages[i])/2 );
                }
+               SHOW_PROGRESS(output,"\n");
                if (ret < 0)
                        goto skip;
        }
@@ -1252,7 +1265,8 @@
        ret = usb_interrupt_io(devh, EP_OUT, buffer, SIZE, 1000);
        usb_interrupt_io(devh, EP_IN, buffer, SIZE, 1000);
        if (ret < 0) {
-               SHOW_PROGRESS(output," MobileAction control sequence did not 
complete\n Last error was %d\n",ret);
+               SHOW_PROGRESS(output," MobileAction control sequence did not 
complete\n"
+                       " Last error was %d\n",ret);
        } else {
                SHOW_PROGRESS(output," MobileAction control sequence 
complete\n");
        }
@@ -1271,8 +1285,9 @@
 
        int ret;
        SHOW_PROGRESS(output,"Send Sequans control message\n");
-       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);
+       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);
@@ -1284,19 +1299,18 @@
 void switchCiscoMode()
 {
        int ret, i, j;
-       char* msg[11];
 
-       msg[0] = 
"55534243f83bcd810002000080000afd000000030000000100000000000000";
-       msg[1] = 
"55534243984300820002000080000afd000000070000000100000000000000";
-       msg[2] = 
"55534243984300820000000000000afd000100071000000000000000000000";
-       msg[3] = 
"55534243984300820002000080000afd000200230000000100000000000000";
-       msg[4] = 
"55534243984300820000000000000afd000300238200000000000000000000";
-       msg[5] = 
"55534243984300820002000080000afd000200260000000100000000000000";
-       msg[6] = 
"55534243984300820000000000000afd00030026c800000000000000000000";
-       msg[7] = 
"55534243d84c04820002000080000afd000010730000000100000000000000";
-       msg[8] = 
"55534243d84c04820002000080000afd000200240000000100000000000000";
-       msg[9] = 
"55534243d84c04820000000000000afd000300241300000000000000000000";
-       msg[10] = 
"55534243d84c04820000000000000afd000110732400000000000000000000";
+       
strcpy(Messages[0],"55534243f83bcd810002000080000afd000000030000000100000000000000");
+       
strcpy(Messages[1],"55534243984300820002000080000afd000000070000000100000000000000");
+       
strcpy(Messages[2],"55534243984300820000000000000afd000100071000000000000000000000");
+       
strcpy(Messages[3],"55534243984300820002000080000afd000200230000000100000000000000");
+       
strcpy(Messages[4],"55534243984300820000000000000afd000300238200000000000000000000");
+       
strcpy(Messages[5],"55534243984300820002000080000afd000200260000000100000000000000");
+       
strcpy(Messages[6],"55534243984300820000000000000afd00030026c800000000000000000000");
+       
strcpy(Messages[7],"55534243d84c04820002000080000afd000010730000000100000000000000");
+       
strcpy(Messages[8],"55534243d84c04820002000080000afd000200240000000100000000000000");
+       
strcpy(Messages[9],"55534243d84c04820000000000000afd000300241300000000000000000000");
+       
strcpy(Messages[10],"55534243d84c04820000000000000afd000110732400000000000000000000");
 
        SHOW_PROGRESS(output,"Set up Cisco interface %d\n", Interface);
        ret = libusb_claim_interface(devh, Interface);
@@ -1312,13 +1326,14 @@
 //     SHOW_PROGRESS(output," Extra response (CSW) read, result %d\n",ret);
 
        for (i=0; i<11; i++) {
-               if ( sendMessage(msg[i], i+1) )
+               if ( sendMessage(Messages[i], i+1) )
                        goto skip;
 
                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);
+                       SHOW_PROGRESS(output,"\n");
 
                        if (ret < 0)
                                goto skip;
@@ -1329,11 +1344,10 @@
        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);
-       }
+       ReleaseDelay = 2000;
+       SHOW_PROGRESS(output,"Wait for %d ms before releasing interface ...\n", 
ReleaseDelay);
+       usleep(ReleaseDelay*1000);
+
        ret = libusb_release_interface(devh, Interface);
        if (ret < 0)
                goto skip;
@@ -1356,8 +1370,8 @@
        }
 
        SHOW_PROGRESS(output,"Send Sony control message\n");
-       ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_VENDOR | 
LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_IN,
-                       0x11, 2, 0, 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);
@@ -1375,7 +1389,8 @@
        dev = 0;
        while ( dev == 0 && i < 30 ) {
                if ( i > 5 ) {
-                       dev = search_devices(&found, DefaultVendor, 
DefaultProductList, TargetClass, 0, SEARCH_TARGET);
+                       dev = search_devices(&found, DefaultVendor, 
DefaultProductList, TargetClass,
+                                       0, SEARCH_TARGET);
                }
                if ( dev != 0 )
                        break;
@@ -1401,8 +1416,8 @@
        sleep(1);
 
        SHOW_PROGRESS(output,"Send Sony control message again ...\n");
-       ret = libusb_control_transfer(devh, LIBUSB_REQUEST_TYPE_VENDOR | 
LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_IN,
-                       0x11, 2, 0, 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);
@@ -1530,8 +1545,8 @@
                 */
                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)) {
                                if (verbose) {
@@ -1612,12 +1627,12 @@
 {
        int ret = usb_bulk_io(devh, endpoint, buffer, length, 3000);
        if (ret >= 0 ) {
-               SHOW_PROGRESS(output," Response successfully read (%d 
bytes).\n", ret);
+               SHOW_PROGRESS(output," Response successfully read (%d bytes)", 
ret);
        } else
                if (ret == LIBUSB_ERROR_NO_DEVICE) {
-                       SHOW_PROGRESS(output," Device seems to have vanished 
after reading. Good.\n");
+                       SHOW_PROGRESS(output," Device seems to have vanished 
after reading. Good.");
                } else
-                       SHOW_PROGRESS(output," Response reading failed (error 
%d)\n", ret);
+                       SHOW_PROGRESS(output," Response reading failed (error 
%d)", ret);
        return ret;
 
 }
@@ -1993,6 +2008,13 @@
 
 void close_all()
 {
+       int i;
+       if (Messages) {
+               for ( i = 0; i < MSG_DIM; i++ ) {
+                       free(Messages[i]);
+               }
+               free(Messages);
+       }
        if (active_config)
                libusb_free_config_descriptor(active_config);
        if (devh)
@@ -2017,7 +2039,7 @@
 {
        char* version = VERSION;
        fprintf(output,"\n * usb_modeswitch: handle USB devices with multiple 
modes\n"
-               " * Version %s (C) Josua Dietze 2015\n"
+               " * Version %s (C) Josua Dietze 2016\n"
                " * Based on libusb1/libusbx\n\n"
                " ! PLEASE REPORT NEW CONFIGURATIONS !\n\n", version);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-2.3.0/usb_modeswitch.h 
new/usb-modeswitch-2.4.0/usb_modeswitch.h
--- old/usb-modeswitch-2.3.0/usb_modeswitch.h   2016-01-12 23:03:12.000000000 
+0100
+++ new/usb-modeswitch-2.4.0/usb_modeswitch.h   2016-06-12 21:48:26.000000000 
+0200
@@ -2,7 +2,7 @@
   This file is part of usb_modeswitch, a mode switching tool for controlling
   the mode of 'multi-state' USB devices
 
-  Version 2.3.0, 2016/01/12
+  Version 2.4.0, 2016/06/12
   Copyright (C) 2007 - 2016  Josua Dietze
 
   Config file parsing stuff borrowed from Guillaume Dargaud
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-2.3.0/usb_modeswitch.sh 
new/usb-modeswitch-2.4.0/usb_modeswitch.sh
--- old/usb-modeswitch-2.3.0/usb_modeswitch.sh  2016-01-11 20:18:57.000000000 
+0100
+++ new/usb-modeswitch-2.4.0/usb_modeswitch.sh  2016-06-12 14:12:27.000000000 
+0200
@@ -1,5 +1,5 @@
 #!/bin/sh
-# part of usb_modeswitch 2.3.0
+# part of usb_modeswitch 2.4.0
 device_in()
 {
        if [ ! -e /var/lib/usb_modeswitch/$1 ]; then
@@ -40,27 +40,7 @@
 PATH=/sbin:/usr/sbin:$PATH
 case "$1" in
        --driver-bind)
-               (
-               dir=$(ls -d /sys$2/ttyUSB* 2>/dev/null)
-               sleep 1
-               if [ ! -z "$dir" ]; then
-                       exit 0
-               fi
-               set +e
-               device_in "bind_list" $v_id $p_id
-               if [ "$?" = "1" ]; then
-                       id_attr="/sys/bus/usb-serial/drivers/option1/new_id"
-                       if [ ! -e "$id_attr" ]; then
-                               modprobe option 2>/dev/null || true
-                       fi
-                       if [ -e "$id_attr" ]; then
-                               echo "$v_id $p_id ff" > $id_attr
-                       else
-                               modprobe -r usbserial 2>/dev/null
-                               modprobe usbserial "vendor=0x$v_id" 
"product=0x$p_id" 2>/dev/null
-                       fi
-               fi
-               ) &
+               # driver binding code removed
                exit 0
                ;;
        --symlink-name)
@@ -73,26 +53,20 @@
                exit 0
                ;;
 esac
-(
+
 IFS='/' read -r p1 p2 <<EOF
 $1
 EOF
+
 PATH=/bin:/sbin:/usr/bin:/usr/sbin
-count=20
-while [ $count != 0 ]; do
-       if [ ! -e "/usr/sbin/usb_modeswitch_dispatcher" ]; then
-               sleep 1
-               count=$(($count - 1))
-       else
-               if [ -e "/etc/systemd/system/[email protected]" ]; then
-                       exec systemctl --no-block start 
usb_modeswitch@$p1'_'$p2.service
-               elif [ -e "/etc/init/usb-modeswitch-upstart.conf" ]; then
-                       exec initctl emit --no-wait usb-modeswitch-upstart 
UMS_PARAM=$1
-               else
-                       exec usb_modeswitch_dispatcher --switch-mode $1 &
-               fi
-               exit 0
-       fi
-done
-) &
+init_path=`readlink /sbin/init`
+if [ `basename $init_path` = "systemd" ]; then
+       systemctl --no-block start usb_modeswitch@$p1'_'$p2.service
+elif [ -e "/etc/init/usb-modeswitch-upstart.conf" ]; then
+       initctl emit --no-wait usb-modeswitch-upstart UMS_PARAM=$1
+else
+       # only old distros, new udev will kill all subprocesses
+       exec 1<&- 2<&- 5<&- 7<&-
+       exec usb_modeswitch_dispatcher --switch-mode $1 &
+fi
 exit 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-2.3.0/usb_modeswitch.tcl 
new/usb-modeswitch-2.4.0/usb_modeswitch.tcl
--- old/usb-modeswitch-2.3.0/usb_modeswitch.tcl 2016-01-12 22:48:53.000000000 
+0100
+++ new/usb-modeswitch-2.4.0/usb_modeswitch.tcl 2016-06-12 11:33:56.000000000 
+0200
@@ -9,7 +9,7 @@
 # the mode switching program with the matching parameter
 # file from /usr/share/usb_modeswitch
 #
-# Part of usb-modeswitch-2.3.0 package
+# Part of usb-modeswitch-2.4.0 package
 # (C) Josua Dietze 2009-2016
 
 set arg0 [lindex $argv 0]
@@ -276,7 +276,6 @@
                                        set cfgno [string trim $cfgno]
                                        if {$cfgno > 0} {
                                                set config(Configuration) $cfgno
-                                               set config(DriverModule) ""
                                                set flags(config) 
"Configuration=$cfgno"
                                        } else {
                                                Log " No MBIM configuration 
found, switch to legacy modem mode"
@@ -291,6 +290,10 @@
                        set report "ok:busdev"
                        break
                }
+               if {$config(Configuration) == 0} {
+                       Log "Config file contains dummy method, do nothing. 
Exit"
+                       SafeExit
+               }
                UnbindDriver $devdir $ifdir
                # Now we are actually switching
                if $flags(logging) {
@@ -345,68 +348,19 @@
        ReadUSBAttrs $devdir $ifdir
 }
 
-# Checking for bound drivers if there is an interface with class 0xff
-
-if {$config(DriverModule) != "" && [regexp {ok:} $report]} {
-       if [HasFF $devdir] {
-               AddToList link_list $usb(idVendor):$usb(idProduct)
-       } else {
-               set config(DriverModule) ""
-               Log " No vendor-specific class found, skip driver check"
-       }
-}
-
-# If module is set (it is by default), driver shall be loaded.
-# If not, then NoDriverLoading is active
+# driver binding removed !!
 
-if {$config(DriverModule) != ""} {
-       if {[string length "$usb(idVendor)$usb(idProduct)"] < 8} {
-               if {![regexp {ok:(\w{4}):(\w{4})} $report d usb(idVendor) 
usb(idProduct)]} {
-                       Log "No target vendor/product ID found or given, can't 
continue. Abort"
-                       SafeExit
-               }
-       }
-       # wait for any drivers to bind automatically
-       after 1500
-       Log "Now check for bound driver ..."
-       if {![file exists $devdir/$ifdir/driver]} {
-               Log " no driver has bound to interface 0 yet"
-
-               # If device is known, the sh wrapper will take care, else:
-               if {[InBindList $usb(idVendor):$usb(idProduct)] == 0} {
-                       Log "Device is not in \"bind_list\" yet, bind it now"
-
-                       # Load driver
-                       CheckDriverBind $usb(idVendor) $usb(idProduct)
-
-                       # Old/slow systems may take a while to create the 
devices
-                       set counter 0
-                       while {![file exists $devdir/$ifdir/driver]} {
-                               if {$counter == 14} {break}
-                               after 500
-                               incr counter
-                       }
-                       if {$counter == 14} {
-                               Log " driver binding failed"
-                       } else {
-                               Log " driver was bound to the device"
-                               AddToList bind_list 
$usb(idVendor):$usb(idProduct)
-                       }
-               }
-       } else {
-               Log " driver has bound, device is known"
-               if {[llength [glob -nocomplain $devdir/$ifdir/ttyUSB*]] > 0} {
-                       AddToList link_list $usb(idVendor):$usb(idProduct)
-               }
+if {[string length "$usb(idVendor)$usb(idProduct)"] < 8} {
+       if {![regexp {ok:(\w{4}):(\w{4})} $report d usb(idVendor) 
usb(idProduct)]} {
+               Log "No target vendor/product ID found or given, can't 
continue. Abort"
+               SafeExit
        }
-} else {
-       # Just in case "NoDriverLoading" was added after the first bind
-       RemoveFromBindList $usb(idVendor):$usb(idProduct)
 }
-
-if [regexp {ok:$} $report] {
-       # "NoDriverLoading" was set
-       Log "No driver check or bind for this device"
+# wait for drivers to bind
+after 500
+if {[llength [glob -nocomplain $devdir/$ifdir/ttyUSB*]] > 0} {
+       Log "Serial USB driver bound to interface 0\n will try to guess and 
symlink modem port on next connect"
+       AddToList link_list $usb(idVendor):$usb(idProduct)
 }
 
 # In newer kernels there is a switch to avoid the use of a device
@@ -599,8 +553,6 @@
 proc ParseDeviceConfig {cfg} {
 
 global config
-set config(DriverModule) ""
-set config(DriverIDPath) ""
 set config(WaitBefore) ""
 set config(TargetVendor) ""
 set config(TargetProduct) ""
@@ -609,7 +561,6 @@
 set config(NoMBIMCheck) 0
 set config(PantechMode) 0
 set config(CheckSuccess) 20
-set loadDriver 1
 
 foreach pname [lsort [array names config]] {
        if [regexp -line "^\[^# \]*?$pname.*?= 
*(0x(\\w+)|\"(\[0-9a-fA-F,\]+)\"|(\[0-9\]+)) *\$" $cfg d config($pname)] {
@@ -617,26 +568,6 @@
        }
 }
 
-if [regexp -line {^[^#]*?NoDriverLoading.*?=.*?(1|yes|true).*?$} $cfg] {
-       set loadDriver 0
-       Log "config: NoDriverLoading is set to active"
-}
-
-# For general driver loading; TODO: add respective device names.
-# Presently only useful for HSO devices (which are recounted now)
-if $loadDriver {
-       if {$config(DriverModule) == ""} {
-               set config(DriverModule) "option"
-               set config(DriverIDPath) "/sys/bus/usb-serial/drivers/option1"
-       } else {
-               if {$config(DriverIDPath) == ""} {
-                       set config(DriverIDPath) 
"/sys/bus/usb/drivers/$config(DriverModule)"
-               }
-       }
-       Log "Driver module is \"$config(DriverModule)\", ID path is 
$config(DriverIDPath)\n"
-} else {
-       Log "Driver will not be handled by usb_modeswitch"
-}
 set config(WaitBefore) [string trimleft $config(WaitBefore) 0]
 
 }
@@ -837,92 +768,6 @@
 # end of proc {SymLinkName}
 
 
-# Load and bind driver (default "option")
-#
-proc {CheckDriverBind} {vid pid} {
-global config
-
-foreach fn {/sbin/modprobe /usr/sbin/modprobe} {
-       if [file exists $fn] {
-               set loader $fn
-       }
-}
-Log "Module loader is $loader"
-
-set idfile $config(DriverIDPath)/new_id
-if {![file exists $idfile]} {
-       if {$loader == ""} {
-               Log "Can't do anymore without module loader; get \"modtools\"!"
-               return
-       }
-       Log "\nTry to load module \"$config(DriverModule)\""
-       if [catch {set result [exec $loader -v $config(DriverModule)]} err] {
-               Log " Running \"$loader $config(DriverModule)\" gave an 
error:\n  $err"
-       } else {
-               Log " Module was loaded successfully:\n$result"
-       }
-} else {
-       Log "Module is active already"
-}
-set i 0
-while {$i < 50} {
-       if [file exists $idfile] {
-               break
-       }
-       after 20
-       incr i
-}
-if {$i < 50} {
-       Log "Try to add ID to driver \"$config(DriverModule)\""
-       SysLog "usb_modeswitch: add device ID $vid:$pid to driver 
\"$config(DriverModule)\""
-       SysLog "usb_modeswitch: please report the device ID to the Linux USB 
developers!"
-       if [catch {exec echo "$vid $pid ff" >$idfile} err] {
-               Log " Error adding ID to driver:\n  $err"
-       } else {
-               Log " ID added to driver; check for new devices in /dev"
-       }
-} else {
-       Log " \"$idfile\" not found, check if kernel version is at least 2.6.27"
-       Log "Fall back to \"usbserial\""
-       set config(DriverModule) usbserial
-       Log "\nTry to unload driver \"usbserial\""
-       if [catch {exec $loader -r usbserial} err] {
-               Log " Running \"$loader -r usbserial\" gave an error:\n  $err"
-               Log "No more fallbacks"
-               return
-       }
-       after 50
-       Log "\nTry to load driver \"usbserial\" with device IDs"
-       if [catch {set result [exec $loader -v usbserial vendor=0x$vid 
product=0x$pid]} err] {
-               Log " Running \"$loader usbserial\" gave an error:\n  $err"
-       } else {
-               Log " Driver was loaded successfully:\n$result"
-       }
-}
-
-}
-# end of proc {CheckDriverBind}
-
-
-# Check if USB ID is listed as needing driver binding
-proc {InBindList} {id} {
-
-set listfile /var/lib/usb_modeswitch/bind_list
-if {![file exists $listfile]} {return 0}
-set rc [open $listfile r]
-set buffer [read $rc]
-close $rc
-if [string match *$id* $buffer] {
-Log "Found $id in bind_list"
-       return 1
-} else {
-Log "No $id in bind_list"
-       return 0
-}
-
-}
-# end of proc {InBindList}
-
 # Add USB ID to list of devices needing later treatment
 proc {AddToList} {name id} {
 
@@ -946,37 +791,6 @@
 # end of proc {AddToList}
 
 
-# Remove USB ID from bind list (NoDriverLoading is set)
-proc {RemoveFromBindList} {id} {
-
-set listfile /var/lib/usb_modeswitch/bind_list
-if [file exists $listfile] {
-       set rc [open $listfile r]
-       set buffer [read $rc]
-       close $rc
-       set idList [split [string trim $buffer] \n]
-} else {
-       return
-}
-set idx [lsearch $idList $id]
-if {$idx > -1} {
-       set idList [lreplace $idList $idx $idx]
-} else {
-       return
-}
-if {[llength $idList] == 0} {
-       file delete $listfile
-       return
-}
-set buffer [join $idList "\n"]
-if [catch {set lc [open $listfile w]}] {return}
-puts $lc $buffer
-close $lc
-
-}
-# end of proc {RemoveFromBindList}
-
-
 proc {CheckSuccess} {devdir} {
 
 global config usb flags

++++++ usb-modeswitch-data-20160112.tar.bz2 -> 
usb-modeswitch-data-20160612.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-data-20160112/40-usb_modeswitch.rules 
new/usb-modeswitch-data-20160612/40-usb_modeswitch.rules
--- old/usb-modeswitch-data-20160112/40-usb_modeswitch.rules    2016-01-12 
21:31:06.000000000 +0100
+++ new/usb-modeswitch-data-20160612/40-usb_modeswitch.rules    2016-06-12 
21:17:38.000000000 +0200
@@ -1,6 +1,6 @@
-# Part of usb-modeswitch-data, version 20160112
+# Part of usb-modeswitch-data, version 20160612
 #
-# Works with usb_modeswitch versions >= 2.2.2 (extension of PantechMode)
+# Works with usb_modeswitch versions >= 2.4.0 (extension of StandardEject)
 #
 ACTION!="add|change", GOTO="modeswitch_rules_end"
 
@@ -8,16 +8,7 @@
 # transfer; checked against a list of known modems, or else no action
 KERNEL=="ttyUSB*", ATTRS{bNumConfigurations}=="*", PROGRAM="usb_modeswitch 
--symlink-name %p %s{idVendor} %s{idProduct} %E{PRODUCT}", SYMLINK+="%c"
 
-SUBSYSTEM!="usb", GOTO="modeswitch_rules_end"
-
-# Adds the device ID to the "option" driver after a warm boot
-# in cases when the device is yet unknown to the driver; checked
-# against a list of known modems, or else no action
-ATTR{bInterfaceClass}=="ff", ATTR{bInterfaceNumber}=="00", 
ATTRS{bNumConfigurations}=="*", RUN+="usb_modeswitch --driver-bind %p 
%s{idVendor} %s{idProduct} %E{PRODUCT}"
-
-
-# Don't continue on "change" event, prevent trigger by changed configuration
-ACTION!="add", GOTO="modeswitch_rules_end"
+SUBSYSTEM!="usb", ACTION!="add",, GOTO="modeswitch_rules_end"
 
 
 # Generic entry for most Huawei devices, excluding Android phones
@@ -71,7 +62,7 @@
 # Nokia CS-21M-02
 ATTR{idVendor}=="0421", ATTR{idProduct}=="0637", RUN+="usb_modeswitch '%b/%k'"
 
-# Vodafone MD950 (Wisue Technology), Philips (?)
+# Philips (?), Vodafone MD950 (Wisue Technology)
 ATTR{idVendor}=="0471", ATTR{idProduct}=="1210", RUN+="usb_modeswitch '%b/%k'"
 
 # Philips TalkTalk (NXP Semiconductors "Dragonfly")
@@ -116,7 +107,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, Option GlobeTrotter GX0201, Celot 
K-300, Celot CT-680, StrongRising device, TechFaith Venus VT-18
+# TechFaith Venus VT-18, AnyDATA devices, Bless UC165, Samsung SGH-Z810, 
StrongRising device, Vertex Wireless 100 Series, Celot K-300, Older Option 
devices, Prolink P2000 CDMA, Celot CT-680
 ATTR{idVendor}=="05c6", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '%b/%k'"
 
 # Various USB modems
@@ -131,6 +122,9 @@
 # Alcatel-sbell ASB TL131 TD-LTE
 ATTR{idVendor}=="05c6", ATTR{idProduct}=="9024", RUN+="usb_modeswitch '%b/%k'"
 
+# U901 (LTE modem)
+ATTR{idVendor}=="05c6", ATTR{idProduct}=="98ff", RUN+="usb_modeswitch '%b/%k'"
+
 # Siptune LM-75 ("LinuxModem")
 ATTR{idVendor}=="05c6", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '%b/%k'"
 
@@ -506,6 +500,9 @@
 # Huawei ME909u-521
 ATTR{idVendor}=="12d1", ATTR{idProduct}=="1573", RUN+="usb_modeswitch '%b/%k'"
 
+# Huawei ME906, ME909
+ATTR{idVendor}=="12d1", ATTR{idProduct}=="15c1", RUN+="usb_modeswitch '%b/%k'"
+
 # Cisco AM10 "Valet Connector"
 ATTR{idVendor}=="1307", ATTR{idProduct}=="1169", RUN+="usb_modeswitch '%b/%k'"
 
@@ -749,7 +746,7 @@
 # ZTE MF710M Variants
 ATTR{idVendor}=="19d2", ATTR{idProduct}=="1588", RUN+="usb_modeswitch '%b/%k'"
 
-# ZTE MF710 (Vietnam)
+# ZTE MF710 (Vietnam) a.o.
 ATTR{idVendor}=="19d2", ATTR{idProduct}=="1595", RUN+="usb_modeswitch '%b/%k'"
 
 # ZTE devices, some Onda devices
@@ -797,6 +794,9 @@
 # Alcatel X602D
 ATTR{idVendor}=="1bbb", ATTR{idProduct}=="022c", RUN+="usb_modeswitch '%b/%k'"
 
+# Yota W8
+ATTR{idVendor}=="1bbb", ATTR{idProduct}=="025e", RUN+="usb_modeswitch '%b/%k'"
+
 # Alcatel X200/X200L/X060S/L100V, Archos G9 3G Key
 ATTR{idVendor}=="1bbb", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '%b/%k'"
 
@@ -842,7 +842,7 @@
 # Explay Slim
 ATTR{idVendor}=="1c9e", ATTR{idProduct}=="9e08", RUN+="usb_modeswitch '%b/%k'"
 
-# MobiData MBD-200HU and others, Longcheer/Longsoon (aka Omega Technology) 
devices
+# Longcheer/Longsoon (aka Omega Technology) devices, MobiData MBD-200HU and 
others
 ATTR{idVendor}=="1c9e", ATTR{idProduct}=="f000", RUN+="usb_modeswitch '%b/%k'"
 
 # TechFaith BSNL Capitel
@@ -947,6 +947,18 @@
 # D-Link DWM-167 A1
 ATTR{idVendor}=="2001", ATTR{idProduct}=="a405", RUN+="usb_modeswitch '%b/%k'"
 
+# D-Link DWM-221
+ATTR{idVendor}=="2001", ATTR{idProduct}=="a406", RUN+="usb_modeswitch '%b/%k'"
+
+# D-Link DWM-157 C1
+ATTR{idVendor}=="2001", ATTR{idProduct}=="a407", RUN+="usb_modeswitch '%b/%k'"
+
+# D-Link DWM-156 A8 (Myanmar)
+ATTR{idVendor}=="2001", ATTR{idProduct}=="a40a", RUN+="usb_modeswitch '%b/%k'"
+
+# D-Link DWR-910
+ATTR{idVendor}=="2001", ATTR{idProduct}=="a40d", RUN+="usb_modeswitch '%b/%k'"
+
 # D-Link DWM-156 A7
 ATTR{idVendor}=="2001", ATTR{idProduct}=="a706", RUN+="usb_modeswitch '%b/%k'"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-data-20160112/ChangeLog 
new/usb-modeswitch-data-20160612/ChangeLog
--- old/usb-modeswitch-data-20160112/ChangeLog  2016-01-12 21:45:22.000000000 
+0100
+++ new/usb-modeswitch-data-20160612/ChangeLog  2016-06-12 21:12:56.000000000 
+0200
@@ -1,3 +1,16 @@
+20160612:
+    ATTENTION: requires usb-modeswitch version >= 2.4.0 due to appended
+    StandardEject sequence (affects D-Link devices);
+    Added devices: [046d:c261] Logitech G920 Racing Wheel, [05c6:98ff]
+    U901 (LTE modem), [12d1:15c1] Huawei ME906, ME909, [1bbb:025e] Yota
+    4G LTE W8, [2001:a406] D-Link DWM-221, [2001:a407] D-Link DWM-157 C1,
+    [2001:a40a] D-Link DWM-156 A8 (Myanmar), [2001:a40d] D-Link DWR-910,
+    Corrected/updated devices: [05c6:f000] Siptune LM-75 ("LinuxModem"),
+    EWangshikong 4G, [10a9:6080] Pantech LTE Modem, [12d1:1573] Huawei
+    ME909u-521, [12d1:1f1e] Vodafone / Huawei K5160, [19d2:1595] ZTE
+    MF710 (Vietnam) a.o., [2001:a401] D-Link DWM-221 B1;
+    "NoDriverLoading" parameter removed from all configs, with respect
+    to removed feature in usb-modeswitch 2.4.0
 20160112:
     ATTENTION: requires usb-modeswitch version >= 2.3.0 due to new para-
     meter OptionMode (further reducing config file space demand);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-data-20160112/Makefile 
new/usb-modeswitch-data-20160612/Makefile
--- old/usb-modeswitch-data-20160112/Makefile   2016-01-12 21:34:25.000000000 
+0100
+++ new/usb-modeswitch-data-20160612/Makefile   2016-06-12 19:44:42.000000000 
+0200
@@ -1,5 +1,5 @@
 PROG        = usb-modeswitch-data
-VERS        = 20160112
+VERS        = 20160612
 RM          = /bin/rm -f
 PREFIX      = $(DESTDIR)/usr
 ETCDIR      = $(DESTDIR)/etc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/usb-modeswitch-data-20160112/gen-rules.tcl 
new/usb-modeswitch-data-20160612/gen-rules.tcl
--- old/usb-modeswitch-data-20160112/gen-rules.tcl      2016-01-12 
21:34:07.000000000 +0100
+++ new/usb-modeswitch-data-20160612/gen-rules.tcl      2016-06-12 
19:44:01.000000000 +0200
@@ -11,7 +11,7 @@
 
 
 # Default version string
-set version "20160112"
+set version "20160612"
 
 # 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-20160112/usb_modeswitch.d/046d:c261 
new/usb-modeswitch-data-20160612/usb_modeswitch.d/046d:c261
--- old/usb-modeswitch-data-20160112/usb_modeswitch.d/046d:c261 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160612/usb_modeswitch.d/046d:c261 2016-06-12 
17:44:07.000000000 +0200
@@ -0,0 +1,5 @@
+# Logitech G920 Racing Wheel
+MessageEndpoint=0x01
+ResponseEndpoint=0x01
+TargetClass=0x03
+MessageContent="0f00010142"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20160112/usb_modeswitch.d/05c6:98ff 
new/usb-modeswitch-data-20160612/usb_modeswitch.d/05c6:98ff
--- old/usb-modeswitch-data-20160112/usb_modeswitch.d/05c6:98ff 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160612/usb_modeswitch.d/05c6:98ff 2016-06-12 
08:53:42.000000000 +0200
@@ -0,0 +1,4 @@
+# U901 (LTE modem)
+TargetVendor=0x05c6
+TargetProduct=0x6001
+SierraMode=1
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20160112/usb_modeswitch.d/05c6:f000 
new/usb-modeswitch-data-20160612/usb_modeswitch.d/05c6:f000
--- old/usb-modeswitch-data-20160112/usb_modeswitch.d/05c6:f000 2014-03-26 
20:49:48.000000000 +0100
+++ new/usb-modeswitch-data-20160612/usb_modeswitch.d/05c6:f000 2016-06-12 
17:51:04.000000000 +0200
@@ -1,4 +1,5 @@
-# Siptune LM-75 ("LinuxModem")
+# Siptune LM-75 ("LinuxModem"), EWangshikong 4G
 TargetVendor=0x05c6
-TargetProductList="0016,9000"
+TargetProductList="0016,6000,9000"
 StandardEject=1
+MessageContent="5553424308306384c000000080000671030000000000000000000000000000"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20160112/usb_modeswitch.d/10a9:6080 
new/usb-modeswitch-data-20160612/usb_modeswitch.d/10a9:6080
--- old/usb-modeswitch-data-20160112/usb_modeswitch.d/10a9:6080 2014-03-26 
20:50:18.000000000 +0100
+++ new/usb-modeswitch-data-20160612/usb_modeswitch.d/10a9:6080 2016-06-11 
13:25:42.000000000 +0200
@@ -1,4 +1,4 @@
 # Pantech LTE Modem
 TargetVendor=0x10a9
 TargetProduct=0x6085
-PantechMode=1
+PantechMode=2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20160112/usb_modeswitch.d/12d1:1573 
new/usb-modeswitch-data-20160612/usb_modeswitch.d/12d1:1573
--- old/usb-modeswitch-data-20160112/usb_modeswitch.d/12d1:1573 2015-10-27 
21:04:17.000000000 +0100
+++ new/usb-modeswitch-data-20160612/usb_modeswitch.d/12d1:1573 2016-06-12 
20:50:08.000000000 +0200
@@ -1,2 +1,2 @@
-# Huawei ME909u-521
-Configuration=1
+# Huawei ME909u-521 (MBIM, handled by kernel, dummy config)
+Configuration=0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20160112/usb_modeswitch.d/12d1:15c1 
new/usb-modeswitch-data-20160612/usb_modeswitch.d/12d1:15c1
--- old/usb-modeswitch-data-20160112/usb_modeswitch.d/12d1:15c1 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160612/usb_modeswitch.d/12d1:15c1 2016-06-12 
09:27:09.000000000 +0200
@@ -0,0 +1,2 @@
+# Huawei ME906, ME909 (MBIM, handled by kernel, dummy config)
+Configuration=0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20160112/usb_modeswitch.d/12d1:1f1e 
new/usb-modeswitch-data-20160612/usb_modeswitch.d/12d1:1f1e
--- old/usb-modeswitch-data-20160112/usb_modeswitch.d/12d1:1f1e 2014-05-29 
14:57:00.000000000 +0200
+++ new/usb-modeswitch-data-20160612/usb_modeswitch.d/12d1:1f1e 2016-06-11 
13:25:26.000000000 +0200
@@ -1,4 +1,4 @@
-# Vodafone / Huawei Kxxxx
+# Vodafone / Huawei K5160
 TargetVendor=0x12d1
 TargetProductList="157f,1592"
 HuaweiNewMode=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20160112/usb_modeswitch.d/19d2:1595 
new/usb-modeswitch-data-20160612/usb_modeswitch.d/19d2:1595
--- old/usb-modeswitch-data-20160112/usb_modeswitch.d/19d2:1595 2016-01-12 
20:39:14.000000000 +0100
+++ new/usb-modeswitch-data-20160612/usb_modeswitch.d/19d2:1595 2016-06-11 
13:30:19.000000000 +0200
@@ -1,5 +1,5 @@
-# ZTE MF710 (Vietnam)
+# ZTE MF710 (Vietnam) a.o.
 TargetVendor= 0x19d2
-TargetProductList=0x1596
+TargetProductList="1592,1596,1600"
 StandardEject=1
 MessageContent="55534243123456702000000080000c85010101180101010101000000000000"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20160112/usb_modeswitch.d/1bbb:025e 
new/usb-modeswitch-data-20160612/usb_modeswitch.d/1bbb:025e
--- old/usb-modeswitch-data-20160112/usb_modeswitch.d/1bbb:025e 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160612/usb_modeswitch.d/1bbb:025e 2016-06-12 
20:54:07.000000000 +0200
@@ -0,0 +1,4 @@
+# Yota 4G LTE W8
+TargetVendor=0x1bbb
+TargetProduct=0x0195
+MessageContent="55534243123456788000000080000606f50402527000000000000000000000"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20160112/usb_modeswitch.d/2001:a401 
new/usb-modeswitch-data-20160612/usb_modeswitch.d/2001:a401
--- old/usb-modeswitch-data-20160112/usb_modeswitch.d/2001:a401 2016-01-12 
19:11:45.000000000 +0100
+++ new/usb-modeswitch-data-20160612/usb_modeswitch.d/2001:a401 2016-06-12 
14:02:48.000000000 +0200
@@ -1,5 +1,4 @@
 # D-Link DWM-221 B1
 TargetVendor=0x2001
 TargetProduct=0x7e19
-MessageContent="5553424312345678000000000001061e000000000000000000000000000000"
-MessageContent2="5553424312345679000000000001061b000000020000000000000000000000"
+StandardEject=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20160112/usb_modeswitch.d/2001:a406 
new/usb-modeswitch-data-20160612/usb_modeswitch.d/2001:a406
--- old/usb-modeswitch-data-20160112/usb_modeswitch.d/2001:a406 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160612/usb_modeswitch.d/2001:a406 2016-06-12 
09:31:14.000000000 +0200
@@ -0,0 +1,4 @@
+# D-Link DWM-221
+TargetVendor=0x2001
+TargetProduct=0x7e19
+StandardEject=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20160112/usb_modeswitch.d/2001:a407 
new/usb-modeswitch-data-20160612/usb_modeswitch.d/2001:a407
--- old/usb-modeswitch-data-20160112/usb_modeswitch.d/2001:a407 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160612/usb_modeswitch.d/2001:a407 2016-06-12 
15:22:02.000000000 +0200
@@ -0,0 +1,4 @@
+# D-Link DWM-157 C1
+TargetVendor=0x2001
+TargetProduct=0x7d0e
+StandardEject=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20160112/usb_modeswitch.d/2001:a40a 
new/usb-modeswitch-data-20160612/usb_modeswitch.d/2001:a40a
--- old/usb-modeswitch-data-20160112/usb_modeswitch.d/2001:a40a 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160612/usb_modeswitch.d/2001:a40a 2016-06-12 
15:22:42.000000000 +0200
@@ -0,0 +1,4 @@
+# D-Link DWM-156 A8 (Myanmar)
+TargetVendor=0x2001
+TargetProduct=0x7d10
+MessageContent="555342431234567800000000000003f0010100000000000000000000000000"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/usb-modeswitch-data-20160112/usb_modeswitch.d/2001:a40d 
new/usb-modeswitch-data-20160612/usb_modeswitch.d/2001:a40d
--- old/usb-modeswitch-data-20160112/usb_modeswitch.d/2001:a40d 1970-01-01 
01:00:00.000000000 +0100
+++ new/usb-modeswitch-data-20160612/usb_modeswitch.d/2001:a40d 2016-06-12 
15:10:43.000000000 +0200
@@ -0,0 +1,4 @@
+# D-Link DWR-910
+TargetVendor=0x2001
+TargetProduct=0x7e38
+StandardEject=1


Reply via email to