如何通过更改 ProductID 来识别特定 Raspberry Pi Pico 的串行端口

How to identify the serial port of a specific Raspberry Pi Pico by changing ProductID

提问人:Francesco Mattioli 提问时间:11/15/2023 最后编辑:Francesco Mattioli 更新时间:11/16/2023 访问量:37

问:

我正在编写驱动程序,以通过串行通信与树莓派Pi Pico进行通信。Raspberry Pi Pico软件是用MicroPython(rp2端口)编写的。我需要识别特定的Raspberry Pi Pico设备何时连接到计算机,我想通过修改设备的供应商ID或/和产品ID来做到这一点,我该怎么做?我已经查看了 Micropython 源代码,但找不到要修改的常量。有谁知道解决方案?

编辑

正如 @David Grayson 指出的那样,我无法更改设备 ID 和供应商 ID。如果我想更改设备描述,该怎么办?因此,执行“lsusb”会导致更详细的描述。 我目前为我的董事会获得以下内容。

...
Bus 005 Device 004: ID 2e8a:0005 MicroPython Board in FS mode
...

我可以以某种方式更改描述(FS 模式下的 MicroPython 板)吗?

micropython 树莓派-pi-pico

评论

0赞 David Grayson 11/15/2023
除非您已向 USB 实施者论坛支付了自己的供应商 ID 费用,否则不应分配 USB 产品 ID。如果您仍然这样做,当人们使用您的设备/驱动程序以及具有相同 ID 的合法设备/驱动程序时,可能会导致兼容性问题。(当然,如果 USB 规范一开始就设计得更好,这是可以避免的。
0赞 Francesco Mattioli 11/16/2023
好的,明白了!如果我想更改设备描述,该怎么办?
0赞 Francesco Mattioli 11/16/2023
我在帖子中添加了编辑。
0赞 David Grayson 11/17/2023
使用主板的序列号有什么问题?我想您可以将自己的 USB 字符串描述符添加到设备中,但是当您尝试从程序中读取它时,它可能需要额外的 I/O(这意味着它较慢并且需要访问设备的权限),而操作系统在枚举期间自动读取序列号。

答:

0赞 David Grayson 11/15/2023 #1

最新版本的 MicroPython RP2 移植将闪存芯片的唯一 ID 公开为 USB 序列号,因此您应该能够仅使用序列号来查找您的特定设备。Linux 通过在 中提供符号链接使它变得非常容易,但在 macOS 和 Windows 中也可以。/dev/serial/by-id

评论

0赞 Francesco Mattioli 11/16/2023
这个解决方案很有趣。但是,如果我不想依赖电路板序列号怎么办?