Hello community, here is the log from the commit of package usb_modeswitch for openSUSE:Factory checked in at 2017-08-24 18:19:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/usb_modeswitch (Old) and /work/SRC/openSUSE:Factory/.usb_modeswitch.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "usb_modeswitch" Thu Aug 24 18:19:00 2017 rev:42 rq:518379 version:2.5.1 Changes: -------- --- /work/SRC/openSUSE:Factory/usb_modeswitch/usb_modeswitch.changes 2017-02-26 17:04:33.462663870 +0100 +++ /work/SRC/openSUSE:Factory/.usb_modeswitch.new/usb_modeswitch.changes 2017-08-24 18:19:03.643160854 +0200 @@ -1,0 +2,26 @@ +Tue Aug 22 20:27:49 UTC 2017 - [email protected] + +- Update to version 2.5.1 + * New parameter "HuaweiAltMode", uses an alternative Huawei + standard bulk message which will either provide NCM + (newer modems) or plain PPP ports (older modems). + * New option in the global configuration file + "HuaweiAltModeGlobal", allowing easy override of + "HuwaeiNewMode" with "HuaweiAltMode". + * Reworked USB configuration switching, configuring a device + reset first before setting the target configuration. + * Improved driver detachment, now taking all configured + interfaces into account. +- Update usb-modeswitch-data package to version 20170806 + * Added devices: [03f0:371d] HP un2430, [03f0:4b1d] HP hs2434, + [03f0:4e1d] HP lt4111, [03f0:a31d] HP lt4132, + [0846:0fff] Netgear AirCard 779S, + [12d1:15ec] Vodafone/Huawei K5150. + * Corrected/amended configs: [0922:1003] Dymo LabelManager 420P, + [0922:1007] Dymo LabelManager Wireless PnP, + [1199:0fff] Sierra devices. + * Removed configs: [1004:61aa] LG VL600. +- Updated file device_reference.txt. +- Added file parameter_reference.txt + +------------------------------------------------------------------- Old: ---- usb-modeswitch-2.5.0.tar.bz2 usb-modeswitch-data-20170205.tar.bz2 New: ---- parameter_reference.txt usb-modeswitch-2.5.1.tar.bz2 usb-modeswitch-data-20170806.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ usb_modeswitch.spec ++++++ --- /var/tmp/diff_new_pack.Cle0n5/_old 2017-08-24 18:19:04.399054422 +0200 +++ /var/tmp/diff_new_pack.Cle0n5/_new 2017-08-24 18:19:04.403053859 +0200 @@ -17,10 +17,10 @@ %define source_name usb-modeswitch -%define date 20170205 +%define date 20170806 %define _udevdir %(pkg-config --variable=udevdir udev) Name: usb_modeswitch -Version: 2.5.0 +Version: 2.5.1 Release: 0 Summary: A mode switching tool for controlling multiple-device USB gear License: GPL-2.0+ @@ -29,6 +29,7 @@ Source0: http://www.draisberghof.de/usb_modeswitch/%{source_name}-%{version}.tar.bz2 Source1: http://www.draisberghof.de/usb_modeswitch/%{source_name}-data-%{date}.tar.bz2 Source2: http://www.draisberghof.de/usb_modeswitch/device_reference.txt +Source3: http://www.draisberghof.de/usb_modeswitch/parameter_reference.txt Patch1: usb_modeswitch-fix_fsf_address.patch BuildRequires: fdupes BuildRequires: pkg-config @@ -62,6 +63,7 @@ %patch1 cp %{SOURCE2} . +cp %{SOURCE3} . %build CFLAGS="%{optflags}" make @@ -91,7 +93,7 @@ %files %defattr(-,root,root,-) -%doc README COPYING device_reference.txt +%doc README COPYING device_reference.txt parameter_reference.txt %{_sbindir}/usb_modeswitch %{_sbindir}/usb_modeswitch_dispatcher %{_udevdir}/usb_modeswitch ++++++ device_reference.txt ++++++ --- /var/tmp/diff_new_pack.Cle0n5/_old 2017-08-24 18:19:04.439048791 +0200 +++ /var/tmp/diff_new_pack.Cle0n5/_new 2017-08-24 18:19:04.443048227 +0200 @@ -1,16 +1,16 @@ # # Device Reference (UTF-8 encoding used) # -# Last modified: 2014-05-29 +# Last modified: 2017-02-05 # # Collection of configurations for usb_modeswitch, a mode switching # tool for controlling flip flop (multiple mode) USB devices # # Detailed instructions and a friendly forum on the homepage: # http://www.draisberghof.de/usb_modeswitch -# -# You may want to check for a newer version of this file at: -# http://www.draisberghof.de/usb_modeswitch/device_reference.txt +# +# Note that new devices are no longer added to this file. See the +# config files included with the data package for these # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @@ -21,9 +21,10 @@ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -# For a parameter reference see file REFERENCE in the data package +# For a parameter reference see file REFERENCE in the data package or +# http://www.draisberghof.de/usb_modeswitch/parameter_reference.txt # -# If you find working codes and configurations, please contribute +# If you find new working codes and configurations, please report # them! @@ -31,6 +32,7 @@ ####################################################### # Option GlobeSurfer Icon (aka "Vodafone EasyBox") +# This is the thing that started it all ... # # The MessageContent is identical for all Option devices @@ -60,7 +62,7 @@ ######################################################## # Option GlobeTrotter GT MAX 3.6 (aka "T-Mobile Web'n'walk Card Compact II") # -# Contributor: Bernd Holzmüller +# Contributor: Bernd Holzmüller DefaultVendor= 0x05c6 DefaultProduct= 0x1000 @@ -279,7 +281,7 @@ # # Probably works with DetachStorageOnly too # -# Contributor: Flávio Moringa and others +# Contributor: Flávio Moringa and others DefaultVendor= 0x19d2 DefaultProduct= 0x2000 @@ -777,7 +779,7 @@ # # Recommended init command: ATE0V1&D2&C1S0=0 # -# Contributor: Jérôme Oufella +# Contributor: Jérôme Oufella DefaultVendor= 0x1004 DefaultProduct= 0x1000 @@ -1336,7 +1338,7 @@ ######################################################## # LG HDM-2100 (EVDO Rev.A USB modem) # -# Contributor: Jérôme Oufella +# Contributor: Jérôme Oufella DefaultVendor= 0x1004 DefaultProduct=0x607f @@ -1641,7 +1643,7 @@ ######################################################## # Huawei U8110 / U8300 / Joy, Vodafone 845 (Android smartphone) # -# Contributor: David Erosa GarcÃÂÂa +# Contributor: David Erosa GarcÃÂa DefaultVendor= 0x12d1 DefaultProduct=0x1031 @@ -1658,7 +1660,7 @@ ######################################################## # Nokia CS-10 # -# Contributor: WacÅ‚aw Sierek +# Contributor: WacÅ‚aw Sierek DefaultVendor= 0x0421 DefaultProduct=0x060c @@ -1700,7 +1702,7 @@ ####################################################### # Samsung GT-B3730 # -# Contributor: Per Øyvind Karlsen +# Contributor: Per Øyvind Karlsen DefaultVendor= 0x04e8 DefaultProduct=0x689a @@ -1771,7 +1773,7 @@ ####################################################### # Huawei EC168C (from Zantel) # -# Contributor: Ã…smund Hjulstad +# Contributor: Ã…smund Hjulstad DefaultVendor= 0x12d1 DefaultProduct=0x1446 @@ -2754,7 +2756,7 @@ ######################################################## # ZTE MF652 # -# Contributor: Björn Andreas Höfer +# Contributor: Björn Andreas Höfer DefaultVendor= 0x19d2 DefaultProduct=0x1520 @@ -3065,7 +3067,7 @@ ######################################################## # ZTE MF821D # -# Contributor: Thomas Schäfer +# Contributor: Thomas Schäfer DefaultVendor= 0x19d2 DefaultProduct=0x0325 @@ -3111,7 +3113,7 @@ ######################################################## # Vodafone K5006Z (MF821) # -# Contributor: Thomas Schäfer +# Contributor: Thomas Schäfer DefaultVendor= 0x19d2 DefaultProduct=0x1017 @@ -3295,7 +3297,7 @@ ####################################################### # Option Beemo / Pantech P4200 LTE # -# Contributor: Thomas Schäfer +# Contributor: Thomas Schäfer DefaultVendor= 0x106c DefaultProduct=0x3b14 @@ -3475,7 +3477,7 @@ ######################################################## # D-Link DWM-156 (Variant) # -# Contributor: Bjørn Mork +# Contributor: Bjørn Mork DefaultVendor= 0x2001 DefaultProduct=0xa706 @@ -3489,7 +3491,7 @@ ######################################################## # D-Link DWM-156 (Variant) # -# Contributor: Bjørn Mork +# Contributor: Bjørn Mork DefaultVendor= 0x2001 DefaultProduct=0xa707 @@ -3503,7 +3505,7 @@ ######################################################## # D-Link DWM-156 (Variant) # -# Contributor: Bjørn Mork +# Contributor: Bjørn Mork DefaultVendor= 0x2001 DefaultProduct=0xa708 @@ -3716,7 +3718,7 @@ ####################################################### # TP-Link MA260 # -# Contributor: Bjørn Mork +# Contributor: Bjørn Mork DefaultVendor= 0x2357 DefaultProduct=0xf000 ++++++ parameter_reference.txt ++++++ Configuration File Reference for USB_ModeSwitch ----------------------------------------------- Last modified: 2017-08-06 General Rules: Numbers can be decimal or hexadecimal, Bulk message strings must be hexadecimal without prepended "0x". Digits 9-16 (message tag) in mass storage messages (which start with "55534243") are random; I set them to "12345678". Note that you must make them unique if more than one MessageContent is used. -> ALL MISTYPED PARAMETERS AND OTHER ENTRIES ARE SILENTLY IGNORED <- Parameter Reference: Note: if there is a short command line flag for a parameter, then it is appended to the line. For the full command line parameter reference see the usb_modeswitch(1) man page. * DefaultVendor -v <hex number> * DefaultProduct -p <hex number> This is the ID the USB device shows after having been plugged in. The program needs this, either on the command line or in the config file; if not found -> no action. Note: newer config files do not contain these parameters because of the redundancy with regard to the config file name. * TargetVendor -V <hex number> * TargetProduct -P <hex number> These are the IDs of the USB device after successful mode switching. They are optional, but required for a proper success check * TargetProductList <comma separated hex strings without "0x"> Like TargetProduct, but multiple targets * TargetClass -C <hex number> Some devices don't change their ID, only their layout. To check for a successfull mode switch, the class of the first interface is checked * MessageEndpoint -m <hex number> * ResponseEndpoint -r <hex number> A kind of address inside the interface to which the "message" (the sequence that does the actual switching) is directed or from which the reply is read if NeedResponse is active. OBSOLETE since version 0.9.7 due to autodetection, only useful for testing * MessageContent -M <hex string> A hex string containing the "message" sequence; it will be sent as a USB bulk transfer * MessageContent2, ...3 -2/-3 <hex string> Additional "messages". Use with "NeedResponse"! * ReleaseDelay -w <milliseconds> Waiting time after message transfers. Helps with some sensitive devices that don't want any traffic after the mode switch initialisation * NeedResponse <0/1> -n Some devices were reported to require receiving the response of the bulk transfer to do the switching properly. Usually not needed. * DetachStorageOnly <0/1> -d Some early devices just needed to be detached from the usb-storage driver to initiate the mode switching. Now practically obsolete for switching, but still comes handy sometimes * StandardEject <0/1> -K Sends a specific bulk message sequence representing the SCSI commands "ALLOW MEDIUM REMOVAL" and "START STOP UNIT", basically an eject action. Many modems are using this for mode switching. Can be combined with one additional 'MessageContent' * HuaweiMode <0/1> -H Some early Huawei devices can be switched by a special control message. Don't use with recent devices * HuaweiNewMode <0/1> -J The standard for many newer Huawei devices. Sends a specific bulk message, but different target layouts may be reached with variants of that message; use MessageContent for these * HuaweiAltMode <0/1> -X An alternative to the Huawei standard, recommended by the manufacturer for the Android OS. Sends a different bulk message which brings newer modems into NCM mode (well supported in Linux) and older ones into plain PPP mode. Also globally settable with HuaweiAltModeGlobal in /etc/usb_modeswitch.conf * 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 message. May take a long time (20+ seconds). * SierraMode <0/1> -S * KobilMode <0/1> -T * GCTMode <0/1> -G * SequansMode <0/1> -N * MobileActionMode <0/1> -A * QisdaMode <0/1> -B * QuantaMode <0/1> -E * BlackberryMode <0/1> -Z * CiscoMode <0/1> -L Flags to support devices that need special control messages. The names are referring to the respective manufacturers. * PantechMode -F <num value> Extended flag for Pantech devices offering multiple target modes. Not all models were confirmed to support all modes. Possible values are: 1 - Automatic choice, checks for MBIM driver availability (recomm.) 2 - forced RNDIS mode 3 - forced CDC Ether mode (internal switch, no usb_modeswitch action) 4 - forced MBIM mode Note: the -F parameter value for usb_modeswitch is directly used as wValue in the control message! * ResetUSB <0/1> -R Few devices or systems need a rougher treatment. If the switching seems to do something but your system does not reflect it, try this somewhat brutal method to do a reset after switching. May also be useful for all kinds of experiments * Configuration -u <hex number> Some devices are doing the "right" thing and provide different layouts in the standard-compliant way. They don't "restart", so don't have to be rediscovered by the system after the change. Strictly speaking, they are not doing a mode switch * Interface -i <hex number> * AltSetting -a <hex number> More USB parameter to help with tricky devices and for doing lots of cruel experiments; usually not needed ... Note: AltSetting/Configuration changes and ResetUSB are executed after all other steps and can be combined or used on their own (e.g. a reset might have the same effect as a manual replug) * InquireDevice <0|1> -I (enables inquiry) Formerly printed out SCSI device attributes. Obsolete and ignored since usb_modeswitch version 2.3.0. * CheckSuccess -s <number> Check continuously if the switch succeeded for max <number> seconds. If the target ID is given, the check waits for it to appear. Otherwise, the check waits for the device to "go away"; most devices vanish after switching and can't be accessed anymore. It also checks the bus/device count, trying to determine if the device "came back" Note: this feature is not used in the full-featured Linux package of usb_modeswitch where the success check is done by the wrapper script * NoDriverLoading <0|1> (no command line parameter) (Obsolete, ignored since usb_modeswitch 2.4.0) The binary tells the wrapper script NOT to check for and initiate binding of the serial driver after switching. Mostly useful for non-modem devices and newer modems which do not use the serial driver. * WaitBefore <seconds> (no command line parameter) Waiting time before taking any action. Helps with some sensitive setups. * NoMBIMCheck <0|1> (no command line parameter) Disable the check for 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 -- ++++++ usb-modeswitch-2.5.0.tar.bz2 -> usb-modeswitch-2.5.1.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-2.5.0/ChangeLog new/usb-modeswitch-2.5.1/ChangeLog --- old/usb-modeswitch-2.5.0/ChangeLog 2017-01-17 19:22:01.000000000 +0100 +++ new/usb-modeswitch-2.5.1/ChangeLog 2017-08-06 14:29:01.000000000 +0200 @@ -2,6 +2,14 @@ History of USB_ModeSwitch ========================= +Version 2.5.1, 2017/08/06 + New parameter "HuaweiAltMode", uses an alternative Huawei standard bulk + message which will either provide NCM (newer modems) or plain PPP ports + (older modems); new option in the global configuration file + "HuaweiAltModeGlobal", allowing easy override of "HuwaeiNewMode" with + "HuaweiAltMode"; reworked USB configuration switching, configuring a + device reset first before setting the target configuration; improved + driver detachment, now taking all configured interfaces into account Version 2.5.0, 2017/01/17 ATTENTION: Parameter transmitted from udev now reduced to %k (kernel name), however, rules file parameters can be '%b/%k' or '%k' - this diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-2.5.0/Makefile new/usb-modeswitch-2.5.1/Makefile --- old/usb-modeswitch-2.5.0/Makefile 2017-01-16 22:15:46.000000000 +0100 +++ new/usb-modeswitch-2.5.1/Makefile 2017-08-02 22:31:05.000000000 +0200 @@ -1,5 +1,5 @@ PROG = usb_modeswitch -VERS = 2.5.0 +VERS = 2.5.1 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.5.0/README new/usb-modeswitch-2.5.1/README --- old/usb-modeswitch-2.5.0/README 2017-01-17 20:39:16.000000000 +0100 +++ new/usb-modeswitch-2.5.1/README 2017-08-02 22:30:52.000000000 +0200 @@ -7,7 +7,7 @@ What it is ========== -USB_ModeSwitch is - hardly surprising - a mode switching tool for controlling +USB_ModeSwitch is - hardly surprising - a mode switching tool for controlling USB devices with multiple "modes". Now, what does THAT mean? More and more USB devices have their MS Windows drivers onboard; when plugged diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-2.5.0/usb_modeswitch.1 new/usb-modeswitch-2.5.1/usb_modeswitch.1 --- old/usb-modeswitch-2.5.0/usb_modeswitch.1 2016-03-05 11:08:29.000000000 +0100 +++ new/usb-modeswitch-2.5.1/usb_modeswitch.1 2017-08-06 14:05:15.000000000 +0200 @@ -9,8 +9,8 @@ Several new USB devices have their proprietary Windows drivers onboard, most of them WWAN and WLAN dongles. When plugged in for the first time, they act like a flash storage and start installing the Windows driver from -there. If the driver is already installed, it makes the storage device -disappear and a new device, mainly composite with modem ports, shows up. +there. If the driver is installed, it makes the storage device disappear +and a new device, mainly composite (e.g. with modem ports), shows up. .PP On Linux, in most cases the drivers are available as kernel modules, such as "usbserial" or "option". However, the device initially binds to @@ -24,7 +24,8 @@ Usually, the program is distributed with a set of configurations for many known devices, which allows a fully automatic handling of a device upon insertion, made possible by combining usb_modeswitch with the wrapper script -\fBusb_modeswitch_dispatcher\fR which is launched by the udev daemon. +\fBusb_modeswitch_dispatcher\fR which is launched by the udev daemon. This +requires a Linux-flavoured system though. .PP Note that \fBusb_modeswitch\fR itself has no specific Linux dependencies. @@ -94,6 +95,8 @@ Send a special control message used by older Huawei devices .IP "\fB-J\fP \fB\-\-huawei-new-mode\fP " 10 Send a specific bulk message used by all newer Huawei devices +.IP "\fB-X\fP \fB\-\-huawei-alt-mode\fP " 10 +Send an alternative bulk message to Huawei devices .IP "\fB-S\fP \fB\-\-sierra-mode\fP " 10 Send a special control message used by Sierra devices .IP "\fB-G\fP \fB\-\-gct-mode\fP " 10 @@ -169,4 +172,4 @@ The complete text of the current GNU General Public License can be found in http://www.gnu.org/licenses/gpl.txt -.\" last edited 2016-01-11 for version 2.3.0 +.\" last edited 2017-08-06 for version 2.5.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-2.5.0/usb_modeswitch.c new/usb-modeswitch-2.5.1/usb_modeswitch.c --- old/usb-modeswitch-2.5.0/usb_modeswitch.c 2017-01-17 08:33:45.000000000 +0100 +++ new/usb-modeswitch-2.5.1/usb_modeswitch.c 2017-08-06 14:05:37.000000000 +0200 @@ -1,6 +1,6 @@ /* Mode switching tool for controlling mode of 'multi-state' USB devices - Version 2.5.0, 2017/01/17 + Version 2.5.1, 2017/08/06 Copyright (C) 2007 - 2017 Josua Dietze (mail to "usb_admin" at the domain of the home page; or write a personal message through the forum to "Josh". @@ -45,7 +45,7 @@ /* Recommended tab size: 4 */ -#define VERSION "2.5.0" +#define VERSION "2.5.1" #include <stdio.h> #include <stdlib.h> @@ -139,6 +139,7 @@ #define PANTECH_MODE 0x00001000 #define HUAWEINEW_MODE 0x00002000 #define OPTION_MODE 0x00004000 +#define HUAWEIALT_MODE 0x00008000 int PantechMode=0; @@ -158,7 +159,7 @@ FILE *output; -/* Settable Interface and Configuration (for debugging mostly) (jmw) */ +/* Settable interface, altsetting (for debugging mostly) and configuration */ int Interface = -1, Configuration = 0, AltSetting = -1; @@ -181,6 +182,7 @@ {"detach-only", no_argument, 0, 'd'}, {"huawei-mode", no_argument, 0, 'H'}, {"huawei-new-mode", no_argument, 0, 'J'}, + {"huawei-alt-mode", no_argument, 0, 'X'}, {"sierra-mode", no_argument, 0, 'S'}, {"sony-mode", no_argument, 0, 'O'}, {"qisda-mode", no_argument, 0, 'B'}, @@ -223,6 +225,7 @@ ParseParamBoolMap(configFilename, DetachStorageOnly, ModeMap, DETACHONLY_MODE); ParseParamBoolMap(configFilename, HuaweiMode, ModeMap, HUAWEI_MODE); ParseParamBoolMap(configFilename, HuaweiNewMode, ModeMap, HUAWEINEW_MODE); + ParseParamBoolMap(configFilename, HuaweiAltMode, ModeMap, HUAWEIALT_MODE); ParseParamBoolMap(configFilename, SierraMode, ModeMap, SIERRA_MODE); ParseParamBoolMap(configFilename, SonyMode, ModeMap, SONY_MODE); ParseParamBoolMap(configFilename, GCTMode, ModeMap, GCT_MODE); @@ -283,6 +286,8 @@ fprintf (output,"HuaweiMode=1\n"); if (ModeMap & HUAWEINEW_MODE) fprintf (output,"HuaweiNewMode=1\n"); + if (ModeMap & HUAWEIALT_MODE) + fprintf (output,"HuaweiAltMode=1\n"); if (ModeMap & SIERRA_MODE) fprintf (output,"SierraMode=1\n"); if (ModeMap & SONY_MODE) @@ -343,7 +348,7 @@ while (1) { - 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:", + c = getopt_long (argc, argv, "hejWQDndKHJSOBEGTNALZUXF: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. */ @@ -369,6 +374,7 @@ case 'd': ModeMap = ModeMap + DETACHONLY_MODE; break; case 'H': ModeMap = ModeMap + HUAWEI_MODE; break; case 'J': ModeMap = ModeMap + HUAWEINEW_MODE; break; + case 'X': ModeMap = ModeMap + HUAWEIALT_MODE; break; case 'S': ModeMap = ModeMap + SIERRA_MODE; break; case 'O': ModeMap = ModeMap + SONY_MODE; break;; break; case 'B': ModeMap = ModeMap + QISDA_MODE; break; @@ -429,7 +435,7 @@ int main(int argc, char **argv) { int ret=0, numDefaults=0, sonySuccess=0, i; - int currentConfigVal=0, defaultClass=0, interfaceClass=0; + int defaultClass=0, interfaceClass=0, currentConfigVal=0; struct libusb_device_descriptor descriptor; enum libusb_error libusbError; @@ -598,8 +604,8 @@ } if ((strlen(MessageContent) && strncmp("55534243",MessageContent,8) == 0) - || StandardEject || ModeMap & HUAWEINEW_MODE || ModeMap & CISCO_MODE - || ModeMap & OPTION_MODE) + || StandardEject || ModeMap & HUAWEINEW_MODE || ModeMap & HUAWEIALT_MODE + || ModeMap & CISCO_MODE || ModeMap & OPTION_MODE) if (defaultClass != 8) { fprintf(stderr, "Error: can't use storage command in MessageContent with interface %d; " "interface class is %d, expected 8. Abort\n\n", Interface, defaultClass); @@ -608,7 +614,8 @@ /* Check or get endpoints and alloc message list if needed*/ if (strlen(MessageContent) || StandardEject || ModeMap & CISCO_MODE - || ModeMap & HUAWEINEW_MODE || ModeMap & OPTION_MODE) { + || ModeMap & HUAWEINEW_MODE || ModeMap & HUAWEIALT_MODE + || ModeMap & OPTION_MODE) { Messages = (char**) calloc(MSG_DIM, sizeof(char*)); for (i = 0; i < MSG_DIM; i++) { @@ -633,7 +640,7 @@ } - if (show_progress) { + if (verbose) { fprintf(output,"\nUSB description data (for identification)\n"); deviceDescription(); } @@ -672,7 +679,7 @@ if (ModeMap & DETACHONLY_MODE) { SHOW_PROGRESS(output,"Detach storage driver as switching method ...\n"); - ret = detachDriver(); + ret = detachDrivers(); if (ret == 2) SHOW_PROGRESS(output," You may want to remove the storage driver manually\n"); } @@ -684,14 +691,14 @@ switchSierraMode(); } if(ModeMap & GCT_MODE) { - detachDriver(); + detachDrivers(); switchGCTMode(); } if(ModeMap & QISDA_MODE) { switchQisdaMode(); } if(ModeMap & KOBIL_MODE) { - detachDriver(); + detachDrivers(); switchKobilMode(); } if(ModeMap & QUANTA_MODE) { @@ -704,15 +711,15 @@ switchActionMode(); } if(ModeMap & CISCO_MODE) { - detachDriver(); + detachDrivers(); switchCiscoMode(); } if(ModeMap & BLACKBERRY_MODE) { - detachDriver(); + detachDrivers(); switchBlackberryMode(); } if(ModeMap & PANTECH_MODE) { - detachDriver(); + detachDrivers(); if (PantechMode > 1) switchPantechMode(); else @@ -727,7 +734,7 @@ if (StandardEject) { SHOW_PROGRESS(output,"Sending standard EJECT sequence\n"); - detachDriver(); + detachDrivers(); strcpy(Messages[0],"5553424387654321000000000000061e000000000000000000000000000000"); strcpy(Messages[1],"5553424397654321000000000000061b000000020000000000000000000000"); @@ -739,17 +746,21 @@ switchSendMessage(); } else if (ModeMap & HUAWEINEW_MODE) { SHOW_PROGRESS(output,"Using standard Huawei switching message\n"); - detachDriver(); + detachDrivers(); strcpy(Messages[0],"55534243123456780000000000000011062000000101000100000000000000"); switchSendMessage(); + } else if (ModeMap & HUAWEIALT_MODE) { + SHOW_PROGRESS(output,"Using alternative Huawei switching message\n"); + detachDrivers(); + strcpy(Messages[0],"55534243123456780000000000000011063000000000010000000000000000"); + switchSendMessage(); } else if (ModeMap & OPTION_MODE) { SHOW_PROGRESS(output,"Using standard Option switching message\n"); - detachDriver(); -// strcpy(MessageContent,"55534243123456780100000080000601000000000000000000000000000000"); + detachDrivers(); strcpy(Messages[0],"55534243123456780000000000000601000000000000000000000000000000"); switchSendMessage(); } else if (strlen(MessageContent)) { - detachDriver(); + detachDrivers(); strcpy(Messages[0],MessageContent); switchSendMessage(); } @@ -765,7 +776,9 @@ } } } else { - SHOW_PROGRESS(output,"Target configuration %d found. Do nothing\n", currentConfigVal); + SHOW_PROGRESS(output,"Target configuration %d already active. Nothing to do. Bye!\n\n", currentConfigVal); + close_all(); + exit(0); } } @@ -1006,13 +1019,14 @@ // UFI command SHOW_PROGRESS(output,"Read the response to message %d (CSW) ...\n", i+1); ret = read_bulk(ResponseEndpoint, ByteString, 13); - if (ret >= 0) + if (ret >= 0) { SHOW_PROGRESS(output,", status %d",ByteString[12]); - } else { + } + } /* else { // Other bulk transfer SHOW_PROGRESS(output,"Read the response to message %d ...\n", i+1); ret = read_bulk(ResponseEndpoint, ByteString, strlen(Messages[i])/2 ); - } + }*/ SHOW_PROGRESS(output,"\n"); if (ret == LIBUSB_TRANSFER_STALL && retries--) { SHOW_PROGRESS(output,"Endpoint stalled. Resetting ...\n"); @@ -1052,14 +1066,18 @@ int switchConfiguration () { - int ret, count = SWITCH_CONFIG_MAXTRIES; + int ret; SHOW_PROGRESS(output,"Change configuration to %i ...\n", Configuration); - while (((ret = libusb_set_configuration(devh, Configuration)) < 0) && --count) { - SHOW_PROGRESS(output," Device is busy, try to detach kernel driver\n"); - detachDriver(); + detachDrivers(); + ret = libusb_set_configuration(devh, -1); + if (ret < 0) { + SHOW_PROGRESS(output," Resetting the configuration failed (error %d). Try to continue\n", ret); } - if (ret < 0 ) { + /* Empirically tested wait period, improves reliability of configuration change */ + usleep(100000); + ret = libusb_set_configuration(devh, Configuration); + if (ret < 0) { SHOW_PROGRESS(output," Changing the configuration failed (error %d). Try to continue\n", ret); return 0; } else { @@ -1374,7 +1392,7 @@ int switchSonyMode () { int ret, i, found; - detachDriver(); + detachDrivers(); if (CheckSuccess) { CheckSuccess = 0; @@ -1441,34 +1459,41 @@ /* Detach driver */ -int detachDriver() +int detachDrivers() { - int ret; - SHOW_PROGRESS(output,"Looking for active driver ...\n"); + int i, ret; + SHOW_PROGRESS(output,"Looking for active drivers ...\n"); ret = libusb_kernel_driver_active(devh, 0); if (ret == LIBUSB_ERROR_NOT_SUPPORTED) { fprintf(output," Can't do driver detection on this platform.\n"); return 2; } - if (ret < 0) { - fprintf(output," Driver check failed with error %d. Try to continue\n", ret); - return 2; - } - if (ret == 0) { - SHOW_PROGRESS(output," No active driver found. Detached before or never attached\n"); - return 1; - } - ret = libusb_detach_kernel_driver(devh, Interface); - if (ret == LIBUSB_ERROR_NOT_SUPPORTED) { - fprintf(output," Can't do driver detaching on this platform.\n"); - return 2; + struct libusb_config_descriptor *config; + libusb_get_active_config_descriptor(dev, &config); + + for (i=0; i<config->bNumInterfaces; i++) { + ret = libusb_kernel_driver_active(devh, i); + if (ret < 0) { + SHOW_PROGRESS(output," Failed to check driver status for interface %d (error %d)\n Try to continue\n",i,ret); + continue; + } + if (ret) { + ret = libusb_detach_kernel_driver(devh, i); + if (ret == LIBUSB_ERROR_NOT_SUPPORTED) { + fprintf(output," Can't do driver detaching on this platform.\n"); + return 2; + } + if (ret == 0) { + SHOW_PROGRESS(output," OK, driver detached\n"); + } else { + SHOW_PROGRESS(output," Driver detach failed for interface %d (error %d).\n Try to continue\n",i,ret); + continue; + } + } } - if (ret == 0) { - SHOW_PROGRESS(output," OK, driver detached\n"); - } else - SHOW_PROGRESS(output," Driver detach failed (error %d). Try to continue\n", ret); + libusb_free_config_descriptor(config); return 1; } @@ -1732,7 +1757,8 @@ product <<= 8; product += (unsigned char)buffer[1]; if (product == descriptor.idProduct) { - SHOW_PROGRESS(output," product ID matched\n"); + if (verbose) + fprintf(output," product ID matched\n"); if (targetClass != 0) { // TargetClass is set, check class of first interface @@ -1770,7 +1796,7 @@ fprintf (output," count device\n"); } } - } else if (configuration > 0) { +/* } else if (configuration > 0) { // Configuration parameter is set, check device configuration int testconfig = get_current_config_value(dev); if (testconfig != configuration) { @@ -1785,6 +1811,7 @@ } else if (verbose) fprintf (output," device not counted, target configuration reached\n"); +*/ } else { // Neither TargetClass nor Configuration are set (*numFound)++; @@ -2082,6 +2109,7 @@ " -d, --detach-only detach the active driver, no further action\n" " -H, --huawei-mode apply a special procedure\n" " -J, --huawei-new-mode apply a special procedure\n" + " -X, --huawei-alt-mode apply a special procedure\n" " -S, --sierra-mode apply a special procedure\n" " -O, --sony-mode apply a special procedure\n" " -G, --gct-mode apply a special procedure\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-2.5.0/usb_modeswitch.conf new/usb-modeswitch-2.5.1/usb_modeswitch.conf --- old/usb-modeswitch-2.5.0/usb_modeswitch.conf 2017-01-17 21:12:11.000000000 +0100 +++ new/usb-modeswitch-2.5.1/usb_modeswitch.conf 2017-08-06 14:15:03.000000000 +0200 @@ -13,7 +13,8 @@ DisableSwitching=0 # Disable check for MBIM module presence and configuration globally (to aid -# special embedded environments) +# special embedded environments). Available as per-device parameter +# 'NoMBIMCheck' DisableMBIMGlobal=0 @@ -22,10 +23,18 @@ EnableLogging=0 - # Optional increase of "delay_use" for the usb-storage driver; there are hints # that a recent kernel default change to 1 sec. may lead to problems, particu- # larly with USB 3.0 ports. Set this to at least 3 (seconds) in that case. # Does nothing if the current system value is same or higher #SetStorageDelay=4 + +# If the configuration for your Huawei modem uses the standard switching method, +# you can globally set an alternative method here which provides a different mode: +# either plain serial PPP (for older modems) or NCM which integrates nicely +# with recent Linux distributions, possibly avoiding configuration through a +# modem built-in web page. All other modems are not affected. +# Available as per-device parameter 'AltHuaweiMode' + +HuaweiAltModeGlobal=0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-2.5.0/usb_modeswitch.h new/usb-modeswitch-2.5.1/usb_modeswitch.h --- old/usb-modeswitch-2.5.0/usb_modeswitch.h 2016-03-05 11:08:29.000000000 +0100 +++ new/usb-modeswitch-2.5.1/usb_modeswitch.h 2017-08-06 14:15:20.000000000 +0200 @@ -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.3.0, 2016/01/12 - Copyright (C) 2007 - 2016 Josua Dietze + Version 2.5.1, 2017/08/06 + Copyright (C) 2007 - 2017 Josua Dietze Config file parsing stuff borrowed from Guillaume Dargaud (http://www.gdargaud.net/Hack/SourceCode.html) @@ -43,7 +43,7 @@ void switchPantechMode(); void switchCiscoMode(); int switchSonyMode(); -int detachDriver(); +int detachDrivers(); int checkSuccess(); int sendMessage(char* message, int count); int write_bulk(int endpoint, unsigned char *message, int length); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-2.5.0/usb_modeswitch.sh new/usb-modeswitch-2.5.1/usb_modeswitch.sh --- old/usb-modeswitch-2.5.0/usb_modeswitch.sh 2017-01-17 20:57:50.000000000 +0100 +++ new/usb-modeswitch-2.5.1/usb_modeswitch.sh 2017-08-06 14:15:26.000000000 +0200 @@ -1,5 +1,5 @@ #!/bin/sh -# part of usb_modeswitch 2.5.0 +# part of usb_modeswitch 2.5.1 device_in() { if [ ! -e /var/lib/usb_modeswitch/$1 ]; then diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-2.5.0/usb_modeswitch.tcl new/usb-modeswitch-2.5.1/usb_modeswitch.tcl --- old/usb-modeswitch-2.5.0/usb_modeswitch.tcl 2017-01-17 20:41:33.000000000 +0100 +++ new/usb-modeswitch-2.5.1/usb_modeswitch.tcl 2017-08-06 14:15:36.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.5.0 package +# Part of usb-modeswitch-2.5.1 package # (C) Josua Dietze 2009-2017 set arg0 [lindex $argv 0] @@ -27,9 +27,12 @@ set flags(logging) 1 set flags(noswitching) 0 set flags(stordelay) 0 +set flags(nombim) 0 + set flags(logwrite) 0 # also settable in device config files set flags(nombim) 0 +set flags(althuawei) 0 # Execution starts at file bottom @@ -246,6 +249,10 @@ if [regexp -nocase $flags(os) $flags(config)] { Log "Note: Using generic manufacturer configuration for \"$flags(os)\"" } +if $flags(althuawei) { + regsub {HuaweiNewMode} $flags(config) {HuaweiAltMode} flags(config) + Log "Alternative Huawei mode set globally, modify config" +} if $flags(nombim) { set config(NoMBIMCheck) 1 } @@ -509,8 +516,6 @@ if [regexp {DisableMBIMGlobal\s*=\s*([^\s]+)} $line d val] { if [regexp -nocase {1|yes|true} $val] { set flags(nombim) 1 - } else { - set flags(nombim) 0 } } if [regexp {DisableSwitching\s*=\s*([^\s]+)} $line d val] { @@ -519,9 +524,7 @@ } } if [regexp {EnableLogging\s*=\s*([^\s]+)} $line d val] { - if [regexp -nocase {1|yes|true} $val] { - set flags(logging) 1 - } else { + if [regexp -nocase {0|no|false} $val] { set flags(logging) 0 } } @@ -530,6 +533,11 @@ set flags(stordelay) $val } } + if [regexp {HuaweiAltModeGlobal\s*=\s*([^\s]+)} $line d val] { + if [regexp -nocase {1|yes|true} $val] { + set flags(althuawei) 1 + } + } } return "Use global config file: $configFile" @@ -796,7 +804,7 @@ set expected 1 for {set i 1} {$i <= $config(CheckSuccess)} {incr i} { - after 1000 + after 1000 if {![file isdirectory $devdir]} { Log " Wait for device file system ($i sec.) ..." continue @@ -814,19 +822,19 @@ if {$usb(bConfigurationValue) != $config(Configuration)} {continue} } if [string length $config(TargetClass)] { - if {![regexp $usb($ifdir/bInterfaceClass) $config(TargetClass)]} { + if {![regexp -nocase $usb($ifdir/bInterfaceClass) $config(TargetClass)]} { if {$config(class) != $usb($ifdir/bInterfaceClass} { set expected 0 } else {continue} } } - if {![regexp $usb(idVendor) $config(TargetVendor)]} { - if {![regexp $usb(idVendor) $config(vendor)]} { + if {![regexp -nocase $usb(idVendor) $config(TargetVendor)]} { + if {![regexp -nocase $usb(idVendor) $config(vendor)]} { set expected 0 } else {continue} } - if {![regexp $usb(idProduct) $config(TargetProduct)]} { - if {![regexp $usb(idProduct) $config(product)]} { + if {![regexp -nocase $usb(idProduct) $config(TargetProduct)]} { + if {![regexp -nocase $usb(idProduct) $config(product)]} { set expected 0 } else {continue} } @@ -837,8 +845,12 @@ if [regexp -nocase {/[0-9a-f]+:#} $flags(config)] { Log " idProduct has changed after generic mode-switch, assume success" } else { - Log " Attributes are different but target values are unexpected:" - LogAttributes + if [regexp {HuaweiAltMode} $flags(config)] { + Log " Alternative target attributes found, assume success" + } else { + Log " Attributes are different but target values are unexpected:" + LogAttributes + } } } break ++++++ usb-modeswitch-data-20170205.tar.bz2 -> usb-modeswitch-data-20170806.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-data-20170205/40-usb_modeswitch.rules new/usb-modeswitch-data-20170806/40-usb_modeswitch.rules --- old/usb-modeswitch-data-20170205/40-usb_modeswitch.rules 2017-02-05 10:18:50.000000000 +0100 +++ new/usb-modeswitch-data-20170806/40-usb_modeswitch.rules 2017-08-06 16:11:45.000000000 +0200 @@ -1,4 +1,4 @@ -# Part of usb-modeswitch-data, version 20170205 +# Part of usb-modeswitch-data, version 20170805 # # Works with usb_modeswitch versions >= 2.4.0. Slash before %k parameter # is for compatibility only. Versions >= 2.5.0 don't need it. @@ -12,7 +12,7 @@ SUBSYSTEM!="usb", ACTION!="add",, GOTO="modeswitch_rules_end" # Generic entry for most Huawei devices, excluding Android phones -ATTRS{idVendor}=="12d1", ATTRS{manufacturer}!="Android", ATTR{bInterfaceNumber}=="00", ATTR{bInterfaceClass}=="08", RUN+="usb_modeswitch '/%k'" +ATTRS{idVendor}=="12d1", ATTRS{manufacturer}!="Android", ATTR{bInterfaceNumber}=="00", ATTR{bInterfaceClass}=="08", RUN+="usb_modeswitch '%b/%k'" # HP LaserJet Professional P1102 ATTR{idVendor}=="03f0", ATTR{idProduct}=="002a", RUN+="usb_modeswitch '/%k'" @@ -149,7 +149,7 @@ # Axesstel Modems (w/ initial idProduct 0x0010) ATTR{idVendor}=="05c6", ATTR{idProduct}=="0010", RUN+="usb_modeswitch '/%k'" -# Option GlobeTrotter GX0201, Older Option devices, AnyDATA devices, Bless UC165, Celot K-300 a.o., TechFaith Venus VT-18, Celot CT-680, Quirky Option devices, Samsung SGH-Z810, Prolink P2000 CDMA, StrongRising device, Vertex Wireless 100 Series +# Samsung SGH-Z810, Option GlobeTrotter GX0201, Celot K-300 a.o., Celot CT-680, Older Option devices, AnyDATA devices, Bless UC165, StrongRising device, Prolink P2000 CDMA, TechFaith Venus VT-18, Vertex Wireless 100 Series ATTR{idVendor}=="05c6", ATTR{idProduct}=="1000", RUN+="usb_modeswitch '/%k'" # Various USB modems @@ -413,7 +413,7 @@ # Mobile Action ("Smart Cable") ATTR{idVendor}=="0df7", ATTR{idProduct}=="0800", RUN+="usb_modeswitch '/%k'" -# MediaTek MT6276M and others, MediaTek/Medion S4222 and probably others +# MediaTek/Medion S4222 and probably others, MediaTek MT6276M and others ATTR{idVendor}=="0e8d", ATTR{idProduct}=="0002", RUN+="usb_modeswitch '/%k'" # MediaTek Wimax USB Card diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-data-20170205/ChangeLog new/usb-modeswitch-data-20170806/ChangeLog --- old/usb-modeswitch-data-20170205/ChangeLog 2017-02-05 10:21:57.000000000 +0100 +++ new/usb-modeswitch-data-20170806/ChangeLog 2017-08-06 17:25:15.000000000 +0200 @@ -1,3 +1,9 @@ +20170806: + Added devices: [03f0:371d] HP un2430, [03f0:4b1d] HP hs2434, [03f0:4e1d] + HP lt4111, [03f0:a31d] HP lt4132, [0846:0fff] Netgear AirCard 779S, + [12d1:15ec] Vodafone/Huawei K5150; Corrected/amended configs: [0922:1003] + Dymo LabelManager 420P, [0922:1007] Dymo LabelManager Wireless PnP, + [1199:0fff] Sierra devices; Removed configs: [1004:61aa] LG VL600 20170205: Bugfix release: removed all catch-all fallback config files as they can affect unrelated devices - fixes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-data-20170205/Makefile new/usb-modeswitch-data-20170806/Makefile --- old/usb-modeswitch-data-20170205/Makefile 2017-02-05 10:07:51.000000000 +0100 +++ new/usb-modeswitch-data-20170806/Makefile 2017-08-06 16:46:39.000000000 +0200 @@ -1,5 +1,5 @@ PROG = usb-modeswitch-data -VERS = 20170205 +VERS = 20170806 RM = /bin/rm -f PREFIX = $(DESTDIR)/usr ETCDIR = $(DESTDIR)/etc diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-data-20170205/REFERENCE new/usb-modeswitch-data-20170806/REFERENCE --- old/usb-modeswitch-data-20170205/REFERENCE 2016-08-03 19:37:09.000000000 +0200 +++ new/usb-modeswitch-data-20170806/REFERENCE 2017-08-06 16:50:53.000000000 +0200 @@ -1,7 +1,7 @@ Configuration File Reference for USB_ModeSwitch ----------------------------------------------- -Last modified: 2016-08-03 +Last modified: 2017-08-06 @@ -114,6 +114,14 @@ message; use MessageContent for these +* HuaweiAltMode <0/1> -X + +An alternative to the Huawei standard, recommended by the manufacturer for +the Android OS. Sends a different bulk message which brings newer modems +into NCM mode (well supported in Linux) and older ones into plain PPP mode. +Also globally settable with HuaweiAltModeGlobal in /etc/usb_modeswitch.conf + + * OptionMode <0/1> -U The standard for all devices by Option. Sends a specific bulk message diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-data-20170205/gen-rules.tcl new/usb-modeswitch-data-20170806/gen-rules.tcl --- old/usb-modeswitch-data-20170205/gen-rules.tcl 2017-02-05 10:07:20.000000000 +0100 +++ new/usb-modeswitch-data-20170806/gen-rules.tcl 2017-08-06 15:45:21.000000000 +0200 @@ -11,7 +11,7 @@ # Default version string -set version "20170205" +set version "20170806" # Devices excluded from Huawei catch-all rule set x_huaweiList {12d1:1573 12d1:15c1} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-data-20170205/usb_modeswitch.d/03f0:371d new/usb-modeswitch-data-20170806/usb_modeswitch.d/03f0:371d --- old/usb-modeswitch-data-20170205/usb_modeswitch.d/03f0:371d 1970-01-01 01:00:00.000000000 +0100 +++ new/usb-modeswitch-data-20170806/usb_modeswitch.d/03f0:371d 2017-08-04 20:41:09.000000000 +0200 @@ -0,0 +1,2 @@ +# HP un2430 +Configuration=0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-data-20170205/usb_modeswitch.d/03f0:4b1d new/usb-modeswitch-data-20170806/usb_modeswitch.d/03f0:4b1d --- old/usb-modeswitch-data-20170205/usb_modeswitch.d/03f0:4b1d 1970-01-01 01:00:00.000000000 +0100 +++ new/usb-modeswitch-data-20170806/usb_modeswitch.d/03f0:4b1d 2017-08-04 20:41:32.000000000 +0200 @@ -0,0 +1,2 @@ +# HP hs2434 +Configuration=0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-data-20170205/usb_modeswitch.d/03f0:4e1d new/usb-modeswitch-data-20170806/usb_modeswitch.d/03f0:4e1d --- old/usb-modeswitch-data-20170205/usb_modeswitch.d/03f0:4e1d 1970-01-01 01:00:00.000000000 +0100 +++ new/usb-modeswitch-data-20170806/usb_modeswitch.d/03f0:4e1d 2017-08-04 20:42:31.000000000 +0200 @@ -0,0 +1,2 @@ +# HP lt4111 +Configuration=0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-data-20170205/usb_modeswitch.d/03f0:a31d new/usb-modeswitch-data-20170806/usb_modeswitch.d/03f0:a31d --- old/usb-modeswitch-data-20170205/usb_modeswitch.d/03f0:a31d 1970-01-01 01:00:00.000000000 +0100 +++ new/usb-modeswitch-data-20170806/usb_modeswitch.d/03f0:a31d 2017-08-04 20:43:05.000000000 +0200 @@ -0,0 +1,2 @@ +# HP lt4132 +Configuration=0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-data-20170205/usb_modeswitch.d/0846:0fff new/usb-modeswitch-data-20170806/usb_modeswitch.d/0846:0fff --- old/usb-modeswitch-data-20170205/usb_modeswitch.d/0846:0fff 1970-01-01 01:00:00.000000000 +0100 +++ new/usb-modeswitch-data-20170806/usb_modeswitch.d/0846:0fff 2017-08-04 20:38:05.000000000 +0200 @@ -0,0 +1,4 @@ +# Netgear AirCard 779S +TargetVendor= 0x0846 +TargetProduct=0x68d3 +SierraMode=1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-data-20170205/usb_modeswitch.d/0922:1003 new/usb-modeswitch-data-20170806/usb_modeswitch.d/0922:1003 --- old/usb-modeswitch-data-20170205/usb_modeswitch.d/0922:1003 2016-08-02 19:50:16.000000000 +0200 +++ new/usb-modeswitch-data-20170806/usb_modeswitch.d/0922:1003 2017-08-06 17:23:33.000000000 +0200 @@ -1,6 +1,8 @@ # Dymo LabelManager 420P TargetVendor= 0x0922 TargetProduct= 0x1004 +MessageEndpoint=0x01 +ResponseEndpoint=0x01 MessageContent="1b5a01" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-data-20170205/usb_modeswitch.d/0922:1007 new/usb-modeswitch-data-20170806/usb_modeswitch.d/0922:1007 --- old/usb-modeswitch-data-20170205/usb_modeswitch.d/0922:1007 2016-08-02 19:50:16.000000000 +0200 +++ new/usb-modeswitch-data-20170806/usb_modeswitch.d/0922:1007 2017-08-06 17:23:41.000000000 +0200 @@ -1,6 +1,8 @@ # Dymo LabelManager Wireless PnP TargetVendor= 0x0922 TargetProduct= 0x1008 +MessageEndpoint=0x01 +ResponseEndpoint=0x01 MessageContent="1b5a01" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-data-20170205/usb_modeswitch.d/1004:61aa new/usb-modeswitch-data-20170806/usb_modeswitch.d/1004:61aa --- old/usb-modeswitch-data-20170205/usb_modeswitch.d/1004:61aa 2016-03-05 11:08:30.000000000 +0100 +++ new/usb-modeswitch-data-20170806/usb_modeswitch.d/1004:61aa 1970-01-01 01:00:00.000000000 +0100 @@ -1,4 +0,0 @@ -# LG VL600 -TargetVendor=0x1004 -TargetProduct=0x61a7 -StandardEject=1 \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usb-modeswitch-data-20170205/usb_modeswitch.d/12d1:15ec new/usb-modeswitch-data-20170806/usb_modeswitch.d/12d1:15ec --- old/usb-modeswitch-data-20170205/usb_modeswitch.d/12d1:15ec 1970-01-01 01:00:00.000000000 +0100 +++ new/usb-modeswitch-data-20170806/usb_modeswitch.d/12d1:15ec 2017-08-04 20:29:30.000000000 +0200 @@ -0,0 +1,4 @@ +# Vodafone/Huawei K5150 +TargetVendor=0x12d1 +TargetProduct=0x1c26 +HuaweiNewMode=1
