1 2History of USB_ModeSwitch 3========================= 4 5Version 2.2.3, 2015/06/29 6 Fixed problem arising with systemd version 221 (220 untested), which 7 affects starting the usb_modeswitch systemd unit from the sh script 8 (reported by Archlinux users) 9Version 2.2.2, 2015/06/27 10 Added catch for libusb init error (thanks, Henrik Gustafsson); removed 11 global function result variable; added catch for USB configuration 12 read error (both thanks to "otila"); fixed wrapper script where port 13 search for symlinking modem port was broken ("/dev/gsmmodem"); changed 14 PantechMode parameter to represent different targets; added global 15 config option to disable MBIM checking and setting alltogether (request 16 from "kai"); changed udev sh script so that systemd processing takes 17 precedence over upstart; changed systemd template unit parameter to 18 avoid escaping problems 19Version 2.2.1, 2015/01/15 20 Fixed unreliable switching function for Cisco AM10 21Version 2.2.0, 2014/05/29 22 Introduction of parameter "HuaweiNewMode", wrapping the standard bulk 23 message for all newer Huawei devices; support for generic fall-back 24 config files, combined with OS switch (per vendor ID), implementation 25 to use a specific switching command on Android for all Huawei devices 26 (see README of data package for details); this change was suggested 27 by Huawei 28Version 2.1.1, 2014/03/27 29 Code cleanup, better use of libusb1; this also fixes problems with 30 determination of the active USB configuration (Samsung, Option modems); 31 "Interface" parameter was not working as expected, fixed (see also: 32 https://bugs.launchpad.net/bugs/1261923 ); fixed bogus interface release 33 in "inquire" function, again a report by "Sonya@zte" 34Version 2.1.0, 2014/01/28 35 ATTENTION: -I flag meaning reversed, default is to skip SCSI inquiry; 36 introduction of StandardEject, replacing many MessageContents with the 37 same function, reducing size of device config files, and always including 38 the 'Allow Medium Removal' before ejecting (thanks to Lars Melin for 39 the idea); fix in "bulk_read", removing bogus CSW request (report from 40 "Sonya@zte") 41Version 2.0.1, 2013/09/03 42 Fixed stupid string size bug which could lead to memory corruption 43 (thanks to Leonid Myravjev) 44Version 2.0.0, 2013/09/01 45 Switched to libusb1.0, with much help from folks of the wl500g project 46 (http://wl500g.googlecode.com): Vladislav Grishenko, Leonid Lisovskiy, 47 Roman Samarev, Andrey Tikhomirov; 48 major code and debug output cleanup; man page corrections and additions 49 (thanks to Thomas Haller); 50 experimental systemd and upstart integration, if present 51 (Explanation: newer udev versions kill all subprocesses, detached or 52 not. The suggested way to handle longer running processes like the 53 usb_modeswitch_dispatcher is to add simple services or tasks and start 54 these by sending signals from the udev rule) 55 !! Attention, system integrators: a crude install facility is included 56 in the Makefile to check if "upstart" or "systemd" is active and to 57 install the matching service file; you may want to adapt it better to 58 your respective system, possibly adding dependencies/targets to the 59 services. Note that the udev starter script usb_modeswitch.sh also 60 checks for the existence of the service/unit files 61Version 1.2.7, 2013/08/07 62 Two new dedicated control message functions to support Pantech LTE 63 (thanks to Adam Goode) and Blackberry Q10/Z10 (thanks to Daniel Mende) 64Version 1.2.6, 2013/06/02 65 Several changes to streamline compiling as part of larger projects 66 (thanks to Nicolas Carrier), mostly in Makefile; fix compiler warnings 67 appearing in certain build environments (N. Carrier); new Quanta 68 procedure (thanks to Andrey Tikhomirov) for Quanta 1K3 LTE; fix for 69 error with cascaded hubs in dispatcher script (hint from N. Carrier) 70Version 1.2.5, 2012/11/09 71 Initial support for MBIM devices, use with data package >= 20121109; 72 checking for these is the automatic default, new parameter NoMBIMCheck 73 prevents the check per device in case of problems; new global option 74 to set "delay_use" of usb-storage (as low values may prevent 75 mode-switching); fix for handling multi-configuration devices (thanks 76 to Bj��rn Mork for advice) 77Version 1.2.4, 2012/08/12 78 Additional interface checks to prevent sending UFI commands to non- 79 storage interfaces (prompted by more ambiguous device IDs popping up); 80 change in SierraMode for handling newer devices which caused an error 81 abort before; Makefile fix for parallelized make runs 82Version 1.2.3, 2012/01/28 83 Fixed two bugs both causing the embedded-jimsh install variant of the 84 dispatcher crash (the "pure-script" install variant was NOT affected); 85 fixed some "regexp" incompatibilities with Debian's libjim 86Version 1.2.2, 2012/01/19 87 Fixed bad bug preventing mode switch for devices using TargetClass; 88 improved logging in case of negative success check 89Version 1.2.1, 2011/12/26 90 Fixed possible ambiguities when multiple identical modems are plugged 91 synchronously; this is achieved by adding -b and -g parameter (busnum 92 and devnum) for proper id'ing; some resulting workflow changes and 93 shortcuts in "system integration" mode (use sysfs/wrapper for success 94 control, reduce informative checks); improved hub usage robustness; 95 future data packages can be ridded of redundancies (default ID, success 96 check parameters), resulting in smaller files; 97 fixed bad bug which may prevent switching completely when logging is 98 not activated; fixed possible overflow in dispatcher C code (thanks to 99 Gilles Espinasse) 100Version 1.2.0, 2011/10/23 101 Added QisdaMode for Qisda H21 (thanks to Chi-Hang Long for the code); 102 dispatcher can now be installed with an embedded interpreter, so that 103 Tcl is no longer required; added command line options for binary program 104 to accept configuration data via stdin or as a long string parameter - 105 this fixes the bug with non-writable temporary file during boot; 106 reversed skipping of pre-switching delay, which has caused problems; 107 fixed potential buffer overflow (thanks to Rafael Silva for the find); 108 get first interface right even on some broken devices (thanks to 109 Alexander Gordeev for the patch); increased post-switch delay before 110 driver binding to avoid possible conflict with usb-storage 111Version 1.1.9, 2011/08/05 112 Added CiscoMode for Valet device; additional checking for CDC ACM device 113 to prevent erroneous driver loading after switching; no more post-switch 114 check for access to initial device if target parameters are given 115Version 1.1.8, 2011/06/19 116 Cleaned up switchSendMessage(); added workaround for quirky devices not 117 reporting configuration setting; added non-CSW response for arbitrary 118 bulk transfers; added SequansMode and MobileActionMode; check for active 119 configuration will be skipped if bNumConfigurations is 1 (most cases) 120Version 1.1.7, 2011/02/27 121 Attention: paths for runtime files and database have changed! Old places 122 will be found but are deprecated; /usr/share/usb_modeswitch for database, 123 /var/lib/usb_modeswitch for "remembered" IDs; 124 fix for configuration setting race (thanks to Amit Mendapara); discovered 125 incompatibility between Tcl versions <= 8.3 and >=8.4, so 8.4 is the 126 minimum prerequisite now; 127 first availability of an alternative source pack which includes "jimsh", 128 a fast Tcl mini shell, intended for resource-constrained systems 129Version 1.1.6, 2010/12/22 130 Moved warm-boot driver binding to sh wrapper, was unreliable in 1.1.5; 131 sh wrapper overhaul, made compatible with Ubuntu's "dash" shell, tclsh 132 calls reduced further; initial device checking includes current 133 bConfigurationValue now, should work with config setting for multiple 134 devices; made tcl script conform to limitations of "jimsh", the minimal 135 tcl shell (hint from Barry Kauler); fixes for "usbserial" fallback 136 (driver binding for old systems); in the C program, changed parameter 137 "MessageDelay" (hitherto unused) to "ReleaseDelay", to be used in one 138 device configuration (delay interface release after bulk message sending) 139Version 1.1.5, 2010/11/28 140 Added special control message for Kobil devices (patch from Filip Aben); 141 try to get active configuration for interface class checking (there are 142 some new devices 'switching' via configuration selection); 143 fixed "0000" target product ID - again; new bash and tcl wrapper logic: 144 the convenience functions for driver binding and symlinking will now 145 start the tcl shell ONLY for known devices; changed and appended logging 146 capabilities of said convenience functions; add loading of "usbserial" 147 as a fallback for older systems to support new devices; 148 add workaround for bug in libusb1 which affects device search during 149 success check 150Version 1.1.4, 2010/08/17 151 The package should work at boot time now (cold and warm); 152 product IDs of "0000" do exist but were not accepted, fixed (thanks to 153 Sakis Dimopoulos); response endpoint is now always detected (led to 154 possible error report when resetting all endpoints in version 1.1.3); 155 wrapper script can now work with a packed collection of config files as 156 well as with the plain folder of files; use with the "install-packed" 157 make target of the data package (for use on systems with resource 158 constraints); wrapper fix for the symlink feature: handling of multiple 159 interrupt ports was incomplete; wrapper does not longer use a temporary 160 file for the symlink feature (security considerations, Marco d'Itri) 161Version 1.1.3, 2010/06/21 162 Added delay option to separate multiple message transfers by millisecs; 163 fixed (possibly dangerous) sloppy string handling (thanks to Christophe 164 Fergeau); added "clear_halt" for response endpoint; small additions in 165 Makefile (install with -D); changes in option handling (NO MORE DEFAULT 166 CONFIG FILE!) and help text; symlink feature in wrapper can now cope 167 with devices providing more than one interrupt port; wrapper now ignores 168 package manager leftovers in config folder; replaced bash-specific syntax 169 in wrapper; changed ZTE skipping (if existing rules are found) to warning 170Version 1.1.2, 2010/04/18 171 Added support for two additional bulk messages; wrapper handles special 172 ZTE case; generalized driver loading, new parameter "DriverModule" and 173 "DriverIDPath"; new wrapper facility to add symlink pointing to interrupt 174 port (used in rule file from data pack >= 20100418) 175Version 1.1.1, 2010/03/17 176 Attention: old usb_modeswitch.conf renamed to usb_modeswitch.setup! 177 Add separate config file for wrapper (global settings for switching and 178 logging); add config file option to disable driver loading; handling of 179 kernel attribute AVOID_RESET_QUIRK added; bug fixed in SonyMode (reported 180 by "no-0n3"); bug fixed in SuccessCheck logic; minor flow alignments and 181 fixes; new devices 182Version 1.1.0, 2010/01/24 183 Attention: wrapper script location changed, uninstall old versions! 184 Major fixes in the wrapper script (stabilizing and time-saving); 185 back to unified installation, defaults to "integrated" approach; 186 new -D parameter to enable "integrated" behaviour; bugs fixed in 187 success check; man file included (borrowed from the Debian package); 188 C code and binary works with the compat library from libusb-1.0; 189 some new devices 190Version 1.0.7, 2010/01/06 191 Bug fixed for Sony mode, thanks to Marco Chiaranda; fix for parameter 192 substitution in newer udev versions, fix for bad bug in wrapper script 193 practically disabling automatic mode 194Version 1.0.6, 2009/12/21 195 New "GCT Mode", fixes for device quirks (NXP Dragonfly), fix for multiple 196 Huawei devices, cleanups, loads of new devices in config file and database, 197 minor tcl script changes 198Version 1.0.5, 2009/08/26 199 More changes and fixes regarding success check; "--version" option; 200 config "database" updated 201Version 1.0.4, 2009/08/23 202 Success check bugs (and others) fixed 203Version 1.0.3, 2009/08/20 204 Success check improved; experimental system integration (fully automated), 205 optional; new parameter "TargetProductList" needed for this; other 206 necessary small adaptations; more devices 207Version 1.0.2, 2009/06/10 208 Output bugs fixed 209Version 1.0.1, 2009/06/08 210 Added output of descriptor strings for further identification 211Version 1.0.0, 2009/06/01 212 Attention: possible incompatibilities for command line control! 213 On/off flags don't require arguments anymore (-H, -S, -O, -d, -R, 214 -n, new: -I), meaning "-R 0" does a reset like "-R 1" or "-R"; 215 long option names changed to standard format (e.g. --HuaweiMode to 216 --huawei-mode); added device inquiry, for future help with device 217 identification; catch error -19 as possible success; send and response 218 endpoints now autoselected (consequently NeedResponse is back); 219 new devices 220Version 0.9.7, 2009/04/15 221 Updated SonyMode, MD 400 now stable; automatic default endpoint 222 detection from Andrew Bird 223Version 0.9.7beta, 2009/03/15 224 Major code clean up, optional success control (both suggested 225 by Daniel Cooper), new devices 226Version 0.9.6, 2009/01/08 227 Special modes added for Sierra and Sony Ericsson, new devices 228Version 0.9.5, 2008/10/27 229 New options for USB tuning (jokedst), lots of new devices, clean up 230Version 0.9.4, 2008/06/09 231 Compat fix for libusb on FreeBSD quirks, more devices 232Version 0.9.4beta2, 2008/03/19 233 Successful udev device release fix 234Version 0.9.4beta, 2008/03/16 235 Multiple device support 236Version 0.9.3, 2008/03/09 237 More devices, no changes from beta version 238Version 0.9.3beta, 2007/12/30 239 New TargetClass parameter for recent Option firmware (Paul Hardwick), more 240 devices 241Version 0.9.2, 2007/11/02 242 New Huawei mode (code from Miroslav Bobovsky, added by Denis Sutter), more 243 devices 244Version 0.9.1beta, 2007/09/04 (jokedst) 245 Added command line parsing, cleaned up config stuff, doc updates 246Version 0.9beta, 2007/08/15 247 Name change from "icon_switch", parameter file and generalizing 248Version 0.2, 2006/09/25 249 Code cleaning, more messages 250Version 0.1, 2006/09/24 251 (as "icon_switch") Just very basic functionality ... 252