Skip to content

ReSpeaker USB 4 Mic Array LED 控制接口说明

jerryyip edited this page Jun 5, 2019 · 2 revisions

我们可以通过 USB 控制 ReSpeaker USB 4 Mic Array 上的 LED。 其接口通过 Vendor Specific Class 类型 Interface 提供,用 Control Transfer 发送命令。

在 Linux 上,可以用过 lsusb -v -d 2886: 查看设备的 USB 接口信息,其中 LED 的控制接口信息如下。

Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              9 SEEED Control

这里我们用 libusb 的 python 库来实现控制 LED 的功能,代码见:usb_pixel_ring_v2.py

LED 控制命令通过 pyusb 的 usb.core.Device.ctrl_transfer() 发送的,其参数为:

ctrl_transfer(usb.util.CTRL_OUT | usb.util.CTRL_TYPE_VENDOR | usb.util.CTRL_RECIPIENT_DEVICE, 0, command, 0x1C, data, TIMEOUT)

其中,只需要关注 commanddata:

command data note
0 [0] 追踪模式,LED 根据 VAD 和 DOA 变化
1 [red, green, blue, 0] 单色模式,设置 RGB LED 为单一颜色
2 [0] 聆听模式,与追踪模式类似,但失去目标之后 RGB LED 会继续保持状态
3 [0] 等待模式
4 [0] 呼吸模式
5 [0] 旋转模式
6 [r, g, b, 0] * 12 自定义模式,任意设置每个 RGB LED 的颜色
0x20 [brightness] 设置亮度,亮度范围为 0 ~ 0x1F
0x21 [r1, g1, b1, 0, r2, g2, b2, 0] 设置颜色,有两种颜色可设置
0x22 [vad_led] 设置中间的 LED: 0 - 熄灭;1 - 常亮;其它 - 根据 VAD 变化
0x23 [volume] 显示音量,音量范围为 0 ~ 12
Clone this wiki locally