Jump to content

[Guida] AppleHDA su Mountain e Lion


Micky1979
 Share

205 posts in this topic

Recommended Posts

Download

 

Suono 3.png

Perchè modificare AppleHDA

 

Semplice, perchè il PC non è un Mac, ed anche di fronte a codec audio che portano lo stesso nome, il suono non uscirà dai vostri altoparlanti semplicemente perchè il codec è stato modificato con le specifiche di Apple per i veri Mac.

Però quasi tutti i Controller dei PC sono gli stessi e la compatibilità strettamente Hardware è massima, quindi il lavoro da effettuare si sposta quasi sempre solo sul codec audio:

 

quest'ultimo è l'oggetto di questo Topic, in quanto sarà proprio questo che dovrà essere ricostruito per far uscire l'audio dai Vostri altoparlati!

 

Codec Audio

 

Il codec Audio è un programma che contiene un algoritmo di compressione o decompressione del flusso dei dati audio, che permette di usare un numero minore di bit, ma con qualità, all'interno della banda passante dentro al Controller.

 

AppleHDA è meglio di VoodooHDA?

 

Onestamente, si!

VoodooHDA è una soluzione fantastica perchè permette a tutti, o quasi, di avere l'audio sui propri Hackintosh, il che di per se è già un grande successo, e va considerato il gran lavoro fatto dal Voodoo lab e gli sviluppatori che vi partecipano.

Ovviamente AppleHDA è un estensione che nasce per OSx e quindi gode sicuramente della grande stabilità che c'è sui veri Mac! Purtoppo non si può dire la stessa cosa per VoodooHDA, che in molte occasioni causa Kernel Panic durante l'avvio, e qualche volta anche durante il funzionamento, e questo è realmente seccante!

Altro punto a vantaggio di AppleHDA è sicuramente la qualità del suono, che gode di tutti i miglioramenti software di Osx, mentre VoodooHDA rilascia un suono un pò più "povero" perchè non dispone di tutti i controlli e filtri digitali che ci sono con il kext originale di Apple.

E' ancora ovvio, che il Vostro AppleHDA.kext, deve essere aggiustato con le procedure di cui discuteremo in questo Topic, e questo è l'unico punto debole, rispetto al VoodooHDA.kext.

 

Come ci riusciamo?

 

Il primo grande aiuto ce lo danno i driver ALSA di Linux, grazie ai quali siamo in grado di creare il dump (discarica) del codec audio utilizzato sulle nostre macchine, e di conseguenza sapere e risalire alla configurazione del codec, anche se brandizzato dal produttore della scheda madre o del Notebook.

Quindi un grazie meritato va a tutta la comunità di Linux.

 

ALSA

 

ALSA è l'acronimo di Advanced Linux Sound Architecture, ed è di solito un componente del kernel Linux (può essere anche un driver), che praticamente permette di avere il suono su tutti i PC dove si istallano le varie distribuzioni.

 

High Definition Audio

 

A partire dal 2004 Intel (e non solo) ha introdotto un nuovo sistema per i suoi controller, che è in grado di riprodurre più canali ad alta qualità rispetto ai precedenti codec audio integrati come AC'97, dove sono diverse le specifiche per molti aspetti, come i canali multipli e i jack da 3,5 mm etc. Proprio questi ultimi hanno grazie alle nuove specifiche i "sense signal", vale a dire la capacità di scambiare il flusso audio tra cuffie/altoparlati, microfono/microfono esterno ecc. con l'ausilio di un segnale che viene dato dal device audio e ricevuto dal software, al contrario della vecchia tecnologia abbastanza "meccanica" e con molti limiti.

 

Qui il manuale:

 

high-definition-audio-specification.pdf.zip

  • Like 2
Link to comment
Share on other sites

Download AppleHDA.kext, vari codec

 

ADI1988B.zip layout-id 0x01, 0x00, 0x00, 0x00

AD2000B.zip layout-id 0x63, 0x00, 0x00, 0x00 by ErmaC

ALC268.zip No dsdt, contiene Enabler by Taruga (perfect Sound)

ALC269.zip No dsdt, contiene Enabler + IOAudioFamily.kext

ALC270.zip layout-id 0x01, 0x00, 0x00, 0x00

ALC272.zip layout-id 0x0C, 0x00, 0x00, 0x00

ALC662.zip No dsdt, contiene Enabler By: @KemalALKIN

ALC670.zip layout-id 0x41, 0x00, 0x00, 0x00

ALC883.zip layout-id 0x01, 0x00, 0x00, 0x00 by @mirone

ALC887.zip layout-id 0x63, 0x00, 0x00, 0x00

ALC888.zip layout-id 0x0C, 0x00, 0x00, 0x00

ALC892 GENERICO.zip layout-id 0x20, 0x00, 0x00, 0x00

ALC892 MIRONE.zip layout-id 0x01, 0x00, 0x00, 0x00 by @mirone

ALC898.zip No dsdt, contiene Enabler

ALC1200.zip layout-id 0x63, 0x00, 0x00, 0x00

ALC1200 layout-id 0x0C, 0x00, 0x00, 0x00 by marionez

Conexant CX20561.zip layout-id 0x63, 0x00, 0x00, 0x00

IDT 92HD87B1.zip layout-id 0x0C, 0x00, 0x00, 0x00

 

Questi kext non sono stati creati da me, ma sono kext presi da altri utenti, qui o sul altri Forum come osx86.com, e olaria.com, a scopo di creare un Database.

 

Dowload Utenti

Spazio riservato ai "successi" degli utenti che hanno creato un AppleHDA.kext funzionante

I migliori AppleHDA.kext modificati per i vari codec, saranno appesi in questo post, con tanto di credito all'utente che ha creato il kext.

