[openwrt/openwrt] usbgadget: add OS descriptors support

LEDE Commits lede-commits at lists.infradead.org
Thu Jul 3 18:50:39 PDT 2025


981213 pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/c5c894f7ff9731cb0c24f566f41cdb2fce9aed68

commit c5c894f7ff9731cb0c24f566f41cdb2fce9aed68
Author: Thomas Richard <thomas.richard at bootlin.com>
AuthorDate: Thu Jun 26 11:26:00 2025 +0200

    usbgadget: add OS descriptors support
    
    Add OS descriptors support. Configuring OS descriptors allows Microsoft
    Windows to bind the right drivers without any additional configuration.
    
    Signed-off-by: Thomas Richard <thomas.richard at bootlin.com>
    Link: https://github.com/openwrt/openwrt/pull/19237
    Signed-off-by: Chuanhong Guo <gch981213 at gmail.com>
---
 package/utils/usbgadget/files/usbgadget.init | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/package/utils/usbgadget/files/usbgadget.init b/package/utils/usbgadget/files/usbgadget.init
index f2e105caae..384ab548b6 100644
--- a/package/utils/usbgadget/files/usbgadget.init
+++ b/package/utils/usbgadget/files/usbgadget.init
@@ -35,6 +35,9 @@ setup_gadget() {
 	local strings_path="${gadget_path}/strings/0x409"
 	mkdir "$strings_path"
 	apply_configs "$strings_path" "$cfg"
+
+	local os_desc_path="${gadget_path}/os_desc"
+	apply_configs "$os_desc_path" "$cfg"
 }
 
 setup_configuration() {
@@ -54,6 +57,8 @@ setup_configuration() {
 	local strings_path="${cfg_path}/strings/0x409"
 	mkdir "$strings_path"
 	apply_configs "$strings_path" "$cfg"
+
+	ln -s "$cfg_path" "${GADGET_FS}/${GADGET_PREFIX}${gadget}/os_desc"
 }
 
 setup_function() {
@@ -78,6 +83,9 @@ setup_function() {
 
 	apply_configs "$fun_path" "$cfg"
 
+	local os_desc_path="$(find ${fun_path}/os_desc/* -type d)"
+	apply_configs "$os_desc_path" "$cfg"
+
 	ln -s "$fun_path" "$cfg_path"
 }
 
@@ -134,6 +142,7 @@ stop() {
 	for gadget_path in ${GADGET_FS}/${GADGET_PREFIX}* ; do
 		[ -d "$gadget_path" ] || continue
 		echo "" > ${gadget_path}/UDC
+		find ${gadget_path}/os_desc -maxdepth 1 -type l -exec rm '{}' ';'
 		find ${gadget_path}/configs -maxdepth 2 -type l -exec rm '{}' ';'
 		rmdir ${gadget_path}/configs/*/strings/*
 		rmdir ${gadget_path}/configs/*




More information about the lede-commits mailing list