【问题标题】:How to issue USB device reconnection under WindowsWindows下如何发出USB设备重连
【发布时间】:2012-12-22 06:25:42
【问题描述】:

我有一个基于 FTDI 芯片的 USB 设备。有时,它的驱动程序会卡住。

在linux下,没有问题——设备​​会自动断开,默认内核会重新连接,唯一的问题是设备名称改变了——可以通过udev规则修复。

在windows下,当它卡住时,此时执行read()write()的应用程序线程完全挂起。它不能被 TerminateThreadKillProcess 杀死。

杀死应用程序的唯一方法是物理断开 USB 设备。

任何以编程方式发出设备重新连接的方法,这将消除驱动程序的死锁并允许重新打开端口并在之后继续工作?

如果需要,可以申请管理权限。

【问题讨论】:

  • "devcon.exe restart * ftdi *" "devcon.exe disable * ftdi *" 在挂起状态下失败
  • 坏消息是基于 FTDI 的设备是市场上最可靠的设备! - 基于 PL2303 的设备(和/或其芯片组供应商的驱动程序)严重损坏。
  • 您是否尝试过来自ftdichip.com 的更新驱动程序?
  • 始终使用最新的驱动程序。并试图在没有运气的情况下联系 ftdi 的支持。目前只能提醒用户“请重新连接设备”,试图寻找其他解决方案。

标签: usb deadlock device-driver ftdi


【解决方案1】:

我建议你把你的想法上移一步。您尝试直接重启 USB 设备,何不试试集线器?

我遇到了类似的问题,正在做:

devcon remove *ROOT_HUB* && devcon rescan

USB 设备在挂起时重新连接到集线器。

注意:这将从设备管理器中删除所有 USB 设备并重新添加它们。您可以使用 expect 或类似方法来执行 devcon findall *ROOT_HUB* 并根据需要删除 ROOT_HUB20ROOT_HUB30

【讨论】:

  • 我似乎无法关闭集线器,就像设备本身一样...:/
  • 听起来您的问题可能不在于设备,而在于您的 USB 集线器。您有其他可以试用的计算机或 USB 集线器吗?
  • 这是mb板载USB集线器,我会检查外部无源和有源USB集线器,感谢您的建议!这似乎是真正的解决方案
  • 附加信息:在 win8 下,其稳定的重新连接后会自行卡住。在win7下,它可以在某些mb上禁用root hub
猜你喜欢
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多