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