Dovranno essere specificate tutte le uscite/entrate Audio funzionanti ed il tipo di scheda madre o il modello del Laptop.

 

 

 

Laptop

 

 

 

 

Desktop

 

  • Like 2
Link to comment
Share on other sites

Materiale Necessario:

 

 

- Ubuntu live cd

- Codec_Dump (che farete con Linux )

- patch_hda (grazie a bcc9)

- graphviz (scaricate la versione compatible con quell di OSx)

- codecgraph-20120114.tar (rinominate la cartel come "codecgraph" per semplicità di utilizzo, controllate eventuali aggiornamenti qui)

- convert_hex_to_dec.rb.zip

- verbit.zip

- Plist Editor (cercate su Google un editor gratuito)

- zlib.pl.zip by Samantha

- layout12.xml.zlib e Platforms.xml.zlib (da prendere dentro ad AppleHDA.kext, per editarli)

- Minime conoscenze e intuito

 

Optional:

 

- HDA Wizard versione 10.8 by janek202 (per sostituire i file già pronti, o quelli che editerete da soli)

- AnalyseVerbs by Andy Vandijck (utile per "debuggare" il nostro pinconfig e vedere subito le modifiche)

 

 

tutti i diritti ai rispettivi creatori.

############################################################################################################

Trovare il codec id:

 

Semplice, quando avrete fatto il dump da Ubuntu, lo troverete scritto in Hex (esadecimale) alla prima riga del file.

 

In Windows, andante in gestione dispositivi cercando "Controller Audio, video e giochi",

Cliccando su una dell tab, (scegliendo il "codec", non il controller) cercate il Vendor ed il Produduct ID,

qualche cosa come da figura:

 

 

device manager.jpg

 

ID Venditore/111d (IDT) ID Prodotto/76e0 completo=111d76e0

 

ora conoscete il vostro codec audio!

 

Come viene usato in AppleHDA:

 

il codec id è usato in più posti in AppleHDA.kext, ma in differenti modi come stringa Hex, a byte invertiti e in decimale

 

Hex__________________11 1d 76 e0

 

decimale______________287143648

Hex byte invertiti_______e0 76 1d 11

 

facile fare la conversione con la Calcolatrice inclusa in OSx con vista impostata come "programmatore"

 

 

calc1.pngcalc2.pngcalc3.png

 

 

############################################################################################################

Riepilogo file da editare/sostituire con quelli disponibili e pronti al I° post di questo Topic:

 

1) AppleHDA.kext/Contents/MacOS/AppleHDA * (nota per chi utilizza Clover bootloader)

 

2) AppleHDA.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/Info.plist

 

3) AppleHDA.kext/Contents/Resources/layoutxx.xml.zlib

 

4) AppleHDA.kext/Contents/Resources/Platforms.xml.zlib

 

 

1) usare lo script di bcc9 "patch_hda", e invocare il proprio codec audio

 

2) aprire il il file come da percorso, ed espandere l'insieme di IOKItPersonalities=>HDAConfigDefault e settare le seguenti chiavi:

 

- CodecID

- ConfigData

- FuncGroup

- LayoutID

 

come da foto qui sotto:

 

info.plist.png

 

sostituire manualmente il file editato, o utilizzare HDA Wizard.app

 

3) sostituire/aggiungere manualmente il file scaricato e pronto (o quello da voi editato), oppure utilizzare HDA Wizard.app versione 10.8

 

4) sostituire/aggiungere manualmente il file scaricato e pronto (o quello da voi editato), oppure utilizzare HDA Wizard.app versione 10.8

 

 

* Nota x Clover bootloader

Se avete intenzione di utilizzare Clover v2 bootloader, potete provare il "Kext to patch":

 

infatti compilando questo array nel config.plist dentro alla cartella EFI potete fare in modo che sia Clover a patchare "al volo" il binario di AppleHDA.

Fare questo, consiste nell' istruire Clover a cercare la stringa di numeri esadecimali (con cui vogliamo sostituire il nostro codec id), in pratica gli diciamo

 

cerca "questa" sequenza esadecimale

e

sostituiscila con il mio codec id!

 

esempio:

 

<key>KextsToPatch</key>
<dict>
<key>0</key>
<dict>
<key>Name</key>
<string>AppleHDA</string>
<key>Find</key>
<data>84 19 4d 11=</data>
<key>Replace</key>
<data>05 76 1d 11</data>
</dict>
</dict>

 

Ovviamente questo deve essere fatto con un Editor di file plist, in grado di convertire le stringhe esadecimali in BASE64, tipo così:

 

<key>KextsToPatch</key>
<dict>
<key>0</key>
<dict>
<key>Name</key>
<string>AppleHDA</string>
<key>Find</key>
<data>hBlNEQ==</data>
<key>Replace</key>
<data>BXYdEQ==</data>
</dict>
</dict>

 

oppure puo essere utilizzata questa pagina ===> web

per convertire da esadecimale a BASE64, se volete lavorare con TextEdit.

############################################################################################################

Come procurarsi il proprio pinconfig

 

 

Fare il boot con il disco o la chiavetta di Ubuntu, aprire il Terminale e dare questi comandi:

 

Comandi

 

sudo -s

 

poi

 

cat /proc/asound/card0/codec#1 > ~/Desktop/codec_dump.txt

 

se questo non lavora, provate tipo così:

 

cat /proc/asound/card0/codec#0 > ~/Desktop/codec_dump.txt

