Kernel e HUB USB

17 risposte [Ultimo contenuto]
Ritratto di Arasky
Arasky
(Junior)
Offline
Junior
Iscritto: 14/05/2015
Messaggi: 12

L'hardware fa schifo ma resta che se lo vendono vuol che un modo di farlo andare c'e' se no avrebbero solo resi, se opensuse riesce a farlo funzionare vuol dire che quelli di opensuse avranno applicato qualche patch utile che debian non ha, in tutti i modi ho risolto il problema, non e' il chip che c'e' dentro che fa schifo ma scemenze costruttive del pcb piuttosto banali, piu'tardi pubblico le foto del mio hack hardware se a qualcuno interessa, sempre che non sia troppo OT visto che non si parla di software ma potrebbe interessare a qualche sfortunato possessore.

Ritratto di homeless
homeless
(Guru)
Offline
Guru
Iscritto: 21/10/2011
Messaggi: 1314

Mandaci pure tutti i dettagli del caso.

Ritratto di Arasky
Arasky
(Junior)
Offline
Junior
Iscritto: 14/05/2015
Messaggi: 12

Ecco qui la scheda dell'hub in questione, il problema piu' grosso che ha sono i 2 diodi che si possono vedere in alto a sinistra subito sotto il connettore da dove entrano i fili provenienti dal cavo USB.

Il cinese, rubato dai campi di riso, ha avuto il problema di un circuito che poteva essere alimentato sia dalla porta USB che avere un'alimentazione supplementare fornita da un connettore dell'alimentatore interno del PC, avendo 2 sorgenti di alimentazione in parallelo si e' posto subito il problema di come fare a evitare ritorni di corrente giu' per quella della 2 che avesse avuto la tensione inferiore all'altra ha quindi pensato (molto male) a mettere 2 diodi in modo che la corrente della sorgente piu' forte potesse scorrere solo verso il chip della scheda e non andare a ritroso dentro all'altra. Peccato che il cinese ignorasse che i diodi hanno una caduta di tensione, essendo che le porte usb devono uscire a 5 volt e le alimentazioni in ingresso erano entrambe a 5volt e' palese che la caduta di tensione del diodo si sottraeva ai 5 volt, per cui la tensione che alimentava il chip e le porte usb poteva solo essere sistematicamente inferiore di 5 volt (io ho misurato circa 3,8~4 volt), indipendentemente dal sistema operativo o della scheda usb cui questo venisse collegato. Resta quindi valida l'idea che per quanto porcata sia possibile via software ovviare a questa immensa c4z.. costruttiva, tipo inizializzando il chip in continuazione o che so io.

Ho risolto a questo modo:

Ho eliminato il diodo che prendeva tensione dalla porta usb master e ponticellato con un filo di rame quello che prendeva alimentazione dall'alimentatore del PC, in modo che alle porte arrivino dritti i 5 volt. ho poi aggiunto per sicurezza 1 elettrolitico da 1000uF e un ceramico da 100nF per disacoppiare l'alimentazione del circuitino dal resto del PC e sopprimere i disturbi. Questi 2 condensatori sembrano collegati su 2 porte diverse ma in realta' seguendo le piste sono posti in parallelo e connessi a tutte e 4 le porte. Ora l'hub funziona, ho trasferito per test 12 giga su un pendrive che non e' mai funzionato.

La conclusione e' che han fatto un chip che funziona ma un cinese nel fare il primo hub con quel chip ha fatto una porcata e poi l'avranno tutti copiato a ruota, debian non ha patch che altri linux hanno e che il suggerimento di mcortese mi ha dato l'indizio giusto, spero che il mio hack possa servire ad altri, l'hub costa poco ma con i tempi che corrono anche buttare via il costo di una pizza e' antipatico, poi questo serverino e' un vero dinosauro comprare tutto nuovo tutto bello senza hackerare non da soddisfazione Smile

Ritratto di homeless
homeless
(Guru)
Offline
Guru
Iscritto: 21/10/2011
Messaggi: 1314

Grazie per averci aggiornato e per aver fornito elementi di dettaglio sulle modifiche hardware che hai apportato. Di fatto, la causa del malfunzionamento, quindi, come ipotizzato è collegata alla sezione di alimentazione della scheda dell'hub usb. Per quanto riguarda il tipo di difetto hardware, dubito fortemente che a livello software, come hai ipotizzato, possa essere risolto. Se la stessa scheda, come hai riferito, operava correttamente in un altro computer, è molto probabile che l'altro computer avesse delle differenze a livello di alimentazione della scheda dell'hub o di capacità di alimentazione della scheda quando collegata a periferiche USB: visto che hai gli strumenti per verificarlo, sarebbe interessante se potessi controllarlo.

