Raspberry PI-Troubleshooting-AlimentazioneUSB

Da raspibo.
Jump to navigation Jump to search

Checklist per problemi con i dispositivi USB

Nelle discussioni sui problemi del raspberry, si nota una certa tendenza a dare di default la colpa all'alimentazione. Nonostante una dieta bilanciata e ricca di fibre sia importante, ed effettivamente moltissimi problemi siano dovuti ad un voltaggio/amperaggio insufficienti, per quanto vedo i problemi sono anche di altra natura.

NOTA da tenere a mente prima di incapponirsi con altri metodi: da una mia serie di test di stress è emerso che il kernel 3.6 (attualmente alla versione 3.6.11+) risulta essere molto più stabile del 3.1.x e 3.2.x. Quindi, prima di tutto, se non ci sono ottimi motivi per non farlo, aggiornate il kernel. Nel caso fosse necessario compilare, fate riferimento a questa pagina: http://elinux.org/RPi_Kernel_Compilation

Cose da controllare/tentare se si hanno problemi con dei device USB:

  1. che il RPI sia adeguatamente alimentato (sì, prima di tutto escludete questo)
  2. che il dispositivo che viene attaccato direttamente al RPI non assorba più di 140mA (il RPI è sotto gli standard USB); se così non fosse vi serve un hub USB alimentato
  3. che l'hub USB alimentato non rimandi troppa corrente al RPI (vedi esempio successivo)
  4. usate i cavi USB più corti che avete, ed evitate come la peste quelli con sezione troppo sottile
  5. collegare un hard disk non alimentato separatamente direttamente al RPI è davvero chiedere troppo
  6. diffidate degli hub USB con un numero di porte superiore a 4. Possono essere utilizzati, ma fate particolare attenzione: sembra infatti che il RPI abbia problemi con i device USB troppo annidiati. Tenete presente che un hub USB a 10 porte, ad esempio, mostrerà le prime due porta come direttamente connesse a quella d'ingresso mentre le successive due saranno a loro volta usate internamente per interfacciarsi con le restanti 8 (come se internamente vi fossero due ulteriori hub in cascata al primo). Potete verificare a quale porta, ed a quale livello, è attaccato il vostro device con il comando lsusb -t
  7. in totale, sembra non si possano avere più di 8 porte hub USB, al momento. Per verificare quante ne avete, eseguite questo comando ed aggiungete uno: lsusb -v | grep -iP "Transfer Type.*(Interrupt|Isochronous)" | wc -l
  8. per i dispositivi wifi USB, aggiungere smsc95xx.turbo_mode=N a /boot/cmdline.txt sembra aiutare, a fronte di un lieve calo di prestazioni
  9. certi dongle wifi USB hanno una gestione del power mode un po' ballerina; sembra che disabilitarlo con il seguente comando aiuti: iwconfig WIFI_INTERFACE power off
  10. a volte si trova in giro il suggerimento di ridurre il bus ad un USB 1.1 (aggiungendo dwc_otg.speed=1 in /boot/cmdline.txt); oltre ad essere noto per creare ulteriori problemi con certe periferiche, mi sembra un soluzione davvero da ultima spiaggia
  11. stressate a morte la vostra configurazione. Usate scp/rsync per fare traffico da/verso dischi fissi esterni o attraverso chiavette wifi USB; sotto carico i problemi diventano spesso evidenti


Esempio di problema di alimentazione di dispositivi USB

Oltre a quanto segnalato nella pagina sull'alimentazione, sembra che ci siano problemi abbastanza diffusi nell'utilizzare dispositivi usb collegati su un hub alimentato. Personalmente, li sto avendo su un hub alimentato trust a cui sono collegati un disco fisso (a sua volta alimentato), un dongle wifi (Linksys wusb100) ed un ricevitore dvb-t della August. Il sistema sembra crashare dopo un po', forse quando sotto carico.

Da notare che l'RPI è alimentato separatamente, con 900mA (ora 2.1 A).

diodo sul VBUS

Sembra ragionevole supporre che il problema derivi dal fatto che questi hub producano una corrente anche verso il dispositivo master. Le prime versioni del RPI avevano un fusibile autoresettante (rimosso nella revision 2) che limitava a 140mA la corrente sulle porte USB.

La prima cosa che ho tentato, ovviamente, è stato di bloccare il +5V del connettore USB (una piccola striscia di nastro adesivo è facile da piazzare; vedete la Piedinatura; abbiate l'accortezza di lasciare uscire un po' di nastro, per evitare che possa restare dentro la presa, mentre lo sfilate). Purtroppo questi hub non attivano il canale dati, quando non sentono arrivare alimentazione dal dispositivo principale (quindi coprire il +5V o tagliare il cavo rosso, è inutile).

Oggi mi sentivo eroe, ed ho quindi proceduto a scotennare un cavo usb ed a piazzare un diodo sul VBUS (il +5V) per fare in modo che la corrente fluisca solo dal raspberry all'hub, e non viceversa.

Finora questa soluzione, unita all'utilizzo delle sole "porte di primo livello" dell'hub alimentato (il disco fisso esterno l'ho collegato direttamente al RPI, essendo a sua volta alimentato separatamente) sembra funzionare.

Un altro hack abbastanza bello, solo per le revision 1, è questo: http://theiopage.blogspot.it/2012/06/increasing-raspberry-pis-usb-host.html