Compare commits

..

37 commits

Author SHA1 Message Date
Fedora Release Engineering
d1134f5058 Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild 2026-07-17 08:15:41 +00:00
Fedora Release Engineering
f8de5edc68 Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild 2026-01-17 19:41:04 +00:00
Lubomir Rintel
498f59aeed Do not let the unit send SIGTERM to usb_modeswitch mid-switch. 2025-08-14 16:52:19 +02:00
Fedora Release Engineering
98f0e006be Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-25 19:51:55 +00:00
Sérgio M. Basto
75c8580965 Revert the move of usb_modeswitch to /usr/lib/udev/rules.d, usb_modeswitch is
not an rule
2025-02-27 13:05:59 +00:00
Sérgio M. Basto
4898f94e0e vim :retab 2025-02-20 01:26:39 +00:00
Sérgio M. Basto
b2294969f2 Update usb_modeswitch to 2.6.2
Resolves: rhbz#2346392
2025-02-20 01:25:59 +00:00
Fedora Release Engineering
ec98dd90b0 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-19 13:55:05 +00:00
Fedora Release Engineering
109fa600da Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-20 08:24:06 +00:00
Fedora Release Engineering
d4c4cd8bdc Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-27 07:16:03 +00:00
Íñigo Huguet
674dbed569 Really use SPDX license identifier 2023-11-02 16:00:46 +01:00
Till Maas
80331ece0f Cleanup spec: use %license, use %patch 0
- Use spdx license specifier
- Remove unused patch
2023-08-24 19:35:03 +02:00
Fedora Release Engineering
2e63e4c74f Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-22 17:15:04 +00:00
Fedora Release Engineering
c848680bae Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-21 05:57:03 +00:00
Fedora Release Engineering
a38ecae852 Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-07-23 11:31:50 +00:00
Fedora Release Engineering
9718ae0f03 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-01-22 03:38:53 +00:00
Fedora Release Engineering
49b5091342 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-07-23 20:09:46 +00:00
Fedora Release Engineering
6ca83012be - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-01-27 22:46:57 +00:00
Tom Stellard
9001135f20 Add BuildRequires: make
https://fedoraproject.org/wiki/Changes/Remove_make_from_BuildRoot
2021-01-09 00:29:12 +00:00
Sérgio M. Basto
8258cbbb77 Update usb_modeswitch to 2.6.1
Drop patch1, http://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?f=2&t=2733
Drop BR jimtcl-devel, if we don't install dynlink-dispatcher
2020-11-30 00:39:59 +00:00
Sérgio M. Basto
421c517eaf Use make macros (https://src.fedoraproject.org/rpms/usb_modeswitch/pull-request/1)
https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
2020-09-29 23:58:21 +01:00
Fedora Release Engineering
8a2687d26d - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-07-29 13:24:50 +00:00
Lubomir Rintel
870d68e8f3 New 2.6.0 release 2020-03-24 15:51:28 +01:00
Fedora Release Engineering
d78d63e3d2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-01-31 02:45:54 +00:00
Fedora Release Engineering
b19e83bb54 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-07-27 02:38:54 +00:00
Fedora Release Engineering
abe42ed6b8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-02-03 10:56:53 +00:00
0f7f377d1b Remove obsolete Group tag
References: https://fedoraproject.org/wiki/Changes/Remove_Group_Tag
2019-01-28 20:24:53 +01:00
5e11010ea9
Add missing BuildRequires on gcc
/bin/sh: cc: command not found

References: https://bugzilla.redhat.com/show_bug.cgi?id=1606622
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2018-07-24 16:37:42 +02:00
Fedora Release Engineering
583d7c7500 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2018-07-14 08:19:42 +00:00
Lubomir Rintel
44f1f68290 New 2.5.2 release 2018-02-28 22:19:47 +01:00
Florian Weimer
881e9241f3 Use LDFLAGS from redhat-rpm-config 2018-02-23 16:23:06 +01:00
Fedora Release Engineering
a0cc21923b - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2018-02-09 20:10:11 +00:00
Lubomir Rintel
167d48b6f3 New 2.5.1 release 2017-08-18 11:05:10 +02:00
Fedora Release Engineering
1bc4210f1e - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild 2017-08-03 09:53:06 +00:00
Fedora Release Engineering
cbb6ca7b09 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild 2017-07-27 21:04:46 +00:00
Fedora Release Engineering
779c2a9b03 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild 2017-02-11 16:49:30 +00:00
Lubomir Rintel
238128f1f9 Bump the release number to be higher than in Fedora 24 2016-07-29 09:51:21 +02:00
9 changed files with 277 additions and 472 deletions

View file

@ -1,334 +0,0 @@
From cf2afa734597ef88b8f5871bf18cf849b105e51d Mon Sep 17 00:00:00 2001
From: Lubomir Rintel <lkundrak@v3.sk>
Date: Mon, 25 Jul 2016 12:03:22 +0200
Subject: [PATCH] Bring back the module binding
We still need it for some devices.
http://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?f=2&t=2560
---
usb_modeswitch.sh | 23 +++++-
usb_modeswitch.tcl | 214 +++++++++++++++++++++++++++++++++++++++++++++++++----
2 files changed, 221 insertions(+), 16 deletions(-)
diff --git a/usb_modeswitch.sh b/usb_modeswitch.sh
index b126ec3..f4b76dd 100755
--- a/usb_modeswitch.sh
+++ b/usb_modeswitch.sh
@@ -40,7 +40,27 @@ fi
PATH=/sbin:/usr/sbin:$PATH
case "$1" in
--driver-bind)
- # driver binding code removed
+ (
+ 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
+ ) &
exit 0
;;
--symlink-name)
@@ -53,7 +73,6 @@ case "$1" in
exit 0
;;
esac
-
IFS='/' read -r p1 p2 <<EOF
$1
EOF
diff --git a/usb_modeswitch.tcl b/usb_modeswitch.tcl
index 3e590fd..b74d46c 100755
--- a/usb_modeswitch.tcl
+++ b/usb_modeswitch.tcl
@@ -276,6 +276,7 @@ foreach mconfig $configList {
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"
@@ -290,10 +291,6 @@ foreach mconfig $configList {
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) {
@@ -348,19 +345,68 @@ if [regexp {ok:busdev} $report] {
ReadUSBAttrs $devdir $ifdir
}
-# driver binding removed !!
+# Checking for bound drivers if there is an interface with class 0xff
-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
+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"
}
}
-# 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)
+
+# If module is set (it is by default), driver shall be loaded.
+# If not, then NoDriverLoading is active
+
+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)
+ }
+ }
+} 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"
}
# In newer kernels there is a switch to avoid the use of a device
@@ -553,6 +599,8 @@ return "Use global config file: $configFile"
proc ParseDeviceConfig {cfg} {
global config
+set config(DriverModule) ""
+set config(DriverIDPath) ""
set config(WaitBefore) ""
set config(TargetVendor) ""
set config(TargetProduct) ""
@@ -561,6 +609,7 @@ set config(Configuration) ""
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)] {
@@ -568,6 +617,26 @@ foreach pname [lsort [array names config]] {
}
}
+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]
}
@@ -768,6 +837,92 @@ return $symlinkName
# 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} {
@@ -791,6 +946,37 @@ close $lc
# 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
--
2.7.4

