PiKVM - Open and inexpensive DIY IP-KVM on Raspberry Pi
開源項(xiàng)目:https://github.com/pikvm
目的:在 rk3568上實(shí)現(xiàn) pikvm所有功能 ,本篇主要實(shí)現(xiàn) rk3568 usb Gadget (hid,ums)
硬件:
- rk3568 / rk3399 / rk3588
- usb otg接口
開發(fā)板既要當(dāng)USB OTG口既要當(dāng)鍵盤,又要當(dāng)鼠標(biāo)使用。則要生成兩個(gè)hid:,一個(gè)鍵盤hidg0,一個(gè)鼠標(biāo)hidg1。
1. 功能實(shí)現(xiàn)
1.1 kernel 配置
CONFIG_USB_CONFIGFS_F_HID = y
CONFIG_USB_CONFIGFS_MASS_STORAGE=y
./build.sh 編譯kernel
./build.sh kernel
確認(rèn)kernel/drivers/usb/gadget/function/f_hid.c被編譯 f_hid.o
燒錄固件boot.img 切換到loader模式
1.2 使能HID配置
進(jìn)入系統(tǒng)后執(zhí)行
echo usb_hid_en > /tmp/.usb_config & /etc/init.d/S50usbdevice restart
USB功能配置成功會(huì)有如下log,表明進(jìn)入U(xiǎn)SB Ready:
[ 5662.081549] android_work: sent uevent USB_STATE=CONNECTED
[ 5662.085903] configfs-gadget gadget: high-speed config #1: b
[ 5662.086881] android_work: sent uevent USB_STATE=CONFIGURED
查看 ls -l /dev/hid*
如果需要添加兩個(gè)hid,分別做keyboard,mouse
diff --git a/external/rkscript/S50usbdevice b/external/rkscript/S50usbdevice
index 1162f296f..0ad102150 100644
--- a/external/rkscript/S50usbdevice
+++ b/external/rkscript/S50usbdevice
@@ -64,6 +64,7 @@ function_init()
mkdir ${USB_FUNCTIONS_DIR}/mass_storage.0
mkdir ${USB_FUNCTIONS_DIR}/uvc.gs6
mkdir ${USB_FUNCTIONS_DIR}/hid.usb0
+ mkdir ${USB_FUNCTIONS_DIR}/hid.usb1
}
configfs_init()
@@ -342,11 +343,19 @@ bind_functions()
test $RNDIS_EN = on && syslink_function rndis.gs0
if [ $HID_EN = on ]; then
+ # Keyboard
echo 1 > /sys/kernel/config/usb_gadget/rockchip/functions/hid.usb0/protocol
echo 1 > /sys/kernel/config/usb_gadget/rockchip/functions/hid.usb0/subclass
echo 8 > /sys/kernel/config/usb_gadget/rockchip/functions/hid.usb0/report_length
echo -ne x05x01x09x06xa1x01x05x07x19xe0x29xe7x15x00x25x01x75x01x95x08x81x02x95x01x75x08x81x03x95x05x75x01x05x08x19x01x29x05x91x02x95x01x75x03x91x03x95x06x75x08x15x00x25x65x05x07x19x00x29x65x81x00xc0 > /sys/kernel/config/usb_gadget/rockchip/functions/hid.usb0/report_desc
syslink_function hid.usb0
+
+ # Mouse
+ echo 2 > /sys/kernel/config/usb_gadget/rockchip/functions/hid.usb1/protocol
+ echo 1 > /sys/kernel/config/usb_gadget/rockchip/functions/hid.usb1/subclass
+ echo 3 > /sys/kernel/config/usb_gadget/rockchip/functions/hid.usb1/report_length
+ echo -ne x05x01x09x02xa1x01x09x01xa1x00x05x09x19x01x29x03x15x00x25x01x95x03x75x01x81x02x95x01x75x05x81x03x05x01x09x30x09x31x15x81x25x7fx75x08x95x02x81x06xc0xc0 > /sys/kernel/config/usb_gadget/rockchip/functions/hid.usb1/report_desc
+ syslink_function hid.usb1
fi
if [ $UMS_EN = on ];then
改完后需要?jiǎng)h除 buildroot/output/rockchip_rk3568,重新編譯。
驗(yàn)證功能的話,直接改 buildroot/output/rockchip_rk3568/target/etc/init.d/S50usbdevice
buildroot/output/rockchip_rk3568/target/etc/init.d/.usb_config
usb_adb_en
usb_hid_en
usb_ums_en
ums_block=/dev/block/by-name/userdata
ums_block_auto_mount=on
./build.sh rootfs 燒錄即可看到
2. 測(cè)試功能
github倉庫:https://github.com/aagallag/hid_gadget_test
The HID Gadget driver provides emulation of USB Human Interface
Devices (HID). The basic HID handling is done in the kernel,
and HID reports can be sent/received through I/O on the
/dev/hidgX character devices.
復(fù)制hid_gadget_test.c 到sdk,執(zhí)行
rk3568-sdk/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc hid_gadget_test.c -o hid_gadget_test -static
生成 hid_gadget_test 使用adb push 到開發(fā)板
即可開始測(cè)試,輸入 g i s t r --left-shift 按下回車將發(fā)送數(shù)據(jù)
3. 開發(fā)板介紹
3.1 基本參數(shù)
基本參數(shù) | |
---|---|
微處理器 CPU | RK3568 /3568J/3568M |
內(nèi)存 | 2GB/4GB/8GB 默認(rèn) 4G |
存儲(chǔ) | 8GB/16GB/32GB/64GB/128GB/256GB 默認(rèn) 32GB |
系統(tǒng) | linux、安卓、debian、銀河麒麟操作系統(tǒng) |
接口參數(shù) | |
USB 接口 | 4 路 USB2.0、2 路 USB3.0 |
以太網(wǎng) | 2 路 1000M 網(wǎng)口 |
串口接口 | 4 路 232 接口,1 路 RS232/485 轉(zhuǎn)換(默認(rèn) RS232),通過貼片切換 |
音視頻信號(hào)輸入 | 支持 Mic in/Line in 支持 HDMI 輸入 |
支持 Line out | |
音視頻信號(hào)輸出 | 支持功放左右聲道輸出(8Ω,5W) |
支持 3.5MM 耳機(jī)左右聲道輸出 | |
支持 3 路顯示輸出。HDMI,LVDS,MIPI,EDP,其中 LVDS 和 MIPI 二選一 | |
WIFI/藍(lán)牙 | WIFI 2.4G/5G 及藍(lán)牙 V4.0/4.2 |
TF 卡 | 支持支持外部存儲(chǔ)卡擴(kuò)展 |
RTC 實(shí)時(shí)時(shí)鐘 | 支持 |
SATA 供電接口 | 提供 12V/5v 電源;(SATA 5V/12V) |
I2C/SPI/GPIO | 8 路 GPIO、2 路 I2C,1 路 SPI |
TP I2C | 支持 |
SATA 3.0 接口 | 支持 |
PCIE 接口 | 1 路 PCIE-2X 接口,可依據(jù)需求外加擴(kuò)展卡 |
3.2 實(shí)物圖
3.3 結(jié)構(gòu)圖
審核編輯:湯梓紅
-
接口
+關(guān)注
關(guān)注
33文章
8633瀏覽量
151367 -
usb
+關(guān)注
關(guān)注
60文章
7956瀏覽量
265015 -
線路板
+關(guān)注
關(guān)注
23文章
1208瀏覽量
47180 -
HID
+關(guān)注
關(guān)注
2文章
130瀏覽量
46639 -
RK3568
+關(guān)注
關(guān)注
4文章
518瀏覽量
5097
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論