¿Por qué el disco duro externo USB 3.0 no funciona a velocidades USB 3.0?

16

Recientemente compré una tarjeta controladora PCI Express x1 USB 3.0 (que contiene el controlador NEC USB 3.0) con la intención de usar un disco duro externo USB 3.0 con mi caja Linux. Instalé la tarjeta en una ranura PCIe vacía en mi placa base, conecté la tarjeta a un cable de alimentación, conecté un cable USB 3.0 entre uno de los puertos nuevos y mi HDD externo, y conecté el HDD a un enchufe de pared para obtener energía. Arrancando el sistema, la unidad funciona al 100% como se esperaba, con la única excepción del rendimiento: en lugar de utilizar la conectividad SuperSpeed ​​de 4.8 Gbps, parece estar retrocediendo al rendimiento de alta velocidad al estilo USB 2.0 de 480 Mbps. Disk Utility lo muestra como un dispositivo de 480 Mbps, y ejecutar un par de Disk Utility y dd benchmarks confirma que la unidad no supera los ~ 40 MB / s (el límite aproximado de USB 2.0), a pesar de ser un SSD capaz de mucho más de ese.

Cuando conecto mi HDD USB 3.0, dmesgmuestra esto:

[ 3923.280018] usb 3-2: new high speed USB device using ehci_hcd and address 6

donde esperaría encontrar esto:

[ 3923.280018] usb 3-2: new SuperSpeed USB device using xhci_hcd and address 6

Mi sistema se estaba ejecutando en el núcleo 2.6.35-25-genérico en ese momento. Luego, me topé con este hilo del foro por una persona que descubrió que un error, que estaba presente en los núcleos antes de 2.6.37-rc5, podría ser el culpable de este tipo de problema. En consecuencia, instalé el núcleo Ubuntu 2.6.37 genérico para determinar si el problema desaparecería. No lo hizo, así que probé 2.6.38-rc3-generic e incluso el 2.6.38 todas las noches desde 2010.02.01, sin éxito.

En resumen, estoy tratando de determinar por qué, con la compatibilidad con USB 3.0 en el kernel, mi unidad USB 3.0 no puede funcionar con el rendimiento total de SuperSpeed.

Vea los comentarios bajo esta pregunta para detalles adicionales.


Salida que puede ser relevante para el problema (al arrancar desde 2.6.38-rc3):

Líneas relevantes de dmesg:

[   19.589491] xhci_hcd 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[   19.589512] xhci_hcd 0000:03:00.0: setting latency timer to 64
[   19.589516] xhci_hcd 0000:03:00.0: xHCI Host Controller
[   19.589623] xhci_hcd 0000:03:00.0: new USB bus registered, assigned bus number 12
[   19.650492] xhci_hcd 0000:03:00.0: irq 17, io mem 0xf8100000
[   19.650556] xhci_hcd 0000:03:00.0: irq 47 for MSI/MSI-X
[   19.650560] xhci_hcd 0000:03:00.0: irq 48 for MSI/MSI-X
[   19.650563] xhci_hcd 0000:03:00.0: irq 49 for MSI/MSI-X
[   19.653946] xHCI xhci_add_endpoint called for root hub
[   19.653948] xHCI xhci_check_bandwidth called for root hub

Sección relevante de sudo lspci -v:

03:00.0 USB Controller: NEC Corporation uPD720200 USB 3.0 Host Controller (rev 03) (prog-if 30)
    Flags: bus master, fast devsel, latency 0, IRQ 17
    Memory at f8100000 (64-bit, non-prefetchable) [size=8K]
    Capabilities: [50] Power Management version 3
    Capabilities: [70] MSI: Enable- Count=1/8 Maskable- 64bit+
    Capabilities: [90] MSI-X: Enable+ Count=8 Masked-
    Capabilities: [a0] Express Endpoint, MSI 00
    Capabilities: [100] Advanced Error Reporting
    Capabilities: [140] Device Serial Number ff-ff-ff-ff-ff-ff-ff-ff
    Capabilities: [150] #18
    Kernel driver in use: xhci_hcd
    Kernel modules: xhci-hcd