View file

@ -1,29 +0,0 @@
From 73001792b29f080fcabc57f30d6030bedb2a24b0 Mon Sep 17 00:00:00 2001
From: Lubomir Rintel <lkundrak@v3.sk>
Date: Wed, 20 Jul 2016 21:14:10 +0200
Subject: [PATCH] Fix crash on early fail
Don't uninitialize libusb if it has not been initialized yet.
https://bugzilla.redhat.com/show_bug.cgi?id=1358472
---
usb_modeswitch.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/usb_modeswitch.c b/usb_modeswitch.c
index cbb8c28..f9c8b2e 100644
--- a/usb_modeswitch.c
+++ b/usb_modeswitch.c
@@ -2021,7 +2021,8 @@ void close_all()
libusb_close(devh);
// libusb_exit will crash on Raspbian 7, crude protection
#ifndef __ARMEL__
- libusb_exit(NULL);
+ if (ctx)
+ libusb_exit(NULL);
#endif
if (sysmode)
closelog();
--
2.7.4

View file

@ -1,34 +0,0 @@
From 93686f8ba8c1ed6bf559dbfda53f9c7d702c76b5 Mon Sep 17 00:00:00 2001
From: Lubomir Rintel <lkundrak@v3.sk>
Date: Thu, 21 Jul 2016 18:13:58 +0200
Subject: [PATCH] usb_modeswitch: don't return a value from stack
The memory is not allocated anymore when the function returns and that
causes no end of mayhem and undefined behavior.
Let's make it static so that it's perserved after the return. It wastes
LINE_DIM bytes of memory and requires the caller to consume the value
before another call, but that's no problem.
http://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?f=2&t=2557
---
usb_modeswitch.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/usb_modeswitch.c b/usb_modeswitch.c
index f9c8b2e..3373ccf 100644
--- a/usb_modeswitch.c
+++ b/usb_modeswitch.c
@@ -1855,7 +1855,8 @@ char* ReadParseParam(const char* FileName, char *VariableName)
char *FirstQuote, *LastQuote, *P1, *P2;
int Line=0;
unsigned Len=0, Pos=0;
- char Str[LINE_DIM], *token, *configPos;
+ static char Str[LINE_DIM];
+ char *token, *configPos;
FILE *file = NULL;
// Reading and storing input during the first call
--
2.7.4

