ipkvm 之 RK3568 usb gadget

PiKVM - Open and inexpensive DIY IP-KVM on Raspberry Pi

开源项目:https://github.com/pikvm

目的:在 rk3568上实现 pikvm所有功能 ,本篇主要实现 rk3568 usb Gadget (hid,ums)

硬件:

  • rk3568 / rk3399 / rk3588
  • usb otg接口

开发板既要当USB OTG口既要当键盘,又要当鼠标使用。则要生成两个hid:,一个键盘hidg0,一个鼠标hidg1。

1. 功能实现

1.1 kernel 配置

在rockchip_linux_defconfig中添加

CONFIG_USB_CONFIGFS_F_HID = y
CONFIG_USB_CONFIGFS_MASS_STORAGE=y

./build.sh 编译kernel

./build.sh kernel

确认kernel/drivers/usb/gadget/function/f_hid.c被编译 f_hid.o

烧录固件boot.img 切换到loader模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Osl9SjXx-1669724730371)(C:\Users\luo\AppData\Roaming\Typora\typora-user-images\image-20221128172543262.png)]

1.2 使能HID配置

进入系统后执行

echo usb_hid_en > /tmp/.usb_config & /etc/init.d/S50usbdevice restart

USB功能配置成功会有如下log,表明进入USB 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*
在这里插入图片描述

如果需要添加两个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 \\x05\\x01\\x09\\x06\\xa1\\x01\\x05\\x07\\x19\\xe0\\x29\\xe7\\x15\\x00\\x25\\x01\\x75\\x01\\x95\\x08\\x81\\x02\\x95\\x01\\x75\\x08\\x81\\x03\\x95\\x05\\x75\\x01\\x05\\x08\\x19\\x01\\x29\\x05\\x91\\x02\\x95\\x01\\x75\\x03\\x91\\x03\\x95\\x06\\x75\\x08\\x15\\x00\\x25\\x65\\x05\\x07\\x19\\x00\\x29\\x65\\x81\\x00\\xc0 > /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 \\x05\\x01\\x09\\x02\\xa1\\x01\\x09\\x01\\xa1\\x00\\x05\\x09\\x19\\x01\\x29\\x03\\x15\\x00\\x25\\x01\\x95\\x03\\x75\\x01\\x81\\x02\\x95\\x01\\x75\\x05\\x81\\x03\\x05\\x01\\x09\\x30\\x09\\x31\\x15\\x81\\x25\\x7f\\x75\\x08\\x95\\x02\\x81\\x06\\xc0\\xc0 > /sys/kernel/config/usb_gadget/rockchip/functions/hid.usb1/report_desc
+       syslink_function hid.usb1
    fi
    if [ $UMS_EN = on ];then


改完后需要删除 buildroot/output/rockchip_rk3568,重新编译。

验证功能的话,直接改 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 烧录即可看到
在这里插入图片描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LR872say-1669724730374)(C:\Users\luo\AppData\Roaming\Typora\typora-user-images\image-20221129180604898.png)]

2. 测试功能

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.

复制hid_gadget_test.c 到sdk,执行

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 到开发板

在这里插入图片描述

即可开始测试,输入 g i s t r --left-shift 按下回车将发送数据

3. 开发板介绍

3.1 基本参数

基本参数
微处理器 CPURK3568 /3568J/3568M
内存2GB/4GB/8GB 默认 4G
存储8GB/16GB/32GB/64GB/128GB/256GB 默认 32GB
系统linux、安卓、debian、银河麒麟操作系统
接口参数
USB 接口4 路 USB2.0、2 路 USB3.0
以太网2 路 1000M 网口
串口接口4 路 232 接口,1 路 RS232/485 转换(默认 RS232),通过贴片切换
音视频信号输入支持 Mic in/Line in 支持 HDMI 输入
支持 Line out
音视频信号输出支持功放左右声道输出(8Ω,5W)
支持 3.5MM 耳机左右声道输出
支持 3 路显示输出。HDMI,LVDS,MIPI,EDP,其中 LVDS 和 MIPI 二选一
WIFI/蓝牙WIFI 2.4G/5G 及蓝牙 V4.0/4.2
TF 卡支持支持外部存储卡扩展
RTC 实时时钟支持
SATA 供电接口提供 12V/5v 电源;(SATA 5V/12V)
I2C/SPI/GPIO8 路 GPIO、2 路 I2C,1 路 SPI
TP I2C支持
SATA 3.0 接口支持
PCIE 接口1 路 PCIE-2X 接口,可依据需求外加扩展卡

