space
left
Hyperion Research Labs
right
Home arrow News arrow Howto arrow Bug: il mouse non si spegne in Ubuntu
venerdì 21 novembre 2008
 
 
Bug: il mouse non si spegne in Ubuntu PDF Stampa E-mail
venerdì 04 gennaio 2008

...e non solo in Ubuntu, dato che tutti i Linux recenti ne sono affetti. Da molte versioni di Ubuntu, almeno dalla Edgy in poi, con schede madri basate su chipset nvidia nforce2 o superiori come la mia Asus P5N32-SLI SE Deluxe (ma anche con altre schede madri), il sottosistema usb non si spegne allo spegnersi del pc.  Il problema è che i led di webcam, mouse, lettori di memory card e altri accessori usb rimangono sempre accesi, costringendo a spegnere il pc con l'interruttore generale posteriore.

Invece, in caso di sospensione o ibernazione le porte usb si spengono correttamente. 

Il problema, dopo tanto tempo, è stato individuato nel kernel. Per fortuna, dopo anni di discussioni sia sulla mailing list del kernel a più riprese che nel launchpad , è stata presentata una patch fatta da Alan Stern, mostrata qui per il kernel 2.6.22 (gutsy), funziona anche con leggere modifiche con il 2.6.20 (feisty) e probabilmente funzionerà anche con i prossimi kernel (hardy):

 diff -Nur linux-2.6.22.orig/drivers/usb/host/ohci-hcd.c linux-2.6.22/drivers/usb/host/ohci-hcd.c
--- linux-2.6.22.orig/drivers/usb/host/ohci-hcd.c    2007-07-09 01:32:17.000000000 +0200
+++ linux-2.6.22/drivers/usb/host/ohci-hcd.c    2007-09-30 11:39:03.000000000 +0200
@@ -360,7 +360,8 @@
 static void ohci_usb_reset (struct ohci_hcd *ohci)
 {
     ohci->hc_control = ohci_readl (ohci, &ohci->regs->control);
-    ohci->hc_control &= OHCI_CTRL_RWC;
+    /* ohci->hc_control &= OHCI_CTRL_RWC; */
+    ohci->hc_control &= (OHCI_CTRL_RWC | OHCI_CTRL_HCFS);
     ohci_writel (ohci, ohci->hc_control, &ohci->regs->control);
 }

Siccome molto probabilmente non verrà mai inclusa questa patch nel kernel di default, dato che ufficialmente questo è un bug del BIOS e potrebbe generare problemi con sistemi non affetti da questo bug, ho provveduto quindi a patchare e ricompilare il kernel di Gutsy. Si può reperire il pacchetto binario e/o il sorgente su questo sito . In alternativa, si può aggiungere questo repository al file /etc/apt/sources.list (attenzione perchè potrebbero essere presenti altri pacchetti!):

deb http://ppa.launchpad.net/armalite/ubuntu gutsy main
deb-src http://ppa.launchpad.net/armalite/ubuntu gutsy main

 

Farò del mio meglio per riuscire a tenere sempre il kernel patchato in sincrono con l'ultima versione del kernel disponibile ufficialmente in Ubuntu stabile.

UPDATE: Il seguente paragrafo relativo a dpkg è obsoleto, il bug a cui mi riferisco (pacchetto che richiede di essere aggiornato infinitamente, bug LP:#165230 ) è stato corretto. Quindi la soluzione preferibile è quella descritta sopra, aggiungere il repository al sources.list e aggiornare i pacchetti del kernel.

L'unico problema attualmente è che (per non precisati motivi, visto che con i pacchetti di applicazioni non ho problemi di questo tipo) synaptic/apt-get/aptitude vogliono sempre aggiornare il kernel patchato da me con lo stesso kernel patchato. Suggerisco quindi di scaricare singolarmente il pacchetto e installarlo con dpkg -i.

 

Con questo kernel, il sottosistema usb si spegne allo spegnimento del pc in maniera corretta. Non è necessario reinstallare o scaricare un nuovo pacchetto linux-restricted-modules, mentre per gli utilizzatori di Envy potrebbe essere necessario reinstallare i drivers nvidia.

Ovviamente, un grazie particolare a Sebastian Kemper che per primo ha segnalato il problema e Alan Stern per la patch risolutiva.


Tags:  Guide e howto bug kernel usb
Commenti
NuovoCercaRSS
ORGA - Non lo sapevo!   | 212.64.228.xxx | 2008-02-18 14:34:12
Non avendo avuto, prima di Ubuntu, un desktop con periferiche usb "luminose", ero convinto che quella luminosit fosse normale -.- Ehm... come funziona il comando dpkg -i? Grazie!
admin   | Super Administrator | 2008-02-18 15:08:57
Per usare dpkg basta che digiti:
sudo dpkg -i nomepacchetto.deb

Ad ogni modo, non c' pi bisogno di usare dpkg, il problema col pacchetto era dovuto ad un bug del launchpad che ora risolto. Quindi la soluzione pi semplice aggiungere le due righe del repository (deb http ecc.ecc. come scritto sopra) nel file /etc/apt/sources.list (ma puoi anche farlo graficamente via Synaptic -> Impostazioni -> Sorgenti Software -> Aggiungi), ricaricare la lista dei pacchetti e aggiornare tutti i pacchetti del kernel, sono che iniziano per linux-*. Ho aggiornato la guida con le ultime informazioni.
ORGA   | 212.64.228.xxx | 2008-02-18 17:45:13
Grazie mille! :)
graymalkin   | 82.59.43.xxx | 2008-07-02 14:27:19
ciao utilizzando questo workaround su hardy sono riuscito a sistemare il problema ma solo per le porte usb1 mentre per le usb2 rimane. ho dato uno sguardo nel file ehci-hcd.c per vedere se era presente qualcosa di simile ma non sono riuscito a concludere nulla di utile.
qualche soluzione ??
Commenta
Nome:
Email:
 
Website:
Titolo:
 
 
Security Image
Please input the anti-spam code that you can read in the image.

Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved.

 
< Prec.   Pros. >
Google Ads

Tag Clouds
blocchi byte vede bene provato cancellare nuovo ubuntu dall heron reiserfs filesystem sempre molto igrave file abbastanza hardy deve fare radius raw2 fatto predefinito caso ecco nslu2 sito default essere

Joomla Modul

Ultimi Commenti
 
Top! Top!