View file

@ -0,0 +1,74 @@
--- device_reference.txt 2014-05-29 22:18:46.000000000 +0200
+++ device_reference_utf8.txt 2014-11-24 20:51:17.647221466 +0100
@@ -60,7 +60,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 +279,7 @@
#
# Probably works with DetachStorageOnly too
#
-# Contributor: Flávio Moringa and others
+# Contributor: Flávio Moringa and others
DefaultVendor= 0x19d2
DefaultProduct= 0x2000
@@ -777,7 +777,7 @@
#
# Recommended init command: ATE0V1&D2&C1S0=0
#
-# Contributor: Jérôme Oufella
+# Contributor: Jérôme Oufella
DefaultVendor= 0x1004
DefaultProduct= 0x1000
@@ -1336,7 +1336,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 +1641,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 +1658,7 @@
########################################################
# Nokia CS-10
#
-# Contributor: Wacław Sierek
+# Contributor: Wacław Sierek
DefaultVendor= 0x0421
DefaultProduct=0x060c
@@ -1700,7 +1700,7 @@
#######################################################
# Samsung GT-B3730
#
-# Contributor: Per Øyvind Karlsen
+# Contributor: Per Øyvind Karlsen
DefaultVendor= 0x04e8
DefaultProduct=0x689a
@@ -1771,7 +1771,7 @@
#######################################################
# Huawei EC168C (from Zantel)
#
-# Contributor: Ã…smund Hjulstad
+# Contributor: Åsmund Hjulstad
DefaultVendor= 0x12d1
DefaultProduct=0x1446

View file

@ -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

View file

@ -1,23 +0,0 @@
diff --git a/usb_modeswitch.c b/usb_modeswitch.c
index 52598f7..cbb8c28 100644
--- a/usb_modeswitch.c
+++ b/usb_modeswitch.c
@@ -2060,7 +2060,8 @@ void printHelp()
" -g, --device-num NUM system device number (for hard ID)\n"
" -m, --message-endpoint NUM direct the message transfer there (optional)\n"
" -M, --message-content <msg> message to send (hex number as string)\n"
- " -2 <msg>, -3 <msg> additional messages to send (-n recommended)\n"
+ " -2, --message-content2 <msg> additional messages to send (-n recommended)\n"
+ " -3, --message-content3 <msg> additional messages to send (-n recommended)\n"
" -w, --release-delay NUM wait NUM ms before releasing the interface\n"
" -n, --need-response obsolete, no effect (always on)\n"
" -r, --response-endpoint NUM read response from there (optional)\n"
@@ -2084,7 +2085,7 @@ void printHelp()
" -Q, --quiet don't show progress or error messages\n"
" -W, --verbose print all settings and debug output\n"
" -D, --sysmode specific result and syslog message\n"
- " -s, --success <seconds> switching result check with timeout\n"
+ " -s, --check-success <seconds> switching result check with timeout\n"
" -I, --inquire obsolete, no effect\n\n"
" -c, --config-file <filename> load long configuration from file\n\n"
" -t, --stdinput read long configuration from stdin\n\n"

View file

@ -1 +1 @@
6e1640db47768bb9012f91b7593116ef usb-modeswitch-2.4.0.tar.bz2
SHA512 (usb-modeswitch-2.6.2.tar.bz2) = adaedf89de3c5f9dc55da7bb5bb3fe8165c0424cffacb00f83876094b7abdc386ced9959e5dbdf46ab06aa1d03fbfca13df539421489ef4d2dd0f72742057f3d

View file

