如何修复 Ubuntu 14.04 VirtualBox VM 中的 USB 3.0 问题

如何修复 Ubuntu 14.04 VirtualBox VM 中的 USB 3.0 问题

过去几天我花了大量时间寻找解决这一挑战的方法。

我有一个 Seagate Expansion Desktop Drive,这是一个用于测试的外部 2 TB USB 3.0 磁盘。在一次测试中,该驱动器连接到我的 Macbook Pro 上的 USB 3.0 端口,在另一次测试中,该驱动器连接到我的 Mac Mini 上的 USB 3.0 端口。Macbook Pro 和 Mac Mini 都安装了 virtualbox 和 Ubuntu 客户端。Ubuntu 客户端应该可以访问该驱动器。

我当前的设置:Macbook Pro:

Model Name: MacBook Pro
  Model Identifier: MacBookPro11,1
  Processor Name:   Intel Core i7
  Processor Speed:  2,8 GHz
  Number of Processors: 1
  Total Number of Cores:    2
  L2 Cache (per Core):  256 KB
  L3 Cache: 4 MB
  Memory:   16 GB
  Boot ROM Version: MBP111.0138.B15
  SMC Version (system): 2.16f68

版本:

主持人:

Mac OSX: 10.10.5
VirtualBox: 5.0.4 r102546
USB device: Seagate Expansion Desktop Drive 2TB
Oracle VM VirtualBox Extension Pack: 5.0.4r102546 Installed
In Setup - Ports - USB  USB 3.0 (xHCI) Controller is enabled

客人:

Guest:  Ubuntu 14.04
VboxGuestAdditions installed

uname -a

Linux patal-vbox-ubuntu-002 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

前提条件: Seagate 硬盘已连接到 Macbook Pro(或 Mini)上的电源和 USB 3.0 端口(在 osx 中的 Filer 中弹出) Macbook Pro 已启动并登录 VirtualBox 已启动 Guest(Ubuntu 14.04)已启动并登录(窗口模式不是全屏)

预期结果:Seagate 驱动器应列在 ubuntu 中的设备下的文件管理器中。驱动器应列在 /dev 中,例如 ubuntu 中的 /dev/sdb 驱动器应可在 ubuntu 中安装

实际结果: Ubuntu 中的设备下的文件管理器中未列出该驱动器 Ubuntu 中的 /dev 下未列出该驱动器

root@patal-vbox-ubuntu-002:~# ls -al /dev/sd*
brw-rw---- 1 root disk 8, 0 sep 26 09:16 /dev/sda
brw-rw---- 1 root disk 8, 1 sep 26 09:11 /dev/sda1
brw-rw---- 1 root disk 8, 2 sep 26 09:16 /dev/sda2
brw-rw---- 1 root disk 8, 5 sep 26 09:11 /dev/sda5

lsusb:

root@patal-vbox-ubuntu-002:~# lsusb
Bus 002 Device 002: ID 0bc2:3321 Seagate RSS LLC 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Seagate RSS LLC 的详细 lsusb 输出:root@patal-vbox-ubuntu-002:~# lsusb -v

Bus 002 Device 002: ID 0bc2:3321 Seagate RSS LLC 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         9
  idVendor           0x0bc2 Seagate RSS LLC
  idProduct          0x3321 
  bcdDevice            1.00
  iManufacturer           2 Seagate
  iProduct                3 Expansion Desk
  iSerial                 1 NA4KX5JA
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          121
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst              15
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst              15
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       1
      bNumEndpoints           4
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     98 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst              15
        MaxStreams             32
        Data-in pipe (0x03)
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst              15
        MaxStreams             32
        Data-out pipe (0x04)
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst              15
        MaxStreams             32
        Status pipe (0x02)
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x04  EP 4 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               0
        bMaxBurst               0
        Command pipe (0x01)
Binary Object Store Descriptor:
  bLength                 5
  bDescriptorType        15
  wTotalLength           22
  bNumDeviceCaps          2
  USB 2.0 Extension Device Capability:
    bLength                 7
    bDescriptorType        16
    bDevCapabilityType      2
    bmAttributes   0x00000002
      Link Power Management (LPM) Supported
  SuperSpeed USB Device Capability:
    bLength                10
    bDescriptorType        16
    bDevCapabilityType      3
    bmAttributes         0x00
    wSpeedsSupported   0x000e
      Device can operate at Full Speed (12Mbps)
      Device can operate at High Speed (480Mbps)
      Device can operate at SuperSpeed (5Gbps)
    bFunctionalitySupport   1
      Lowest fully-functional device speed is Full Speed (12Mbps)
    bU1DevExitLat          10 micro seconds
    bU2DevExitLat        2047 micro seconds
Device Status:     0x0001
  Self Powered

dmesg 输出:

