首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

远程控制设备的HID描述符

HID(Human Interface Device)描述符是USB设备中用于描述人机交互设备的一种数据结构。HID设备广泛应用于键盘、鼠标、游戏手柄等设备中。以下是对HID描述符的基础概念、优势、类型、应用场景以及常见问题及其解决方案的详细解答:

基础概念

HID描述符定义了设备如何与主机通信,包括设备的功能、报告格式、使用的数据类型等。它由多个部分组成,包括主描述符、报告描述符、物理描述符等。

优势

  1. 标准化:HID协议是USB组织定义的标准协议,确保不同厂商的设备能够互操作。
  2. 灵活性:支持多种输入设备,如键盘、鼠标、游戏手柄等。
  3. 低延迟:设计用于实时交互,减少数据传输延迟。

类型

  • 主描述符:提供设备的基本信息,如供应商ID、产品ID等。
  • 报告描述符:定义设备如何报告数据,包括每个字段的含义和格式。
  • 物理描述符:描述设备的物理特性,如按钮布局、轴的数量等。

应用场景

  • 办公设备:键盘、鼠标、触摸板。
  • 游戏设备:游戏手柄、方向盘。
  • 工业控制:传感器、控制器。

常见问题及解决方案

问题1:设备无法被主机识别

原因:可能是HID描述符配置错误,或者USB驱动程序不兼容。 解决方案

  1. 检查设备的HID描述符是否正确编写和配置。
  2. 更新主机的USB驱动程序。
  3. 使用通用驱动程序,如libusb。

问题2:数据传输不稳定

原因:可能是USB线缆质量差,或者设备供电不足。 解决方案

  1. 更换高质量的USB线缆。
  2. 确保设备有足够的电源供应。

问题3:报告数据格式错误

原因:报告描述符定义的数据格式与实际发送的数据不匹配。 解决方案

  1. 仔细检查报告描述符中的每个字段定义。
  2. 使用调试工具(如USBlyzer)监控数据传输,对比预期和实际数据。

示例代码

以下是一个简单的HID报告描述符示例,用于一个包含两个按钮和一个滚轮的鼠标:

代码语言:txt
复制
const unsigned char hid_report_descriptor[] = {
    0x05, 0x01,        // Usage Page (Generic Desktop)
    0x09, 0x02,        // Usage (Mouse)
    0xa1, 0x01,        // Collection (Application)
    0x09, 0x01,        // Usage (Pointer)
    0xa1, 0x00,        // Collection (Physical)
    0x05, 0x09,        // Usage Page (Button)
    0x19, 0x01,        // Usage Minimum (Button 1)
    0x29, 0x02,        // Usage Maximum (Button 2)
    0x15, 0x00,        // Logical Minimum (0)
    0x25, 0x01,        // Logical Maximum (1)
    0x95, 0x02,        // Report Count (2)
    0x75, 0x01,        // Report Size (1)
    0x81, 0x02,        // Input (Data,Var,Abs)
    0x95, 0x01,        // Report Count (1)
    0x75, 0x06,        // Report Size (6)
    0x81, 0x03,        // Input (Cnst,Var,Abs)
    0x05, 0x01,        // Usage Page (Generic Desktop)
    0x09, 0x38,        // Usage (Wheel)
    0x15, 0x81,        // Logical Minimum (-127)
    0x25, 0x7f,        // Logical Maximum (127)
    0x75, 0x08,        // Report Size (8)
    0x95, 0x01,        // Report Count (1)
    0x81, 0x06,        // Input (Data,Var,Rel)
    0xc0,              // End Collection
    0xc0               // End Collection
};

通过以上信息,你应该能够更好地理解HID描述符及其相关问题,并能够采取适当的措施来解决这些问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

键帽高度尺寸图及USB协议中HID设备描述符和键值表