Sección relevante de sudo lsusb -v:

Bus 012 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         3 
  bMaxPacketSize0         9
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0003 3.0 root hub
  bcdDevice            2.06
  iManufacturer           3 Linux 2.6.38-020638rc3-generic xhci_hcd
  iProduct                2 xHCI Host Controller
  iSerial                 1 0000:03:00.0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           25
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12
Hub Descriptor:
  bLength               9
  bDescriptorType      41
  nNbrPorts             4
  wHubCharacteristic 0x0009
    Per-port power switching
    Per-port overcurrent protection
    TT think time 8 FS bits
  bPwrOn2PwrGood       10 * 2 milli seconds
  bHubContrCurrent      0 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
 Hub Port Status:
   Port 1: 0000.0100 power
   Port 2: 0000.0100 power
   Port 3: 0000.0100 power
   Port 4: 0000.0100 power
Device Status:     0x0003
  Self Powered
  Remote Wakeup Enabled

Completo, no detallado lsusb:

Bus 012 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 011 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 010 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 009 Device 003: ID 04d9:0702 Holtek Semiconductor, Inc. 
Bus 009 Device 002: ID 046d:c068 Logitech, Inc. G500 Laser Mouse
Bus 009 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 006: ID 174c:5106 ASMedia Technology Inc. 
Bus 003 Device 004: ID 0bda:0151 Realtek Semiconductor Corp. Mass Storage Device (Multicard Reader)
Bus 003 Device 002: ID 058f:6366 Alcor Micro Corp. Multi Flash Reader
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 006: ID 1687:0163 Kingmax Digital Inc. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 046d:081b Logitech, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Salida completa:

jgottula
fuente
1
¿Podríamos tener un simple (no detallado) lsusbtambién por favor? Se ha centrado mucho en el controlador y el núcleo, que otras personas usan con éxito. Sospecho que la unidad podría tener la culpa.
Oli
@Oli: Bien, agregué ese resultado a la pregunta.
jgottula
Y dado que mencionó que podría ser la unidad, puede ser relevante tener en cuenta que estoy usando el adaptador Rosewill USB3 a SATA (RAD-SATA-USB3) con una unidad Kingston SSDNow V (SNV125-S2 / 30GB).
jgottula
1
Gracias. (Más para otras personas, y lo siento si ya lo ha dicho) la carcasa de la unidad utiliza el chipset ASMedia ASM1051.
Oli
En caso de que este detalle resulte útil, la tarjeta USB 3.0 PCIe es la AZiO AUDU3 que, nuevamente, utiliza el popular controlador NEC.
jgottula

Respuestas:

5

¿Está seguro de que el disco está conectado al puerto correcto (USB 3.0)? Parece que su controlador USB 3.0 está proporcionando el bus USB n. ° 12, pero el disco está conectado al bus USB n. ° 3.

Según su dmesg, el bus PCI # 3 lo proporciona el dispositivo PCI '06: 01.2: Controlador USB: VIA Technologies, Inc. USB 2.0 (rev 65) ', que solo será USB 2.0.

Jeremy Kerr
fuente
44
Para mi gran vergüenza, ¡tienes toda la razón! Tengo dos tarjetas USB saliendo de mi placa base y, como tuve que alcanzar para enchufar mi cable USB 3.0, ¡debo haberlo colocado en la incorrecta cuando ejecuto Linux, y (crucialmente) en el puerto DERECHO cuando ejecuté Windows! Estar absolutamente seguro de que conecté el cable a un puerto azul esta vez (en Linux) resultó en un rendimiento total de 120 MB / s. Gracias señor por señalar mi error vergonzoso!
jgottula
woot! Me alegra que lo hayas solucionado :)
Jeremy Kerr
2
Hombre ... ¡Favorecí esta pregunta solo para descubrir después que era un PEBCAK! : P urbandictionary.com/define.php?term=pebcak
tonto tonto
1
PICNIC es el término más preferido para PEBCAK, ya que es más fácil de pronunciar y ofrece más juego de palabras. PICNIC = Problema en la silla, no en la computadora.
Kat Amsterdam