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 커널을 사용하고 있습니다.

관련 정보