The branch main has been updated by jsm:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=fc618b5f7e5844b859030d8337b2b272dc20169e

commit fc618b5f7e5844b859030d8337b2b272dc20169e
Author:     Jesper Schmitz Mouridsen <j...@freebsd.org>
AuthorDate: 2025-07-16 17:26:23 +0000
Commit:     Jesper Schmitz Mouridsen <j...@freebsd.org>
CommitDate: 2025-07-16 17:49:14 +0000

    preliminary usb support for fwget
    
    Mostly a copy of pci subsystem support, by replacing
    pciconf with usbconfig and excluding hardware classes.
    
    Approved by:    wireless (bz) manpages (ziaee) USB (bz)
    Differential Revision:  https://reviews.freebsd.org/D48678
---
 usr.sbin/fwget/Makefile       |  2 +-
 usr.sbin/fwget/fwget.8        | 14 +++++++++++---
 usr.sbin/fwget/fwget.sh       |  6 +++---
 usr.sbin/fwget/usb/Makefile   | 10 ++++++++++
 usr.sbin/fwget/usb/usb        | 43 +++++++++++++++++++++++++++++++++++++++++++
 usr.sbin/fwget/usb/usb_ralink | 12 ++++++++++++
 6 files changed, 80 insertions(+), 7 deletions(-)

diff --git a/usr.sbin/fwget/Makefile b/usr.sbin/fwget/Makefile
index 1cdf0f18230d..4c934aee3413 100644
--- a/usr.sbin/fwget/Makefile
+++ b/usr.sbin/fwget/Makefile
@@ -2,6 +2,6 @@ PACKAGE=        fwget
 
 SCRIPTS=       fwget
 MAN=           fwget.8
-SUBDIR=                pci
+SUBDIR=                pci usb
 
 .include <bsd.prog.mk>
diff --git a/usr.sbin/fwget/fwget.8 b/usr.sbin/fwget/fwget.8
index 7b8b606cc591..86e304775e2d 100644
--- a/usr.sbin/fwget/fwget.8
+++ b/usr.sbin/fwget/fwget.8
@@ -23,7 +23,7 @@
 .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd June 27, 2024
+.Dd July 7, 2025
 .Dt FWGET 8
 .Os
 .Sh NAME
@@ -47,7 +47,11 @@ Dry run, only show needed packages
 .It Fl v
 Be more verbose
 .It Ar subsystem
-Hardware subsystem, default pci
+Hardware subsystem(s), default is all supported subsystems.
+Space separated hardware subsystems, accepts
+.Cm pci
+and
+.Cm usb
 .El
 .Sh SEE ALSO
 .Xr firmware 9
@@ -64,4 +68,8 @@ utility and this manual page were written by
 .An Emmanuel Vadot Aq Mt m...@freebsd.org
 for Beckhoff Automation GmbH & Co\. KG.
 .Sh CAVEATS
-This utility currently only supports the pci subsystem.
+This utility currently only supports the
+.Xr pci 4
+and
+.Xr usb 4
+subsystems.
diff --git a/usr.sbin/fwget/fwget.sh b/usr.sbin/fwget/fwget.sh
index 138a2a26bfb1..de1e6fa51f0f 100755
--- a/usr.sbin/fwget/fwget.sh
+++ b/usr.sbin/fwget/fwget.sh
@@ -35,7 +35,7 @@ usage()
 Usage: $(basename "$0") [options] [subsystem]
 
 Supported subsystems
-  pci
+  pci, usb
 
 Options:
   -n           -- Do not install packages, only print the results
@@ -100,9 +100,9 @@ done
 shift $(($OPTIND - 1))
 subsystems="$@"
 
-# Default searching PCI subsystem
+# Default searching PCI and USB subsystem
 if [ -z "${subsystems}" ]; then
-       subsystems="pci"
+       subsystems="pci usb"
 fi
 
 # Fail early on unsupported subsystem
diff --git a/usr.sbin/fwget/usb/Makefile b/usr.sbin/fwget/usb/Makefile
new file mode 100644
index 000000000000..315e9c743cc8
--- /dev/null
+++ b/usr.sbin/fwget/usb/Makefile
@@ -0,0 +1,10 @@
+PACKAGE=       fwget
+
+SCRIPTS=usb \
+       usb_ralink
+
+BINDIR= ${LIBEXECDIR}/fwget
+
+MAN=
+
+.include <bsd.prog.mk>
diff --git a/usr.sbin/fwget/usb/usb b/usr.sbin/fwget/usb/usb
new file mode 100755
index 000000000000..fef6bc76ba89
--- /dev/null
+++ b/usr.sbin/fwget/usb/usb
@@ -0,0 +1,43 @@
+#
+#  Copyright 2023 Beckhoff Automation GmbH & Co. KG
+#  Copyright 2023 Bjoern A. Zeeb
+#  Copyright 2025 Jesper Schmitz Mouridsen
+
+#  SPDX-License-Identifier: BSD-2-Clause
+
+
+usb_get_vendor()
+{
+       local hexvendor=$(echo $1 | sed 's/.*idVendor=\(0x[0-9a-z]*\).*/\1/')
+       case "${hexvendor}" in
+               0x148f) echo "ralink" ;;
+       esac
+}
+
+usb_get_device()
+{
+       local hexdevice=$(echo $1 | sed 's/.*idProduct=\(0x[0-9a-z]*\).*/\1/')
+       echo "${hexdevice}"
+
+}
+
+usb_search_packages()
+{
+       local IFS
+
+       oldifs=$IFS
+       IFS=$'\n'
+       for fulldevice in $(usbconfig -l dump_device_desc); do
+               vendor=$(usb_get_vendor "${fulldevice}")
+               if [ -z "${vendor}" ]; then
+                       continue
+               fi
+               device=$(usb_get_device "${fulldevice}")
+               log_verbose "Trying to match device ${device} and vendor 
${vendor} with usb_${vendor}"
+               if [ -f  ${LIBEXEC_PATH}/usb_${vendor} ]; then
+                       . ${LIBEXEC_PATH}/usb_${vendor}
+                       usb_${vendor} ${device}
+               fi
+       done
+       IFS=${oldifs}
+}
diff --git a/usr.sbin/fwget/usb/usb_ralink b/usr.sbin/fwget/usb/usb_ralink
new file mode 100755
index 000000000000..8d3135063011
--- /dev/null
+++ b/usr.sbin/fwget/usb/usb_ralink
@@ -0,0 +1,12 @@
+#
+# Copyright (c) 2025 Jesper Schmitz Mouridsen
+#
+# SPDX-License-Identifier: BSD-2-Clause
+
+usb_ralink()
+{
+
+       case "$1" in
+       0x7601) addpkg "wifi-firmware-mt7601u-kmod"; return 1 ;;
+       esac
+}

Reply via email to