Ubuntu Feisty ricompilare dsdt table

April 30, 2007 · 4,361 views · Print This Post Print This Post · Email This Post Email This Post

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
(1 votes, average: 5.00 out of 5)
Loading ... Loading ...

Condividi l'articolo:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Twitter

Link consigliati

Newsletter e Feed

Ti e' piaciuto questo articolo? allora iscrivi alla newsletter, riceverai ogni nuovo post via mail!!
Loading...Loading...


Se preferiferisci i feed ricordati di iscriverti ai miei Feed!

Commenti

28 Responses to “Ubuntu Feisty ricompilare dsdt table”

  1. 28
    gimox Says:

    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

  2. 27
    Croccobiscotto Says:

    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

  3. 26
    iceman Says:

    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???

  4. 25
    Croccobiscotto Says:

    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

  5. 24
    Matteo Says:

    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.

  6. 23
    Croccobiscotto Says:

    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

  7. 22
    Matteo Says:

    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

  8. 21
    Davide Says:

    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…

  9. 20
    Croccobiscotto Says:

    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

  10. 19
    Prinzeugen Says:

    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.

  11. 18
    Croccobiscotto Says:

    Grazie Kapo per la segnalazione e la correzione degli errori sicuramente potranno tornare utili a qualcuno! grazie ancora ciaooo

  12. 17
    Kapo Design Says:

    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.

  13. 16
    Davide Says:

    kapo grazie mille! Errore sparito!!!! sai aiutarmi per i warnings? ti prego fammi sapere se riesci a risolvere! te ne sarei gratissimo!!!!!!!!!!!!!!!!

  14. 15
    Kapo Design Says:

    Di nulla, in fondo lottiamo tutti per il software libero :D

    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.

  15. 14
    Croccobiscotto Says:

    Grazie per la segnalazione e per il chiarimento!!

  16. 13
    Kapo Design Says:

    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.

  17. 12
    Croccobiscotto Says:

    Di nulla!! fà sempre piacere sapere che le guide che ho scritto possono tornare utili a qualcuno!! grazie per il link ciaooo

  18. 11
    mintons Says:

    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

  19. 10
    Croccobiscotto Says:

    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

  20. 9
    mintons Says:

    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

  21. 8
    mintons Says:

    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

  22. 7
    Croccobiscotto Says:

    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…

  23. 6
    Davide Says:

    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

  24. 5
    Croccobiscotto Says:

    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…

  25. 4
    Davide Says:

    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

  26. 3
    Croccobiscotto Says:

    Ottimo :-) sono contento che il post sia servito a qualcuno.. ciaoo

  27. 2
    ugaciaka Says:

    ERRATA CORRIGE: ha funzionato benissimo…con l’acca!!!

  28. 1
    ugaciaka Says:

    mitico questo how-to, a me a funzionato benissimo.
    Grazie ciao

Lascia un Commento




Protezione antispam: Somma di quattro + nove ?