3.2 实物图

3.3 结构图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rw3gfiiU-1669724730375)(C:\Users\luo\AppData\Roaming\Typora\typora-user-images\image-20221129200329192.png)]

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要下载IPKVM(Intelligent Platform Management Interface KVM)远程工具,您可以按照以下步骤操作: 1. 打开您的互联网浏览器,例如Google Chrome、Mozilla Firefox等。 2. 在浏览器的地址栏中输入“IPKVM远程工具下载”并按下回车键。 3. 在搜索结果页面中,找到可靠的来源,例如官方网站或受信任的软件下载网站。 4. 进入所选来源的网站。 5. 在网站的搜索框中输入“IPKVM远程工具下载”或类似的关键词。 6. 浏览搜索结果,并选择与您的要求最为匹配的(例如免费、最新版本)。 7. 点击选择的下载链接或按钮。 8. 可能会出现下载确认或选择下载文件类型的提示,请根据您的需求进行操作。 9. 等待下载完成。下载速度取决于您的互联网连接速度以及文件大小。 10. 一旦下载完成,您可以找到下载的文件通常保存在电脑的“下载”文件夹中。 11. 打开文件夹,并找到下载的IPKVM远程工具文件。 12. 双击打开该文件,按照安装向导的指示进行安装。 请注意,在下载和安装任何软件之前,请务必核实软件的来源并确保所下载的工具是来自可信任的来源,以确保系统的安全性。除此之外,也建议使用最新版本的软件,以获得更好的性能和功能。 ### 回答2: 要下载IPKVM远程工具,首先需要确定所需的IPKVM软件品牌和型号。然后,可以通过以下几种途径进行下载: 1. 官方网站:访问IPKVM软件的官方网站,一般会提供下载页面或链接。在该页面上,你可以浏览到最新版本的IPKVM远程工具。选择适合你设备的版本,点击下载即可。 2. 第三方软件下载网站:在一些知名的软件下载网站上,也存在一些IPKVM远程工具的下载选项。通过搜索IPKVM远程工具的关键词,可以找到相关下载页面。在下载之前,要确保所选择的下载源是可靠的,以防安装恶意软件。 3. 厂商提供的支持资源:一些IPKVM设备的品牌厂商会在其官方网站上提供一些技术支持资源,其中可能包括IPKVM远程工具的下载。访问相关厂商的支持页面,查找IPKVM远程工具下载选项。 无论是从官方网站、第三方网站还是厂商支持资源下载IPKVM远程工具,都应该选择可信的来源,并注意软件的兼容性和安全性。在下载安装后,按照软件提供的指引进行配置和使用,就可以通过IPKVM远程工具实现对设备的远程管理和控制。 ### 回答3: IPKVM远程工具是一种用于远程管理服务器和网络设备的工具。下载IPKVM远程工具非常简单,只需按照以下步骤操作: 1. 首先,在您的网络浏览器中打开搜索引擎,如Google或百度。 2. 在搜索框中输入“IPKVM远程工具下载”并按下回车键。 3. 您将看到许多与IPKVM远程工具相关的搜索结果。您可以选择其中一种结果,这可能是来自官方网站或其他受信任的来源。 4. 在所选网站上,寻找与IPKVM远程工具下载相关的链接或按钮。这通常会放在导航栏或主页上。 5. 单击该链接或按钮,这将为您提供IPKVM远程工具的下载选项。 6. 根据您的操作系统选择正确的版本(例如Windows、Mac或Linux)。 7. 单击“下载”按钮开始下载IPKVM远程工具安装包。 8. 下载完成后,找到安装包文件并双击运行。 9. 按照安装过程中的指示进行操作,通常是选择安装位置和确认安装选项。 10. 安装完成后,您可以在计算机或设备中找到IPKVM远程工具的快捷方式或启动文件。 11. 单击快捷方式或启动文件打开IPKVM远程工具。 12. 现在您可以使用IPKVM远程工具连接和管理远程服务器和网络设备。 请注意,在下载和安装任何软件时,请确保来自受信任的来源,并始终保持您的计算机和网络安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ArmSoM开源硬件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值