@ -0,0 +1,49 @@
From e3cf80c95a1c67d05dded68ec171bfde4686003f Mon Sep 17 00:00:00 2001
From: Lubomir Rintel <lkundrak@v3.sk>
Date: Thu, 14 Aug 2025 16:35:56 +0200
Subject: [PATCH] service: Do not ever send SIGTERM to the unit
Following happens when modem 03f0:a31d (HP lt4132 LTE/HSPA+ 4G Module) is
plugged:
- systemd-udevd emits "add" action
- The "add" action triggers restart of usb_modeswitch@<port>.service
- usb_modeswitch@<port>.service starts usb_modeswitch
- Another udev rule renames the network interface from usb0 to enp0...
- Above causes systemd-udevd emit "change" action for the device
- The "change" action triggers another restart of usb_modeswitch@<port>.service
- usb_modeswitch run initially gets terminated mid-air
- Device drops off the bus
- Infinite sadness
Possible solutions:
- The udev rule could just emit the "change" action. I have no idea why
it handles "change" actions, but it looks intentional -> No touchy
from me.
- usb_modeswitch could just trap TERM and shut down gracefully. This
involves Tcl -> No touchy.
- The systemd unit could just send an innocent signal instead of TERM
and just let usb_modeswitch end its life journey naturally.
Let's do this, because it involves least brain.
Anybody please feel free to send this upstream.
---
usb_modeswitch@.service | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/usb_modeswitch@.service b/usb_modeswitch@.service
index 22d2ea7..23d4ed0 100644
--- a/usb_modeswitch@.service
+++ b/usb_modeswitch@.service
@@ -7,3 +7,7 @@ ExecStart=/usr/sbin/usb_modeswitch_dispatcher --switch-mode %i
# Testing
#ExecStart=/bin/echo "usb_modeswitch.service: device name is %i"
+# Do not ever terminate violently on restart -- interrupting the switching
+# transaction will crash some modems! We'll terminate shortly anyways.
+# If we hang, FinalKillSignal (defaults to SIGKILL) will take care of that.
+KillSignal=SIGCONT
--
2.50.1

View file

