![/dev/ttyACM0 睡眠后丢失 - 如何重新检测/重新启动/重新扫描 ttyACM0?](https://linux22.com/image/172626/%2Fdev%2FttyACM0%20%E7%9D%A1%E7%9C%A0%E5%90%8E%E4%B8%A2%E5%A4%B1%20-%20%E5%A6%82%E4%BD%95%E9%87%8D%E6%96%B0%E6%A3%80%E6%B5%8B%2F%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%2F%E9%87%8D%E6%96%B0%E6%89%AB%E6%8F%8F%20ttyACM0%EF%BC%9F.png)
我已经发布这个问题在 Ubuntu 中,但被告知它不属于那里,因为我的安装是 Mint 18.2,需要移到这里(我不知道如何移动它)。
我有一个基于 Ubuntu 16.04 的虚拟机 (Mint 18.2),它在 Windows 10 上的 VirtualBox (6.2) 内运行。
eric@XMEANT ~ $ uname -a
Linux XMEANT 4.8.0-53-generic #56~16.04.1-Ubuntu SMP Tue May 16 01:18:56 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
在我的主机上,我连接了 ZWave USB 天线,然后将其映射/附加到虚拟机。当我第一次启动虚拟机时,我可以看到 USB 设备被正确检测为/dev/ttyACM0
:
eric@XMEANT ~ $ dmesg | grep acm
[ 18.593264] cdc_acm 2-2:1.0: ttyACM0: USB ACM device
eric@XMEANT ~ $ ls /dev/ttyA*
/dev/ttyACM0
但是,当我将主机从睡眠模式唤醒后,我不再看到我的/dev
.
eric@XMEANT ~ $ ls /dev/ttyA*
ls: cannot access '/dev/ttyA*': No such file or directory
按照我在另一个上找到的提示超级用户问题,我尝试了以下方法:
eric@XMEANT ~ $ cat /proc/tty/drivers
/dev/tty /dev/tty 5 0 system:/dev/tty
/dev/console /dev/console 5 1 system:console
/dev/ptmx /dev/ptmx 5 2 system
/dev/vc/0 /dev/vc/0 4 0 system:vtmaster
acm /dev/ttyACM 166 0-255 serial
ttyprintk /dev/ttyprintk 5 3 console
max310x /dev/ttyMAX 204 209-224 serial
serial /dev/ttyS 4 64-111 serial
pty_slave /dev/pts 136 0-1048575 pty:slave
pty_master /dev/ptm 128 0-1048575 pty:master
unknown /dev/tty 4 1-63 console
eric@XMEANT ~ $ lsmod | grep acm
cdc_acm 36864 0
eric@XMEANT ~ $ sudo modprobe -r cdc_acm
eric@XMEANT ~ $ sudo modprobe cdc_acm
但是,仍然没有找到设备:
eric@XMEANT ~ $ ls /dev/ttyA*
ls: cannot access '/dev/ttyA*': No such file or directory
我还尝试重置我的 USB 驱动程序/模块,但它们内置于内核中,不知道如何独立重新加载它们。
modprobe: FATAL: Module ehci_pci is builtin.
modprobe: FATAL: Module ehci_hcd is builtin.
modprobe: FATAL: Module ohci_pci is builtin.
modprobe: FATAL: Module ohci_hcd is builtin.
Reloading USB modules...
我也看到了这个阿库本图问题,但不确定它是否真的适用,因为它没有被检测为 USB 设备,而是被检测为 ACM 设备。我尝试重新启动 ModemManager,但这也没有任何影响。
最后,我尝试从 VirtualBox 取消映射并重新映射它,但没有什么区别。我能想到的唯一方法是重新启动虚拟机。但这并不是一个真正有效的解决方案,因为重新启动我的虚拟机和所有服务等可能需要几分钟的时间。
有没有其他方法可以强制虚拟机重新扫描/重新检测丢失的设备或重新启动找到它所需的子服务?