USBガジェットシリアルポート(g_serialまたは複合):Windowsに表示される名前を制御する方法は?

USBガジェットシリアルポート(g_serialまたは複合):Windowsに表示される名前を制御する方法は?

modprobe g_serialcomposite/メソッドを介して私のプロジェクトにガジェットシリアルインターフェースを追加したいと思いますconfigfs

MacOS または Linux ホストと通信するときに完全に動作する小さなスクリプト(以下に示す)があります。 Windowsホストと通信するときにも機能しますが、名前だけが常に間違っています。

Windowsホストに接続すると、ガジェットは常にデバイスマネージャに次のように表示されます。「USBシリアルデバイス(COM)」正しい製品名を表示する代わりに。 Windowsはまた、デバイスの製造元を次のようにリストします。マイクロソフト、私が何を設定しても構いませんstrings/0x409/manufacturer。そして機器のシリアル番号はどこにもありません。

この動作をどのように変更できますか? Windowsで、およびフィールドを正しく/sys/kernel/config/usb_gadget/usb_gadget/g1/os_desc選択するために魔法を使用できますか?それともWindowsで何らかの.inf魔法を実行する必要がありますか?manufacturerproductserialnumber

g_serial最初は次のコマンドを試してみました。

modprobe g_serial \
    idVendor="0x4075" \
    idProduct="0x0001" \
    iSerialNumber="0123456789" \
    iManufacturer="Magic Manufacturing" \
    iProduct="Gizmomatic Machine"

名前が正しく表示されないときにconfigfs / gadget-serialメソッドを試しました。

#!/bin/bash

set -euo pipefail

mkdir /sys/kernel/config/usb_gadget/g1
cd /sys/kernel/config/usb_gadget/g1

echo 0xEF > bDeviceClass
echo 0x02 > bDeviceSubClass
echo 0x01 > bDeviceProtocol

echo "0x4075" > idVendor
echo "0x0001" > idProduct

mkdir strings/0x409
echo "0123456789" > strings/0x409/serialnumber
echo "Magic Manufacturing" > strings/0x409/manufacturer
echo "Gizmomatic Machine" > strings/0x409/product

mkdir configs/c.1
mkdir configs/c.1/strings/0x409
echo "acm" > configs/c.1/strings/0x409/configuration

mkdir functions/acm.usb0
ln -s functions/acm.usb0 configs/c.1

echo "ci_hdrc.0" > UDC

両方のバリアントは、Windowsで有効なCOMポートを生成するという点で「動作」します。しかし、正確なシリアル番号、製造元、または製品名を報告した人はいませんでした。誰かがここに知恵があるなら、それは私にとって大きな助けになるでしょう。重要な場合は、4.19.35カーネルを使用しています。

ベストアンサー1

おすすめ記事