Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package usbutils for openSUSE:Factory checked in at 2025-11-21 16:54:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/usbutils (Old) and /work/SRC/openSUSE:Factory/.usbutils.new.2061 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "usbutils" Fri Nov 21 16:54:10 2025 rev:50 rq:1318726 version:019 Changes: -------- --- /work/SRC/openSUSE:Factory/usbutils/usbutils.changes 2024-10-25 19:19:06.733298601 +0200 +++ /work/SRC/openSUSE:Factory/.usbutils.new.2061/usbutils.changes 2025-11-21 16:54:36.005105691 +0100 @@ -1,0 +2,28 @@ +Tue Nov 18 14:45:59 UTC 2025 - Martin Hauke <[email protected]> + +- Update to version 019: + * usbreset.1: fix typo in the busnum/devicenum example. + * usbreset: fix swapped vendor and product ID in help/manpage. + * usbreset.1: fix groff warnings and small fixes. + * Remove commented out code in usbreset.c and list.h and + container_of.h . + * lsusb: turn a FIXME comment for dump_comm_descriptor() into + something real. + * lsusb: remove FIXME about wireless usb device. + * lsusb: change FIXME for bmEthernetStatistics into a TODO. + * lsusb.c: change TODO into a fixme in do_dualspeed() . + * usbreset: move the serial number forward in the output. + * usb-devices: fix up bash warning for $altset + (fixes boo#1253475). + * usb-devices: fix up some minor shellcheck warning messages. + * usb-spec: remove vendor specific entry. + * usbreset: support resetting device by serial number. + * lsusb: Show wBytesPerInterval field of the SS EP companion + descriptor. + * usb-devices: Make devcount 'local' to handle recursion. + * usb-devices: Make devnum 'local' to handle recursion. + * lsusb-t: add verblevel 3 to print_usbdevice() . + * lsusb: improve usb2 device capability descriptor. + * Fix display of HID descriptors. + +------------------------------------------------------------------- Old: ---- v018.tar.gz New: ---- v019.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ usbutils.spec ++++++ --- /var/tmp/diff_new_pack.S93fOD/_old 2025-11-21 16:54:36.769137887 +0100 +++ /var/tmp/diff_new_pack.S93fOD/_new 2025-11-21 16:54:36.773138056 +0100 @@ -1,7 +1,7 @@ # # spec file for package usbutils # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2025 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: usbutils -Version: 018 +Version: 019 Release: 0 Summary: Tools and libraries for USB devices License: GPL-2.0-or-later @@ -32,6 +32,7 @@ BuildRequires: python-rpm-macros BuildRequires: pkgconfig(libudev) >= 196 Requires: hwdata +Obsoletes: usbutils-devel < %{version} %description This package contains a utility for inspecting devices connected to USB ++++++ v018.tar.gz -> v019.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/.github/actions/setup-debian/action.yml new/usbutils-019/.github/actions/setup-debian/action.yml --- old/usbutils-018/.github/actions/setup-debian/action.yml 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/.github/actions/setup-debian/action.yml 2025-10-22 14:00:57.000000000 +0200 @@ -11,6 +11,8 @@ - name: Install dependencies shell: bash run: | + export DEBIAN_FRONTEND=noninteractive + export TZ=Etc/UTC dpkg --add-architecture i386 apt-get update apt-get install --yes \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/.github/actions/setup-ubuntu/action.yml new/usbutils-019/.github/actions/setup-ubuntu/action.yml --- old/usbutils-018/.github/actions/setup-ubuntu/action.yml 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/.github/actions/setup-ubuntu/action.yml 2025-10-22 14:00:57.000000000 +0200 @@ -11,6 +11,8 @@ - name: Install dependencies shell: bash run: | + export DEBIAN_FRONTEND=noninteractive + export TZ=Etc/UTC dpkg --add-architecture i386 apt-get update apt-get install --yes \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/.github/workflows/clang-format.yml new/usbutils-019/.github/workflows/clang-format.yml --- old/usbutils-018/.github/workflows/clang-format.yml 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/.github/workflows/clang-format.yml 2025-10-22 14:00:57.000000000 +0200 @@ -15,8 +15,8 @@ stylecheck: runs-on: ubuntu-latest steps: - - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - run: git fetch --depth=1 origin ${{ github.event.pull_request.base.sha }} - - uses: yshui/git-clang-format-lint@a65b466f5903524aef27552f63c3906c0f73f184 # v1.16 + - uses: yshui/git-clang-format-lint@27f3890c6655216edadcc2759110b9c127c74786 # v1.17 with: base: ${{ github.event.pull_request.base.sha }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/.github/workflows/codeql.yml new/usbutils-019/.github/workflows/codeql.yml --- old/usbutils-018/.github/workflows/codeql.yml 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/.github/workflows/codeql.yml 2025-10-22 14:00:57.000000000 +0200 @@ -35,7 +35,7 @@ steps: - name: Sparse checkout the local actions - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: sparse-checkout: .github @@ -43,7 +43,7 @@ if: ${{ startsWith(matrix.container, 'ubuntu') }} - name: Checkout the whole project - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Set the environment run: | @@ -52,18 +52,33 @@ git config --global --add safe.directory '*' - name: Initialize CodeQL - uses: github/codeql-action/init@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 + uses: github/codeql-action/init@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 with: languages: cpp queries: +security-and-quality - name: Build run: | - mkdir build && cd build - meson setup --native-file ../build-dev.ini . .. - meson compile + meson setup --native-file build-dev.ini build + meson compile -C build - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10 + uses: github/codeql-action/analyze@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 with: category: "/language:cpp" + upload: false + output: sarif-results + + - name: Filter out meson-internal test files + uses: advanced-security/filter-sarif@f3b8118a9349d88f7b1c0c488476411145b6270d # v1.0.1 + with: + patterns: | + -build/meson-private/**/testfile.c + input: sarif-results/cpp.sarif + output: sarif-results/cpp.sarif + + - name: Upload CodeQL results to code scanning + uses: github/codeql-action/upload-sarif@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 + with: + sarif_file: sarif-results/cpp.sarif + category: "/language:cpp" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/.github/workflows/codespell.yml new/usbutils-019/.github/workflows/codespell.yml --- old/usbutils-018/.github/workflows/codespell.yml 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/.github/workflows/codespell.yml 2025-10-22 14:00:57.000000000 +0200 @@ -17,7 +17,7 @@ spellcheck: runs-on: ubuntu-latest steps: - - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: codespell-project/actions-codespell@406322ec52dd7b488e48c1c4b82e2a8b3a1bf630 # v2.1 with: ignore_words_file: .codespellignore diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/.github/workflows/main.yml new/usbutils-019/.github/workflows/main.yml --- old/usbutils-018/.github/workflows/main.yml 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/.github/workflows/main.yml 2025-10-22 14:00:57.000000000 +0200 @@ -44,7 +44,7 @@ steps: - name: Sparse checkout the local actions - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: sparse-checkout: .github @@ -60,7 +60,7 @@ if: ${{ startsWith(matrix.container, 'ubuntu') }} - name: Checkout the whole project - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Set the environment run: | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/.github/workflows/reuse.yml new/usbutils-019/.github/workflows/reuse.yml --- old/usbutils-018/.github/workflows/reuse.yml 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/.github/workflows/reuse.yml 2025-10-22 14:00:57.000000000 +0200 @@ -20,10 +20,10 @@ runs-on: ubuntu-latest steps: - name: Checkout the project - uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Setup Python - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 + uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0 with: python-version: '3.10' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/NEWS new/usbutils-019/NEWS --- old/usbutils-018/NEWS 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/NEWS 2025-10-22 14:00:57.000000000 +0200 @@ -1,12 +1,78 @@ # usbutils old-style "NEWS" file # SPDX-License-Identifier: GPL-2.0-only # -# Copyright (c) 2018-2024 Greg Kroah-Hartman <[email protected]> +# Copyright (c) 2018-2025 Greg Kroah-Hartman <[email protected]> # # This file is here for people who do not have access to the git commit # history (i.e. packaged versions of the software). # +usbutils 019 +============ + +Alban Browaeys (1): + usbreset.1: fix typo in the busnum/devicenum example + +Aurelien Jarno (2): + lsusb.py: add usb.ids path for Debian + usbreset: fix swapped vendor and product ID in help/manpage + +Bjarni Ingi Gislason (1): + usbreset.1: fix groff warnings and small fixes + +Emil Velikov (1): + ci: stop manually creating build/ + +Enrico Joerns (1): + ci/codeql: use filter-sarif to filter meson-private + +Greg Kroah-Hartman (8): + Remove commented out code in usbreset.c and list.h and container_of.h + lsusb: turn a FIXME comment for dump_comm_descriptor() into something real + lsusb: remove FIXME about wireless usb device + lsusb: change FIXME for bmEthernetStatistics into a TODO + lsusb.c: change TODO into a fixme in do_dualspeed() + usbreset: move the serial number forward in the output + usb-devices: fix up bash warning for $altset + usb-devices: fix up some minor shellcheck warning messages + +Guillaume G. (1): + usb-spec: remove vendor specific entry + +Jörg Hofrichter (2): + usbreset: apply clang-format + usbreset: support resetting device by serial number + +Lucas De Marchi (1): + ci: Fix debian/ubuntu installation + +Michal Pecio (1): + lsusb: Show wBytesPerInterval field of the SS EP companion descriptor + +Sahil Siddiq (2): + usb-devices: Make devcount 'local' to handle recursion + usb-devices: Make devnum 'local' to handle recursion + +Stefan Becker (1): + lsusb-t: add verblevel 3 to print_usbdevice() + +Torleiv Sundre (1): + lsusb: improve usb2 device capability descriptor + +Waffle Lapkin (1): + Fix display of HID descriptors + +dependabot[bot] (9): + ci: bump the all-actions group with 4 updates + ci: bump github/codeql-action in the all-actions group + ci: bump github/codeql-action in the all-actions group + ci: bump the all-actions group with 2 updates + ci: bump github/codeql-action in the all-actions group + ci: bump the all-actions group with 2 updates + ci: bump the all-actions group with 2 updates + ci: bump github/codeql-action in the all-actions group + ci: bump the all-actions group across 1 directory with 3 updates + usbutils 018 ============ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/ccan/container_of/container_of.h new/usbutils-019/ccan/container_of/container_of.h --- old/usbutils-018/ccan/container_of/container_of.h 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/ccan/container_of/container_of.h 2025-10-22 14:00:57.000000000 +0200 @@ -6,7 +6,6 @@ #include <stddef.h> #include "../config.h" -//#include <ccan/check_type/check_type.h> #include "../check_type/check_type.h" /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/ccan/list/list.h new/usbutils-019/ccan/list/list.h --- old/usbutils-018/ccan/list/list.h 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/ccan/list/list.h 2025-10-22 14:00:57.000000000 +0200 @@ -1,14 +1,13 @@ // SPDX-License-Identifier: MIT // SPDX-FileCopyrightText: Rusty Russell <[email protected]> /* Licensed under BSD-MIT - see LICENSE file for details */ + +/* define CCAN_LIST_DEBUG to be 1 if you want to have some debugging in here */ + #ifndef CCAN_LIST_H #define CCAN_LIST_H -//#define CCAN_LIST_DEBUG 1 #include <stdbool.h> #include <assert.h> -//#include <ccan/str/str.h> -//#include <ccan/container_of/container_of.h> -//#include <ccan/check_type/check_type.h> #include "../str/str.h" #include "../container_of/container_of.h" #include "../check_type/check_type.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/lsusb-t.c new/usbutils-019/lsusb-t.c --- old/usbutils-018/lsusb-t.c 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/lsusb-t.c 2025-10-22 14:00:57.000000000 +0200 @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* Copyright (c) 2009 Greg Kroah-Hartman <[email protected]> */ +#include <stdbool.h> #include <stdint.h> #include <sys/stat.h> #include <fcntl.h> @@ -201,6 +202,21 @@ printf(" %*s", indent, " "); printf("%s/%s /dev/bus/usb/%03d/%03d\n", sys_bus_usb_devices, d->name, d->busnum, d->devnum); } + if (verblevel >= 3) { + bool hasManufacturer = strlen(d->manufacturer) > 0; + bool hasProduct = strlen(d->product) > 0; + bool hasSerial = strlen(d->serial) > 0; + if (hasManufacturer || hasProduct || hasSerial) { + printf(" %*s", indent, " "); + if (hasManufacturer) + printf("Manufacturer=%s ", d->manufacturer); + if (hasProduct) + printf("Product=%s ", d->product); + if (hasSerial) + printf("Serial=%s", d->serial); + printf("\n"); + } + } } static unsigned int read_sysfs_file_int(const char *d_name, const char *file, int base) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/lsusb.c new/usbutils-019/lsusb.c --- old/usbutils-018/lsusb.c 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/lsusb.c 2025-10-22 14:00:57.000000000 +0200 @@ -809,6 +809,10 @@ (buf[3] & 0x3)) printf(" Mult %20u\n", buf[3] & 0x3); + if ((endpoint->bmAttributes & 3) == 1 || + (endpoint->bmAttributes & 3) == 3) + printf(" wBytesPerInterval %7u\n", + buf[4] | buf[5] << 8); break; default: /* often a misplaced class descriptor */ @@ -2736,7 +2740,41 @@ indent, indent, buf[3], (buf[3] && *str) ? str : "(?\?)", indent, tmp); - /* FIXME dissect ALL 28 bits */ + /* TODO + * Translate all 28 bits of bmEthernetStatistics into something "real" Here's the bitfields if someone + * wants to do this in the future. As specified in the USB CDC ECM Subclass document, version 1.2, + * table 4: + * D00 XMIT_OK Frames transmitted without errors + * D01 RVC_OK Frames received without errors + * D02 XMIT_ERROR Frames not transmitted, or transmitted with errors + * D03 RCV_ERROR Frames received with errors that are not delivered to the USB host. + * D04 RCV_NO_BUFFER Frame missed, no buffers + * D05 DIRECTED_BYTES_XMIT Directed bytes transmitted without errors + * D06 DIRECTED_FRAMES_XMIT Directed frames transmitted without errors + * D07 MULTICAST_BYTES_XMIT Multicast bytes transmitted without errors + * D08 MULTICAST_FRAMES_XMIT Multicast frames transmitted without errors + * D09 BROADCAST_BYTES_XMIT Broadcast bytes transmitted without errors + * D10 BROADCAST_FRAMES_XMIT Broadcast frames transmitted without errors + * D11 DIRECTED_BYTES_RCV Directed bytes received without errors + * D12 DIRECTED_FRAMES_RCV Directed frames received without errors + * D13 MULTICAST_BYTES_RCV Multicast bytes received without errors + * D14 MULTICAST_FRAMES_RCV Multicast frames received without errors + * D15 BROADCAST_BYTES_RCV Broadcast bytes received without errors + * D16 BROADCAST_FRAMES_RCV Broadcast frames received without errors + * D17 RCV_CRC_ERROR Frames received with circular redundancy check (CRC) or frame check sequence (FCS) error + * D18 TRANSMIT_QUEUE_LENGTH Length of transmit queue + * D19 RCV_ERROR_ALIGNMENT Frames received with alignment error + * D20 XMIT_ONE_COLLISION Frames transmitted with one collision + * D21 XMIT_MORE_COLLISIONS Frames transmitted with more than one collision + * D22 XMIT_DEFERRED Frames transmitted after deferral + * D23 XMIT_MAX_COLLISIONS Frames not transmitted due to collisions + * D24 RCV_OVERRUN Frames not received due to overrun + * D25 XMIT_UNDERRUN Frames not transmitted due to underrun + * D26 XMIT_HEARTBEAT_FAILURE Frames transmitted with heartbeat failure + * D27 XMIT_TIMES_CRS_LOST Times carrier sense signal lost during transmission + * D28 XMIT_LATE_COLLISIONS Late collisions detected + * D29-D31 Reserved Must be set to 0 + */ printf("%s wMaxSegmentSize %10d\n" "%s wNumberMCFilters 0x%04x\n" "%s bNumberPowerFilters %10d\n", @@ -2877,7 +2915,11 @@ indent, buf[6] | (buf[7] << 8)); break; default: - /* FIXME there are about a dozen more descriptor types */ + /* + * There are about a dozen more descriptor types, if anyone has + * a device with them in it, we'll add them here in the future + * if * really needed. + */ printf("%sUNRECOGNIZED CDC: ", indent); dump_bytes(buf, buf[0]); return; @@ -3070,7 +3112,7 @@ buf[6], proto, buf[7], buf[8]); - /* FIXME also show the OTHER_SPEED_CONFIG descriptors */ + /* TODO also show the OTHER_SPEED_CONFIG descriptors */ } static void do_debug(libusb_device_handle *fd) @@ -3217,7 +3259,10 @@ static void dump_usb2_device_capability_desc(unsigned char *buf, bool lpm_required) { + static const uint16_t besl_us[16] = { 125, 150, 200, 300, 400, 500, 1000, 2000, + 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000 }; unsigned int wide; + unsigned int besl; wide = buf[3] + (buf[4] << 8) + (buf[5] << 16) + (buf[6] << 24); @@ -3232,16 +3277,17 @@ else if (!lpm_required && !(wide & 0x02)) printf(" Link Power Management (LPM) not supported\n"); else if (!(wide & 0x04)) - printf(" HIRD Link Power Management (LPM)" - " Supported\n"); + printf(" HIRD Link Power Management (LPM) Supported\n"); else { - printf(" BESL Link Power Management (LPM)" - " Supported\n"); - if (wide & 0x08) - printf(" BESL value %5u us \n", wide & 0xf00); - if (wide & 0x10) - printf(" Deep BESL value %5u us \n", - wide & 0xf000); + printf(" BESL Link Power Management (LPM) Supported\n"); + if (wide & 0x08) { + besl = (wide & 0xf00) >> 8; + printf(" Baseline BESL value %5hu us \n", besl_us[besl]); + } + if (wide & 0x10) { + besl = (wide & 0xf000) >> 12; + printf(" Deep BESL value %5hu us \n", besl_us[besl]); + } } } @@ -3592,7 +3638,7 @@ } switch (buf[2]) { case USB_DC_WIRELESS_USB: - /* FIXME */ + /* It's dead! Luckily no one has these devices so we can ignore it. */ break; case USB_DC_20_EXTENSION: dump_usb2_device_capability_desc(buf, lpm_required); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/lsusb.py new/usbutils-019/lsusb.py --- old/usbutils-018/lsusb.py 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/lsusb.py 2025-10-22 14:00:57.000000000 +0200 @@ -28,6 +28,7 @@ prefix = "/sys/bus/usb/devices/" usbids = [ "/usr/share/hwdata/usb.ids", + "/usr/share/misc/usb.ids", "/usr/share/usb.ids", ] cols = ("", "", "", "", "", "") @@ -64,7 +65,7 @@ return type('MyEnum', (), enums) def parse_usb_ids(): - "Parse /usr/share/{hwdata/,}usb.ids and fill usbvendors, usbproducts, usbclasses" + "Parse /usr/share/{hwdata/,misc/}usb.ids and fill usbvendors, usbproducts, usbclasses" vid = 0 did = 0 modes = myenum('Vendor', 'Class', 'Misc') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/man/usbreset.1 new/usbutils-019/man/usbreset.1 --- old/usbutils-018/man/usbreset.1 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/man/usbreset.1 2025-10-22 14:00:57.000000000 +0200 @@ -1,6 +1,6 @@ .\" SPDX-License-Identifier: GPL-2.0-only .\" Copyright (c) 2023 Aurelien Jarno <[email protected]> -.TH usbreset 1 "04 January 2024" "usbutils" "Linux USB Utilities" +.TH usbreset 1 "04 January 2024" usbutils "Linux USB Utilities" .IX usbreset .SH NAME usbreset \- send a USB port reset to a USB device @@ -12,23 +12,27 @@ .SH DESCRIPTION .B usbreset -is a utility that performs resets on USB devices. It is particularly useful +is a utility that performs resets on USB devices. +It is particularly useful for situations where a USB device is unresponsive or exhibits erratic behavior. The USB \fIdevice\fP to be reset can be specified in one of three formats: .TP -.BR PPPP:VVVV -Reset by product and vendor IDs +.B VVVV:PPPP +Reset by vendor and product IDs .TP -.BR BBB/DDD +.B BBB/DDD Reset by bus and device number .TP -.BR "Product" +.B SN:SERIAL +Reset by serial number +.TP +.B Product Reset by product name .PP When run without any arguments, .B usbreset provides usage information and a list of connected USB devices, including their -product and vendor IDs, bus and device numbers, and product names. +vendor and product IDs, bus and device numbers, and product names. .SH RETURN VALUE If the specified device is not found, a non-zero exit code is returned. @@ -40,7 +44,11 @@ .TP Reset device 002 on bus 001: -.B usbreset 001:002 +.B usbreset 001/002 + +.TP +Reset device with serial number ABCDEF0 +.B usbreset SN:ABCDEF0 .TP Reset device named USB2.0 Hub: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/meson.build new/usbutils-019/meson.build --- old/usbutils-018/meson.build 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/meson.build 2025-10-22 14:00:57.000000000 +0200 @@ -4,7 +4,7 @@ project( 'usbutils', 'c', - version: '018', + version: '019', license: ['GPL-2.0-only', 'GPL-2.0-or-later','GPL-2.0-or-later'], meson_version : '>=0.60.0', default_options : ['c_std=gnu99', 'warning_level=2', 'prefix=/usr'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/names.c new/usbutils-019/names.c --- old/usbutils-018/names.c 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/names.c 2025-10-22 14:00:57.000000000 +0200 @@ -35,11 +35,9 @@ static const char *names_genericstrtable(const struct genericstrtable *t, unsigned int idx) { - const struct genericstrtable *h; - - for (h = t; t->name; t++) - if (h->num == idx) - return h->name; + for (; t->name; t++) + if (t->num == idx) + return t->name; return NULL; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/usb-devices new/usbutils-019/usb-devices --- old/usbutils-018/usb-devices 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/usb-devices 2025-10-22 14:00:57.000000000 +0200 @@ -100,8 +100,8 @@ driver="(none)" fi classname=$(class_decode "$class") - printf "I: If#=%2i Alt=%2i #EPs=%2i Cls=%s(%s) Sub=%s Prot=%s Driver=%s\n" \ - "0x${ifnum#0}" "${altset#0}" "0x${numeps#0}" "$class" "$classname" "$subclass" \ + printf "I: If#=%2i Alt=%2s #EPs=%2i Cls=%s(%s) Sub=%s Prot=%s Driver=%s\n" \ + "0x${ifnum#0}" "${altset}" "0x${numeps#0}" "$class" "$classname" "$subclass" \ "$protocol" "$driver" for endpoint in "$ifpath"/ep_?? @@ -113,10 +113,11 @@ } print_device() { - local devpath=$1 - local parent=$2 - local level=$3 - local count=$4 + local devpath="$1" + local parent="$2" + local level="$3" + local count="$4" + local devnum [ -d "$devpath" ] || return cd "$devpath" || return @@ -173,7 +174,7 @@ print_interface "$devpath/$interface" done - devcount=0 + local devcount=0 for subdev in "$busnum"-* do echo "$subdev" | grep -Eq "^$busnum-[0-9]+(\.[0-9]+)*$" \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/usb-spec.h new/usbutils-019/usb-spec.h --- old/usbutils-018/usb-spec.h 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/usb-spec.h 2025-10-22 14:00:57.000000000 +0200 @@ -170,7 +170,6 @@ { 0x90, "Camera Control Page" }, { 0x91, "Arcade Control Page" }, { 0xf0, "Cash Device" }, - { 0xff, "Vendor Specific" }, { 0x00, NULL }, }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/usbreset.c new/usbutils-019/usbreset.c --- old/usbutils-018/usbreset.c 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/usbreset.c 2025-10-22 14:00:57.000000000 +0200 @@ -18,9 +18,6 @@ #include <linux/usbdevice_fs.h> - -/* static char *usbfs = NULL; */ - struct usbentry { int bus_num; int dev_num; @@ -28,6 +25,7 @@ int product_id; char vendor_name[128]; char product_name[128]; + char serial[128]; }; static char *sysfs_attr(const char *dev, const char *attr) @@ -92,6 +90,10 @@ if (attr) strncpy(dev.product_name, attr, sizeof(dev.product_name) - 1); + attr = sysfs_attr(e->d_name, "serial"); + if (attr) + strncpy(dev.serial, attr, sizeof(dev.serial) - 1); + if (dev.bus_num && dev.dev_num && dev.vendor_id >= 0 && dev.product_id >= 0) return &dev; @@ -102,21 +104,37 @@ { DIR *devs = opendir("/sys/bus/usb/devices"); struct usbentry *dev; + int max_serial_length = 0; if (!devs) return; - while ((dev = parse_devlist(devs)) != NULL) - printf(" Number %03d/%03d ID %04x:%04x %s\n", - dev->bus_num, dev->dev_num, - dev->vendor_id, dev->product_id, - dev->product_name); + /* Calculate the largest size of the serial numbers if present */ + while ((dev = parse_devlist(devs)) != NULL) { + int serial_length = strlen(dev->serial); + if (serial_length > max_serial_length) + max_serial_length = serial_length; + } + closedir(devs); + + devs = opendir("/sys/bus/usb/devices"); + if (!devs) + return; + + while ((dev = parse_devlist(devs)) != NULL) { + printf(" Number %03d/%03d ID %04x:%04x ", dev->bus_num, dev->dev_num, dev->vendor_id, + dev->product_id); + if (strlen(dev->serial) > 0) + printf("SN:%-*s", max_serial_length, dev->serial); + else + printf(" %*s", max_serial_length, ""); + printf(" %s\n", dev->product_name); + } closedir(devs); } -static struct usbentry *find_device(int *bus, int *dev, int *vid, int *pid, - const char *product) +static struct usbentry *find_device(int *bus, int *dev, int *vid, int *pid, const char *serial, const char *product) { DIR *devs = opendir("/sys/bus/usb/devices"); @@ -127,8 +145,8 @@ while ((e = parse_devlist(devs)) != NULL) if ((bus && (e->bus_num == *bus) && (e->dev_num == *dev)) || - (vid && (e->vendor_id == *vid) && (e->product_id == *pid)) || - (product && !strcasecmp(e->product_name, product))) { + (vid && (e->vendor_id == *vid) && (e->product_id == *pid)) || + (serial && !strcasecmp(e->serial, serial)) || (product && !strcasecmp(e->product_name, product))) { match = e; break; } @@ -143,13 +161,12 @@ int fd; char path[PATH_MAX]; - snprintf(path, sizeof(path) - 1, "/dev/bus/usb/%03d/%03d", - dev->bus_num, dev->dev_num); + snprintf(path, sizeof(path) - 1, "/dev/bus/usb/%03d/%03d", dev->bus_num, dev->dev_num); printf("Resetting %s ... ", dev->product_name); fd = open(path, O_WRONLY); - if (fd > -1) { + if (fd > -1) { if (ioctl(fd, USBDEVFS_RESET, 0) < 0) printf("failed [%s]\n", strerror(errno)); else @@ -161,22 +178,24 @@ } } - int main(int argc, char **argv) { int id1, id2; struct usbentry *dev; if ((argc == 2) && (sscanf(argv[1], "%3d/%3d", &id1, &id2) == 2)) - dev = find_device(&id1, &id2, NULL, NULL, NULL); + dev = find_device(&id1, &id2, NULL, NULL, NULL, NULL); else if ((argc == 2) && (sscanf(argv[1], "%4x:%4x", &id1, &id2) == 2)) - dev = find_device(NULL, NULL, &id1, &id2, NULL); + dev = find_device(NULL, NULL, &id1, &id2, NULL, NULL); + else if ((argc == 2) && (strncmp(argv[1], "SN:", 3) == 0)) + dev = find_device(NULL, NULL, NULL, NULL, &(argv[1])[3], NULL); else if ((argc == 2) && strlen(argv[1]) < 128) - dev = find_device(NULL, NULL, NULL, NULL, argv[1]); + dev = find_device(NULL, NULL, NULL, NULL, NULL, argv[1]); else { printf("Usage:\n" - " usbreset PPPP:VVVV - reset by product and vendor id\n" + " usbreset VVVV:PPPP - reset by vendor and product id\n" " usbreset BBB/DDD - reset by bus and device number\n" + " usbreset SN:SERIAL - reset by serial number\n" " usbreset \"Product\" - reset by product name\n\n" "Devices:\n"); list_devices(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbutils-018/usbutils.spdx new/usbutils-019/usbutils.spdx --- old/usbutils-018/usbutils.spdx 2024-10-22 11:33:33.000000000 +0200 +++ new/usbutils-019/usbutils.spdx 2025-10-22 14:00:57.000000000 +0200 @@ -2,29 +2,29 @@ DataLicense: CC0-1.0 SPDXID: SPDXRef-DOCUMENT DocumentName: usbutils -DocumentNamespace: http://spdx.org/spdxdocs/spdx-v2.1-27f6aa30-7432-4e93-9eb4-0b42decd5fbd +DocumentNamespace: http://spdx.org/spdxdocs/spdx-v2.1-265b69a0-f76d-4dda-b172-7b15dbf97f97 Creator: Person: Greg Kroah-Hartman <[email protected]> () Creator: Organization: The Linux Foundation () -Creator: Tool: reuse-4.0.3 -Created: 2024-10-22T09:33:13Z +Creator: Tool: reuse-6.1.2 +Created: 2025-10-22T11:57:41Z CreatorComment: <text>This document was created automatically using available reuse information consistent with REUSE.</text> Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-68c02f636b8e3879dac8154f74e11a07 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-55ac808bfba4c56ce907af138af72acf Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-0eacc2ae7d0f5c3449ec0adf0eb43bf0 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-a3fe8c439a8920ee4f2b8078b85ad468 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7a3bd08eba1bc24dee78f41529fb76d7 -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9d50e0b0e40bb0140e9f6d7914c16053 +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-421ef750cbd607aeb62b8dab638454b4 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-dbefb4a51cbf16bc58c282be75359b68 -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-7adfca84953238f811ff00949e265bea +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f38228d528a8d5a2e1f3a7e14e3ef982 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-d55ab2ed4d5fdfcf0040347a879b8f2d Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-21a212edf35f19ec3cfeb707641e5d71 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-5503f4e216fc559b19e397a7433010ca Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-48837738997a8f7c8e44df92148bb30c -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-756378318565393ff48f1292b85cdded -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9d1d2cd39aaefd926b25e9a96f462e43 -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-a0dca448bcc96880587f0e9ddb53cb14 -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-d6a26648562bd7a9782acf0ec87b8d02 -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-ddd0854171f331d4da3d8e3e1824aa29 +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3d0f9a651bc0ef4392e82f9cd1dc57ac +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1b01a9527b090987aa109db644e7b9e6 +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3c266a02447dff11e03fc0654ea06186 +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-5a9e56b29cdc1e867b8950983068064d +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9db087fb171bcb3d26160a4e4829fd9d Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-60c5f0772761312cad5b32c0fc824a3d Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-a9bd5f415bcf395d45744e20a813a05a Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-0d55599d39c57a6ef592993f38cb38ee @@ -32,8 +32,8 @@ Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-75b5d80d5b8e458a555bf9942bf7ed10 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-1d1ad6cdb4de72eeca72d3ad9a3c627e Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-4ae5ef4ab1501abb4c1c47d66ce32921 -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-8f5454f574dbcff4dc1d582dc06483aa -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-000d620fc402bf53d9c734ebdeb7e3cd +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-a7b2b91a40c7ab0bbe53401d34033e3d +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f4fc4054b521c527a93f6569df101ee6 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-50536ae3a0aee6056d7fb92e3331aba9 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-830fc01dabc63645c1547b64e529769c Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-ab0aa24619778bb6942ad2513cfc49f9 @@ -41,22 +41,22 @@ Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-b7f35e140b6356cdb8e087dcd7b3aa0b Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-df32fd71045b9bb4a88d11b9d0f003c3 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c80241df39c14854b1c4e034b14ee82c -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-654676621076127b37582bdf9c7bc2c0 -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-6f00e1d4546ef3e6a02ec90c4f424a5e +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3227ce12616620c2a20e8a14d8af06a2 +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-2d91c927116a8bfd3e2da963c04fc6f2 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-03c4f6abffb242d6d0dccde1eff96a71 -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-0767786dd4e99840a57609fef1af97a5 +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-e9c31aa5353a2602a155942b009cd979 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-f8de93054989a2fd41f3c2efbfb096a9 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-c5e911e3fb38d1362fb16df2a2fefd9e Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-6bf84d40f00b2566aa73a36acd80b594 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-eae4055469224764325d52cc96cbab3b -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-e38f878d92a1acfc7f028a82fccf83a7 -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-55ab2a28154ae54d03e8851633212eab -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-39cda2fc214ee9684ac11abbef3cc612 +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-e8f43573a1e1c0ff6f4673c44c1c2bc1 +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3e2dd900eedfeb6de38e4ef6631df142 +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-360b67a9ce3308fc7852156090c1e75d Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-e86a1beac9018216b303111be6b03e4e Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-69bd878b1773bc5d2cecfdede4b81d57 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-049709f1770711ea4558413c0af49689 -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-2d19fe5fb8b4f7ab28eb8a45aeeee263 -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-9929adf54a5cafd69cf282f0e62272ef +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-944b584000dd1ce8d6a5003bcd877998 +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-34e66fb749b54331c2b384e291b433ed Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-5caab38b28b28a1e757052f304adfd8d Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-a4ab912da758ea90ac0483b463d76f54 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-3fcb43cc533d0519e5a1ecdc4afe58ac @@ -71,7 +71,7 @@ Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-bb1c9a232ce0b433ce3c314df4329477 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-04eadb4435b47c57bfa272f81be4f815 Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-e99e2d061caabfd49e2c6a1967bed2c5 -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-be9d24b98784bd29b232c30b9eb2e68a +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-43361a8abfac03fa76abeb3eac609890 FileName: ./.clang-format SPDXID: SPDXRef-68c02f636b8e3879dac8154f74e11a07 @@ -111,8 +111,8 @@ SPDX-FileCopyrightText: 2024 Lucas De Marchi <[email protected]></text> FileName: ./.github/actions/setup-debian/action.yml -SPDXID: SPDXRef-9d50e0b0e40bb0140e9f6d7914c16053 -FileChecksum: SHA1: 14405bfd57dc72f634e66a15725fbe52241349df +SPDXID: SPDXRef-421ef750cbd607aeb62b8dab638454b4 +FileChecksum: SHA1: 6c0141996f10be924043f89b63a657a0a0813b4d LicenseConcluded: NOASSERTION LicenseInfoInFile: LGPL-2.1-or-later FileCopyrightText: <text>SPDX-FileCopyrightText: 2024 Emil Velikov <[email protected]> @@ -127,8 +127,8 @@ SPDX-FileCopyrightText: 2024 Lucas De Marchi <[email protected]></text> FileName: ./.github/actions/setup-ubuntu/action.yml -SPDXID: SPDXRef-7adfca84953238f811ff00949e265bea -FileChecksum: SHA1: b769d5976d574053adcae043da15a481acc9628b +SPDXID: SPDXRef-f38228d528a8d5a2e1f3a7e14e3ef982 +FileChecksum: SHA1: b39e7f7e85819fa264b4f2ed571c9eccf682a7f9 LicenseConcluded: NOASSERTION LicenseInfoInFile: LGPL-2.1-or-later FileCopyrightText: <text>SPDX-FileCopyrightText: 2024 Emil Velikov <[email protected]> @@ -163,38 +163,38 @@ FileCopyrightText: <text>SPDX-FileCopyrightText: 2024 Emil Velikov <[email protected]></text> FileName: ./.github/workflows/clang-format.yml -SPDXID: SPDXRef-756378318565393ff48f1292b85cdded -FileChecksum: SHA1: d14b6e001cdda2ca448b598ab74ededadf7d3572 +SPDXID: SPDXRef-3d0f9a651bc0ef4392e82f9cd1dc57ac +FileChecksum: SHA1: 40d9894f884639232e5e8585bb82c8a90f34d60a LicenseConcluded: NOASSERTION LicenseInfoInFile: LGPL-2.1-or-later FileCopyrightText: <text>SPDX-FileCopyrightText: 2024 Emil Velikov <[email protected]></text> FileName: ./.github/workflows/codeql.yml -SPDXID: SPDXRef-9d1d2cd39aaefd926b25e9a96f462e43 -FileChecksum: SHA1: bf0f5c9591b30874fb85df2ac04100be7afe0068 +SPDXID: SPDXRef-1b01a9527b090987aa109db644e7b9e6 +FileChecksum: SHA1: cfff478d8801e4b64cc123762ec42db4bc2e122b LicenseConcluded: NOASSERTION LicenseInfoInFile: LGPL-2.1-or-later FileCopyrightText: <text>SPDX-FileCopyrightText: 2024 Emil Velikov <[email protected]> SPDX-FileCopyrightText: 2024 Lucas De Marchi <[email protected]></text> FileName: ./.github/workflows/codespell.yml -SPDXID: SPDXRef-a0dca448bcc96880587f0e9ddb53cb14 -FileChecksum: SHA1: 2dd94bb33555815ed4360da53e966bf2e17584ed +SPDXID: SPDXRef-3c266a02447dff11e03fc0654ea06186 +FileChecksum: SHA1: 00615e21e06d7097ac118548ed77f51c6063c407 LicenseConcluded: NOASSERTION LicenseInfoInFile: LGPL-2.1-or-later FileCopyrightText: <text>SPDX-FileCopyrightText: 2024 Emil Velikov <[email protected]></text> FileName: ./.github/workflows/main.yml -SPDXID: SPDXRef-d6a26648562bd7a9782acf0ec87b8d02 -FileChecksum: SHA1: a02c21bdd3c8abce34e97b8e3ce0a82c148bd3e2 +SPDXID: SPDXRef-5a9e56b29cdc1e867b8950983068064d +FileChecksum: SHA1: b82aea4e495ac6b7787e99cccd30c4da389411ff LicenseConcluded: NOASSERTION LicenseInfoInFile: LGPL-2.1-or-later FileCopyrightText: <text>SPDX-FileCopyrightText: 2024 Emil Velikov <[email protected]> SPDX-FileCopyrightText: 2024 Lucas De Marchi <[email protected]></text> FileName: ./.github/workflows/reuse.yml -SPDXID: SPDXRef-ddd0854171f331d4da3d8e3e1824aa29 -FileChecksum: SHA1: 73b77f69acf2f80da1e811913fed7dc9594746df +SPDXID: SPDXRef-9db087fb171bcb3d26160a4e4829fd9d +FileChecksum: SHA1: 0928cf2cbba85ff5652b0a8d74036fedbc980c42 LicenseConcluded: NOASSERTION LicenseInfoInFile: LGPL-2.1-or-later FileCopyrightText: <text>SPDX-FileCopyrightText: 2024 Emil Velikov <[email protected]></text> @@ -204,30 +204,31 @@ FileChecksum: SHA1: 39951a5bdc5c52cac0e1849f5237b7f94300f5a7 LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-only -FileCopyrightText: <text>Copyright (c) 2009 Greg Kroah-Hartman <[email protected]> -Copyright (c) 2014-2021 Greg Kroah-Hartman <[email protected]></text> +FileCopyrightText: <text>Copyright (C) 2009 Greg Kroah-Hartman <[email protected]> +Copyright (C) 2014-2021 Greg Kroah-Hartman <[email protected]></text> FileName: ./NEWS SPDXID: SPDXRef-a9bd5f415bcf395d45744e20a813a05a FileChecksum: SHA1: 289991915e6c690eeabd34d8521b0f40554d77cb LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-only -FileCopyrightText: <text>Copyright (c) 2018-2024 Greg Kroah-Hartman <[email protected]></text> +FileCopyrightText: <text>Copyright (C) 2018-2024 Greg Kroah-Hartman <[email protected]> +Copyright strings</text> FileName: ./README.md SPDXID: SPDXRef-0d55599d39c57a6ef592993f38cb38ee FileChecksum: SHA1: 783f577dd8442485278bcd35e0956a6507a724e8 LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-or-later -FileCopyrightText: <text>Copyright (c) 2018 Greg Kroah-Hartman <[email protected]></text> +FileCopyrightText: <text>Copyright (C) 2018 Greg Kroah-Hartman <[email protected]></text> FileName: ./autogen.sh SPDXID: SPDXRef-a9cd23771d5dd91bb7547c2bf9b6d61d FileChecksum: SHA1: 9df97295b60b11b78521f829eab2ef489b8367e8 LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-only -FileCopyrightText: <text>Copyright (c) 2009,2010 Greg Kroah-Hartman <[email protected]> -Copyright (c) 2024 Greg Kroah-Hartman <[email protected]></text> +FileCopyrightText: <text>Copyright (C) 2009, 2010 Greg Kroah-Hartman <[email protected]> +Copyright (C) 2024 Greg Kroah-Hartman <[email protected]></text> FileName: ./build-dev.ini SPDXID: SPDXRef-75b5d80d5b8e458a555bf9942bf7ed10 @@ -251,15 +252,15 @@ FileCopyrightText: <text>SPDX-FileCopyrightText: Rusty Russell <[email protected]></text> FileName: ./ccan/container_of/container_of.h -SPDXID: SPDXRef-8f5454f574dbcff4dc1d582dc06483aa -FileChecksum: SHA1: f0a0a369d19ad6527d1b6486f73038fe69b71acd +SPDXID: SPDXRef-a7b2b91a40c7ab0bbe53401d34033e3d +FileChecksum: SHA1: 09d56f0491025cf3da60c2c52db198795d06932f LicenseConcluded: NOASSERTION LicenseInfoInFile: CC0-1.0 FileCopyrightText: <text>SPDX-FileCopyrightText: Rusty Russell <[email protected]></text> FileName: ./ccan/list/list.h -SPDXID: SPDXRef-000d620fc402bf53d9c734ebdeb7e3cd -FileChecksum: SHA1: b71b49cb975faa372e29ea64bdd75d207a15c2b6 +SPDXID: SPDXRef-f4fc4054b521c527a93f6569df101ee6 +FileChecksum: SHA1: b6e5a402b26d01c41faedf4d69d0194f68b73479 LicenseConcluded: NOASSERTION LicenseInfoInFile: MIT FileCopyrightText: <text>SPDX-FileCopyrightText: Rusty Russell <[email protected]></text> @@ -311,18 +312,18 @@ FileChecksum: SHA1: 535a91d55e4c0fa2453beab5923b7c051f151c62 LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-only -FileCopyrightText: <text>Copyright (c) 2024 Greg Kroah-Hartman <[email protected]></text> +FileCopyrightText: <text>Copyright (C) 2024 Greg Kroah-Hartman <[email protected]></text> FileName: ./lsusb-t.c -SPDXID: SPDXRef-654676621076127b37582bdf9c7bc2c0 -FileChecksum: SHA1: 596ee437ec8fe0126614ba5b1a996b455a7c956a +SPDXID: SPDXRef-3227ce12616620c2a20e8a14d8af06a2 +FileChecksum: SHA1: 4eab28b391e6c7803bd672bcfd84851543c1107e LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-only -FileCopyrightText: <text>Copyright (c) 2009 Greg Kroah-Hartman <[email protected]></text> +FileCopyrightText: <text>Copyright (C) 2009 Greg Kroah-Hartman <[email protected]></text> FileName: ./lsusb.c -SPDXID: SPDXRef-6f00e1d4546ef3e6a02ec90c4f424a5e -FileChecksum: SHA1: df94be365bbc1c0f915da702d9488d9fb3a8332c +SPDXID: SPDXRef-2d91c927116a8bfd3e2da963c04fc6f2 +FileChecksum: SHA1: ed966d97ad407568ab3e99f03fbfed3bb98783cb LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-or-later FileCopyrightText: <text>Copyright (C) 1999-2001, 2003 Thomas Sailer ([email protected]) @@ -336,37 +337,37 @@ FileCopyrightText: <text>Copyright 2011 (c) Greg Kroah-Hartman <[email protected]></text> FileName: ./lsusb.py -SPDXID: SPDXRef-0767786dd4e99840a57609fef1af97a5 -FileChecksum: SHA1: 155a3f8198ffc2a2e3dd0ba3b5df4fdc19fd33a6 +SPDXID: SPDXRef-e9c31aa5353a2602a155942b009cd979 +FileChecksum: SHA1: 851f40c326706911f87aa636188a86fb55e77e69 LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-only LicenseInfoInFile: GPL-3.0-only -FileCopyrightText: <text>Copyright (c) 2009 Kurt Garloff <[email protected]> -Copyright (c) 2013,2018 Kurt Garloff <[email protected]></text> +FileCopyrightText: <text>Copyright (C) 2009 Kurt Garloff <[email protected]> +Copyright (C) 2013, 2018 Kurt Garloff <[email protected]></text> FileName: ./man/lsusb.8 SPDXID: SPDXRef-f8de93054989a2fd41f3c2efbfb096a9 FileChecksum: SHA1: 809b319a3f62e6b58dc547f336c29e6204db098f LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-only -FileCopyrightText: <text>Copyright (c) 1999 Thomas Sailer <[email protected]></text> +FileCopyrightText: <text>Copyright (C) 1999 Thomas Sailer <[email protected]></text> FileName: ./man/lsusb.py.1 SPDXID: SPDXRef-c5e911e3fb38d1362fb16df2a2fefd9e FileChecksum: SHA1: df8fb145901a6249861e548bdf4a6a94e5185799 LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-only -FileCopyrightText: <text>Copyright (c) 1999 Thomas Sailer <[email protected]> -Copyright (c) 2020 Sam Morris <[email protected]></text> +FileCopyrightText: <text>Copyright (C) 1999 Thomas Sailer <[email protected]> +Copyright (C) 2020 Sam Morris <[email protected]></text> FileName: ./man/usb-devices.1 SPDXID: SPDXRef-6bf84d40f00b2566aa73a36acd80b594 FileChecksum: SHA1: d4149382a2dac133414f2994f23665f507cf4565 LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-only -FileCopyrightText: <text>Copyright (c) 2004 Frans Pop <[email protected]> -Copyright (c) 2004 Greg Kroah-Hartman <[email protected]> -Copyright (c) 2004 Randy Dunlap <[email protected]></text> +FileCopyrightText: <text>Copyright (C) 2004 Frans Pop <[email protected]> +Copyright (C) 2004 Greg Kroah-Hartman <[email protected]> +Copyright (C) 2004 Randy Dunlap <[email protected]></text> FileName: ./man/usbhid-dump.8 SPDXID: SPDXRef-eae4055469224764325d52cc96cbab3b @@ -376,22 +377,22 @@ FileCopyrightText: <text>Copyright Nikolai Kondrashov <[email protected]></text> FileName: ./man/usbreset.1 -SPDXID: SPDXRef-e38f878d92a1acfc7f028a82fccf83a7 -FileChecksum: SHA1: 4c632c1d8a4fb012b0150708b060dd6c582b4b2a +SPDXID: SPDXRef-e8f43573a1e1c0ff6f4673c44c1c2bc1 +FileChecksum: SHA1: e32e39d86165fb886202cd3c7eb1b69a460ce093 LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-only -FileCopyrightText: <text>Copyright (c) 2023 Aurelien Jarno <[email protected]></text> +FileCopyrightText: <text>Copyright (C) 2023 Aurelien Jarno <[email protected]></text> FileName: ./meson.build -SPDXID: SPDXRef-55ab2a28154ae54d03e8851633212eab -FileChecksum: SHA1: 172e0b2094aaee574ebdebae19a45153b08518f8 +SPDXID: SPDXRef-3e2dd900eedfeb6de38e4ef6631df142 +FileChecksum: SHA1: 9452eb02e8f3a8471a547c7c674c23027f0589fc LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-only -FileCopyrightText: <text>Copyright (c) 2024 Greg Kroah-Hartman <[email protected]></text> +FileCopyrightText: <text>Copyright (C) 2024 Greg Kroah-Hartman <[email protected]></text> FileName: ./names.c -SPDXID: SPDXRef-39cda2fc214ee9684ac11abbef3cc612 -FileChecksum: SHA1: bec0bd4cfa0033f87b8bc887edcb33b2dfe031a9 +SPDXID: SPDXRef-360b67a9ce3308fc7852156090c1e75d +FileChecksum: SHA1: a8a9c959868d21977e4ffc842f08a3469360862f LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-or-later FileCopyrightText: <text>Copyright (C) 1999, 2000 Thomas Sailer ([email protected]) @@ -420,17 +421,17 @@ FileCopyrightText: <text>Copyright (C) 1999, 2000 Thomas Sailer ([email protected])</text> FileName: ./usb-devices -SPDXID: SPDXRef-2d19fe5fb8b4f7ab28eb8a45aeeee263 -FileChecksum: SHA1: bc0893ecf3726f064d3d10ce82772a8244b5238b +SPDXID: SPDXRef-944b584000dd1ce8d6a5003bcd877998 +FileChecksum: SHA1: 336cefc7b32d865866c193de69b1277fcc28354f LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-or-later -FileCopyrightText: <text>Copyright (c) 2009 Frans Pop <[email protected]> -Copyright (c) 2009 Greg Kroah-Hartman <[email protected]> -Copyright (c) 2009 Randy Dunlap <[email protected]></text> +FileCopyrightText: <text>Copyright (C) 2009 Frans Pop <[email protected]> +Copyright (C) 2009 Greg Kroah-Hartman <[email protected]> +Copyright (C) 2009 Randy Dunlap <[email protected]></text> FileName: ./usb-spec.h -SPDXID: SPDXRef-9929adf54a5cafd69cf282f0e62272ef -FileChecksum: SHA1: b8a436de9e1d5c7458ebbdab80c7f9164895dd32 +SPDXID: SPDXRef-34e66fb749b54331c2b384e291b433ed +FileChecksum: SHA1: e5f27aa2a1217a300ad6c112d38df1511f389e10 LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-or-later FileCopyrightText: <text>Copyright (C) 2013 Tom Gundersen <[email protected]></text> @@ -440,14 +441,14 @@ FileChecksum: SHA1: 81f641160fd9f17f89a195cc782e8be3fb7d9975 LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-or-later -FileCopyrightText: <text>Copyright (c) 2010 Nikolai Kondrashov</text> +FileCopyrightText: <text>Copyright (C) 2010 Nikolai Kondrashov</text> FileName: ./usbhid-dump/README.md SPDXID: SPDXRef-a4ab912da758ea90ac0483b463d76f54 FileChecksum: SHA1: b184daca1cf24a499f3f4905f223e8f4e0dcb53a LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-or-later -FileCopyrightText: <text>Copyright (c) 2010 Nikolai Kondrashov</text> +FileCopyrightText: <text>Copyright (C) 2010 Nikolai Kondrashov</text> FileName: ./usbhid-dump/dev.c SPDXID: SPDXRef-3fcb43cc533d0519e5a1ecdc4afe58ac @@ -517,7 +518,8 @@ FileChecksum: SHA1: 8dc6a493567975f26142041149ebac1c9543c84e LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-or-later -FileCopyrightText: <text>Copyright (C) 2010-2011 Nikolai Kondrashov <[email protected]></text> +FileCopyrightText: <text>Copyright (C) 2010 Nikolai Kondrashov\n +Copyright (C) 2010-2011 Nikolai Kondrashov <[email protected]></text> FileName: ./usbmisc.c SPDXID: SPDXRef-04eadb4435b47c57bfa272f81be4f815 @@ -534,8 +536,9 @@ FileCopyrightText: <text>Copyright (C) 2003 Aurelien Jarno ([email protected])</text> FileName: ./usbreset.c -SPDXID: SPDXRef-be9d24b98784bd29b232c30b9eb2e68a -FileChecksum: SHA1: 9dc944bc60ec8298e857dcbc968756961b3c63f5 +SPDXID: SPDXRef-43361a8abfac03fa76abeb3eac609890 +FileChecksum: SHA1: da89c8c944526a153edf18a2f562756dc4ffc179 LicenseConcluded: NOASSERTION LicenseInfoInFile: GPL-2.0-only -FileCopyrightText: <text>Copyright (c) 2009-2016 Alan Stern</text> +FileCopyrightText: <text>Copyright (C) 2009-2016 Alan Stern</text> +
