簡體   English   中英

Raspberry Pi Zero USB設備仿真

[英]Raspberry Pi Zero USB device emulation

我知道Raspberry Pi Zero支持OTG和USB外設協議,這里有很多很酷的內置外設: https//learn.adafruit.com/turning-your-raspberry-pi-zero-into-a- USB-小工具嗎?視圖=所有其他#模塊

問題是我需要模擬此列表中沒有出現的USB外圍設備。 我有設備的供應商ID和產品ID,我正在試圖弄清楚如何做到這一點。 我是否需要修改Raspbian內核中的OTG USB驅動程序? 我是否必須完全構建自己的內核? 還是有一個我甚至沒有意識到的更好的選擇?

提前致謝!!

我是否需要修改Raspbian內核中的OTG USB驅動程序?

你的第一個問題的答案是“它取決於”,但如果你的設備沒有做任何太不尋常的事情,這可能是一個否:你不需要修改內核模塊和內核的源代碼。

你很幸運Raspbian支持一個支持ConfigFS的現代內核。 使用dtoverlay=dwc2設置后,可以像root一樣打開FunctionFS批量端點,如下所示:

modprobe libcomposite
modprobe usb_f_fs
cd /sys/kernel/config/usb_gadget
mkdir -p myperipheral; cd myperipheral
echo 0x1234 > idVendor  # put actual vendor ID here
echo 0xabcd > idProduct # put actual product ID here
mkdir configs/c.1
mkdir configs/c.1/strings/0x409
echo "My Peripheral" > configs/c.1/strings/0x409/configuration
mkdir functions/ffs.my_func_name
ln -s functions/ffs.my_func_name configs/c.1/
mkdir -p /tmp/mount_point
mount my_func_name -t functionfs /tmp/mount_point
# compile ffs-test from source, then copy and run it from /tmp/mount_point
ls /sys/class/udc > UDC

如果您需要更密切地模擬其他設備,則需要設置bcdDevicebcdUSB ,序列號,制造商,產品字符串,最大功率, os_desc以及可能的其他字段。

AFAIK FunctionFS不支持等時端點,中斷傳輸,也不支持非常規控制傳輸。 如果您需要這一點,你可能需要開始尋找到擴展現有的小工具模塊的源代碼在這里

更新:當我回到家測試時,我遇到了一個嚴重的Raspbian警告。 它最初將無法創建ffs.my_func_name因為默認情況下未啟用usb_f_fs。 雖然您不需要修改任何內核模塊,但必須使用備用配置重新編譯 make menuconfig - >設備驅動程序 - > USB支持 - > USB小工具支持 - > USB功能可通過configfs / Function filesystem(FunctionFS)+其他一些模塊進行測試。 上傳新內核/模塊后,我在Raspbian 8上測試了上面的腳本。我還建議將USB小工具驅動程序/函數文件系統設置為(M),以防您使用更簡單的g_ffs遺留模塊代替ConfigFS。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM