Ubuntu Feisty ricompilare dsdt table
Ho notato solo recentemente che la ventola del mio portatile pompa a manetta,questo non rappresenta di per se un particolare problema,la cpu in questo modo rimane sempre al fresco e cosi’ evito di surriscaldarla troppo,il problema diciamo che e’ solo a livello acustico,quando sono in perfetto silenzio sentire continuamente questo “fvvuvuuv” un po’ mi urta. Prima non ci avevo fatto caso perche’ ero rimasto troppo folgorato dalle potenzialita’ di ubuntu,cosi’ incuriosito dal fatto che quando uso windows xp la ventola non pompa cosi’ tanto ho pensato di provare a ricompilare la dsdt table.
Il primo link utile che ho trovato googlando e’ questo:
http://guide.debianizzati.org/index.php/ACPI_e_DSDT
C’e’ un ottima spiegazione di cosa e’ la dsdt table e tutta una serie di ottime istruzioni solo che sono un po’ vecchiotte e trattano diversi casi differenti e io avevo paura di sbagliare cosi’ ho anche cercato altri link e alla fine credo di essere riuscito a sistemare tutto,ecco quindi un breve how to specifico per Ubuntu Feisty.
Nel link sopra indicato si parla di varie patch del kernel da applicare io non ne ho applicata manco una perche’ come dice il testo con i kernel recenti non dovrebbero servire,infatti e’ proprio cosi’,in alcune delle piu’ recenti distribuzioni,tipo ubuntu,il kernel e’ gia’ patchato,ho trovato la conferma su questo forum,l’utente Yas ha inserito nel suo post un link che mi ha tolto tutti i dubbi,qui di seguito riporto tutto il post.
“Currently Feisty kernel image doesnt appear to support custom DSDT in initrd.. The kernel doesnt look as if it has been patched with Eric Piel patch (http://gaugusch.at/kernel.shtml. A coupld of reports have been reported in lauchpad about this (83544 and 85435). I suggest everyone who needs to use custom DSDT subscribe to those bugs and add a comment. Really hope this is sorted before release.”
Il link indicato fornisce delle patch da scaricare e applicare al kernel e dice a chiare lettere:
“SuSE, Mandriva and Ubuntu, as well as other distros, already include this patch in the default kernel, no need for re-compiling your kernel!”
Quindi se state usando ubuntu Feisty come me siete a posto,possiamo procedere alla compilazione della dsdt table e all’eventuale correzione di alcuni errori o warning.
Per prima cosa abbiamo bisogno del compilatore iasl della intel necessario per copilare la dsdt table,lo potete installare digitando:
sudo apt-get instal iasl
Ora ci spostiamo in una directory a nostro piacere,tipo la vostra home e otteniamo la dsdt table da eventualmente corregere e ottimizzare. Digitiamo il comando:
cat /proc/acpi/dsdt > dsdt.dat
Una volta ottenuto questo file dobbiamo renderlo leggebile in modo da poterlo modificare,il file viene quindi decompilato tramite il compilatore ASL con il comando:
iasl -d dsdt.dat
Viene quindi generato un file di nome dsdt.dsl al cui interno troverete un linguaggio simile al C,con costrutti if-else e vari. In ogni caso il nostro obbiettivo e’ quello di ricompilare la tabella dsdt e correggere eventuali errori o warning e poi reinserla nel kernel. Durante la compilazione viene comunque fatta un’ottimizzazione del codice e della struttura.
Per vedere quali errori o warning vengono generati digitiamo:
iasl -tc dsdt.dsl
Se siete fortunati non vi comparira’ nessun errore e nessun warning ma solo ottimizzazioni,se invece non siete fortunati vi compariranno errori e warning. La soluzione dei vostri errori purtropo la dovete cercare su internet sfortunatamente e’ impossibile raccogliere tutti gli errori in una solo sito e nessuno lo ha mai fatto.
Ora apriamo una parentesi su un caso pratico,il mio. Io sono stato abbastanza fortunato,la compilazione della mia tabella ha generato solo un warning. Ecco l’output della compilazione:
“Intel ACPI Component Architecture
ASL Optimizing Compiler version 20060912 [Dec 6 2006]
Copyright (C) 2000 – 2006 Intel Corporation
Supports ACPI Specification Revision 3.0a
dsdt.dsl 258: Method (_WAK, 1, NotSerialized)
Warning 1079 – ^ Reserved method must return a value (_WAK)
ASL Input: dsdt.dsl – 3821 lines, 130539 bytes, 1804 keywords
AML Output: dsdt.aml – 15792 bytes 435 named objects 1369 executable opcodes
Compilation complete. 0 Errors, 1 Warnings, 0 Remarks, 442 Optimizations”
Il numero 258 indica la riga nel quale inzia la funzione che ha generato il warning, il numero 1079 indica il tipo di warning e accanto c’e’ una breve descrizione. Per corregere il problema sono andato su google ho inserito numero e descrizione del warning e ho cercato la soluzione,ho trovato che bisogna aggiungere prima della chiusura della funzione la seguente stringa di codice:
Return(Package(0×02){0×00, 0×00})
In pratica dovete mettere questa stringa prima dell’ultima parentesi graffa della fuzione. Fatta questa semplice modifica ho ricompilato con il comando di prima e questa volta l’output e’ stato:
“Intel ACPI Component Architecture
ASL Optimizing Compiler version 20060912 [Dec 6 2006]
Copyright (C) 2000 – 2006 Intel Corporation
Supports ACPI Specification Revision 3.0a
ASL Input: dsdt.dsl – 3822 lines, 130577 bytes, 1805 keywords
AML Output: dsdt.aml – 15798 bytes 435 named objects 1370 executable opcodes
Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 444 Optimizations”
Perfetto,zero errori e zero warning. Una volta avvenuta la compilazione vengono generati 2 file:
dsdt.aml e dsdt.hex
Per far caricare al kernel gia’ patchato di ubuntu la nuova dsdt.table basta solo il file dsdt.aml. Se anche voi siete riusciti a risolvere tutti i vostri problemi passiamo al prossimo step,cioe’ dire al kernel di usare la nostra dsdt table. Da qui in poi ho abbandonato la guida di debianizzati e ho seguito delle istruzioni riportate sul forum indicato sopra.
Giusto per la cronoca il kernel di ubuntu feisty utilizza l’initramfs quindi procediamo come segue:
se non li avete,nstallate gli initramfs-tools,ma credo sia impossibile che non li abbiate,vabbe’ se dovete installarli digitate:
sudo apt-get install initramfs-tools
Io eseguito il comando e mi ha detto che gia’ c’era l’ultima versione. Poi copiate il file dsdt.aml come segue stando attenti alle lettere maiuscole:
cp DSDT.aml /etc/initramfs-tools/DSDT.aml
Perfetto ora per concludere digitate:
mkinitramfs -o /boot/initrd.img-`uname -r`
uname -r indica il kernel in uso nel vostro sistema. Fatto cio’ riavviate il sistema e la vostra dsdt table sara’ caricata dal kernel.
Bene ma io come capisco se e’ andato tutto a posto?semplice basta guardare nei log e precisamente in /var/log/messages.
Nel precedenti avvii del kernel a me compare:
“ACPI: Looking for DSDT in initramfs… file /DSDT.aml not found, using machine DSDT.”
Da quando invece ho compilato ed inserito la mia dsdt table compare:
“ACPI: Looking for DSDT in initramfs… successfully read 15798 bytes from /DSDT.aml.”
E subito di seguito compare:
“ACPI (tbget-0297): Table [DSDT] replaced by host OS [20060707]”
Per avere un’ulteriore conferma che era tutto ok ho cercato su google e ho trovato quest’altro link che conferma che la mia dsdt e’ stata caricata correttamente:
http://www.structuredabstraction.org/ubuntu/breezy/
Andate in fondo nella sezione acpi e leggerete le stesse cose.
Bene e’ tutto,spero di essere d’aiuto ciao ciao.
Vota l’articolo



Loading...




















April 5th, 2009 at 4:11 pm
ciao,
bella la guida.
ti chiedo se puoi inviarmi il tuo file dsdt.aml che hai aottenuto con l’acer one
mi servirebbe per OSX leopard retail che ormai gira perfetto. Purtroppo però il dsdt rimane ancora un grave prob.
puoi inviarmi il file a modogio@gmail.com
ciao e grazie
August 12th, 2008 at 10:38 pm
Ciao ho cercato un po’ in rete il tuo errore ma non ho trovato solo questo link:
http://www.lesswatts.org/projects/acpi/faq.php
il tuo errore non l’ho mai visto e sinceramente non saprei proprio cosa fare..
Fammi sapere se riesci a risolvere ciaooo
August 12th, 2008 at 9:19 am
Io ho corretto tutti gli errori e i warning, ma all’avvio con il mouse mi da questo errore:
ACPI: DSDT override uses original SSDTs unless “acpi_no_auto_ssdt”
Che devo fare???
May 15th, 2008 at 3:40 pm
Mah ottimo l’importante è che funziona tutto eheh
Guarda per il il voltaggio della cpu non ti so dire il nome del programma che fà questa cosa ma credo che esista perchè qualche tempo fà ne avevo sentito parlare.. bisognerebbe cercare bene in rete.. se trovi qualcosa fammi sapere ciaoo
May 13th, 2008 at 2:07 pm
Ciao, ti ringrazio veramente per la tua risposta e per la tua velocità nel rispondere. Fortunatamente ho risolto tutto, non so come, ho solo rifatto daccapo la procedura. Mah!
Comunque grazie ancora per la tua guida e per il tuo supporto.
Vorrei però chiederti ancora una cosa, esiste secondo te un modo per regolare il voltaggio del processore sotto Ubuntu? Una specie di Rmclock per Windows? Io con questo programma ho abbassato la freq max del processore a 1.2V rispetto a quella standard 1.55V, con un risparmio di circa 7 gradi nel riscaldamento del processore quando lavora a palla. Te lo chiedo perchè non ho ben capito se le ottimizzazioni fatte con la nuova tabella DSDT includono anche una migliore gestione del voltaggio del processore.
Grazie ancora di tutto. Ciaooo.
May 13th, 2008 at 11:26 am
Ciao hai eseguito l’ultima parte dell’articolo? quella che spiega come fare vedere la tabella al kernel?
per far vedere la tabella al kernel devi eseguire questi comandi:
cp DSDT.aml /etc/initramfs-tools/DSDT.aml
E poi devi digitare:
mkinitramfs -o /boot/initrd.img-`uname -r`
Ovviamente devi avere installato il initramfs-tools, fammi sapere se funziona ciaoo
May 12th, 2008 at 10:05 pm
Ciao, voglio complimentarmi con te perchè la tua guida è ottima. Io ho un HP con Amd Athlon64 e da qualche tempo ho installato Ubuntu 8.04 Amd64. Ho applicato la tua guida alla lettera correggendo tutti gli errori della tabella DSDT e applicando le modifiche con mkinitramfs. Nessun problema, nessun errore durante la procedura. Unico problema, non mi è cambiato nulla perchè nelle istruzioni di boot continua ad uscirmi
Looking for DSDT in initramfs… error, file /DSDT.aml not found.
Ho provato ad aprire il file creato (nel mio caso /boot/initrd.img-2.6.24-16-generic) facendone una copia sul desktop e aprendolo con gunzip e ho verificato che all’interno il mio DSDT.aml è presente.
Sapresti spiegarmi se sbaglio qualcosa? La procedura funziona su Ubuntu 64bit? Ubuntu 8.04 ha già il kernel con le patch integrate?
Ti ringrazio anticipatamente
May 12th, 2008 at 9:44 am
Kapo…hai trovato una soluzione agli altri errori? sono inalto mare con il mio asus a6km e tutto è peggiorato con l’uscita del nuovo ubuntu 8.04….webcam riconosciuta in automatico, ma da errori di buffer overflow e frame errors, necessità di disabilitare il modulo apic a causa di continui errori apic sulla cpu e blocchi improvvisi, problemi con l’acpi e conseguenti errori su riconoscimento rete elettrica/batteria, e solito mancato avvio con mouse usb connesso!!!!!!!!!!!! ubuntu è un bellissimo s.o., non ditemi che per poterlo usare bene devo cambiare portatile vi prego!
Qualcuno è in grado di aiutarmi? credo che l’errore acpi sia dovuto al fatto che ho messo un dsdt precompilato per avviare con mouse usb connesso, che però si vede mi crea prblemi con l’acpi…..il resto dei problemi invece non dipendono dalla correzione del modulo acpi…
cavolo….più si va avanti, più le cose peggiorano invece di migliorare, per lo meno con la mia macchina…
Vi prego che qualcuno mi dia unamano…se necessario posto il mio dsdt…
April 29th, 2008 at 8:57 pm
MA la compilazione và a buon fine?? ti dice che hai qualche errore o cosa?
usi il comando iasl per compilare?
Per compilare correttamente devi digitare: iasl -tc dsdt.dsl
April 27th, 2008 at 5:29 pm
Io non trovo il file dsdt.AML
Uso Hardy su acer aspire 5024 AMD turion64.
Sbaglio a compilare il dsdt.dsl col comando “sudo gedit”?
Scusa, ma non vorrei fare cappelle.
April 26th, 2008 at 4:09 pm
Grazie Kapo per la segnalazione e la correzione degli errori sicuramente potranno tornare utili a qualcuno! grazie ancora ciaooo
April 25th, 2008 at 5:23 pm
Allora io ho uno “Statement Unreachable” e svariati “Possible timeout is ignored”.
Per quel che riguarda i secondi, credo siano timeout di acquisizione di lock semaforici, ovvero il tempo dopo il quale non si attende più (così si evitanto starvation).
Mi devo informare su come si acquisiscono i lock.
Invece nel primo andando a vedere la riga in questione si vede che giusto prima c’è una return che chiaramente essendo eseguita prima esclude la seconda.
La soluzione è togliere la seconda riga, quella di Return (NXTD) che tanto non verrà mai eseguita, ma a questo punto siamo sicuri che le nostre modifiche siano effettivamente quello che il programmatore voleva far fare?
Chiaramente non mi assumo la responsabilità di errori che si potrebbero verificare (magari togliendo qualcosa non si fa partire la ventola e bye bye portatile).
Comunque posterò qui i risultati dei miei test.
April 25th, 2008 at 3:56 am
kapo grazie mille! Errore sparito!!!! sai aiutarmi per i warnings? ti prego fammi sapere se riesci a risolvere! te ne sarei gratissimo!!!!!!!!!!!!!!!!
April 24th, 2008 at 8:44 pm
Di nulla, in fondo lottiamo tutti per il software libero
Quest’errore qui:
dsdt.dsl 2850: Package (0×06)
Error 4046 – Initializer list too long ^
dice che i parametri della funzione sono troppi, andando a vedere nella con gedit a quella riga (2850 è la stessa dovrebbe essere il bios v300), si notano una miriade di “Zero,”
Ebbene, andando ad eliminarli e lasciando
solo l’ultima parentesi (per intenderci la
terza che dice Package (0×06) senza la virgola finale dopo la chiusa graffa l’errore mi è scomparso.
Adesso devo cercare di risolvere i warning.
April 11th, 2008 at 4:57 pm
Grazie per la segnalazione e per il chiarimento!!
April 10th, 2008 at 10:52 am
Leggendo su altri forum inglesi si viene a
sapere che i bachi sono dovuti al fatto
che asus ha compilato le sue dsdt con compilatore
strettamente microsoft e tentativi da parte di
alcuni utenti di rendere i bios compatibili
con linux hanno avuto risposte negative (secche).
Io sono rimasto molto contento dell’acquisto e
ritengo a6km un buon portatile, ma non è proprio
possibile che a livello così basso si abbia una
così bassa compatibilità…
Veramente negativa.
March 23rd, 2008 at 3:59 pm
Di nulla!! fà sempre piacere sapere che le guide che ho scritto possono tornare utili a qualcuno!! grazie per il link ciaooo
March 21st, 2008 at 7:02 pm
ciao,
grazie per i preziosi consigli! Sono riuscito a risolvere uno dei due warning, quello uguale al tuo, copiando dalla tua guida. ora la cpu scaling funziona a meraviglia!! purtroppo dell’altro errore non c’è traccia in internet e non so dove andare a pescare la soluzione. chissà che casini comporta. mah.
Grazie mille. ho linkato la tua guida nel post del forum di ubuntu dove avevo parlato del mio problema prima di capitare di qui…
http://forum.ubuntu-it.org/index.php/topic,170460.0.html
matteo
March 20th, 2008 at 6:09 pm
Beh per vedere la linea basta che guardi un attimo nelle opzioni di visualizzazione e sicuramente trovi la voce “visualizza linea”.
Poi credo proprio che il comando sia valido anche per gutsy..
Poi per correggere l’errore uguale al mio, basta che aggiungi prima della chiusura della funzione la seguente linea:
Return(Package(0×02){0×00, 0×00})
Fammi sapere se funziona ciaoooo
March 19th, 2008 at 5:09 pm
si, scusa, mi sono risposto da solo, domanda stupida… ho un altro paio di domande stupide.
sono arrivato a questa soluzione
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20061109 [May 16 2007]
Copyright (C) 2000 – 2006 Intel Corporation
Supports ACPI Specification Revision 3.0a
dsdt.dsl 91: Method (\_WAK, 1, NotSerialized)
Warning 1079 – ^ Reserved method must return a value (_WAK)
dsdt.dsl 3538: Method (_Q16, 0, NotSerialized)
Warning 1086 – ^ Not all control paths return a value (_Q16)
ASL Input: dsdt.dsl – 7942 lines, 278833 bytes, 3978 keywords
AML Output: dsdt.aml – 32901 bytes 782 named objects 3196 executable opcodes
Compilation complete. 0 Errors, 2 Warnings, 0 Remarks, 1150 Optimizations
uno dei due warning è uguale al tuo e vorrei correggerlo ma non ho capito come fare… se apro il file con gedit come faccio a capire quale linea devo cambiare? come individuo la riga 91?
e poi?
mkinitramfs -o /boot/initrd.img-`uname -r` è un comando valido anche per gutsy?
grazie mille
March 19th, 2008 at 4:26 pm
ciao,
avrei una domanda… anche io ho il problema del processore che sta sempre al 100% della frequenza e scalda. la scaling è bloccata e anche io ho il messaggio di errore:
ACPI: Looking for DSDT in initramfs… error, file /DSDT.aml not found.
la mia ventola attacca a girare ogni minuto, e mi fa girare un po’ pure a me…
la domanda: il compilatore iasl della intel funziona solo per i processori intel? ho un amd e vorrei provare a seguire la tua procedura. posso usare lo stesso compilatore??
grazie
matteo
March 17th, 2008 at 6:58 pm
Ciao, scusa se ti rispondo in ritardo ma sono stato impegnato, ho provato a fare una rapida ricerca su google ed ho trovato a questo link:
http://www.suseforums.net/index.php?showtopic=13893&pid=157918&mode=threaded&show=&st=&
Questa info:
“If the line is too long, break the line at the comma and indent the next line.”
(for code writers)
Che se non ho capito male vuol dire spezzare la linea,cioè inserire un acapo… in pratica devi dividere la linea di codice numero 5257 in più linee.. però non ne sono sicurissimo.. dovresti provare…
March 14th, 2008 at 1:34 pm
Ciao croccobiscotto,innanzitutto grazie mille della risposta, ieri sera ero disperato perchè sono 2 settimane che sto cercando di far funzionare gutsy a 64 bit sul mio portatile asus a6km che ha 2 annetti di vita e monta un amd turion 64.
Non so se ne sei a conoscenza,ma il mio portatile non boota se con mouse usb connesso, diciamo che si freeza, quindi ogni volta che lo avvio devo staccare mouse usb e riattaccarlo successivamente. Da poco è stata pubblicata una guida per risolvere questo problema a questo indirizzo: http://colbernoccolo.wordpress.com/2007/10/28/guida-allinstallazione-di-ubuntu-gutsy-su-portatile-asus-a6km/
La soluzione è rappresentata proprio dalla correzione degli errori nel file dsdt.aml, tanto è vero che è indicata la tua guida! in alternativa esiste un file dsdt.aml già corretto da utilizzare per risolvere! io non essendo in grado di risolvere gli errori sopra postati, nonostante una approfondita ricerca in google, ho deciso di utilizzare il file dsdt messo a disposizione e già corretto: il boot con mouse collegato funziona perfettamente, ma una volta caricato il nuovo dsdt nel registro di sistema ho un sacco di errori di powernow-k8: transition frequency failed e fid trans failed fid 0xa, curr 0×8.
Da utente inesperto di linux ho creduto di poter risolvere seguendo la tua guida, ma non ne vengo a capo proprio perchè non riesco nemmeno a risolvere quell’unico errore che mi si manifesta al di la degli 11 warnings…Che ne pensi, non è che mi potresti dare una mano? sto diventando pazzo a far funzionare ubuntu su questo portatile, ma non ci voglio rinunciare…
Grazie di cuore, aspetto con ansia una risposta
March 14th, 2008 at 12:19 pm
Ciao, guarda gli errori possibili sono talmente tanti che è impossibile conoscerli tutti. Comunque l’unica solouzione è cercare su google… purtroppo all’inizio anche io ho facevo così… mi spiace.. comunque i tuoi sono tutti warning quindi in teoria non c’è nessun errore grave…
March 14th, 2008 at 1:39 am
Post mitico,ma qualcuno mi può aiutare con la correzione dei miei errori????? sulla rete non trovo soluzioni!!!! vi prego ho bisogno di aiuto!! a chi posso chiedere aiuto???
Intel ACPI Component Architecture
ASL Optimizing Compiler version 20061109 [May 16 2007]
Copyright (C) 2000 – 2006 Intel Corporation
Supports ACPI Specification Revision 3.0a
dsdt.dsl 137: Method (QMOD, 1, NotSerialized)
Warning 1086 – ^ Not all control paths return a value (QMOD)
dsdt.dsl 1175: Return (NXTD)
Warning 1098 – ^ Statement is unreachable
dsdt.dsl 2401: Acquire (MUT0, 0×0FFF)
Warning 1103 – Possible operator timeout is ignored ^
dsdt.dsl 2850: Package (0×06)
Error 4046 – Initializer list too long ^
dsdt.dsl 5243: Acquire (MUTE, 0×03E8)
Warning 1103 – ^ Possible operator timeout is ignored
dsdt.dsl 5257: Acquire (MUTE, 0×03E8)
Warning 1103 – ^ Possible operator timeout is ignored
dsdt.dsl 5272: Acquire (MUTE, 0×03E8)
Warning 1103 – ^ Possible operator timeout is ignored
dsdt.dsl 5287: Acquire (MUTE, 0×0FFF)
Warning 1103 – ^ Possible operator timeout is ignored
dsdt.dsl 5301: Acquire (MUTE, 0×03E8)
Warning 1103 – ^ Possible operator timeout is ignored
dsdt.dsl 5316: Acquire (MUTE, 0×03E8)
Warning 1103 – ^ Possible operator timeout is ignored
dsdt.dsl 5331: Acquire (MUTE, 0×03E8)
Warning 1103 – ^ Possible operator timeout is ignored
dsdt.dsl 8373: Method (OWLD, 1, Serialized)
Warning 1086 – ^ Not all control paths return a value (OWLD)
ASL Input: dsdt.dsl – 8708 lines, 272577 bytes, 3828 keywords
Compilation complete. 1 Errors, 11 Warnings, 0 Remarks, 975 Optimizations
January 8th, 2008 at 6:22 pm
Ottimo
sono contento che il post sia servito a qualcuno.. ciaoo
January 7th, 2008 at 8:42 pm
ERRATA CORRIGE: ha funzionato benissimo…con l’acca!!!
January 7th, 2008 at 8:41 pm
mitico questo how-to, a me a funzionato benissimo.
Grazie ciao