Cosa sono i ripristini dei dispositivi USB?


20

Ho questo nuovissimo software RAID-1 costruito con due unità USB esterne WD Elements e posso vedere che Linux ripete un po 'il seguente messaggio:

...
[302148.036912] usb 1-3.1: reset high-speed USB device number 19 using ehci_hcd
[302153.052029] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302186.031481] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302217.050210] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302281.043543] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302312.090158] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302351.076851] usb 1-3.1: reset high-speed USB device number 19 using ehci_hcd
...

Quindi, cosa dice? È normale? È un problema che dovrei provare a risolvere?

Aggiorna
In realtà, questi messaggi non sono per le unità che pensavo fossero. Ho anche un sacco di altre unità USB collegate a questo computer tramite un hub USB. Comunque, la mia domanda è sostanzialmente cosa significa questo messaggio in un inglese semplice?


3
Realizzare RAID da unità USB non sembra una buona idea. Il RAID si basa sull'affidabilità di avere tutte le tue unità, e USB riguarda i dispositivi di collegamento e scollegamento a caldo. Dato che stai usando RAID-1, non è poi così male, ma non è neanche una buona idea.
mvp,

1
Non c'è niente di sbagliato nell'utilizzo di dispositivi USB nella configurazione RAID. È un'idea perfettamente valida, tanto più se si considera che si tratta di un computer di casa, non di un server aziendale. Potresti discutere delle limitazioni della velocità di trasmissione USB, ma questo non è un problema per me personalmente. Questo raid è un approccio pigro alla soluzione di backup più di ogni altra cosa.
ILIV,

1
Hai indicato che le tue unità sono collegate alle porte USB del notebook. Di 'quello che vuoi, ma questa è semplicemente una bomba a orologeria in attesa di esplodere. Inoltre, se i tuoi dispositivi sono USB3, il kernel deve usare xhci_hcd. Se sta usando ehci_hcd, significa che i tuoi dispositivi funzionano a velocità USB2.
mvp,

1
Perché è una "bomba a orologeria"?
ILIV,

2
Vedo, la prossima volta, per favore, prova a trovare dei veri motivi per chiamare qualcosa una bomba a orologeria. Per la cronaca, non ho un gatto o nessun altro animale domestico, non ho mai tirato i cavi, questo notebook è rimasto cancellato per un paio d'anni ormai, le probabilità che le porte USB si brucino sono quasi equivalenti alla possibilità di avere la connessione diretta si interrompe, "qualcos'altro" è divertente, potrebbe accadere anche al server aziendale più accuratamente configurato e installato. Quindi, smetti di essere così paranoico. Questo è RAID-1. Avere 2 dischi allo stesso tempo, è molto improbabile. Questa è una soluzione solida. Periodo.
ILIV,

Risposte:


22

Fammi provare.

Letteralmente il messaggio dice che lo stack USB Linux ha emesso "USB_RESET" sul tuo dispositivo particolare (dispositivi # 19 e # 20, qualunque essi siano). L'errore sembra verificarsi una volta ogni 10-30 secondi. Dopo il ripristino, il registro dovrebbe contenere nuovi messaggi di enumerazione, poiché il ripristino tramite USB forzerà il dispositivo collegato in "stato predefinito". Sembra che la verbosità del tuo registro sia molto ridotta.

Il ripristino di un dispositivo USB nel mezzo dell'operazione è una situazione piuttosto drastica. Il controller ricorre a questa reimpostazione "porta" se rileva "errore di transazione". L'errore di transazione si verifica quando il collegamento non completa tutte le fasi richieste della transazione USB o presenta un errore CRC. Nella normale USB il controller EHCI proverà automaticamente a ripetere la transazione non riuscita (in genere 3 volte al massimo), quindi imposterà un interrupt XACT_ERROR. Statisticamente, secondo la teoria degli errori, se un collegamento non risponde correttamente a tre tentativi consecutivi, c'è qualcosa di sbagliato nel particolare segmento USB, principalmente elettricamente. Quindi l'errore di transazione è considerato fatale e il software tenta di ripristinare il collegamento. Se l'albero-quattro tenta di ripristinare il collegamento non riesce, l'host considera questa porta come morta e si chiude.

In Linux, tuttavia, qualcuno ha deciso che 3 tentativi teorici non sono sufficienti e il software Linux esegue altri 32 (trentadue) tentativi, rendendolo 96 (!!!) totale. Se il collegamento hardware risulta essere elettricamente marginale, i 96 tentativi potrebbero avere successo nel 99,99% delle volte. I guru del software Linux affermano che ciò aiuta a migliorare l'operabilità di dispositivi / cavi discutibili. In sostanza, questa tecnica nasconde un grave problema con questa particolare connessione USB, che non aiuta gli utenti a lungo termine.

Il problema potrebbe essere rappresentato dall'alimentazione di tensione marginale (VBUS) agli azionamenti, o dai difetti di VBUS o dal degrado del segnale sui cavi di segnale. Proverei prima i cavi certificati di alta qualità estremamente corti e verificherei se le statistiche degli errori cambiano.


Super riepilogo, grazie! Alcune fonti aggiuntive sarebbero interessanti.
Christian Benke,

1
Sai se è possibile aumentare il numero di tentativi effettuati dal ehci_hcdmodulo? O è possibile forzare ohci_hcdper un determinato dispositivo (ad es. /dev/sdaÈ gestito da ehci_hcde "problematico" /dev/sdbè gestito da ohci_hcd)?
dma_k,

5

Questo errore è descritto nell'articolo Linux: ripristinare il dispositivo USB ad alta velocità usando ehci_hcd Errore e soluzione :

Questo errore indica che USB 2.0 potrebbe non funzionare sul tuo sistema o potrebbe funzionare solo a velocità USB 1.1. Per risolvere questo problema:

  1. Sostituisci hardware: nella maggior parte dei casi è necessario sostituire la scheda madre.
  2. Rimuovere il driver ehci_hcd
  3. Disabilita l'interfaccia USB 2.0 dell'unità ehci_hcd e usala come USB 1.1. In breve disabilita ehci_hcd.

Se non si desidera sostituire la scheda madre, per rimuovere il driver ehci_hcd modificare il file /etc/modprobe.d/blacklist.conf e aggiungere la riga:

blacklist ehci_hcd

Infine, utilizzare lo script mkinitrd per costruire una struttura di directory che può fungere da file system radice initrd senza ehci_hcd:

# mkinitrd -o /boot/initrd.$(uname -r).img $(uname -r)

Riavvia come test.

Un articolo con istruzioni simili è: Perché l'errore "kernel: usb 1-2.2: resettare il dispositivo USB ad alta velocità usando ehci_hcd e l'indirizzo 6" è scritto nel file / var / log / messages?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.