一图顶所有,有需要的直接看图吧。 意外收到了一名网友的打赏,能否留个言。互动一下?...键帽规格 HID设备描述符 按键值 HID Usage ID table 文字速查: Key HID Usage HID Usage ID Key HID Usage HID...表示 X 坐标的变化量超出-256 ~ 255的范围,0表示没有溢出 |--bit5: Y 坐标变化的符号位,1表示负数,即鼠标向下移动 |--bit4: X 坐标变化的符号位,1表示负数,即鼠标向左移动...用补码表示变化量 BYTE3 -- Y坐标变化量,与byte的bit5组成9位符号数,负数表示向下移,正数表上移。用补码表示变化量 BYTE4 -- 滚轮变化。...由于手上没有USB鼠标,对BYTE1的4-7位没有测试,对于BYTE2 BYTE3做个测试,BYTE1的4-7全为0的时候,BYTE2 BYTE3的正负表示鼠标移动方向 键盘发送给PC的数据每次8个字节

2.1K30

PLC网关 智能工厂设备远程控制监测

物联网时代高速发展以来,工厂智能化管理的到广泛应用,解决了传统工业本地维护、设备独立的不足,计讯物联智能工厂设备远程控制监测方案,工业PLC网关+云平台模式,实现工厂设备运行状态实时远程监测,管理人员随时随地能够通过...智能工厂设备远程控制监测系统组成   采集层:进行工厂设备、PLC控制器运行状态、时间、次数、开关量等监测参数采集。   ...图片1.png  智能工厂设备远程控制监测功能 1、远程监测管控,具有Web桌面和Web手机版,设备管理不受时间与地域限制。...4、设备现场的工作图片、视频,可以统一接入平台进行查看,设备管理更直观有效。 智能工厂设备远程控制监测用plc网关 1、支持PLC的远程调试和程序上下载。...图片3.png 2、集成主流PLC协议,支持硬件采集PLC数据、边缘计算、主动上报云平台等功能,从而实现对设备的远程数据监控。

