Jump to content

[Risolto] Sleep/Wake tramite iniezione nel DSDT


mrmojorisin17
 Share

116 posts in this topic

Recommended Posts

Ciao grande!

:D

 

Il DTGP Method è questo che hai aggiunto in fondo al DSDT?

 

		Method (DTGP, 5, NotSerialized)
 {
	 If (LEqual (Arg0, Buffer (0x10)
			 {
				 /* 0000 */	0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, 
				 /* 0008 */	0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
			 }))
	 {
		 If (LEqual (Arg1, One))
		 {
			 If (LEqual (Arg2, Zero))
			 {
				 Store (Buffer (One)
					 {
						 0x03
					 }, Arg4)
				 Return (One)
			 }

 

Lo devo aggiungere ogni volta che inietto del codice nuovo? O basta una volta?

 

Sulle ali dell'entusiamo ( ;) ) ho provato ad aggiungere questa parte di codice:

 

2eaqqa9.png

 

Questa volta il DSDT è stato compilato senza errori. L'ho provato, però, non è cambiato nulla, ancora non riesco ad aumentare la luminosità con la combinazione Fn+Ins.

;)

Continuo a lavorarci su.

Link to comment
Share on other sites

Ce l'ho fatta!!!

Adesso funziona anche l'incremento della luminosità con il comando Fn+Ins.

Il DSDT funzionante è l'ultimo che ho allegato (post precedente).

Ho risolto installando VoodooPS2Controller.kext in S/L/E al posto di PS2Controller.kext ed eliminando ClamshellDispaly.kext da S/L/E.

Questa è fatta!

Adesso rimane il problema sleep/wake.

Link to comment
Share on other sites

Ci sono novità.

Riesco ad ottenere un "parziale" risveglio; mi spiego meglio.

Con la batteria come fonte di alimentazione (mi interessa ottenere Sleep/Wake perfettamente funzionanti in questa modalità, in quanto non userò mai lo Sleep quando ho il netbook attaccato alla corrente) il netbook va in Sleep; premendo il tasto di accensione il netbook sembra quasi risvegliarsi, infatti, si accendono in contemporanea le spie di batteria e wifi, e, nonostante non si risvegli, se tengo premuto il tasto di accensione il PC si spegne e non sono costretto a togliere la batteria (con il vecchio DSDT tutto questo non accadeva).

Ho provato sia a tenere l'AirPort attivato sia a disattivarlo prima di mettere in Sleep, però in entrambi i casi il net non si risveglia.

In Preferenze di Sistema/Risparmio Energia ho la spunta alla voce "Riattiva per l'accesso al network AirPort".

Link to comment
Share on other sites

Aggiornamento

 

Come detto poco sopra ho fatto un'ulteriore modifica al mio DSDT prendendo spunto da quello di tea (nelle foto i particolari); sono andato ad intuito ed ho aggiunto questi due pezzi di codice (segnati in rosso):

 

OperationRegion (ECR, EmbeddedControl, Zero, 0xFF)

Field (ECR, ByteAcc, Lock, Preserve)

{

Offset (0x18),

SPTR, 8,

SSTS, 8,

SADR, 8,

SCMD, 8,

SBFR, 256,

SCNT, 8,

Offset (0x80),

B1EX, 1,

LWAK, 1,

ACEX, 1,

Offset (0x81),

SWBE, 1,

DCBE, 1,

Offset (0x82),

WLST, 1,

Offset (0x83),

LIDS, 1,

Offset (0x84),

B1ST, 8,

Offset (0x86),

BRIT, 8,

Offset (0xA0),

B1RP, 16,

B1RA, 16,

B1PR, 16,

B1VO, 16,

Offset (0xB0),

B1DA, 16,

B1DF, 16,

B1DV, 16,

B1DL, 16,

Offset (0xC0),

CTMP, 8,

Offset (0xC7),

TIST, 8,

Offset (0xD0),

B1TI, 16,

B1SE, 16,

B1CR, 16,

B1TM, 16

}

 

Method (_PSW, 1, NotSerialized)

{

If (Arg0)

{

Store (One, ^^PCI0.LPCB.H_EC.LWAK)

}

Else

{

Store (Zero, ^^PCI0.LPCB.H_EC.LWAK)

}

}

 

acy2js.png11ig5ll.png

 

Un piccolo miglioramento c'è stato, infatti adesso il netbook ha un "mezzo risveglio" dopo lo sleep.

Dopo aver mandato il netbook in Stop, se premo il tasto di accensione per risvegliarlo, accade questo:

sembra che il netbook si risvegli (si accendono le spie del wifi e dell'HD), però, mentre quella dell'HD si rispegne subito, quella del wifi rimane accesa. Schermo nero e sono costretto a riavviare forzatamente (prima ero costretto a togliere la batteria, in quanto neanche tenendo premuto il tasto di accensione riuscivo a spegnere il netbook).

 

Questo accade sia in modalità batteria, sia in modalità alimentazione, sia disattivando l'AirPort dalla barra del Finder prima di mandare il netbook in Stop, sia non disattivandolo prima dello Stop.

Non so se c'entri qualcosa o meno, però posso aggiungere che utilizzo un DSDT con iniezione di codice per l'ottenimento dello Speedstep Vanilla, quindi AppleIntelCPUPowerManagement.kext e VoodooBattery.kext.

Ho provato ad effettuare i test sia con la voce del BIOS Legacy USB Support impostata su [Enabled] sia su [Disabled] ottenendo gli stessi risultati.

 

Non posso paragonare la mia esperienza a quella di nessun'altra persona in possesso del mio stesso netbook (Samsung N140), in quanto non ho letto di topic, né qua né su altri forum tipo Mystiquemac, dove tra l'altro si parla di problemi simili su Samsung NC10, netbook simile al mio ma, pur sempre diverso.

 

Ho fatto un altro test con lo stesso DSDT addizionato di un'ulteriore parte di codice, che comunque credo c'entri ben poco col mio problema, visto che credo si riferisca più alla funzione sleep e non al wake.

Comunque ecco la parte di codice che ho aggiunto:

 

Name (_PRW, Package (0x02)

{

0x1D,

0x03

})

 

153mm1t.jpg

 

Con il nuovo DSDT non è cambiato assolutamente niente rispetto a quanto detto sopra.

 

Forse potrei metter mano su determinate parti del DSDT che già ho modificato, ad esempio Device USB o cose del genere, però non saprei proprio da dove cominciare!

Link to comment
Share on other sites

ciao

partendo da un tuo post più sopra in cui hai scritto che volevi 'inserire' premetto che nulla si può aggiungere che non sia già dedicato al tuo hw

cioè: se un hw ha delle tabelle e dei comportamenti/regole, non puoi creare dal nulla una regola inserendo una voce così.. solo copiandola da un altro hw

ciò detto

complimenti!! perchè hai effettivamente fatto un lavoro notevole, non solo per i test ma perchè hai effettivamente creato..

una domanda: perchè sei partito da dsdt di altri hw o modelli simili e non da un dsdt vero ovvero quelloche il tuo hw crea con una ubuntu o simile? e da li partire con voci che certamente avresti già avuto scritte senza doverle inserire con notevoli sforzi di tempo e ingegno?

se l'hai fatto o hai fatto un contronto allora ti chiedo scusa!!

 

per rispondere al tuo ultimo: hai verificato tutte le entry ehci (usb) e video in cui hai da inserire il

Name (_PRW, Package (0x02)

{

0x1D,

0x03

})

 

oppure una cosa simile che fa il contrario del notify SLPB?

 

perchè se vuoi che tutte le periferiche si sveglino deve esservi scritto su tutte!

 

altra cosa: hai verificato il LID ovvero la gestione del coperchio chiuso?

 

io non so se posso vedere il tuo dsdt in questi gg.. ma sarei veramente felice se tu avessi un dsl senza errori all'ìultimo livello ed uno vergine fatto dal tuo hw e non da altri. (e credimi.. anche due modelli uguali ma con PCB rev 1 o rev2 generano dsdt diversi!)

Link to comment
Share on other sites

Intanto grazie anche a te dell'interessamento, Alex aveva ragione, hai risposto subito! :thumbsdown_anim:

 

Io sono partito dal mio DSDT che mi sono estratto con DSDTSE non appena terminata l'installazione di Snow.

Fatto questo mi sono messo a confrontarlo con quello di un Samsung NC10 (preso da tea sul forum di Mystiquemac) grazie all'applicazione diffmerge.

Così facendo sono riuscito pian piano a scovare le differenze (nel topic trovi descritte tutte le modifiche che ho fatto) che secondo me potevano essere utili e così le ho aggiunte al mio DSDT.

Sono in questo modo riuscito ad ottenere il controllo della luminosità, che prima gestivo con applicazioni di terzi, e già questo per me è stata una soddisfazione.

Fatto questo ho continuato a confrontare i due DSDT; ho aggiunto altre parti di codice che hanno portato ad un ulteriore passo avanti verso l'obiettivo Wake (i dettagli sono nel mio ultimo post).

Detto questo, ho scelto di procedere così perchè, come ho già detto anche a scrax e smith@@, era l'unico modo che avevo, in base alle mie conoscenze, per poter ottenere qualcosa.

 

Rispondo alla tua domanda sul LID: chiudendo il coperchio il netbook va in sleep (dopo circa 5 secondi) e le spie di HD e wifi si spengono regolarmente. Naturalmente, quando riapro lo schermo il netbook non si risveglia e sono costretto a riavviare forzatamente.

 

Edit Sto preparando una penna USB con dentro Ubunu Live, così mi estraggo il DSDT direttamente da lì e lo confronto con quello diciamo "vergine" che mi sono estratto da Mac OS X tramite DSDTSE.

Ho provato a copiare il DSDT da Ubuntu Live dalla cartella proc/acpi, però quando provavo a copiarlo su una penna USB mi dava errore dicendo che non avevo i permessi necessari per eseguire l'operazione.

Stessa cosa se provavo a copiarlo in una delle due partizioni Mac.

Se mi date un dritta su come fare in serata lo posto.

 

A presto.

Link to comment
Share on other sites

ciao son tornato dall'ultima sciata

rotto come non mai

dammi un gg di tempo! domani mi metto all'opera

purtroppo non avendo più internet a lavoro non è facile seguire.. e se posso mi dedico volentieri

quindi cerco di capire il tuo lavoro perchè è un buon mdoo di imparere ose nuove

 

e complimentoni!

a domani

Link to comment
Share on other sites

con ubuntu prima di fare qualunque cosa devi fare (se sei live ubuntu o kubuntu)

sudo passwd root

imposti la pww

su -

inserisci la pww

 

ora sei operativo come root

monti la partizione fat32 in write e copi

 

..

ho inserito

If (_OSI ("Darwin"))

{

Store (0x07D6, OSYS)

}

nella parte in cui attiva o meno la gestione gestione power management cpu.. in tal modo dovresti poter eliminare il cpupowermanagement disabler ed avere la gestione nativa del consumo del procio

ma non è solo per quello

se noti nel metodo _WAK c'è un blocco che è condizionato al valore

If (LEqual (OSYS, 0x07D2

 

quindi avere un valore Vista like o comunque uguale a quello su detto (nel tuo caso specifico ma per altri può essere diverso) alimenta in tutto il dsdt comportamenti NUOVI!

 

 

 

ho verificato le comuni migliorie apportabili e mi pare sia allineato

quello che intendevo era la voce

Notify (\_SB.PWRB, 0x02)

 

per ciascuna periferica usb (sotto scope _GPE)

e ci sono! e sservono a correggere errori di device removal dopo un resume su periferiche usb..

 

ho inserito nei device usb1,2,..

Name (_PRW, Package (0x02)

{

0x0D,

0x03

})

 

Method (_DSM, 4, NotSerialized)

{

Store (Package (0x07)

{

"AAPL,current-available",

0x05DC,

"AAPL,current-extra",

0x03E8,

"AAPL,current-in-sleep",

0x0BB8,

Buffer (One)

{

0x00

}

}, Local0)

DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))

Return (Local0)

}

 

il blocco varia per ogni voce usb..sono emulazioni dei device originali

 

 

poi:

il device lid che hai modificato hai fatto un lavoro grande ad identificare le voci sul WAK.. ma non hai impostato il comportamento sullo SLPB!

 

cioè

hai ancora

Method (_LID, 0, NotSerialized)

{

Return (LIDS)

}

 

che io ho cambiato in

Method (_LID, 0, NotSerialized)

{

XOr (LIDS, One, Local0)

If (Local0)

{

Notify (SLPB, 0x80)

}

 

Return (LIDS)

}

 

poi ho aggiunto e iniettato codice per device SBUS

Method (_DSM, 4, NotSerialized)

{

Store (Package (0x04)

{

"name",

"pci8086,3a30",

"device-id",

Buffer (0x04)

{

0x30, 0x3A, 0x00, 0x00

}

}, Local0)

DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))

Return (Local0)

}

 

 

infine il pnlf e le modifiche al driver video gma950 sono corrette

se non chè ho inserito anche

"AAPL01,BacklightIntensity",

Buffer (0x04)

{

0x4E, 0x00, 0x00, 0x00

},

 

purtroppo con questo add mi ha dato errore in compilazione perchè il numero di entry per il metodo sono diverse da quanto dichiarato

e quindi alla riga

2269

Store (Package (10)

l'ho cambiato in

Store (Package ()

 

ti allego nuovo dsdt e aml..

fammi sapere!! altro non saprei fare..

Link to comment
Share on other sites

Eccomi qua, scusa la risposta tarda ma questo fine settimana ho staccato un pò.

Per prima cosa ti ringrazio del grande lavoro che hai fatto, in quanto io determinate cose non sarei mai riuscito a farle.

Grazie davvero! :D

 

Ho provato il DSDT sul piccolo: purtroppo niente da fare, il Wake non funziona.

Sia in modalità batteria, che in modalità alimentazione, non ho Wake dopo lo sleep.

Però ho notato un piccolo particolare; mentre con l'ultimo DSDT, una volta messo in sleep il netbook, quando provavo a risvegliarlo col tasto d'accensione si accendevano le spie di HD e wifi, adesso dopo che ho messo il piccolo in sleep, la spia del wifi si accende in automatico. E' come se il netbook tentasse da solo di risvegliarsi.

Altra cosa, il netbook impiega giusto un paio di secondi in più prima di accendere lo schermo, ovvero prima che compaia la schermata dove ho la possibilità di accedere al BIOS.

 

ps Adesso mi estraggo anche il DSDT da Ubuntu!

 

Tento anche questa via, dopodiché mi arrendo e mi tengo il piccolo senza Sleep.

 

Niente, da Ubuntu, neanche seguendo la procedura che mi hai detto, riesco a copiare il DSDT su una penna USB formattata in FAT32.

Link to comment
Share on other sites

con ubuntu prima di fare qualunque cosa devi fare (se sei live ubuntu o kubuntu)

sudo passwd root

imposti la pww

su -

inserisci la pww

 

ora sei operativo come root

monti la partizione fat32 in write e copi

 

..

ho inserito

If (_OSI ("Darwin"))

{

Store (0x07D6, OSYS)

}

nella parte in cui attiva o meno la gestione gestione power management cpu.. in tal modo dovresti poter eliminare il cpupowermanagement disabler ed avere la gestione nativa del consumo del procio

ma non è solo per quello

se noti nel metodo _WAK c'è un blocco che è condizionato al valore

If (LEqual (OSYS, 0x07D2

 

quindi avere un valore Vista like o comunque uguale a quello su detto (nel tuo caso specifico ma per altri può essere diverso) alimenta in tutto il dsdt comportamenti NUOVI!

 

 

 

ho verificato le comuni migliorie apportabili e mi pare sia allineato

quello che intendevo era la voce

Notify (\_SB.PWRB, 0x02)

 

per ciascuna periferica usb (sotto scope _GPE)

e ci sono! e sservono a correggere errori di device removal dopo un resume su periferiche usb..

 

ho inserito nei device usb1,2,..

Name (_PRW, Package (0x02)

{

0x0D,

0x03

})

 

Method (_DSM, 4, NotSerialized)

{

Store (Package (0x07)

{

"AAPL,current-available",

0x05DC,

"AAPL,current-extra",

0x03E8,

"AAPL,current-in-sleep",

0x0BB8,

Buffer (One)

{

0x00

}

}, Local0)

DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))

Return (Local0)

}

 

il blocco varia per ogni voce usb..sono emulazioni dei device originali

 

 

poi:

il device lid che hai modificato hai fatto un lavoro grande ad identificare le voci sul WAK.. ma non hai impostato il comportamento sullo SLPB!

 

cioè

hai ancora

Method (_LID, 0, NotSerialized)

{

Return (LIDS)

}

 

che io ho cambiato in

Method (_LID, 0, NotSerialized)

{

XOr (LIDS, One, Local0)

If (Local0)

{

Notify (SLPB, 0x80)

}

 

Return (LIDS)

}

 

poi ho aggiunto e iniettato codice per device SBUS

Method (_DSM, 4, NotSerialized)

{

Store (Package (0x04)

{

"name",

"pci8086,3a30",

"device-id",

Buffer (0x04)

{

0x30, 0x3A, 0x00, 0x00

}

}, Local0)

DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))

Return (Local0)

}

 

 

infine il pnlf e le modifiche al driver video gma950 sono corrette

se non chè ho inserito anche

"AAPL01,BacklightIntensity",

Buffer (0x04)

{

0x4E, 0x00, 0x00, 0x00

},

 

purtroppo con questo add mi ha dato errore in compilazione perchè il numero di entry per il metodo sono diverse da quanto dichiarato

e quindi alla riga

2269

Store (Package (10)

l'ho cambiato in

Store (Package ()

 

ti allego nuovo dsdt e aml..

fammi sapere!! altro non saprei fare..

 

Non per polemizzare ma perche' date la pappa pronta? Bastava che gli scrivevi: > Non era piu semplice? Almeno imparava.

Sbus, usb native, metodo per andare in sleep abbassando lo schermo(fra l'altro e' per l'msi u100) powermanagement(anche inutile per il suo fine) etc .etc., che senso ha se gli crei gia' tu il dsdt in tutto e per tutto? Perche' quello hai fatto.

Almeno questo credo che Simone abbia l'intelligenza per farlo da solo, perche' questo e' quello che mi ha fatto intendere.

Era codice che DOVEVA inserire DA SOLO. E' il mio pensiero. :(

Link to comment
Share on other sites

Ho provato ad iniettare del codice che ho visto su DSDTSE. Il problema è che non sapevo, e ancora non so, quali siano le parti che devo o non devo andare a toccare.

Cerco di confrontare il DSDT modificato da me con quelli di ugokind e tea per cercare di capire le modifiche fatte.

Comunque sia resta il problema del Wake. Come mi avevano già fatto capire sia smith@@ che scrax il DSDT non è la soluzione a tutti i mali dei nostri Hackintosh, e questa, almeno per ora, ne è la conferma.

Ho aperto questo topic con l'intento di comprendere un pò meglio quali fossero le dinamiche che regolano il DSDT; qualcosa di più ho capito (soprattutto dal punto di vista teorico; con la pratica ancora è dura) e ho accettato tutti gli aiuti/consigli/critiche che mi sono stati fatti.

Credo che ugokind abbia modificato il mio DSDT per esercizio personale e perché:

 

cerco di capire il tuo lavoro perchè è un buon modo di imparere cose nuove

 

A me, il DSDT modificato da lui può servire, oltre che per ulteriori prove, anche per comprendere meglio le modifiche fatte, in senso stretto, e le dinamiche del DSDT, in senso più generale.

Link to comment
Share on other sites

Poi penso che ognuno sia libero di fare ciò che crede.

Tu mi hai aiutato in un determinato modo, che ho apprezzato tantissimo! Infatti, è stato grazie a te che all'inizio il topic è andato avanti.

Ugokind ha scelto un'altra via, che ho ugualmente apprezzato, e che forse può essere vista come "dannosa" nei miei confronti da parte tua, ma che però da parte mia è vista come ulteriore fonte di speranza e di possibilità di comprendere il DSDT e, soprattutto, come fonte di speranza per risolvere il mio problema.

Nessuna polemica da parte mia, e anche da parte tua mi par di capire.

Ringrazio ancora una volta VOI che mi state dando una mano nei vari modi possibili.

Link to comment
Share on other sites

purtroppo miracoli nessuno li può fare.. ma siccome ero davvero free .. a casa.. a funcazzeggiare.. di fronte all'impulso irrefrenabile di sperimentare.. non mi son fatto problemi.

 

si son daccordo.. ma mi pare che mojo sia stato comunque fin dall'inizio molto operoso.. cioè se avesse aperto un topic con AIUTOOO fatemi il dsdt penso che non mi sarei nemmeno sbattuto a rispondere!!

Link to comment
Share on other sites

Grazie a tutti, davvero! :P

 

Appena riuscirò a copiarmi quel maledetto DSDT da Ubuntu Live lo confronterò con quello di DSDTSE per vedere se ci sono o meno differenze che potrebbero fare al caso mio.

Dopodiché potrò anche arrendermi, consapevole però, di aver provato il possibile.

Link to comment
Share on other sites

sto weekend ho cercato di adottare le stesse 'strategie' del dsdt su un acer 5710.. ma anche li tutto nero ma poi ciccia!

mica semplice.. c'è ancora da fare

Link to comment
Share on other sites

ciao ho controllato tutto.. a parte i \_oggetto scritti in altra notazione o i zero anzichè 0x00 etc.. mi sembrano identici!

occorre concentrarsi su altro

 

ti farò sapere

Link to comment
Share on other sites

..

ps

 

sto confrontando con altri dsdt.. in generale

e il tuo device SLPB è nudo

andrebbe corretto così

Device (SLPB)

{

Name (_HID, EisaId ("PNP0C0E"))

Method (_PRW, 0, NotSerialized)

{

Return (Package (0x02)

{

0x18,

0x03

})

}

}

 

altra cosa.. il tuo device PWRB non ha CID ma il classico HID

e mance di 2 entry

Name (_CID, EisaId ("PNP0C0C"))

Name (_UID, 0xAA)

Name (_STA, 0x0B)

 

 

cmq prova questo

Link to comment
Share on other sites

Grazie Ugo!

Lo provo e ti faccio sapere.

In questi giorni ho anche poco tempo per fare prove (fra università e tutto il resto) però, se la mente non m'inganna, una volta avevo provato un DSDT (pescato sempre sul forum di Mystiquemac) che mandava il piccoletto in Sleep e lo risvegliava immediatamente.

Mi spiego meglio: Sleep funzionante (sia tramite Fn+Esc, sia mandandolo in "Stop") e Wake immediato e automatico.

Devo cercare nel mio casino, da qualche parte deve essere.

Magari quello potrebbe essere un punto per una "nuova" partenza.

Ti ringrazio ancora una volta per l'aiuto che mi stai dando.

Link to comment
Share on other sites

cioè occorre concentrarsi sulla dinamica dello sleep

capire dove va a parare

 

altra domanda.. iousbfamily/contents/plugins/appleusbehci... è corretto?

perchè su leo ricordo che 99 su 100 senza un kext corretto lo sleep non partiva

Link to comment
Share on other sites

 Share

×
×
  • Create New...