USB host

USB Host 是指能够控制和管理 USB 设备的系统或硬件,它负责为连接的 USB 设备(如U盘、键盘、鼠标等)提供电源、数据传输和管理功能。

Quectel Pi H1 单板电脑自带2个标准USB 2.0 Type-A接口和1个USB 3.1 Type-C接口,兼容USB 2.0。USB 2.0接口最高数据传输速率可达480 Mbps,USB 3.1接口最高数据传输速率可达5 Gbps。

硬件接口

测试 USB 接口的 HOST 模式功能,我们可以测试 USB 接口连接的设备基础功能和 U 盘读写速度。

功能使用

查看所有输入设备

cat /proc/bus/input/devices

会列出系统当前识别的所有输入设备

输出示例:

I: Bus=0000 Vendor=0000 Product=0000 Version=0001
N: Name="pm8xxx_vib_ffmemless"
P: Phys=
S: Sysfs=/devices/platform/soc@0/c440000.spmi/spmi-0/0-09/c440000.spmi:pmic@9:pm7250b-vib@5300/input/input0
U: Uniq=
H: Handlers=event0
B: PROP=0
B: EV=200001
B: FF=107030000 0

Name:设备名称(如鼠标或键盘)

Handlers:设备对应的事件接口

使用 lsusb 查看 USB 设备

给 USB 接口连接读卡器、鼠标、键盘等设备,通过插拔测试设备是否正常识别和使用。

未接外设

使用lsusb命令查看当前系统识别的设备

终端输出示例:

Bus 001 Device 002: ID 1a86:8091 QinHeng Electronics USB HUB
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

已接外设

连接键盘、鼠标等设备到USB接口,使用lsusb命令查看是否新增设备

终端输出示例:USB接口连接了键盘、鼠标

Bus 001 Device 005: ID 17ef:6099 Lenovo Lenovo Traditional USB Keyboard
Bus 001 Device 004: ID 17ef:608d Lenovo Optical Mouse
Bus 001 Device 002: ID 1a86:8091 QinHeng Electronics USB HUB
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

使用 dmesg 查看插入设备的系统日志

sudo dmesg | tail -n 20

查看系统最近 20 条内核日志,用于观察设备插拔或驱动加载的情况。

U 盘读写

使用 U 盘连接到 USB 接口,使用 dd 命令测试 U 盘读写速度。

确认存储设备

使用lsblk命令确认U盘的设备名称

lsblk

终端输出示例:


sda       8:0    0 116.1G  0 disk
|-sda1    8:1    0   512M  0 part /efi
|-sda2    8:2    0    30M  0 part /var/persist
`-sda3    8:3    0 115.6G  0 part /
sdb       8:16   0     8M  0 disk
|-sdb1    8:17   0   3.5M  0 part
|-sdb2    8:18   0   512K  0 part
`-sdb3    8:19   0   3.5M  0 part
sdc       8:32   0     8M  0 disk
|-sdc1    8:33   0   3.5M  0 part
|-sdc2    8:34   0   512K  0 part
`-sdc3    8:35   0   3.5M  0 part
sdd       8:48   0    32M  0 disk
|-sdd1    8:49   0   104K  0 part
|-sdd2    8:50   0   128K  0 part
|-sdd3    8:51   0     1M  0 part
|-sdd4    8:52   0     1M  0 part
`-sdd5    8:53   0     1M  0 part
sde       8:64   0     3G  0 disk
|-sde1    8:65   0   512K  0 part
|-sde2    8:66   0    64M  0 part
|-sde3    8:67   0   256K  0 part
|-sde4    8:68   0     2M  0 part
|-sde5    8:69   0     5M  0 part
|-sde6    8:70   0     4M  0 part
|-sde7    8:71   0     8M  0 part
|-sde8    8:72   0     4M  0 part
|-sde9    8:73   0    32M  0 part
|-sde10   8:74   0   128K  0 part
|-sde11   8:75   0    80K  0 part
|-sde12   8:76   0     2M  0 part
|-sde13   8:77   0     2M  0 part
|-sde14   8:78   0   128K  0 part
|-sde15   8:79   0    32K  0 part
|-sde16 259:0    0     1M  0 part
|-sde17 259:1    0   256K  0 part
|-sde18 259:2    0   512K  0 part
|-sde19 259:3    0   256K  0 part
|-sde20 259:4    0    64M  0 part
|-sde21 259:5    0     2M  0 part
|-sde22 259:6    0     5M  0 part
|-sde23 259:7    0     4M  0 part
|-sde24 259:8    0     8M  0 part
|-sde25 259:9    0     4M  0 part
|-sde26 259:10   0    32M  0 part
|-sde27 259:11   0   128K  0 part
|-sde28 259:12   0    80K  0 part
|-sde29 259:13   0     2M  0 part
|-sde30 259:14   0     2M  0 part
|-sde31 259:15   0   128K  0 part
|-sde32 259:16   0    32K  0 part
|-sde33 259:17   0     1M  0 part
|-sde34 259:18   0   256K  0 part
|-sde35 259:19   0     4K  0 part
|-sde36 259:20   0     4K  0 part
|-sde37 259:21   0     4K  0 part
|-sde38 259:22   0    16M  0 part
|-sde39 259:23   0    30M  0 part
|-sde40 259:24   0     1M  0 part
|-sde41 259:25   0  32.6M  0 part
|-sde42 259:26   0     4K  0 part
|-sde43 259:27   0     4K  0 part
|-sde44 259:28   0     1M  0 part
|-sde45 259:29   0     8M  0 part
|-sde46 259:30   0    40M  0 part
|-sde47 259:31   0   512M  0 part
|-sde48 259:32   0    28K  0 part
|-sde49 259:33   0   512K  0 part
|-sde50 259:34   0     1M  0 part
`-sde51 259:35   0  32.6M  0 part
sdf       8:80   0    32M  0 disk
|-sdf1    8:81   0     3M  0 part
|-sdf2    8:82   0     3M  0 part
|-sdf3    8:83   0     3M  0 part
`-sdf4    8:84   0   128K  0 part
sdg       8:96   1   7.5G  0 disk
`-sdg1    8:97   1   7.5G  0 part /mnt/sdcard1
zram0   253:0    0   3.8G  0 disk [SWAP]

其中sdg为当前U盘设备名称,请根据实际情况进行替换

测试写入性能

sudo dd if=/dev/zero of=/dev/sdg bs=1M count=100
  • dd : Linux 系统中的一个命令行工具,用于复制和转换文件。

  • if=/dev/zero : 指定输入文件为 /dev/zero,这是一个特殊的文件,会提供无限的零字节数据。

  • of=/dev/sdg : 指定输出文件为 /dev/sdg,即 U 盘设备。

  • bs=1M : 指定块大小为 1MB。

  • count=100 : 指定复制 100 个块。

这个命令会将 100MB 的零字节数据写入 U 盘,显示写入速度。

终端输出示例:

100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.0367901 s, 2.9 GB/s

测试读取性能

sudo dd if=/dev/sdg of=/dev/null bs=1M count=100
  • dd : Linux 系统中的一个命令行工具,用于复制和转换文件。

  • if=/dev/sda : 指定输入文件为 /dev/sda,即 U 盘设备。

  • of=/dev/null : 指定输出文件为 /dev/null,这是一个特殊的文件,会丢弃所有写入的数据。

  • bs=1M : 指定块大小为 1MB。

  • count=100 : 指定复制 100 个块。

这个命令会将 U 盘的 100MB 数据读取到 /dev/null,并显示读取速度。

终端输出示例:

100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 4.97715 s, 21.1 MB/s