Mengapa hard drive eksternal USB 3.0 tidak dapat berjalan pada kecepatan USB 3.0?

16

Baru-baru ini saya membeli kartu pengontrol PCI Express x1 USB 3.0 (berisi pengontrol NEC USB 3.0) dengan maksud menggunakan hard drive eksternal USB 3.0 dengan kotak Linux saya. Saya memasang kartu di slot PCIe kosong pada motherboard saya, menghubungkan kartu ke kabel daya, menggantung kabel USB 3.0 antara salah satu port baru dan HDD eksternal saya, dan menghubungkan HDD ke stopkontak di dinding untuk daya. Mem-boot sistem, drive bekerja 100% seperti yang dimaksudkan, dengan satu pengecualian throughput: daripada menggunakan konektivitas SuperSpeed ​​4,8 Gbps, tampaknya jatuh kembali ke Kecepatan Tinggi 480 Mbps USB 2.0-throughput gaya 2.0. Disk Utility menunjukkannya sebagai perangkat 480 Mbps, dan menjalankan pasangan Disk Utility dan benchmark dd mengkonfirmasi bahwa drive gagal melebihi ~ 40 MB / s (batas perkiraan USB 2.0), meskipun itu merupakan SSD yang mampu jauh lebih dari bahwa.

Ketika saya menghubungkan HDD USB 3.0 saya, dmesgmenunjukkan ini:

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

di mana saya berharap menemukan ini:

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

Sistem saya berjalan pada kernel 2.6.35-25-generic pada saat itu. Lalu, saya menemukan utas forum ini oleh seseorang yang menemukan bahwa bug, yang ada di kernel sebelum 2.6.37-rc5, bisa menjadi penyebab masalah jenis ini. Akibatnya, saya menginstal kernel Ubuntu mainline 2.6.37-generik untuk menentukan apakah masalah akan hilang. Tidak, jadi saya mencoba 2.6.38-rc3-generic, dan bahkan 2.6.38 setiap malam dari 2010.02.01, tidak berhasil.

Singkatnya, saya mencoba menentukan mengapa, dengan dukungan USB 3.0 di kernel, drive USB 3.0 saya gagal berjalan pada throughput SuperSpeed ​​penuh.

Lihat komentar di bawah pertanyaan ini untuk detail tambahan.


Output yang mungkin relevan dengan masalah (saat booting dari 2.6.38-rc3):

Baris yang relevan dari 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

Bagian yang relevan dari 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

Bagian yang relevan dari 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

Penuh, tanpa kata-kata 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

Output penuh:

jgottula
sumber
1
Bisakah kita memiliki yang sederhana (non-verbal) lsusbjuga? Anda telah meletakkan banyak fokus pada controller dan kernel, yang keduanya digunakan orang lain dengan sukses. Saya curiga drive itu salah.
Oli
@ Oli: Oke, saya menambahkan output ke pertanyaan.
jgottula
Dan karena Anda menyebutkan itu bisa jadi drive, mungkin relevan untuk dicatat bahwa saya menggunakan adaptor Rosewill USB3-to-SATA (RAD-SATA-USB3) dengan drive Kingston SSDNow V (SNV125-S2 / 30GB).
jgottula
1
Terima kasih. (Lebih banyak untuk orang lain - dan maaf jika Anda sudah mengatakan ini) enclosure drive menggunakan chipset ASMedia ASM1051.
Oli
Jika detail ini terbukti bermanfaat, kartu PCIe USB 3.0 adalah AZiO AUDU3 yang, sekali lagi, menggunakan pengontrol NEC yang populer.
jgottula

Jawaban:

5

Apakah Anda yakin disk dicolokkan ke port yang benar (USB 3.0)? Sepertinya pengontrol USB 3.0 Anda menyediakan USB bus # 12, tetapi disk terpasang ke USB bus # 3.

Menurut dmesg Anda, USB Bus # 3 disediakan oleh perangkat PCI '06: 01.2: Pengontrol USB: VIA Technologies, Inc. USB 2.0 (rev 65) ', yang hanya berupa USB 2.0.

Jeremy Kerr
sumber
4
Saya sangat malu, Anda benar sekali! Saya memiliki dua kartu USB yang keluar dari motherboard saya dan, karena saya harus menjangkau untuk menyambungkan kabel USB 3.0 saya, saya pasti memasukkannya ke kartu yang salah ketika menjalankan Linux, dan (yang terpenting) port KANAN saat menjalankan Windows! Memastikan benar-benar bahwa saya menghubungkan kabel ke port biru kali ini (di Linux) menghasilkan throughput 120 MB / s penuh. Terima kasih, Pak, telah menunjukkan kesalahan saya yang memalukan!
jgottula
woot! Saya senang Anda mendapatkannya diurutkan :)
Jeremy Kerr
2
Sobat ... Saya menyukai pertanyaan ini hanya untuk mengetahui nanti itu adalah PEBCAK! : P urbandictionary.com/define.php?term=pebcak
kikuk bodoh
1
PICNIC adalah istilah yang lebih disukai untuk PEBCAK karena lebih mudah diucapkan dan menawarkan lebih banyak bermain kata-kata. PICNIC = Masalah Di Kursi Tidak Di Komputer.
Kat Amsterdam