(questo accade se il vostro codec non è 1 ma è 0, fate attenzione perché se non trovate l'indirizzo giusto verrà generato un codec_dump vuoto).

La stessa cosa potrebbe accadere se il device preso in considerazione non è quello ("card0")

 

 

Sul Desktop di Ubuntu troverete ora il file codec_dump.txt, salvatelo dentro una chiavetta, oppure speditelo per email.

Tornate in Osx e mettete la cartella "codecgraph" sul Desktop e copiateci dentro i seguenti file:

 

- codec_dump.txt

- convert_hex_to_dec.rb

- verbit

 

Ora istallate graphviz.pkg (che avrete scaricato compatibilmente con la vostra attuale versione di Osx)

 

Aprite il Terminale, e prendete possesso della cartella "codecgraph", che avete in precedenza copiato e rinominato sulla scrivania:

(potete copiare le righe blu direttamente sul Terminale)

cd ~/Desktop/codecgraph

poi

./codecgraph codec_dump.txt

poi

chmod +x ./convert_hex_to_dec.rb

poi

./convert_hex_to_dec.rb codec_dump.txt > ~/Desktop/codecgraph/codec_dump_dec.txt

poi

./convert_hex_to_dec.rb codec_dump.txt.svg > ~/Desktop/codecgraph/codec_dump_dec.txt.svg

infine*(aspettate, ci può essere un problema…verificate prima...)

./verbit codec_dump.txt > verbs.txt

 

 

 

Nota

 

 

* aprite il codec_dump.txt , e se trovate nelle prime tre righe qualche cosa simile a "AFG Function Id: 0x1 (unsol 1)",

cancellatela, altrimenti verbit fallisce!!

bene, ora abbiamo tutto il necessario, quindi mettetelo da parte:

 

- codec_dump.txt //codec dump originale da Ubuntu in Hex

- codec_dump_dec.txt //codec dump da Ubuntu convertito in decimal, questo tornerà utile in Platforms.xml

- codec_dump.txt.svg //rappresentazione grafica in Hex

- codec_dump_dec.txt.svg //rappresentazione grafica in decimale, tornerà utile in Platforms.xml

- verbitdebug.txt //in questo file troverete cosa verbit ha modificato e perchè

- verbs.txt //verbi aggiustati, qui troverete il vostro pinconfig aggiustato

 

file di testo e grafici, sono ora umanamente comprensibili , in Hex ed in decimale, questo ci aiuterà a compilare il layoutXX.xml, ed il Platforms.xml

Credit a @THe KiNG, Signal64 and Munky

 

############################################################################################################

 

 

verb? cosa sono?

 

guardate la spiegazione qui http://www.projectosx.com/forum/index.php?showtopic=465

 

verbs.png

 

 

I "Verb Data" sono parte del pinconfig:

il pinconfig è colui che dice al nostro controller audio, dove sono le nostre periferiche audio in uscita o in entrata come Altoparlanti, Cuffie, microfoni o i loro Jack.

Se desiderate, il pinconfig, può essere estratto da Windows in questo modo:

aprite regedit.exe e dal menù Apri/Trova digitate "pinconfig":

ok, trovato "PinConfigOverrideVerbs", e procediamo con l'esportazione dal menù File/Esporta, esportare in un file che chiameremo "pinconfig.reg"

 

regedit1.jpgregedit2.pngregedit3.pngregedit4.png

aprendo il file .reg in Osx , sarà simile a questo:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}\0000\PinConfigOverrideVerbs]
"0000"=hex:20,1c,a7,00
"0001"=hex:10,1d,a7,00
"0002"=hex:a1,1e,a7,00
"0003"=hex:04,1f,a7,00
"0004"=hex:1f,1c,b7,00
"0005"=hex:10,1d,b7,00
"0006"=hex:21,1e,b7,00
"0007"=hex:04,1f,b7,00
"0008"=hex:f0,1c,c7,00
"0009"=hex:00,1d,c7,00
"0010"=hex:f0,1e,c7,00
"0011"=hex:40,1f,c7,00
"0012"=hex:10,1c,d7,00
"0013"=hex:01,1d,d7,00
"0014"=hex:17,1e,d7,00
"0015"=hex:92,1f,d7,00
"0016"=hex:f0,1c,e7,00
"0017"=hex:00,1d,e7,00
"0018"=hex:f0,1e,e7,00
"0019"=hex:40,1f,e7,00
"0020"=hex:f0,1c,f7,00
"0021"=hex:00,1d,f7,00
"0022"=hex:f0,1e,f7,00
"0023"=hex:40,1f,f7,00
"0024"=hex:f0,1c,07,01
"0025"=hex:00,1d,07,01
"0026"=hex:f0,1e,07,01
"0027"=hex:40,1f,07,01
"0028"=hex:30,1c,17,01
"0029"=hex:01,1d,17,01
"0030"=hex:a3,1e,17,01
"0031"=hex:d5,1f,17,01
"0032"=hex:f0,1c,f7,01
"0033"=hex:00,1d,f7,01
"0034"=hex:f0,1e,f7,01
"0035"=hex:40,1f,f7,01
"0036"=hex:f0,1c,07,02
"0037"=hex:00,1d,07,02
"0038"=hex:f0,1e,07,02
"0039"=hex:40,1f,07,02
"NumVerbs"=hex:28,00,00,00

In pratica in Windows ci sono i verb con i numeri invertiti, quindi voi ora dovrete "raddrizzarli":

esempio:[/font][/color]

