Por que o disco rígido externo USB 3.0 não funciona a velocidades USB 3.0?

16

Recentemente, comprei uma placa controladora PCI Express x1 USB 3.0 (contendo a controladora NEC USB 3.0) com a intenção de usar um disco rígido externo USB 3.0 com minha caixa Linux. Instalei a placa em um slot PCIe vazio na minha placa-mãe, conectei a placa a um cabo de alimentação, amarrei um cabo USB 3.0 entre uma das novas portas e meu disco rígido externo e conectei o disco rígido a uma tomada de parede. Inicializando o sistema, a unidade funciona 100% como pretendido, com a única exceção da taxa de transferência: em vez de usar a conectividade SuperSpeed ​​de 4,8 Gbps, parece estar voltando à taxa de transferência de alta velocidade do estilo USB 2.0 de 480 Mbps USB. O Disk Utility o mostra como um dispositivo de 480 Mbps e a execução de alguns benchmarks de Disk Utility e dd confirma que a unidade não excede ~ 40 MB / s (o limite aproximado de USB 2.0), apesar de ser um SSD capaz de muito mais do que naquela.

Quando conecto meu HDD USB 3.0, dmesgmostra o seguinte:

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

onde eu esperaria encontrar isso:

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

Meu sistema estava rodando no kernel 2.6.35-25-genérico na época. Então, deparei-me com esse tópico do fórum por uma pessoa que descobriu que um bug, que estava presente nos kernels anteriores a 2.6.37-rc5, poderia ser o culpado por esse tipo de problema. Consequentemente, instalei o kernel principal do Ubuntu 2.6.37-generic para determinar se o problema desapareceria. Não funcionou, então tentei o 2.6.38-rc3-generic, e até o 2.6.38 todas as noites de 2010.02.01, sem sucesso.

Resumindo, estou tentando determinar por que, com o suporte a USB 3.0 no kernel, minha unidade USB 3.0 falha ao executar com a taxa de transferência total do SuperSpeed.

Veja os comentários nesta pergunta para detalhes adicionais.


Saída que pode ser relevante para o problema (ao inicializar a partir de 2.6.38-rc3):

Linhas 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

Seção 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

Seção 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, não detalhado 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

Saída total:

jgottula
fonte
11
Poderíamos ter um simples (não verboso) lsusbtambém, por favor? Você focou muito no controlador e no kernel, que outras pessoas usam com sucesso. Eu suspeito que a unidade pode estar com defeito.
Oli
@Oli: Ok, eu acrescentou que a saída para a questão.
Jgottula
E já que você mencionou que poderia ser a unidade, pode ser relevante notar que eu estou usando o adaptador Rosewill USB3-to-SATA (RAD-SATA-USB3) com uma unidade de Kingston SSDNow V (SNV125-S2 / 30GB).
Jgottula
11
Obrigado. (Mais para outras pessoas - e desculpe se você já disse isso já) o gabinete de unidade utiliza o chipset ASMedia ASM1051.
Oli
No caso este detalhe mostra-se útil, a placa PCIe USB 3.0 é a AUDU3 Azio que, mais uma vez, usa o controlador NEC popular.
jgottula

Respostas:

5

Tem certeza de que o disco está conectado à porta correta (USB 3.0)? Parece que o seu controlador USB 3.0 está fornecendo o barramento USB nº 12, mas o disco está conectado ao barramento USB nº 3.

De acordo com o seu dmesg, o barramento USB nº 3 é fornecido pelo dispositivo PCI '06: 01.2: Controlador USB: VIA Technologies, Inc. USB 2.0 (rev 65) ', que será apenas USB 2.0.

Jeremy Kerr
fonte
4
Para minha grande vergonha, você está absolutamente certo! Tenho duas placas USB saindo da minha placa-mãe e, como precisei conectar meu cabo USB 3.0, devo colocá-lo na placa errada ao executar o Linux e (crucialmente) na porta RIGHT ao executar o Windows! Fazer absolutamente certo de que eu conectava o cabo em uma porta azul desta vez (no Linux) resultou na completa 120 MB / s taxa de transferência. Obrigado senhor por apontar meu erro embaraçoso!
jgottula
Woot! Estou feliz que você you got it classificados :)
Jeremy Kerr
2
Man ... I favorito esta questão só para descobrir mais tarde que era um PEBCAK! : P urbandictionary.com/define.php?term=pebcak
trapalhão idiota
11
PIQUENIQUE é o termo mais favorecido para PEBCAK como é mais fácil de pronunciar e ofertas mais jogo de palavras. PIQUENIQUE = Problema na cadeira Not In Computer.
Kat Amsterdam