首页 > 解决方案 > 尝试将 RPi Zero W 用作 USB 键盘

问题描述

我在这个练习中使用了 RPi Zero W。我下载了 2018-11-13-raspbian-stretch-full.zip 并将其安装到 32G microSD 卡上:

sudo dd bs=4M if=2018-11-13-raspbian-stretch-full.img of=/dev/mmcblk0

使用上述 microSD 卡启动我的 RPi Zero W 并立即更新系统:

apt-get update

在 /etc/modules 末尾添加以下两行:

dwc2
libcomposite

然后执行以下shell脚本:

#!/bin/sh

# Create gadget
mkdir /sys/kernel/config/usb_gadget/mykeyboard
cd /sys/kernel/config/usb_gadget/mykeyboard

# Add basic information
echo 0x0100 > bcdDevice # Version 1.0.0
echo 0x0200 > bcdUSB # USB 2.0
echo 0x00 > bDeviceClass
echo 0x00 > bDeviceProtocol
echo 0x00 > bDeviceSubClass
echo 0x08 > bMaxPacketSize0
echo 0x0104 > idProduct # Multifunction Composite Gadget
echo 0x1d6b > idVendor # Linux Foundation

# Create English locale
mkdir strings/0x409

echo "My manufacturer" > strings/0x409/manufacturer
echo "My virtual keyboard" > strings/0x409/product
echo "0123456789" > strings/0x409/serialnumber

# Create HID function
mkdir functions/hid.usb0

echo 1 > functions/hid.usb0/protocol
echo 8 > functions/hid.usb0/report_length # 8-byte reports
echo 1 > functions/hid.usb0/subclass

# Write report descriptor
echo "05010906a101050719e029e71500250175019508810275089501810175019503050819012903910275019505910175089506150026ff00050719002aff008100c0" | xxd -r -ps > functions/hid.usb0/report_desc

# Create configuration
mkdir configs/c.1
mkdir configs/c.1/strings/0x409

echo 0x80 > configs/c.1/bmAttributes
echo 200 > configs/c.1/MaxPower # 200 mA
echo "Example configuration" > configs/c.1/strings/0x409/configuration

# Link HID function to configuration
ln -s functions/hid.usb0 configs/c.1

# Enable gadget
ls /sys/class/udc > UDC

然后,我将 RPi Zero 插入我的 Fedora 29 笔记本电脑,希望在执行时看到 RPi:lsusb -t与设备(我的 RPi Zero)一起显示Class=Human Interface Device

什么都没有出现,除了我的已知设备。

我知道这是 ConfigFS 中的一个练习,以及如何使用它将你的 micro-micro-micro Linus 板变成“USB gadget”。

有什么建议么?

标签: raspberry-piusb

解决方案


推荐阅读