1.1K20
  • DIY一个专属HID注入设备吧

    起初的BadUSB设备是通过更改U盘中的控制器固件实现的,支持的设备型号较少。...于是RUBBER DUCKY(橡皮鸭)从原始的批操作设备逐步发展为一个成熟的HID攻击平台,并拥有完善的攻击脚本、可靠的硬件支持和活跃的技术论坛。...电脑主机是通过设备描述符识别USB设备类型的,并在规定的端点建立与设备的通信关系,因此要做的第一步是要配置好设备的描述符。...复合设备工程参考官方的Composite_Example例程,更改配置描述符、端点缓存分配、设备初始化和复位函数以及各个端点的回调函数。...六、总结与展望 本例完成了基于STM32F103C8T6模拟键盘和U盘实现HID注入攻击的BadUSB设备软硬件原型设计,接下来将在三个方面做出改进:一是增加SD卡卡槽扩展U盘容量,方便文件窃取;二是通过添加无线通信模块建立远程

    1.5K00

    USB初学(一)---USB-HID的初步认识【转】

    从框图中,可以看出除了USB标准定义的一些描述符外,HID设备还必须定义HID描述符。另外设备和主机的通信是通过报告的形式来实现的,所以还必须定义报告描述符;而物理描述符不是必需的。...USB HID类可采用的通信管道 所有的HID设备通过USB的控制管道(默认管道,即端点0)和中断管道与主机通信。...表1、USB HID规范定义的HID设备可用端点 管道 要求 说明 控制(端点0) 必须 传输USB描述符、类请求代码以及供查询的消息数据等 中断输入 必须 传输从设备到主机的输入数据 中断输出 可选...4 wIndex 2 2字节数值,根据不同的bRequest有不同的意义 HID类请求 数值 HID类请求描述符 注释 0x01 GET_REPORT 主机用控制传输从设备接收数据,所有HID类设备都要支持这个请求...设备用控制传输接收主机的数据,设备可以不支持此请求; 0x0A SET_IDLE 设置闲置状态,设备可不支持此请求; 0x0B SET_PROTOCOL 仅仅适应于支持启动功能的HID设备(Boot

    13.7K50

    原创 Paper | USB设备开发:从入门到实践指南(一)

    不过由于Wireshark是抓取主机控制器上的流量,而一个USB主机控制器可以连接多个USB设备,所以当我要研究某一个USB设备时,需要通过Wireshark的过滤表达式对该主机控制器上的其他USB设备的流量进行过滤...,如图8所示: 图8:Wireshark上查看设备描述符 再对比一下USBTree View上显示的设备描述符信息,如图9所示: 图9:USB Tree View上查看设备描述符 通过对比发现,控制设备描述符的位于...,在配置描述符的响应包里,除了配置描述符的信息,还包含了接口描述符,端点描述符,并且因为USB键盘注册的是一个USB HID设备,所以在配置描述符中还包含着HID描述符,如图14所示: 图14:Wireshark...,是告诉主机设备是自供电还是需要USB主机供电,设备是否可以通过USB远程唤醒。...2.1.6 HID报告描述符 当USB主机通过接口描述符得知USB设备是USB HID设备时,将会再获取HID报告描述符,在USBPcap中捕获到的HID报告描述符如图21所示: 图21:Wireshark

    2.1K00

    GB28181设备控制和TeleBoot远程启动命令探究

    ​设备控制设备控制基本要求源设备向目标设备发送设备控制命令,控制命令的类型包括球机/云台控制、远程启动、录像控制、 报警布防/撤防、报警复位、强制关键帧、拉框放大、拉框缩小、看守位控制、设备配置等。...设备控制采用 IETFRFC3428中的 Message方法实现。源设备包括SIP客户端、网关或者联网系统,目标设备包括SIP设备、网关或者联网系统。...源设备向目标设备发送球机/云台控制命令、远程启动命令、强制关键帧、拉框放大、拉框缩小命令后,目标设备不发送应答命令。...源设备向目标设备发送录像控制、报警布防/撤防、 报警复位、看守位控制、设备配置命令后,目 标设备应发送应答命令表示执行的结果。...TeleRoot技术实现本文以我们实现的Android平台GB28181设备对接模块为例,如果GB平台端支持远程启动,发送的信令如下: MESSAGE sip:34020000011310000038

    56250

    安卓蓝牙键盘鼠标映射_蓝牙鼠标模拟器

    通过它将我们的应用注册成具有HID特征的蓝牙设备,并传送HID设备的报告描述符。如果我们的报告描述符没有问题,那么我们的设备就会成功模拟想要的HID设备。...在实现HID媒体播放的过程中发现,安卓对报告描述符的兼容性非常好,只要看上去正确的描述符运行起来基本没有问题,而win10就没有那么好的兼容性了,从理论上分析正确的描述符不一定能在win10下工作。...经过了不知多少次的尝试后终于能够编写出兼容win10的描述符。还有,既然能兼容安卓,那么智能电视的媒体控制自然是不在话下的。...2020.11.15编辑 就在实现了媒体控制的功能后,偶然在微软的网站上看到了显示器亮度调节相关的HID描述符,果断决定试试。...[多媒体控制界面] [win10亮度调节] 最后再强调下,这个亮度调节目前只有微软的win8/win10支持,而且是移动设备(使用电池供电的设备),如果找到Mac和Linux的亮度调节Usage

    5.8K20

    Linux驱动开发: USB驱动开发

    D5: 远程唤醒 D4..0:保留(设为一) 一个既用总线电源又有自给电源的设备会在MaxPower域指出需要从总线取的电量。...在 USB 协议中, HID 设备的定义放置在接口描述符中, USB 的设备描述符和配置描述符中不包含 HID 设备的信息。...除此之外, HID 设备还有三种特殊的描述符: HID 描述符、报告描述符、物理描述符。一个 USB 设备只能支持一个 HID 描述符,但可以支持多个报告描述符,而物理描述符则可以有也可以没有。...3.2 HID 描述符 HID 描述符用于识别 HID 设备中所包含的额外描述符,例如报告描述符或物理描述符等。...3.3 报告描述符 HID 设备的报告描述符是一种数据报表,主要用于定义 HID 设备和 USB 主机之间的数据交换格式, HID 设备报告描述符的类型值为 0x22。

    70.2K20

    远程控制和监控:实时管理和监测物联网设备的状态

    在本文中,我们将探讨一种解决方案,即远程控制和监控,它允许我们实时管理和监测物联网设备的状态。什么是远程控制和监控?远程控制和监控是一种通过网络连接实现的远程管理和监测物联网设备的技术。...远程控制和监控的优势远程控制和监控技术为物联网设备管理和监测提供了许多优势,包括以下几点:实时性:远程控制和监控系统可以提供实时的数据更新和设备状态反馈。...中央管理:远程控制和监控系统将物联网设备的管理集中在一个中心服务器上。这简化了设备管理和配置的复杂性,并提供了更好的可扩展性。故障排除:远程控制和监控系统可以提供详细的设备状态和故障报告。...这方便用户诊断和解决设备故障,减少停机时间和维修成本。远程控制和监控的实现远程控制和监控系统的实现通常包括以下关键步骤:设备连接:物联网设备通过网络连接到远程控制服务器。...通过实时访问和控制物联网设备,用户可以实时了解设备的状态并采取必要的措施。远程控制和监控系统通过中央管理、故障排除和远程访问等功能,提供了更方便和高效的物联网设备管理方式。

    62110

    硬件笔记(8)----USB学习笔记5

    10.2 配置描述符 该描述符会提供特定设备配置的信息,如接口数量、设备由总线供电还是自供电、设备能否启动一个远程唤醒以及设备功耗。下表显示的是配置描述符结构。...如果 USB 设备支持远程唤醒,则位 5 将被设置为 1。如果不支持远程唤醒,则位 5 将被设置为 0。 bMaxPower 定义了设备全速运行时通过总线消耗的最大功耗,以 2 mA 为单位。...控制端点可以忽略该位。...例如,对于 HID 类设备,开发者必须将报告描述符添加到描述符文件内,用于定义其他设备属性。如果需要额外的描述符,可以在类定义规范或其他类的支持文档中查找相关的描述符格式。...更多有关报告描述符的信息,请参考 AN57473 — PSoC®3 和 PSoC 5LP 的 USB HID 初级应用笔记以及 AN58726 — PSoC®3 和 PSoC 5LP 的 USB HID

    1.7K20

    带你遨游USB世界

    Linux USB驱动总体结构图 从Host侧看,在Linux驱动中,处于USB驱动最底层的是USB主机控制器硬件,在其上运行的是USB主机控制器驱动,在主机控制器上的为USB核心层,再上层为USB设备驱动层...主机控制器驱动负责识别和控制插入其中的USB设备,USB设备驱动控制USB设备如何与主机通信,USB Core则负责USB驱动管理和协议处理的主要工作。...从Device侧看,UDC驱动程序直接访问硬件,控制USB设备和主机间的底层通信。Gadget API是UDC驱动程序回调函数的包装。Gadget Driver具体控制USB设备功能的实现。...2.3、USB描述符 对应上述USB设备的构成,USB采用描述符来描述USB设备的属性,在USB协议的第九章(chaper 9)中,有对USB描述符的详细说明,在Linux驱动的以下文件中,定义了USB...USB鼠标遵循USB HID(Human Interface Device)规范。 在probe中探测设备是否符合HID规范,并且创建和初始化URB: ? ?

    2.7K21

    VFP与NodeJS 物联网使用MQTT设备远程控制搭建与应用

    一、开发准备 1.NODEJS 官方下载地址:https://nodejs.org/zh-cn/download 2.VFP sp2 7423 公众号菜单可下载 3.祺佑三层开发框架 4.美光人脸识别设备...(MQTT协议) 二、硬件配置 按照文档要求配置人脸设备后台MQTT相关配置(必须要与服务一致否刚将通讯失败) 安装npminit与npm install mqtt组件后再操作下面步骤 启动服务器端配置文档...,服务器端必须要在打通外网的情况才可以(加菲猫已封装好) 双击启动服务 启动后出现设备推送的通讯包,说明MQTT设备跟服务器之间打通数据互通,可以进行下一步操作了 服务数据接受端,用于处理软件跟服务器之间交互的结果及需要处理其它事务...,前端提示成功 服务器,接受端有一条处理结果说明同步成功,这样一台MQTT设备就可以透过软件同步人员信息,照片了,当然远程控制也是可以,比如设备上有继电器,远程就可以控制开关门,有语音提示就可以远程推送语音播报...,具体应用需要根据需求来订制,有需求就有方案与解决方法,期待你的合作!

    13010

    13.USB驱动

    USB设备就必须回答"我是xxx", 并且回答的语言必须是中文 USB总线驱动程序会发出某些命令想获取设备信息(描述符), USB设备必须返回"描述符"给PC 问3....2.USB的传输类型: a. 控制传输:可靠,时间有保证,比如:USB设备的识别过程 b. 批量传输: 可靠, 时间没有保证, 比如:U盘 c....\Ch9.h看到 2.查找并安装对应的设备驱动程序 3.提供USB读写函数 要想成为一个USB主机,硬件上就必须要有USB主机控制器,USB主机控制器又分为4种接口: OHCI(Open Host Controller...; //本描述符的size __u8 bDescriptorType;//描述符的类型,这里是设备描述符DEVICE __le16 bcdUSB;//指名usb的版本,比如usb2.0...比较类型的宏如下: //USB_DEVICE_ID_MATCH_INT_INFO:用于匹配设备的接口描述符的3个成员 //USB_DEVICE_ID_MATCH_DEV_INFO:用于匹配设备描述符的3

    2K20

    USB 协议核心概念与实践

    在介绍数据发送流程之前,我们先来看下描述符。 描述符 所有的 USB 设备端设备,都使用一系列层级的描述符 (Descriptors) 来向主机描述自身信息。...设备描述 每个 USB 设备只能有一个设备描述(Device Descriptor),该描述符中包括了设备的 USB 版本、厂商、产品 ID 以及包含的配置描述符个数等信息,如下所示: /* USB_DT_DEVICE...bmAttributes 指定了该配置的电源参数信息,D6 表示是否为自电源驱动;D5 表示是否支持远程唤醒;D7 在 USB1.0 中曾用于表示是否为总线供电的设备,但是在 USB2.0 中被 bMaxPower...端点描述 端点描述符用来描述除了零端点(ep0)之外的其他端点,零端点总是被假定为控制端点,并且在开始请求任意描述符之前就已经被配置好了。...中断传输通常是非周期性的,并且传输过程保留部分带宽,常用于时间敏感的数据,比如键盘、鼠标等 HID 设备。

    1.7K51

    基于STM32CUBE的USB鼠标键盘二合一

    感兴趣的就看一眼,没兴趣的就算了。 前面两篇文章分别说了如何实现基于STM32的USB鼠标和基于STM32的USB键盘。这篇文章,我们试着同时在一个USB设备上,实现USB的鼠标与键盘二合一。...首先,在5.3.0版本的STM32CubeMX上选择STM32F103C8T6芯片。具体操作和USB鼠标的操作一样,这里就不重复了。 同理,VID和PID要和之前的设备不一样。...第二,修改usbd_hid.c中的配置集合(USBD_HID_CfgFSDesc)。如下图所示,框住的地方是个宏定义。配置集合的长度,由之前的34,变为41. ? 端点个数,由1变成2...., /*bInterval: Polling Interval */ 第三,修改HID描述符中,报告描述符的长度: ?...现在我们要实现的是键盘与鼠标二合一,要修改的核心位置就是报告描述符这里。 简单来说,就是把前面两个例程中的报告描述符合二为一。一个数组里面,上面放键盘的报告描述符,下面放鼠标的报告描述符。

    2.6K41

    ATtiny85漏洞利用框架HID测试分析

    今天的主角就是这款名叫Flashsploit的工具,它是一款基于ATtiny85的HID攻击的漏洞利用框架,广大研究人员可以在它的帮助下,可以对各类设备进行HID渗透攻击测试。...HID攻击介绍 HID是(Human Interface Device)的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。...不过HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。一般来讲针对HID的攻击主要集中在键盘鼠标上,因为只要控制了用户键盘,基本上就等于控制了用户的电脑。...Flashsploit Flashsploit是一款使用ATtiny85 HID设备(例如Digispark USB开发面板等等)来执行渗透攻击的漏洞利用开发框架。...Windows平台 数据提取 可提取所有存储的WiFi密码,并将数据以XML格式存储,然后上传至远程SFTP服务器: 提取目标系统中的网络配置信息,并上传至远程SFTP服务器: 使用Mimikatz提取密码以及其他敏感信息

    1.3K10

    基于STM32CubeMX的USB鼠标例程

    最近在玩STM32CUBE的USB功能,用起来还是挺方便的。只要配置一下,设备描述符、配置描述符、接口描述符什么的,都能给你自动生成,其中还包括比较复杂的报告描述符。...这个我可以回答,因为你选的是HID,而不是存储类设备。 为什么不是游戏手柄? 其实,你可以理解为,这是官方提供给我们的一个鼠标例程。...USB设备回答:… 6、两次回答一样,说明USB设备的地址分配成功。USB主机继续提问,获取其它描述符。 7、USB设备,在向主机回复配置集合的时候,表明自己的身份:你好,我是个鼠标!...也就是说,在配置集合中,有信息说明这个设备是鼠标,我们看下。在usb_hid.c文件中,有一个数组:USBD_HID_CfgFSDesc,其中一行: ? 单是这个还不够,还要结合报告描述符。...无论是配置集合,还是报告描述符,这里都不做解释,因为一两篇文章根本说不完。这里只说一点,由于报告描述符的规定,鼠标设备向电脑发送数据的时候,一般是发送4个字节的数据。

    1.7K20

    工业设备机器远程监测控制用物联网网关TG451

    随着科技发展,工业生产制造逐步趋于智能化,工业物联网网关结合物联网技术、无线通信技术广泛应用于智慧工厂,连接工业设备及大型机器组网,以达到设备远程配置升级、操作控制、故障排查自检的目的,实现现代工厂的高效生产...图片1.png 工业物联网网关TG451的工业设备远程监测控制应用 1、支持主流PLC远程程序上下载,远程配置升级。 2、RS232/485接口,支持串口采集传输。...6、管理平台数据分析处理、查询、设备报警、控制,各部门统一管理,高效协作。 7、设备管理平台远程维护、升级、配置、监控。...8、现场生产设备机器远程操控、起停、异常报警,工作状态、能耗、位置信息等在线实时监测。 9、导轨安装操作简便。...3、传输稳定可靠,看门狗检测机制,软硬件多级检测,确保设备不死机,设备自恢复机制。 4、数据安全,支持多种VPN协议(OpenVPN、IPSEC、PPTP、L2TP等。

    42620

    利用Android Lost通过互联网或短信远程控制安卓设备

    利用Android Lost通过互联网或短信远程控制安卓设备 作者:Jack Wallen| 杰克·瓦伦 翻译:PurpleEndurer。...你就能够通过互联网或短信服务远程控制安卓设备。...▲ 通过短信远程报警   ▲ 通过短信远程锁定和解锁   ▲ 通过短信远程擦除SD卡   ▲ 通过短信远程清理手机   ▲ 通过短信远程控制APN   ▲ 启动/停止GPS   ▲ 启动/停止Wi-Fi...要远程擦除设备,请运行下面操作:   1.选择Controls(控制)选项卡   2.单击Security(控制)子选项   3.向下滚动至底部   4.单击Wipe Phone(清理手机)(你也能够选定...假设你正在寻找其他第三方工具来远程清洗设备中的数据或帮助定位设备,请尝试一下Android Lost,接下来就会喜欢这个主意。由于这能够让你的数据免遭邪恶之手。

    1.1K20

    浅谈总线通信机制----USB学习指南与总结

    (2)电源态(供电态) 就是给设备供电,分为设备接入时的默认供电值,配置阶段后的供电值(按数据中要求的最大值,可通过编程设置),在配置描述符中可以配置最大电流。...USB协议涉及到的概念主要有:传输、事务、包、域,它们的关系又是怎么样的? USB的传输主有四种:控制传输(目前工作用到),同步传输,中断传输(目前工作用到),批量传输。...枚举将是整个USB学习的重中之重,枚举就是主机从设备读取各种描述符信息,这样主机就可以根据这些信息加载合适的的驱动程序,从而知道是什么类型的设备,如何进行通信等等。...而主机要获取设备相关的信息就必须要发起请求,请求主要有:USB标准请求(有一定的格式组成)、HID类请求等。 ? ? ?...说到描述符,USB有标准描述符,分别是:设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符 (可选),每个设备都必须要支持标准描述符,还有HID描述符,报告描述符,物理描述符等。 ? ?

    1.3K20
    领券