[color=#232323][font=Helvetica Neue]20,1c,a7,00 deve diventare 00a71c20

 

questo per tutti i verb.

 

Per salvare tempo, seleziona tutti i verbi e copiali qui:

 

http://www.ipwn.me/HDA/

 

il risultato sara questo:

00A71C20 00A71D10 00A71EA1 00A71F04 00B71C1F 00B71D10 00B71E21 00B71F04 00C71CF0 00C71D00 00C71EF0 00C71F40 00D71C10 00D71D01 00D71E17 00D71F92 00E71CF0 00E71D00 00E71EF0 00E71F40 00F71CF0 00F71D00 00F71EF0 00F71F40 01071CF0 01071D00 01071EF0 01071F40 01171C30 01171D01 01171EA3 01171FD5 01F71CF0 01F71D00 01F71EF0 01F71F40 02071CF0 02071D00 02071EF0 02071F40

 

 

Ma il pinconfig generato è lo stesso che troveremo in "verbit.txt" nella sua originale condizione, con la differenza che ora bisognerà interpretarlo e modificarlo:

 

pinconfig personalizzato

 

Praticamente, in verb.txt trovere il lavoro già pronto e corretto (a meno che non vogliamo farlo a mano se qualche cosa non funziona)

Guardate la differenza tra originale e corretto:

 

 

Verbs from Linux Codec Dump File: codec_dump.txt
Codec: IDT 92HD91BXX Address: 0 DevID: 287143648 (0x111d76e0)
Jack Color Description Node PinDefault Original Verbs
--------------------------------------------------------------------------------------------------------
Mic at Ext Right 0x0a 0x0a 77664288 00a71c20 00a71d10 00a71ea1 00a71f04
1/8 Black HP Out at Ext Right 11 0x0b 0x0421101f 00b71c1f 00b71d10 00b71e21 00b71f04
Unknown Unknown Other at Ext N/A 12 0x0c 0x40f000f0 00c71cf0 00c71d00 00c71ef0 00c71f40
Analog Unknown Speaker at Int Front 13 0x0d 0x92170110 00d71c10 00d71d01 00d71e17 00d71f92
Unknown Unknown Other at Ext N/A 14 0x0e 0x40f000f0 00e71cf0 00e71d00 00e71ef0 00e71f40
Unknown Unknown Other at Ext N/A 15 0x0f 0x40f000f0 00f71cf0 00f71d00 00f71ef0 00f71f40
Unknown Unknown Other at Ext N/A 16 0x10 0x40f000f0 01071cf0 01071d00 01071ef0 01071f40
ATAPI Unknown Mic at Int Top 17 0x11 0xd5a30130 01171c30 01171d01 01171ea3 01171fd5
Unknown Unknown Other at Ext N/A 31 0x1f 0x40f000f0 01f71cf0 01f71d00 01f71ef0 01f71f40
Unknown Unknown Other at Ext N/A 32 0x20 0x40f000f0 02071cf0 02071d00 02071ef0 02071f40
--------------------------------------------------------------------------------------------------------

Jack Color Description Node PinDefault Modified Verbs
--------------------------------------------------------------------------------------------------------
Mic at Ext Right 0x0a 0x0a 77664288 00a71c20 00a71d10 00a71ea1 00a71f00
1/8 Black HP Out at Ext Right 11 0x0b 0x0421101f 00b71c10 00b71d10 00b71e21 00b71f00
Unknown Unknown Other at Ext N/A 12 0x0c 0x40f000f0 00c71cf0 00c71d00 00c71ef0 00c71f40
Analog Unknown Speaker at Int Front 13 0x0d 0x92170110 00d71c40 00d71d00 00d71e17 00d71f91
Unknown Unknown Other at Ext N/A 14 0x0e 0x40f000f0 00e71c50 00e71d00 00e71ef0 00e71f40
Unknown Unknown Other at Ext N/A 15 0x0f 0x40f000f0 00f71c60 00f71d00 00f71ef0 00f71f40
Unknown Unknown Other at Ext N/A 16 0x10 0x40f000f0 01071c70 01071d00 01071ef0 01071f40
ATAPI Unknown Mic at Int Top 17 0x11 0xd5a30130 01171c30 01171d00 01171ea3 01171fd0
Unknown Unknown Other at Ext N/A 31 0x1f 0x40f000f0 01f71c80 01f71d00 01f71ef0 01f71f40
Unknown Unknown Other at Ext N/A 32 0x20 0x40f000f0 02071c90 02071d00 02071ef0 02071f40

 

Forse meglio usare verbit!

 

qui la rappresentazione di come è composto un verb:

 

00a71c20

 

0 = Connection Port

0 = Address

a = Default Device

7 = Connection type

1 = Port Color (unknown in my laptop, because no color exist)

c = other function

2 = Default Association

0 = Sequence

 

Color

 

indica al software il jack usato fisicamente (nel codec_dump), qua i byte da impostare x i colori dei jack:

 

 

 

Unknown 0

 

 

Black 1

 

 

Grey 2

 

 

Blue 3

 

 

Green 4

 

 

Red 5

 

 

Orange 6

 

 

Yellow 7

 

 

Purple 8

 

 

Pink 9

 

 

Reserved A-D

 

 

White E

 

 

Other F

 

 

Crediti a @THe KiNG, Signal64, Munky e Master Chief

 

 

 

Guardate per esempio gli Altoparlanti interni al Nodo 13 :thumbsup_anim:

esempio per il codec 111d76e0

svg IDT 11d76e0.png

 

############################################################################################################

Legenda dei simboli:

 

 

barradeisimboli.png

############################################################################################################

 

Modifica del kext:

 

binario di AppleHDA

AppleHDA.kext/Contents/MacOS/AppleHDA

 

Questa è la parte iniziale nel modificare AppleHDA, e per vari codec le cose possono cambiare su come avveniva in Lion

Semplicisticamente, se volete fare il lavoro in manuale, si tratta di trovare un sequenza esadecimale, che rappresenta un codec vero ed usato da Apple, e quindi trovarlo e sostituirlo con il nostro. Per cercarlo nel binario serve un programma come HexEdit.app (ma ce ne sono altri e gratis come quest'ultimo),con l'ausilio della casella "trova e sostituisci"; Ovviamente questo può essere fatto anche da Terminale.

Purtroppo questo è troppo riduttivo, e vi invito a leggere questi Topic aperti rispettivamente da @nyolc8 e @bcc9:

 

http://www.insanelym...-mountain-lion/

http://www.insanelym...-for-osx107108/

 

I Topic sono entrambi in Inglese, ma credo che nessuno vi fermerà nell'usare Google Translator, per capire che alcuni codec utilizzano e si attivano modificando istanze e codec diversi, all'interno del binario. Nello script di bcc9, patch-hda, sono presenti già un bel numero di codec pronti per modificare il Vs kext Audio, ed è quello che useremo.

 

 

 

Modifica del binario di AppleHDA con lo script di @bcc9

 

Aprite la cartella "patch-hda" e cliccate ancora su "patch-hda"

il Terminale si aprirà e vi notificherà che deve essere inserito il nome del codec, o il codec in Hex, inseritelo e poi vi verrà chiesta la password del vostro account.. non esitate a farlo!

 

Last login: Tue Oct 30 14:08:36 on ttys000
localhost:~ micky1979$ /Users/micky1979/Desktop/patch-hda/patch-hda ; exit;
Codec-id or codec-name to patch (eg 111d7675 or IDT 7675)?

Credito a @bcc9

 

 

info.plist

AppleHDA.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/Info.plist

Ok, trovate un array (insieme), e cancellate gli altri (questo non è realmente necessario, solo per non fare confusione),

 

infoplist1.png

 

 

ed editate con i vostri dati che sono::

 

- codec ID in decimale

- pinconfig modificato (da inserire in ConfigData)

- FuncGrup settato su 1 (se desiderate che sia così, alcuni sostengono che non deve essere >5)

- LayoutID settato su 12 (se desiderate che sia così, oppure potete assegnarne uno diverso, purchè venga ripetuto dove necessario):

 

info.plist.png

 

 

esempio con il codec ITD 111d7605 = 287143429,

cambiatelo per il vostro

 

 

 

 

Layoutxx.xml and Platforms.xlm (zlib)

AppleHDA.kext/Contents/Resources/layoutxx.xml.zlib

 

 

In Snow Leopard, i due file di cui parliamo, erano raggruppati in un solo plist, mentre da OSx Lion in poi, sono stati divisi in due file distinti!

 

AppleHDA.kext/Contents/Resources

La differenza principale, su come si modifica AppleHDA tra Lion e Mountain Lion, è che in ML i due file plist sono compressi in zlib, altrimenti il metodo sarebbe davvero molto simile (ovviamente è differente il modo di modificare il binario, ma per questo leggete il Topic di bcc9).

Quindi se avete un AppleHDA versione 10.7.x, molto probabilmente vi basterà recuperare tali file e comprimerli con lo script di Samantha.

 

Ora vediamo come decomprimere/comprimere i file xml interessati

 

Decompressione/Compressione

 

 

queste le istruzioni per lo script zlib.pl:

piazzate per comodità lo script dentro AppleHDA.kext/Contents/Resources (potete lasciarlo qui per tutta la durata dei vostri test)

Ora, aprite il Terminale e scrivete cd seguito da uno spazio e poi trascinate sul terminale la cartella Resources che contiene lo script:

 

 

Last login: Fri Oct 26 17:18:47 on ttys000
localhost:~ micky1979$ cd /Users/micky1979/Desktop/AppleHDA.kext/Contents/Resources
localhost:Resources micky1979$

 

layoutxx:

 

decompressione

perl zlib.pl inflate layout12.xml.zlib > layout12.xml

 

 

compressione

perl zlib.pl deflate layout12.xml > layout12.xml.zlib

 

 

 

Platforms:

decompressione

perl zlib.pl inflate Platforms.xml.zlib > Platforms.xml

 

 

compressione

perl zlib.pl deflate Platforms.xml > Platforms.xml.zlib

 

Credito a Samantha aka Revogirl

 

 

 

 

 

Layoutxx.xml

Il file LayoutXX,xml, sembra funzionare come un "inventario" dei dispositivi in uscita e in entrata del nostro pc,

bisogna dichiarare quali e quante uscite o ingressi si ha e come devono essere disposti, ricordandosi di "gruppare" gli ingressi e le uscite, come accadrà nel Platforms.xml

 

 

Esempi di nomi:

 

Mic=Microfono interno

ExtMic=Microfono esterno (Jack)

IntSpeaker=Altoparlanti Interni

Headphone=Cuffie

LineIn= Linea in ingresso

etc...

 

 

Potete usare i nomi che vi pare?

Onestamente No!

Questo ha sicuramente a che fare su come sono stati creati i verb del pinconfig, e se volete usare un Microfono esterno come "LineIn", molto probabilmente dovrà essere

modificato il pinconfig intorno ai Nodi interessati da questa modifica, secondo questa rappresentazione:

 

00a71c20

 

0 = Connection Port

0 = Address

a = Default Device

7 = Connection type

1 = Port Colour

c = other function

2 = Default Association

0 = Sequence

 

 

In aiuto, nel fare questo, @Andy Vandijck ha creato un tool per vedere facilmente come vengono modificati i vostri Uscite/Ingressi Audio e vederlo immediatamente (basta mettere il pinconfig in un file con testo in piano):

 

AnalyseVerbs

 

 

 

layout12 1.png

 

layout12 2.png

 

 

 

Platforms.xml

AppleHDA.kext/Contents/Resources/Platforms.xml.zlib

 

Mentre il Layout è come abbiamo detto un "inventario" dei nostri ingressi, il Platforms.xml contiene di fatto le informazione e gli indirizzi, su dove sono i nostri Altoparlanti, microfoni e quant'altro, ma sopratutto qui devono essere rispettati i percorsi dei Nodi come nella rappresentazione grafica di graphviz: il PathMaps

 

 

Questo è quello che troverete appena avrete decompresso il Platforms.xlm.xlib.

Ci sono due chiavi,

CommonPeripheralsDSP, dove sembrano essere "dichiarati" alcuni dispositivi comuni. Questo non è preso in considerazione da questa guida, semplicemente lo lasciamo stare.

PathMaps, come appena accennato, qui c'è il lavoro più duro, perchè qui vanno definiti i Nodi che portano alla pubblicazione dell'audio da parte del codec al Controller.

Platforms 1.png

 

 

AppleHDA.kext contiene le informazioni per tutti i codec supportati da Apple sui vari modelli che sono in produzione più sicuramente quelli che sono stati dichiarati aggiornabili da Apple stessa, quindi è chiaro che trovere molte opzioni sotto l'array di PathMaps che fanno appunto riferimento a tutte le configurazioni audio che sono supportate.

Se volete, potete cancellare tutti gli array e lasciarne solo uno, facendo attenzione dicorreggere il PathMapID,in modo che combaci con quello dichiarato nel LayoutXX.xml.

Personalmente, ho cercato di scegliere quello che veniva utilizzato, avendo un portatile Ivy Bridge, dal MBP 10,1(avendo uno ioreg da un Mac originale, ho controllato quale layout veniva utilizzato), ma questo non è realmente necessario, ma solo molto interessante.

Platforms 2.png

 

Qui invece potete notare, inanzitutto, che c'è una certa coerenza su come sono disposti le linee in ingresso, e quelle in uscita: sono su due array ben distinti.

L'esempio riportato ha solo il Microfono interno, ma li vanno inserite, se si posseggono, gli input come ExtMic, LineIn ecc.

Stessa cosa per le linee in uscita, infatti fanno parte dello stesso insieme, poi ci sono altri sottoinsiemi dove vengono defiti separatamente i percorsi dei Nodi per gli Altoparlati (in questo caso interni), e il jack delle cuffie.

Platforms 3.png

Guardando la foto, il percorso dei Nodi per arrivare alla pubblicazione dell'audio, seguono lo stesso percorso che trovate sul grafico (quello convertito in decimale), quindi per ogni dispositivo "attivo" che si possiede, va definito il percorso per ogni uscita o ingresso che il vostro pc possiede.

Fatto? ....No

E' chiaro che questa non è una cosa facile, perchè anche il minimo errore può invalidare il lavoro di tutti gli altri Nodi, per cui può venire comodo iniziare solo con gli Altoparlanti per vedere se funzionano, e successivamente provare con gli altri.

Come già detto, una volta editati i file .xml, potete utilizzarli anche in Lion lasciandoli così come sono, comprimeteli in zlib per usarli in Mountain Lion.

 

Utilizzate HDA Wizard versione per 10.8 per sostituire i file che avete editato.

 

############################################################################################################

DSDT Editing*:

 

 

 

E' richiesto in un Hackintosh, per attivare l'AppleHDA, l'inserimento del layout-id nel dsdt.aml

In pratica lo stesso numero di Layout usato in AppleHDA (es. Layout12.xml), deve combaciare con quello nel dsdt convertito in Hex:

 

 

12 in decimale = C in Hex

 

nel DSDT deve essere 0x0C 0x00 0x00 0x00

 

se volete per es. chiamare il vostro file layout885.xml:

 

885 in decimal = 375

 

nel DSDT deve essere 0x75 0x03 0x00 0x00 in Hex bytes invertiti

 

"layout-id",
Buffer (0x04)
{
0x0C, 0x00, 0x00, 0x00
},

 

 

esempio di una sezione completa:

 

Device (HDEF)
{
Name (_ADR, 0x001B0000)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x0A)
{
"built-in",
Buffer (One)
{
0x01
},
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
},
"layout-id",
Buffer (0x04)
{
0x0C, 0x00, 0x00, 0x00
},
"PinConfigurations",
Buffer (Zero) {}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}

 

 

 

Ovviamente è richiesto per funzionare, l'inserimento del "metodo DTGP" (che molto probabilmente avrete già inserito nel vostro dsdt per altre patch).

 

 

*Nota: Grazie a .:Ermac:. il layout nel dsdt diventerà un bel ricordo, infatti sarà disponibile (appena lo caricherà sul forum), l'Injector HDAEnabler in Enoch Bootloader, che manderà in pensione l'attivazione di AppleHDA.kext da dsdt negli hackintosh!

Enoch è in grado di iniettare il layout-id e l'HDMI dal org.chameleon.boot.plist :thumbsup_anim: , il Topic sarà aggornato a breve!

############################################################################################################

Edited by Micky1979
Novit� : Enoch inietta layout-id e HDMI senza modificare il dsdt
  • Like 4
Link to comment
Share on other sites

Approfondimenti

 

 

Verranno appese qui, con tanto di link al post, le soluzioni discusse nel Topic!

- VREF

Voltage Reference

 

- MuteGPIO

 

 

Guardando nel codec dump..

Node 10 [Pin Complex] wcaps 4195715: Stereo Amp-In
Control: name="Mic Jack Mode", index=0, device=0
ControlAmp: chs=0, dir=In, idx=0, ofs=0
Control: name="Mic Capture Volume", index=0, device=0
ControlAmp: chs=3, dir=In, idx=0, ofs=0
Control: name="Mic Jack", index=0, device=0
Amp-In caps: N/A
Amp-In vals: [0 0]
Pincap 71484: IN OUT HP EAPD Detect
Vref caps: HIZ 50 GRD 80
EAPD 2: EAPD
Pin Default 77664288: [Jack] Mic at Ext Right
Conn = 1/8, Color = Black
DefAssociation = 2, Sequence = 0
Pin-ctls: 36: IN VREF_80
Unsolicited: tag=02, enabled=1
Power: setting=D0, actual=D0
Connection: 3
 19* 20 28

 

VREF (50/80/100) -> Hex (32,50,64) + 0100 + Nodo ID (hex) -> Convertire in decimale

 

esempio:

 

 

 

Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out

Pin-ctls: 0x24: IN VREF_80

-> 0x50010018 -> 1342242840

 

 

Node 0x19 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out

Pin-ctls: 0x24: IN VREF_80

-> 0x50010019 -> 1342242841

 

 

Node 0x1a [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out

Pin-ctls: 0x20: IN VREF_HIZ

-> 0

 

 

Node 0x1b [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out

Pin-ctls: 0x40: OUT VREF_HIZ

-> 0

 

 

Quando è presente VREF _HIZ, al Nodo interessato (il pincomplex), MuteGPIO è uguale a 0

 

 

 

 

Altro esempio, se state usando nel Platforms.xlm:

 

22

24

10 Pin complex ExtMic

 

 

ed il IN VREF_80 è presente

 

in decimale:

 

 

80

+ 0100 + Nodo ID

10

 

 

convertire in Hex:

 

50 + 0100 + 0a = 5001000a in decimale MuteGPIO=1342242826

 

 

 

Credito a @neXus, su Project OS X Forums

  • Like 2
Link to comment
Share on other sites

  • 2 weeks later...

Ciao Michele come promesso eccoti l'AppleHDA modificato per Mountain Lion (12D44)

 

Ha bisogno di supporto via DSDT e lavora su layout id 99 (63 in esadecimale).

 

I passaggi per ottenerlo sono gli stessi che usai in questo #post#

 

A tale post trovi anche i singoli file per il "KIT"

 

AppleHDA.AD2000B.12D44.zip

 

Fabio

 

Hardware info da win:

 

HDAUDIO\FUNC_01&VEN_11D4&DEV_989B&SUBSYS_10438372&REV_1003

  • Like 1
Link to comment
Share on other sites

Ciao fiox89, spero di non aver sbagliato sezione, ho installato ML su una gigabyte z77x Up4 con i codec audio ALC892, prima avevo provato con i voodoohda e adesso con quelli postati qui, ma nulla, non vede alcun dispositivo..saresti cosi gentile da darmi una mano?

Link to comment
Share on other sites

Ciao fiox89, spero di non aver sbagliato sezione, ho installato ML su una gigabyte z77x Up4 con i codec audio ALC892, prima avevo provato con i voodoohda e adesso con quelli postati qui, ma nulla, non vede alcun dispositivo..saresti cosi gentile da darmi una mano?

Ragazzi scusate se nel periodo festivo sono un pò assente...ma sapete..bè.. :blush: ..feste... :P

 

fabiolino, riesci almeno a vedere l'icona del suono?...mettendo un paio di cufffie esce il suono?...hai messo il layout consigliato nel dsdt...se ce l'hai?

Sarebbe utile che mettessi l'hardware in firma, così è più facile aiutarti, senza che nessuno te lo chieda.. :whistle:

 

 

Micky

Link to comment
Share on other sites

  • 2 weeks later...

Io ho provato a mettere i kext per alc269 ma appena ho riavviato mac non partiva più. Arrivati alla schermata di chameleon e appena selezionavo mac OS, questo ritornava alla schermata di BIOS (dove c'è il logo Samsung non appena accendi il PC)

Link to comment
Share on other sites

Io ho provato a mettere i kext per alc269 ma appena ho riavviato mac non partiva più. Arrivati alla schermata di chameleon e appena selezionavo mac OS, questo ritornava alla schermata di BIOS (dove c'è il logo Samsung non appena accendi il PC)

Salve ragazzi, scusate il ritardo...

 

iakughan hai tolto la patch HDEF dal tuo dsdt/controllato se c'è?

Te lo domando perchè mi pare che c'ho messo le mani proprio io al tuo dsdt, senza sapere quale codec avevi.. ma il kext ALC269 nel post dei download non richiede questa cosa perchè al suo interno c'è l'Enabler che la sostituisce...appunto.

Le due cose insieme non andrebbero d'accordo!

Ovviamente prima di istallare un AppleHDA va rimosso VoodooHDA se presente, altrimenti KP assicurato!!

 

 

Micky

Link to comment
Share on other sites

Salve ragazzi, scusate il ritardo...

 

iakughan hai tolto la patch HDEF dal tuo dsdt/controllato se c'è?

Te lo domando perchè mi pare che c'ho messo le mani proprio io al tuo dsdt, senza sapere quale codec avevi.. ma il kext ALC269 nel post dei download non richiede questa cosa perchè al suo interno c'è l'Enabler che la sostituisce...appunto.

Le due cose insieme non andrebbero d'accordo!

Ovviamente prima di istallare un AppleHDA va rimosso VoodooHDA se presente, altrimenti KP assicurato!!

 

 

Micky

Cosa dovrei eliminare? Io momentaneamente non ho installato nulla, sono con AppleHDA originale, se vado nel dsdt che mi hai modificato in device hdef mi da:

 

Device (HDEF)
       {
           Name (_ADR, 0x001B0000)
           Method (_DSM, 4, NotSerialized)
           {
               Store (Package (0x0A)
                   {
                       "built-in", 
                       Buffer (One)
                       {
                           0x01
                       }, 

                       "device-type", 
                       Buffer (0x0F)
                       {
                           "IDT  92HD91BXX"
                       }, 

                       "hda-gfx", 
                       Buffer (0x0A)
                       {
                           "onboard-1"
                       }, 

                       "layout-id", 
                       Buffer (0x04)
                       {
                           0x0C, 0x00, 0x00, 0x00
                       }, 

                       "PinConfigurations", 
                       Buffer (Zero) {}
                   }, Local0)
               DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
               Return (Local0)
           }

           OperationRegion (HDAR, PCI_Config, 0x4C, 0x10)
           Field (HDAR, WordAcc, NoLock, Preserve)
           {
               DCKA,   1, 
                       Offset (0x01), 
               DCKM,   1, 
                   ,   6, 
               DCKS,   1, 
                       Offset (0x08), 
                   ,   15, 
               PMES,   1
           }

           Method (_PRW, 0, NotSerialized)
           {
               Return (GPRW (0x0D, 0x04))
           }
       }

Link to comment
Share on other sites

Cosa dovrei eliminare? Io momentaneamente non ho installato nulla, sono con AppleHDA originale, se vado nel dsdt che mi hai modificato in device hdef mi da:

 

se non ho le traveggole :o , tu hai detto questo:

Io ho provato a mettere i kext per alc269 ma appena ho riavviato mac non partiva più. Arrivati alla schermata di chameleon e appena selezionavo mac OS, questo ritornava alla schermata di BIOS (dove c'è il logo Samsung non appena accendi il PC)

 

per cui dovresti eliminare questo dal tuo DSDT:

 

Method (_DSM, 4, NotSerialized)
				    {
						    Store (Package (0x0A)
								    {
										    "built-in",
										    Buffer (One)
										    {
												    0x01
										    },
										    "device-type",
										    Buffer (0x0F)
										    {
												    "IDT  92HD91BXX"
										    },
										    "hda-gfx",
										    Buffer (0x0A)
										    {
												    "onboard-1"
										    },
										    "layout-id",
										    Buffer (0x04)
										    {
												    0x0C, 0x00, 0x00, 0x00
										    },
										    "PinConfigurations",
										    Buffer (Zero) {}
								    }, Local0)
						    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
						    Return (Local0)
				    }

....ricompilare ed re-installare la tabella modificata .......per affidarti al AppleHDA.kext x ALC269 che non richiede l'iniezione dal dsdt.

 

 

Micky

Link to comment
Share on other sites

Salve ragazzi, chiedo lumi a riguardo:

pochi giorni fa ho installato Niresh12495 10.8 con successo sul mio pc. Funziona tutto alla grande tranne che per la webcam (poco male) e per l'audio.

La motherboard è una Asus P5G41T-M LE con chip audio Realtek ALC887 High Definition Audio.

Vi chiedo: seguendo questa guida dovrei risolvere il problema audio? O funziona solo su schede più moderne?

Grazie!

Link to comment
Share on other sites

Salve ragazzi, chiedo lumi a riguardo:

pochi giorni fa ho installato Niresh12495 10.8 con successo sul mio pc. Funziona tutto alla grande tranne che per la webcam (poco male) e per l'audio.

La motherboard è una Asus P5G41T-M LE con chip audio Realtek ALC887 High Definition Audio.

Vi chiedo: seguendo questa guida dovrei risolvere il problema audio? O funziona solo su schede più moderne?

Grazie!

Ciao Theparsec, l'ALC887 è presente nella sezione Dowload di questo Topic, e mi viene spontanea la domanda se hai provato ad istallarlo....e con quale esito..

Comunque alla riga dell'ALC887 è presente anche l'ipostazione del "layout-id" che devi inserire nel dsdt per attivare l'AppleHDA da te scelto in questo caso

"layout-id 0x63, 0x00, 0x00, 0x00"

. Se non possiedi un dsdt, puoi istallare Enoch bootloader e settare/abilitare l'audio aggiungendo le chiavi giuste nell'org.chameleon.boot.plist (lo puoi fai direttamente dall'istaller di Enoch)..così eviti di mettere mano al dsdt.

Qui il link al Topic di Enoch by Ermac: #508

questa cosa dell'Enabler audio da bootloader è una novità e le versioni vengono continuamente aggiornate.

 

Ovviamente, quando si istalla una distro (come credo che sia la Niresh12495), dovresti fare attenzione perchè hanno istaller patchati che istallano l'audio in automatico in base ad uno script che rileva il tuo codec audio, quindi si potrebbe verificare che siano presenti kext in System/Library/Extensions tipo HDAEnabler.kext o HDEFEnabler.kext. Se invece hai selezionato in precedenza un voodooHDA.kext l'istaller potrebbe aver istallato anche l'HDADisabler.kext (perchè se si istalla il VoodooHDA si deve cancellare o disabilitare AppleHDA.kext per evitare che il sistema dia un kernel panic), per cui sii sicuro di rimuovere i kext appena menzionati se presenti.

 

Micky

  • Like 1
Link to comment
Share on other sites

Grazie per la risposta Micky,

i kext che sono presenti in System/Library/Extensions sono AppleHDA.kext, HDAEnabler1.kext e credo sia sospetto anche un certo LegacyHDA_ALC888.kext sicuramente installato con qualche mio vano tentativo con ######.

I VoodooHDA li installai senza successo ottenendo solo dei Kernel Panic, ma potrei ritentare alla luce di quanto descritto da te.

Ora cancello LegacyHDA_ALC888.kext e HDAEnabler1.kext lascio solo AppleHDA pulito e provo ad installare il kext ALC887 da te descritto. Vediamo cosa succede. Ti farò sapere!

 

Una sola domanda: per cancellare un kext basta semplicemente cancellarlo da System/Library/Extensions o bisogna fare altro dopo?

Grazie!

 

 

EDIT: Ho notato che scaricando il file all'interno c'è AppleHDA.kext, allora cancello anche quel kext insieme agli altri 2 sostituendolo con questo!

Link to comment
Share on other sites

 Share

×
×
  • Create New...