@ -1,34 +1,29 @@
%define source_name usb-modeswitch
%define source_name usb-modeswitch
Name: usb_modeswitch
Version: 2.4.0
Release: 4%{?dist}
Summary: USB Modeswitch gets mobile broadband cards in operational mode
Summary(de): USB Modeswitch aktiviert UMTS-Karten
Group: Applications/System
License: GPLv2+
URL: http://www.draisberghof.de/usb_modeswitch/
Name: usb_modeswitch
Version: 2.6.2
Release: 6%{?dist}
Summary: USB Modeswitch gets mobile broadband cards in operational mode
Summary(de): USB Modeswitch aktiviert UMTS-Karten
License: GPL-2.0-or-later
URL: http://www.draisberghof.de/usb_modeswitch/
Source0: http://www.draisberghof.de/%{name}/%{source_name}-%{version}.tar.bz2
Source1: http://www.draisberghof.de/usb_modeswitch/device_reference.txt
Source0: http://www.draisberghof.de/%{name}/%{source_name}-%{version}.tar.bz2
Source1: http://www.draisberghof.de/usb_modeswitch/device_reference.txt
# http://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?f=2&t=2546
Patch0: rhbz948451-fix-manual-pages.patch
# Submitted upstream (2014-11-24)
Patch0: device_reference-utf8.patch
# Not submitted upstream due to lack of courage
Patch1: usb_modeswitch-2.6.2-SIGTERM.patch
# http://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?f=2&t=2556
Patch1: 0001-Fix-crash-on-early-fail.patch
# http://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?f=2&t=2557
Patch2: 0001-usb_modeswitch-don-t-return-a-value-from-stack.patch
# http://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?f=2&t=2560
Patch3: 0001-Bring-back-the-module-binding.patch
BuildRequires: libusbx-devel
BuildRequires: jimtcl-devel
BuildRequires: systemd
Requires: usb_modeswitch-data >= 20121109
Requires: systemd
BuildRequires: make
BuildRequires: gcc
BuildRequires: libusbx-devel
# "tcl" or "jimsh"), use the light-weight installation:
#BuildRequires: jimtcl-devel
BuildRequires: systemd
Requires: usb_modeswitch-data >= 20121109
Requires: systemd
%description
USB Modeswitch brings up your datacard into operational mode. When plugged
@ -37,7 +32,7 @@ installation files. This tool deactivates this cdrom-device and enables
the real communication device. It supports most devices built and
sold by Huawei, T-Mobile, Vodafone, Option, ZTE, Novatel.
%description -l de
%description -l de
USB Modeswitch deaktiviert die CDROM-Emulation einiger UMTS-Karten.
Dadurch erkennt Linux die Datenkarte und kann damit Internet-
Verbindungen aufbauen. Die gängigen Karten von Huawei, T-Mobile,
@ -48,22 +43,23 @@ Vodafone, Option, ZTE und Novatell werden unterstützt.
%setup -q -n %{source_name}-%{version}
cp -f %{SOURCE1} device_reference.txt
%patch0 -p1 -b .manpage
%patch1 -p1 -b .libusb_exit
%patch2 -p1 -b .stack
%patch3 -p1 -b .binding
%patch 0 -p0
%patch 1 -p1
%build
CFLAGS="$RPM_OPT_FLAGS" make %{?_smp_mflags}
%{set_build_flags}
# this will require jimtcl-devel
#make_build all-with-dynlink-dispatcher
%make_build
%install
mkdir -p $RPM_BUILD_ROOT%{_unitdir}
make install \
DESTDIR=$RPM_BUILD_ROOT \
SYSDIR=$RPM_BUILD_ROOT%{_unitdir} \
UDEVDIR=$RPM_BUILD_ROOT%{_prefix}/lib/udev
mkdir -p %{buildroot}%{_unitdir}
%make_install \
SYSDIR=%{buildroot}%{_unitdir} \
SBINDIR=%{buildroot}%{_sbindir} \
UDEVDIR=%{buildroot}%{_prefix}/lib/udev
%files
@ -74,12 +70,116 @@ make install \
%{_prefix}/lib/udev/usb_modeswitch
%{_unitdir}/usb_modeswitch@.service
%config(noreplace) %{_sysconfdir}/usb_modeswitch.conf
%doc COPYING README ChangeLog device_reference.txt
%doc README ChangeLog device_reference.txt
%license COPYING
%changelog
* Tue Jul 26 2016 Lubomir Rintel <lkundrak@v3.sk> - 2.4.0-4
- Bring back the module binding
* Fri Jul 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.2-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
* Sat Jan 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.2-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
* Thu Aug 14 2025 Lubomir Rintel <lkundrak@v3.sk> - 2.6.2-4
- Do not let the unit send SIGTERM to usb_modeswitch mid-switch.
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Thu Feb 27 2025 Sérgio Basto <sergio@serjux.com> - 2.6.2-2
- Revert the move of usb_modeswitch to /usr/lib/udev/rules.d, usb_modeswitch is
not an rule
* Thu Feb 20 2025 Sérgio Basto <sergio@serjux.com> - 2.6.2-1
- Update usb_modeswitch to 2.6.2
- Resolves: rhbz#2346392
- Fix build related to /usr/sbin move
* Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.1-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.1-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.1-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Thu Nov 2 2023 Íñigo Huguet <ihuguet@redhat.com> - 2.6.1-9
- Really use SPDX license specifier
* Thu Aug 24 2023 Till Maas <opensource@till.name> - 2.6.1-8
- Cleanup spec: use %%license, use %%patch 0
- Use spdx license specifier
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.1-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.1-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.1-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Nov 18 2020 Sérgio Basto <sergio@serjux.com> - 2.6.1-1
- Update usb_modeswitch to 2.6.1
- Drop patch1, http://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?f=2&t=2733
- Drop BR jimtcl-devel, if we don't install dynlink-dispatcher
* Tue Sep 29 2020 Sérgio Basto <sergio@serjux.com> - 2.6.0-3
- Use make macros (https://src.fedoraproject.org/rpms/usb_modeswitch/pull-request/1)
- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.6.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Mar 24 2020 Lubomir Rintel <lkundrak@v3.sk> - 2.6.0-1
- New 2.6.0 release
* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.5.2-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.5.2-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.5.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.5.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Wed Feb 28 2018 Lubomir Rintel <lkundrak@v3.sk> - 2.5.2-1
- New 2.5.2 release
* Fri Feb 23 2018 Florian Weimer <fweimer@redhat.com> - 2.5.1-3
- Use LDFLAGS from redhat-rpm-config
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.5.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Fri Aug 18 2017 Lubomir Rintel <lkundrak@v3.sk> - 2.5.1-1
- New 2.5.1 release
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.0-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.0-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.0-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Fri Jul 29 2016 Lubomir Rintel <lkundrak@v3.sk> - 2.4.0-5
- Bump the release number to be higher than in Fedora 24
* Thu Jul 21 2016 Lubomir Rintel <lkundrak@v3.sk> - 2.4.0-3
- Fix undefined behavior in config parser (rh #1352055)