如何在 Linux 中清除缓存的 USB 设备签名

如何在 Linux 中清除缓存的 USB 设备签名

如何清除 Linux 对 USB 设备的所有内存?

当我插入多个 USB 设备时,我注意到 Linux 似乎“记住”了它们并将它们重新安装到/dev.

例如,我有一些 Arduino,连接后显示为/dev/ttyACM0/dev/ttyACM1/dev/ttyACM2。如果我将它们全部断开,然后重新连接第二个,它会重新显示为/dev/ttyACM1而不是/dev/ttyACM0,即使它现在是唯一连接的设备。

如何清除记住第二个设备安装为的任何机制/dev/ttyACM1?我发现清除此问题的唯一方法是重新启动,但这对我的系统造成太大破坏。我尝试过重新启动udev,但没有效果。

我正在尝试调试一个问题,即在 Arduino 重新连接到 USB 主机后,其串行连接偶尔会挂起并断开。重新启动后,Arduino 的串行连接工作正常,所以我的理论是我的计算机的 USB 驱动程序中存在一些错误,它会记住旧连接的某些方面,并且它试图将其重新用于新连接,导致其失败。

答案1

您可以卸载并重新加载 USB 串行驱动程序模块:它是cdc-acmftdi-sio

拔掉所有 Arduino 的插头后,运行:

sudo modprobe -r cdc-acm
sudo modprobe -r ftdi-sio

当您重新插入 Arduino 时,内核会自动重新加载它们(以适合您的 Arduino 型号的为准),但是卸载驱动程序应该删除其关于哪个设备是哪个的“记忆”。

答案2

这取决于您的系统(您对此一无所知)。

通常,持久设备分配由 udev 规则处理,并存储在 中,通常存储在名称中/etc/udev/rules.d包含的文件中。persistent看看你在系统上发现了什么。

相关内容