



Dom 01 Mar 2009 |
|
![]() DSDT sta per Differentiated System Description Table e fa parte delle specifiche dell' ACPI (Advanced Configuration and Power Interface). Nel caso abbiate problemi col vostro computer che riguardano il funzionamento delle ventole, la temperatura del processore oppure il monitoraggio della batteria ciò è molto probabilmente dovuto al fatto che il file DSDT presente nel BIOS del proprio sistema è buggato o meglio non è completamente conforme agli standard dell' ACPI per cui il nostro kernel che legge la tabella direttamente dal bios non riesce a gestire corretamente il sistema. Questo è principalmente dovuto ai rivendtori che spesso testano la macchina solamente con un sistema operativo (riuscite a indovinare quale?) e comunque non includono al suo interno codice specifico per linux. Soprattutto sui notebook questo problema si fa sentire enormente. Avere un portatile con le ventole sempre al massimo o peggio mai attive può portare a seri danni al sistema. Per supplire a questo problema, per fortuna, esiste la possibilità di sovrascrivere le impostazioni del BIOS facendo leggere un nostro file DSDT al kernel durante la fase di boot. Negli ultimi kernel delle distribuzioni più famose (openSUSE, Mandriva, Ubuntu) è inclusa una patch che permette di aggiungere il file DSDT debitamente compilato nella initramfs. Nel caso utilizziate una distro diversa ho un kernel un po' vecchiotto: gaugusch.at/kernel.shtml. Verifichiamo il nostro file DSDTPer ottenere il file DSDT in uso sul nostro sistema ci basta aprire un terminale e con i permessi di root digitare:portatile:/home/gallochri # cat /proc/acpi/dsdt > /home/gallochri/dsdt.dat Il file è in formato binario e per poterlo editare è necessario scompattarlo utilizzando l'utility iasl (Intel ASL compiler). portatile:/home/gallochri # iasl -d dsdt.dat come si intuisce dal codice viene disassemblato il file binario nel file dsdt.dsl. portatile:/home/gallochri # iasl -tc dsdt.dsl questo è l'output del file dsdt del mio poratile dopo l'ottimizzazione per cui non c'è nessun errore, 0 warnings e 0 Remarks. portatile:/home/gallochri # iasl -tc dsdt_strippy.dsl Ottimizzazione del file DSDTDall'output precedente abbiamo 2 errori e 1 avvertimento durante la compilazione, ci viene indicato anche il numero di riga dove vengono trovati gli errori e un messaggio che ci aiuta a capire di che tipo di errore si tratta.Partiamo dal primo: dsdt_strippy.dsl 350: Method (\_WAK, 1, NotSerialized) portatile:/home/gallochri # kate /home/gallochri/dsdt_strippy.dsl e andiamo a vedere cosa troviamo alla riga 350: Method (\_WAK, 1, NotSerialized) Il metodo \_WAK è utilizzato al risveglio da uno stato di risparmio energetico e deve restituire un valore che indichi se l'operazione è riuscita o meno. Return(Package(0x02){0x00, 0x00}) la soluzione al secondo problema è banale: dsdt_strippy.dsl 3429: Name (_HID, "_NVRAIDBUS") Il nome usato non è completamente alfanumerico, dopo aver controllato che questo nome (_NVRAIDBUS) non sia usato in altre parti del file basta eliminare il carattere incriminato "_". dsdt_strippy.dsl 5654: Store (Local0, Local0) andiamo a vedere alla riga 5654 e troviamo: Store (Local0, Local0) La fuzione store serve ad assegnare il valore che sta a sinistra alla variabile che sta alla destra, per cui questa riga non ha ulcun significato e commentandola con "//" dovremmo aver risolto anche questo problema.
// Store (Local0, Local0) tendiamo di ricompilare il file e osserviamo l'output: portatile:/home/gallochri # iasl -tc dsdt_strippy.dsl 0 Errors,0Warnings,0 Remarks OK! Aggiungiamo il file a initramfsIl file ottimizzato che otteniamo ha estensione .aml per inserirlo nella initramfs ci viene in aiuto uno script presente nella documentazione dei sorgenti del kernel.La prima cosa da fare è rinominare il file che otteniamo in DSDT.aml, è necessario mantenere i caratteri maiuscoli nel nome file. Spostiamo nella cartella dei sorgenti del kernel che ci interessa: portatile:/home/gallochri # cd /usr/src/linux/Documentation/acpi/ Lo script in questione è initramfs-add-dsdt.sh e la sintassi per aggiungere il nostro file dsdt ottimizzato alla initramfs è la seguente: portatile:/usr/src/linux/Documentation/acpi # sh initramfs-add-dsdt.sh /boot/initrd-2.6.27.19-3.2-pae /home/gallochri/DSDT.aml Come si può vedere vanno passati due argomenti allo script e più precisamente la posizione di initrd e il file da aggiungervi. Verifichiamo che il file venga caricatoPer accertarci che il file da noi creato sia stato caricato corretamente durante la fase di boot basta verificare i messaggi del kernel durante il boot:portatile:/usr/src/linux/Documentation/acpi # dmesg | grep -A 11 'Checking initramfs' Tutto ok, il file è stato caricato corretamente. Vedi anche: Foxconn: accattatevi sta' munnezza!
Bookmark
Email This
Hits: 2466 Commenti (12)
![]()
yves
said:
|
|
Sul mio mica ha funzionato tanto bene :( Per curiosità ho fatto la prova, ma facendogliela poi caricare ha smasso di funzionare la variazione di frequenza CPU, ho scaricato la DSDT dal sito è l'ho ricompilata quindi l'ho caricata, il messaggio in dmesg è il seguente: yves@yves-laptop:~$ dmesg | grep -A 11 'Checking initramfs' il più simpatico è che anche rifacendo la procedura e ricaricando quella anteriore resta invariato lo scherzetto, quindi dovrò reinstallare il kernel in uso per levarmela dai piedi (...e spero che basti), sul kernel anteriore funziona. Linux yves-laptop 2.6.27-11-generic #1 SMP Thu Jan 29 19:24:39 UTC 2009 i686 GNU/Linux Kubuntu Intrepid - KDE 4.2 |
yves
said:
|
Scusa il doppio post, solo per confermare che è tutto OK ho avviato con il kernel precedente ed ho dato il fatidico: sudo apt-get install --reinstall linux-image-2.6.27-11-generic si è reinstallato, quindi riavviato ed ora va come prima della modifica: yves@yves-laptop:~$ dmesg | grep -A 11 'Checking initramfs' Tutto bene quello che finisce bene, ho provato pure quello che descrivi qui per velocizzare il boot, "CONCURRENCY=shell" già lo usavo, ho installato il "insserv" e eseguito i passaggi, con il "yes" faceva a botte, ho messo "no" e sembra andare, non noto un miglioramento sostanziale nel tempo di avvio, ma comunque era già piuttosto rapido prime e quindi non mi lamento. Ciao e buon lavoro. |
yves
said:
|
... Se hai voglia proviamo pure, ho creato un file compresso con tutto dentro, in un txt gli errori vari in fase di compilazione che riporto anche qui: dsdt.dat.tar.gz yves@yves-laptop:~$ sudo iasl -tc dsdt.dsl 3 errori e 10 warning, non penso sia la peggiore, ma tanto a posto non lo è Grazie e ciao. |
yves
said:
|
Scusa, non avevo captato il dettaglio :D Il computer è un CDC PREMIUM 7043 DW - Centrino Duo T2300 - 2 Gb Ram - 80 Gb HD e lo avevo comprato nella catena "Computer Discount", ho dovuto sbattere la testa come un dannato per poter capire come aggiornare il bios visto che alla CDC non rispondevano, al finale l'incaricato del negozio (siamo amici di vecchia data) è riuscito a reperire i dati necessari, si tratta di un Uniwill M31EI, i problemi sono i soliti di sempre, cioè sospensione ed ibernazione che non volevano funzionare (al "risveglio" funzionavano la metà delle cose..), ora ho risolto con il sistema che aveva descritto Divilinux sul suo blog, è la prima volta da quando uso Linux (sul portatile c'è da quando l'ho comprato..) che riesco a sfruttare questa cosa, sul portatile ne sentivo la mancanza, a volte nei brevi spostamenti non lo spegnevo (chiudevo giusto il coperchio, a rischio di fucilare l'HD causa urti..), se riuscivo a sistemare il DSDT forse la sospensione ed ibernazione riuscirebbero a funzionare senza troppi trucchetti, ma ora come ora è più uno "sfizio" che una necessità. Da quando ho flashato il Bios con l'ultima versione disponibile (M31EI Bios 1.05) si è messo a funzionare correttamente la gestione della variazione di frequenza (più o meno, visto che dovrebbero essere 8 ma ne ho solo tre - 966 - 1.330 - 1.660 GHz) e finalmente le USB vanno a dovere (prima andavano al rallentatore..), la temperatura si mantiene in zone ammissibili e la batteria ha un bel pò di autonomia supplementare (ne avevo comprato una di scorta perchè me la risucchiava in meno di due ore), ripeto, non scervellarti se vedi già che il problema non sarà risolto, se c'è una speranza proverò a ricaricarla, con l'uscita della nuova Kubuntu (9.04) tenterò sospensione e ibernazione senza troppi artifici. Ciao e grazie. |
loris
said:
|
amilo pro 2030 Ciao Ho usato la procedura descritta per il mio amilo pro 2030 ma i vari echo 1 o 2 su proc/acpi/fan/FAN continuano a non funzionare ma il probelma ancora piu' grosso e' che da un bel po di tempo non so se dipende dalla nuova ventola installata su questo portatile presa da un altro notebook ed adattata al mio gira lentamente il mio sistema operativo e KUBUNTU aggiornato alla 9.04 |
loris
said:
|
... Allora il problema della ventola che girava lenta era dovuto dal fatto che la ventola presentava caratteristiche di tensione diverse per cui ho rimesso quella vecchia. Il problema pero' della gestione delle ventole non e' cambiato, rimane sempre accesa. Come dsdt ho provato di tutto sia quelli presenti su http://acpi.sourceforge.net/dsdt che quelli presenti su bugzilla di novell. Non c'e modo di far funzionare nulla. Ho notato che quando va in sospensione almeno la ventola si spegne .Non so piu' cosa fare. Ciao |
Dario Elia
said:
|
Asus A6kt Ciao, complimenti per la guida veramente ben fatta solo che sono un pò utonto... quando dici "La prima cosa da fare è rinominare il file che otteniamo in DSDT.aml, è necessario mantenere i caratteri maiuscoli nel nome file." Vuol dire che non va scompattato l'archivio.gz anche perchè provandoci mi da sempre errore dicendomi "not in gzip format", ma va solo rinominato così com'è? Un'altro problema è che questa posizione non esiste da me cd /usr/src/linux/Documentation/acpi/ ma solo sudo /usr/src/linux-headers-2.6.24-25 linux-headers-2.6.24-25/ linux-headers-2.6.24-25-generic/ con queste due scelte nelle quali non c'è lo script di cui mi parli... ho provato a fare una ricerca di initramfs-add-dsdt.sh, ma non ho trovato nulla, come faccio a caricarlo? Lo so che ti sto facendo molte domande, ma ne ho un altro paio... come si fa ad inserire il DSDT in una ISO di Ubuntu (a proposito questa è la distro che uso) perchè vorrei provare la 9.10 mettendola su PenDrive ma ovviamente mi si pianta durante l'avvio per il solito problema. Aprire la iso non è un problema troverò qualche guida in merito... solo non so dove e, se c'è un modo particolare, come inserirla. Infine questo è la mia DSDT ASL Input: dsdt.dsl - 8605 lines, 269100 bytes, 3794 keywords Compilation complete. 1 Errors, 11 Warnings, 0 Remarks, 959 Optimizations per allegare il file mi devo iscrivere? Se potessi darci un'occhiata perchè: problema dell'avvio con usb a parte (che dovrei risolvere con la "nuova" DSDT come descritto nella nota del sito) ho la cpu che schizza quasi sempre al massimo con la ventola che si ferma poco e niente... se non puoi/sai metterci mano non fa niente mi basta sapere se il problema sta li o meno. Grazie mille e scusami per la lungaggine |
| < Prec. | Succ. > |
|---|

Blog







.

.Non so piu' cosa fare.