[  795.810773] usb 2-1: new SuperSpeed USB device number 3 using xhci_hcd
[  795.829590] usb 2-1: New USB device found, idVendor=0bc2, idProduct=3321
[  795.829594] usb 2-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1
[  795.829595] usb 2-1: Product: Expansion Desk
[  795.829596] usb 2-1: Manufacturer: Seagate
[  795.829597] usb 2-1: SerialNumber: NA4KX5JA
[  795.857795] usb 2-1: USB controller 0000:00:0c.0 does not support streams, which are required by the UAS driver.
[  795.857798] usb 2-1: Please try an other USB controller if you wish to use UAS.
[  795.857799] usb-storage 2-1:1.0: USB Mass Storage device detected
[  795.857848] scsi host5: usb-storage 2-1:1.0
[  822.485641] usb 2-1: reset SuperSpeed USB device number 3 using xhci_hcd
[  822.503463] xhci_hcd 0000:00:0c.0: xHCI xhci_drop_endpoint called with disabled ep ffff880013ebac00
[  822.503468] xhci_hcd 0000:00:0c.0: xHCI xhci_drop_endpoint called with disabled ep ffff880013ebac48
[  890.772127] audit_printk_skb: 120 callbacks suppressed
[  890.772130] audit: type=1400 audit(1443252349.697:62): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/lib/cups/backend/cups-pdf" pid=2761 comm="apparmor_parser"
[  890.772135] audit: type=1400 audit(1443252349.697:63): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/sbin/cupsd" pid=2761 comm="apparmor_parser"
[  890.772386] audit: type=1400 audit(1443252349.697:64): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/sbin/cupsd" pid=2761 comm="apparmor_parser"

我怀疑问题出在 dmesg 的这一行:

[  795.857795] usb 2-1: USB controller 0000:00:0c.0 does not support streams, which are required by the UAS driver.

这是 Virtualbox 问题还是 Ubuntu 问题?ubuntu 无法正确处理 USB xHCI 控制器吗?

顺便说一下,该驱动器可以在专用的 kubuntu 工作站上运行,也可以在同一个 macbook pro 的 Windows 10 VM 上运行。

@nephente(按要求添加)我假设您的意思是将 VirtualBox 中的控制器设置为 USB 2.0 (EHCI) 控制器。如果是这样,那么我在 VirtualBox 中会收到以下错误:

Failed to attach the USB device Seagate Expansion Desk [0100] to the virtual machine patal-vbox-ubuntu-002. 

Failed to create a proxy device for the USB device. 

(Error: VERR_PDM_NO_USB_PORTS). 

Result Code:    NS_ERROR_FAILURE (0x80004005) Component: ConsoleWrap Interface: IConsole {872da645-4a9b-1727-bee2-5585105b9eed}

我还尝试过但没提到的另一件事是将 USB 3.0 设备连接到 USB 2.0 集线器,然后将集线器连接到 Macbook Pro。这也不起作用。

@Takkat 感谢您创建过滤器并确保驱动器从 osx 中卸载/弹出的建议。

我已经为 Seagate Expansion Desk(Desk 即 Desktop)创建了一个过滤器,并确保该驱动器未安装在 osx 中。

结果:确保驱动器未安装并为驱动器创建过滤器没有任何区别。驱动器仍被识别,如本文开头所述。

答案1

VirtualBox 5.0 版最近添加了 USB 3.0 支持。请阅读发行说明这里.(为了快速搜索,请使用浏览器中的搜索功能并输入“USB 3”)。

为了访问此新功能,您必须安装扩展包。

在这里下载

为了安装扩展包,您必须右键单击下载的文件并选择“使用...”virtualbox 打开。

我不知道这是否与在 Linux 中相同(在 MAC 中),但您可能需要将您的用户添加到“virtualbox”组才能顺利访问某些功能。

答案2

我遇到了同样的问题。升级 VirtualBox 后,我关闭了虚拟机,并在其 VirtualBox 属性中修改了 USB 控制器为 USB 3.0 (xHCI)。

现在,我的 USB 外置驱动器运行正常。

答案3

我在使用 USB3 和 USB2 时遇到了困难。我已加载 Guest Additions 和扩展包。什么也没显示。我使用lsusbLinux 终端识别一个设备,并(在虚拟机关闭时)使用总线、设备、供应商 ID 和产品 ID 创建了一个 USB3 过滤器。

例子:

总线 010 设备 006:ID 1f75:0903 Innostor Technology Corporation。总线编号 = 特定的 USB3 控制器。

设备编号是设备上的端口。ID 是供应商 ID(最初在实际十六进制地址前可能有一个 0x)。

我的设备供应商 ID 是 1f75,但它显示为 0x1f75,只需使用最后 4 位数字(与产品 ID 相同)一旦我保存并启动,我就可以在启动时看到设备,但 vbox 客户机无法抓取它们。

我从以下位置获取了 Windows USB 驱动程序:

英特尔(英特尔(R)USB_3.0_eXtensible_Host_Controller_Driver)

并安装它,删除我创建的原始过滤器,重新启动虚拟机,一切正常。

相关内容