Dlaczego zewnętrzny dysk twardy USB 3.0 nie działa z prędkością USB 3.0?

16

Niedawno kupiłem kartę kontrolera PCI Express x1 USB 3.0 (zawierającą kontroler NEC USB 3.0) z zamiarem używania zewnętrznego dysku twardego USB 3.0 z moim Linux-em. Zainstalowałem kartę w pustym gnieździe PCIe na płycie głównej, podłączyłem kartę do kabla zasilającego, naciągnąłem kabel USB 3.0 między jednym z nowych portów a zewnętrznym dyskiem twardym i podłączyłem dysk twardy do gniazdka ściennego w celu zasilania. Po uruchomieniu systemu dysk działa w 100% zgodnie z założeniami, z jednym wyjątkiem: przepustowość: zamiast korzystania z łączności SuperSpeed ​​4,8 Gb / s, wydaje się, że wraca do szybkości High Speed ​​480 Mb / s USB 2.0. Narzędzie dyskowe pokazuje go jako urządzenie o przepustowości 480 Mb / s, a uruchomienie kilku testów porównawczych narzędzia dyskowego i dysku twardego potwierdza, że ​​dysk nie przekracza ~ 40 MB / s (przybliżony limit USB 2.0), mimo że jest to dysk SSD o pojemności znacznie większej niż że.

Po podłączeniu dysku twardego USB 3.0 dmesgpokazuje to:

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

gdzie spodziewałbym się tego znaleźć:

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

Mój system działał wówczas na jądrze 2.6.35-25-generic. Potem natknąłem się na ten wątek na forum przez osobę, która odkryła, że ​​błąd, który był obecny w jądrach przed wersją 2.6.37-rc5, może być przyczyną tego typu problemów. W związku z tym zainstalowałem ogólne jądro Ubuntu w wersji 2.6.37, aby ustalić, czy problem zniknie. Tak się nie stało, więc próbowałem 2.6.38-rc3-generic, a nawet 2.6.38 co noc od 2010.02.01, ale bezskutecznie.

Krótko mówiąc, próbuję ustalić, dlaczego dzięki obsłudze USB 3.0 w jądrze mój dysk USB 3.0 nie działa z pełną przepustowością SuperSpeed.

Dodatkowe komentarze można znaleźć w komentarzach pod tym pytaniem.


Dane wyjściowe, które mogą być istotne dla problemu (podczas uruchamiania z 2.6.38-rc3):

Odpowiednie linie od 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

Odpowiednia sekcja 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

Odpowiednia sekcja 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

Pełny, nieokreślony 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

Pełna wydajność:

jgottula
źródło
1
Czy moglibyśmy też mieć prosty (nie gadatliwy) lsusbteż? Koncentrujesz się na kontrolerze i jądrze, z których oba korzystają z powodzeniem. Podejrzewam, że dysk może być uszkodzony.
Oli
@Oli: Dobra, dodałem ten wynik do pytania.
jgottula
A skoro wspomniałeś, że może to być napęd, warto zauważyć, że używam adaptera Rosewill USB3-na-SATA (RAD-SATA-USB3) z dyskiem Kingston SSDNow V (SNV125-S2 / 30GB).
jgottula,
1
Dzięki. (Więcej dla innych osób - i przepraszam, jeśli już to powiedziałeś) obudowa napędu wykorzystuje mikroukład ASMedia ASM1051.
Oli
W przypadku, gdy ten szczegół okaże się przydatny, karta USB 3.0 PCIe to AZiO AUDU3, która ponownie wykorzystuje popularny kontroler NEC.
jgottula

Odpowiedzi:

5

Czy na pewno dysk jest podłączony do odpowiedniego portu (USB 3.0)? Wygląda na to, że kontroler USB 3.0 zapewnia magistralę USB nr 12, ale dysk jest podłączony do magistrali USB nr 3.

Zgodnie z Twoim dmesg, magistrala USB nr 3 jest dostarczana przez urządzenie PCI „06: 01.2: Kontroler USB: VIA Technologies, Inc. USB 2.0 (wersja 65)”, który będzie tylko USB 2.0.

Jeremy Kerr
źródło
4
Ku mojemu wielkiemu zawstydzeniu masz absolutną rację! Mam dwie karty USB schodzące z płyty głównej, a ponieważ musiałem sięgnąć, aby podłączyć kabel USB 3.0, musiałem go wsunąć w niewłaściwą podczas uruchamiania systemu Linux i (co najważniejsze) PRAWY port podczas uruchamiania systemu Windows! Upewniając się, że tym razem podłączyłem kabel do niebieskiego portu (pod Linuksem), uzyskałem pełną przepustowość 120 MB / s. Dziękuję panu za wskazanie mojego zawstydzającego błędu!
jgottula
woot! Cieszę się, że masz to uporządkowane :)
Jeremy Kerr
2
Człowieku ... Faworyzowałem to pytanie, aby dowiedzieć się później, że to PEBCAK! : P urbandictionary.com/define.php?term=pebcak
głupi głupiec
1
PICNIC jest bardziej uprzywilejowanym terminem dla PEBCAK, ponieważ jest łatwiejszy do wymówienia i oferuje więcej zabawy słowami. PICNIC = Problem w fotelu nie w komputerze.
Kat Amsterdam