Personalmente non sono in grado di valutare la bontà della modifica hardware apportata nell'ottica della sicurezza di utilizzo delle periferiche usb e, quindi, non la apporterei se mi trovassi nella condizione di doverlo fare. Questo lo riferisco solo nel caso qualche utente sprovveduto pensasse che si possa modificare l'hardware a cuor leggero senza le necessarie conoscenze e senza essere consapevoli delle possibili conseguenze.

Ritratto di Arasky
Arasky
(Junior)
Offline
Junior
Iscritto: 14/05/2015
Messaggi: 12

non e' possibile che le porte usb di un'altro computer forniscano piu' di 5 volt perche' sarebbero fuori specifica e perche' questa tensione non e' fornita nemmeno dall'alimentatore stesso del PC. La modifica non rende l'hub meno sicuro di come era originale in quanto i diodi che c'erano prima non possono fungere da limitatori di corrente, se c'e' qualche sorta di protezione di sovraccarico nel chip questa non e' stata bypassata in quanto i diodi si trovano a monte, tra l'altro se ci pensi non e' infrequente che in caso di guasti (solitamente connettori consumati o inseriti male da persone con poca grazia) che si brucino porte USB dei computer, quindi alla fine dei conti non cambia niente. Anzi l'alimentazione della porta usb del PC qui e' isolata, l'hub si alimenta solo dalla fonte esterna e se uno volesse essere perfezionista potrebbe inserire al posto del ponticello un microfusibile da 4 amper.

Quanto al software invece non ne sono sicuro, sul serverino avevo il kernel 3.2.51 ricompilato per avere il modulo del controller sata che ho dentro e non funzionava niente, dava gli errori che ho postato all'inizio sconnettendo dopo pochi secondi le periferiche, poi ieri nel pomeriggio ho ricompilato il kernel 3.16 preso da repo backport e l'ho installato, questo kernel non mi dava piu' quegli errori e non sconnetteva piu' alcune periferiche, pero' ed esempio se scrivevo file su un pendrive i log del kernel sparavano fuori centinaia di messaggi che segnalavano settori danneggiati sul supporto, pero' la scrittura proseguiva e non bloccava tutto il bus usb costringendo a riavviare il computer, ovviamente alla fine i file sarebbero stati pieni di errori pero' dimostra che il software qualcosa puo' fare. Su opensuse ho un kernel 3.16.6, sicuramente la suse riempe di patch questi kernel e non credo siano closed source.

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

Certo che i diodi cinesi ne tolgono di tensione! E pensare che ti insegnano che la cdt teorica di un diodo è di 0,7 V. Wink

Sulla diatriba tra hardware e software, direi che qui l'origine del problema era indiscutibilmente hardware. Poi forse può anche succedere che alcune versioni dei driver siano più robuste di altre e tollerino meglio degli errori hardware intermittenti. Sarebbe interessante verificarlo, a patto di farlo sullo stesso hardware, perché ci sono troppi fattori che cambiano da un PC all'altro: la tensione erogata dall'alimentatore ha una sua tolleranza, non è indipendente da quante periferiche sono collegate, ecc. D'accordo, teoricamente dovrebbe essere di 5 V, ma anche il diodo teoricamente non dovrebbe togliere più di 0,7 V, eppure...

Cmq sono contento che tu abbia risolto. Il fatto buffo è che il sito a cui ti ho rimandato è frequentato da persone che hanno il problema, se vogliamo metterla così, opposto al tuo: loro vogliono alimentare l'intero computer dalla presa USB, non il contrario. Di un hub come il tuo (ante modifica) non se ne sarebbero fatti niente Smile.

Ritratto di Arasky
Arasky
(Junior)
Offline
Junior
Iscritto: 14/05/2015
Messaggi: 12

infatti non capisco come mai cadesse tanta tensione, quei diodi erano dei normalissimo 1n4007 ma sono finiti nella spazzatura, non li ho misurati, in tutti i modi 5-0,7 = 4,3 sempre troppo pochi. Il tipo di modifica che ho fatto potrebbe essere utile agli utenti di raspberry, anziche' cercare gli hub con con il lanernino si sistema quello che si ha, perche' prima che il cinese capisce di fare le cose fatte bene ne passa. Questo sarebbe il vero spirito hacker, qualcuno invece avrebbe paura ad usare una cosa messa a posto quasi potesse scoppiare. Cmq il serverino su cui montato e' un amd k6 a 450mhz (upgradato di cpu da poco, prima era 350) Smile ci ho messo un controller sata pci con un disco da 1 tera haha e funziona alla grande per quello che deve fare, con consumi elettrici di qualche watt superiori a un moderno atom ma a costo zero.