我正在使用 ST 微控制器开发 ttyACM 设备,并且使用相同的代码,我的主机有时可以成功枚举它(如下),但有时它只是转储以下消息。错误-32是什么意思?
[无法一一列举]
usb 1-2.1: new full speed USB device number 62 using ehci_hcd
usb 1-2.1: device descriptor read/64, error -32
usb 1-2.1: device descriptor read/64, error -32
usb 1-2.1: new full speed USB device number 63 using ehci_hcd
usb 1-2.1: device descriptor read/64, error -32
usb 1-2.1: device descriptor read/64, error -32
usb 1-2.1: new full speed USB device number 64 using ehci_hcd
usb 1-2.1: device not accepting address 64, error -32
usb 1-2.1: new full speed USB device number 65 using ehci_hcd
usb 1-2.1: device not accepting address 65, error -32
hub 1-2:1.0: unable to enumerate USB device on port 1
[成功的结果]
usb 1-3.1: new full speed USB device number 45 using ehci_hcd
usb 1-3.1: New USB device found, idVendor=0483, idProduct=5740
usb 1-3.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-3.1: Product: ChibiOS/RT Virtual COM Port
usb 1-3.1: Manufacturer: HelloWord
usb 1-3.1: SerialNumber: 262
usb 1-3.1: configuration #1 chosen from 1 choice
cdc_acm 1-3.1:1.0: This device cannot do calls on its own. It is not a modem.
cdc_acm 1-3.1:1.0: ttyACM0: USB ACM device
非常感谢。
AFAIK 状态 -32 表示“管道损坏”(EPIPE)。说明usb通讯(协议)有问题。例如,USB 设备无法正确响应 USB 请求,并且发送一些主机不期望的数据或发送的数据不足。也可能还有其他原因。
第一条消息表明来自主机的“获取设备描述符”和“设置地址”请求存在问题。这些是主机在枚举过程开始时发送的基本请求。如果 USB 设备无法成功满足这些请求,您就无法进一步操作。
此错误可能是由于片上 USB 设备的时钟频率错误造成的。检查您的时钟树配置。频率应为48MHz。如果稍有偏差,则枚举可能有时会成功,有时会失败。如果偏离了,枚举总是会失败。可能存在各种错误,包括您列出的错误。
我已在一台笔记本电脑中安装了 XCP-NG 服务器,但由于以下错误,我的系统也无法启动:USB 3-1 设备描述符读取/64,错误 32
我尝试了很多事情。甚至断开 USB 端口。
直到我想起我已经删除了 Xen 的默认 SR 存储库。于是我就去查看/etc/fstab文件
[root@xcpserver2 ~]# cat /etc/fstab
LABEL=root-jvgtod / ext3 defaults,noatime 1 1
LABEL=swap-jvgtod swap swap defaults 0 0
LABEL=logs-jvgtod /var/log ext3 defaults,noatime 0 2
/opt/xensource/packages/iso/XenCenter.iso /var/xen/xc-install iso9660 loop,ro 0 0
默认 SR 存储库正在尝试获取最后一行的内容。我尝试评论它,它成功了! :) 我的结论是,当 /etc/fstab 文件出现问题时,它也会显示此错误。我希望它有帮助!
所以,我的 /etc/fstab 文件现在看起来像这样,它解决了问题:
[root@xcpserver2 ~]# cat /etc/fstab
LABEL=root-jvgtod / ext3 defaults,noatime 1 1
LABEL=swap-jvgtod swap swap defaults 0 0
LABEL=logs-jvgtod /var/log ext3 defaults,noatime 0 2
#/opt/xensource/packages/iso/XenCenter.iso /var/xen/xc-install iso9660 loop,ro 0 0
可能是输入输出内存管理单元(IOMMU)的问题
就我而言,当在 BIOS 中禁用 IOMMU 时,就会发生这种情况。所以首先,尝试在 BIOS 中启用 IOMMU
然后要支持 AMD-Vi 或 VT-d 需要设置启动选项
amd_iommu=on
或 intel_iommu=on
以防止出现以下错误:
xhci_hcd AMD-Vi: Event logged [IO_PAGE_FAULT domain]
还可能需要
iommu=pt
或 iommu=soft
。它可以解决 Nvidia 或蓝牙设备的一些问题
要永久设置启动选项,请将其添加到
GRUB_CMDLINE_LINUX_DEFAULT
中的/etc/default/grub
,然后运行:
sudo update-grub
或
sudo grub-mkconfig -o /boot/grub/grub.cfg
如果您使用 USB 启动设备,则在选定的 GRUB 菜单条目上按
e
在启动前编辑条目,并在 menuentry 块内的 linux 命令末尾添加启动选项,然后使用 ctrl-x
保存。它将避免您在安装时启动时断开 USB