raspberry-pi - 尝试将 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”。
有什么建议么?
解决方案
推荐阅读
- ios - Xamarin iOS UIPageViewController SetViewControllers 查看页面之间
- python - 对不同的网页使用相同的模型
- firebase - 如何在firebase规则上允许更新但不插入新分支
- c# - PropertyGrid - 动态加载下拉值
- xml - 使用 perl 的 SOAP 客户端 - WSDL URL 可用
- python - Python 文档文章“安全注意事项”关于 `smtplib` 的 SSL 上下文
- javascript - 将选定的 textContent 和新值传递给更新函数时元素文本不会改变
- java - Java 连接 2 个哈希映射,包括重复键
- jestjs - 如何监视 Apollo 客户端缓存调用以进行单元测试?
- java - 如何摆脱 XXX 自动生成的方法存根