filter hid_HID调试工具

本文列举了几款用于HID(Human Interface Device)设备调试的工具,包括Windows下的PassMark KeyboardTest,Linux的evtest、showkey和hcidump。通过这些工具,开发者可以检查HID设备的输出是否正确,例如在Linux中,hcidump能详细展示蓝牙HID设备的数据传输情况。
摘要由CSDN通过智能技术生成

在做HID相关的产品是,我们经常要看看输出是否正确,这时就需要一些小工具,这些小工具可以自己开发,也可以从网上找些已经做好的,下面介绍几款工具,

1. PassMark KeyboardTest

这是Windows下的一款测试小工具,小巧简单实用,是Windows下面测试的好助手,有一个月的免费试用期。

f5cf05c2a8ba62f69478740fa9753122.png

2. evtest

Linux下面的测试工具,可以使用 “apt-get install evtest”安装。

需要su权限执行,可以选择监听那个“/dev/input/eventXX”。

(注意:直接使用“cat /dev/input/eventXX”会产生一堆乱码)

3. showkey

Linux下面的测试工具,ubuntu好些不需要安装可以直接使用,命令“showkey -a”显示输入的字符。

4. hcidump

这是一款Linux下的工具,可以使用命令“apt-get install bluez-hcidump”安装,其功能和命令十分丰富,

打开help文档,可以看到有如下功能,

# hcidump --help

Usage: hcidump [OPTION...] [filter]

-i, --device=hci_dev HCI device

-l, --snap-len=len Snap len (in bytes)

-p, --psm=psm Default PSM

-m, --manufacturer=compid Default manufacturer

-w, --save-dump=file Save dump to a file

-r, --read-dump=file Read dump from a file

-d, --wait-dump=host Wait on a host and send

-t, --ts Display time stamps

-a, --ascii Dump data in ascii

-x, --hex Dump data in hex

-X, --ext Dump data in hex and ascii

-R, --raw Dump raw data

-C, --cmtp=psm PSM for CMTP

-H, --hcrp=psm PSM for HCRP

-O, --obex=port Channel/PSM for OBEX

-P, --ppp=channel Channel for PPP

-S, --sap=channel Channel for SAP

-D, --pppdump=file Extract PPP traffic

-A, --audio=file Extract SCO audio data

-Y, --novendor No vendor commands or events

-4, --ipv4 Use IPv4 as transport

-6 --ipv6 Use IPv6 as transport

-h, --help Give this help list

-v, --version Give version information

--usage Give a short usage message举例来说其强大的功能,Bluetooth HID输入“12345”,选择既输出ASCII又输出hex,结果如下,

# hcidump -X

HCI sniffer - Bluetooth packet analyzer ver 2.5

device: hci0 snap_len: 1500 filter: 0xffffffffffffffff

> ACL data: handle 21 flags 0x02 dlen 14

L2CAP(d): cid 0x0041 len 10 [psm 0]

0000: a1 01 00 00 1e 00 00 00 00 00 ..........

1> ACL data: handle 21 flags 0x02 dlen 14

L2CAP(d): cid 0x0041 len 10 [psm 0]

0000: a1 01 00 00 1f 00 00 00 00 00 ..........

> ACL data: handle 21 flags 0x02 dlen 14

L2CAP(d): cid 0x0041 len 10 [psm 0]

0000: a1 01 00 00 20 00 00 00 00 00 .... .....

23> ACL data: handle 21 flags 0x02 dlen 14

L2CAP(d): cid 0x0041 len 10 [psm 0]

0000: a1 01 00 00 21 00 00 00 00 00 ....!.....

> ACL data: handle 21 flags 0x02 dlen 14

L2CAP(d): cid 0x0041 len 10 [psm 0]

0000: a1 01 00 00 22 00 00 00 00 00 ....".....

45> ACL data: handle 21 flags 0x02 dlen 14

L2CAP(d): cid 0x0041 len 10 [psm 0]

0000: a1 01 00 00 00 00 00 00 00 00 ..........Bluetooth HID输入“12345”,选择输出raw data,结果如下,

从结果上看,输出6行,前5行是输出“Press Key”事件(12345),最后一个是“release key”事件。

正常而言,一般是 按下(press)一个Key后,马上松开(release);不过这会造成传输效率低下,所以这里是只传输按下(press) key的事件,最后才传输一个松开(release) key的事件(我们称之为Fast HID)。不过,这在一些设备上会出现丢失字符的现象。所以需要修改Bluetooth firemare来设置一个选项Enable/Disable "Fast HID"。

# hcidump -R

HCI sniffer - Bluetooth packet analyzer ver 2.5

device: hci0 snap_len: 1500 filter: 0xffffffffffffffff

> 02 15 20 0E 00 0A 00 41 00 A1 01 00 00 1E 00 00 00 00 00

> 02 15 20 0E 00 0A 00 41 00 A1 01 00 00 1F 00 00 00 00 00

> 02 15 20 0E 00 0A 00 41 00 A1 01 00 00 20 00 00 00 00 00

> 02 15 20 0E 00 0A 00 41 00 A1 01 00 00 21 00 00 00 00 00

> 02 15 20 0E 00 0A 00 41 00 A1 01 00 00 22 00 00 00 00 00

> 02 15 20 0E 00 0A 00 41 00 A1 01 00 00 00 00 00 00 00 00

5.  还有其他Linux节点与此有关,如/dev/hidrawX,没有搞懂里面数据的具体含义;

另外,还有节点/dev/input/eventX,但是没有细细研究。

$ sudo hexdump /dev/hidraw0

0000000 0001 2300 0000 0000 0100 0000 0026 0000

0000010 0000 0001 1f00 0000 0000 0100 0000 001e

0000020 0000 0000 0001 2400 0000 0000 0100 0000

0000030 0020 0000 0000 0001 2100 0000 0000 0100

0000040 0000 0026 0000 0000 0001 2700 0000 0000

0000050 0100 0000 0000 0000 0000 0001 2700 0000

0000060 0000 0100 0000 001e 0000 0000 0001 2500

0000070 0000 0000 0100 0000 0027 0000 0000 0001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值