]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
usbgadget: add OS descriptors support 19237/head
authorThomas Richard <thomas.richard@bootlin.com>
Thu, 26 Jun 2025 09:26:00 +0000 (11:26 +0200)
committerChuanhong Guo <gch981213@gmail.com>
Fri, 4 Jul 2025 01:50:24 +0000 (09:50 +0800)
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@bootlin.com>
Link: https://github.com/openwrt/openwrt/pull/19237
Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
package/utils/usbgadget/files/usbgadget.init

index f2e105caaefa08fae683f613801f9cfa8da1596c..384ab548b6c507cfb4dcf6bf9cd725ac59f7927c 100644 (file)
@@ -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/*