Leaderboard
Popular Content
Showing content with the highest reputation on 05/19/25 in all areas
-
***Codec Verbs Info*** 071CXY X = Default Association Values: 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d and f Y = Sequence Values: Always set this to '0' because Apple dont use analog multi outputs in their codec. 071DXY X = Color: Color of the jack Values: 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 Y = Misc - Jack detect sensing capability Values: 1 for Internal Devices(Speaker etc.,) and 0 for External Devices(Headphones etc.,) 071EXY X = Default device - Intended use of the Jack Values: Speakers 1 HP Out 2 CD 3 SPDIF Out 4 Digital Other Out 5 Modem Line Side 6 Modem Handset Side 7 Line In 8 AUX 9 Mic In A Telephony B SPDIF In C Digital Other In D Reserved E Other F Y = Connection type - indicates the type of physical connection Values: Unknown 0 1/8 stereo/mono 1 1/4 stereo/mono 2 ATAPI internal 3 RCA 4 Optical 5 Other Digital 6 Other Analog 7 Multichannel Analog (DIN) 8 XLR/Professional 9 RJ-11 (Modem) A Combination B Other F 071FXY X = Port Connectivity - indicates the external connectivity of the Pin Complex. Software can use this value to know what Pin Complexes are connected to jacks, internal devices, or not connected at all. 00b - The Port Complex is connected to a jack (1/8, ATAPI, etc.). 01b - No physical connection for Port. 10b - A fixed function device (integrated speaker, integrated mic, etc.) is attached. 11b - Both a jack and an internal device are attached. Y = Location Location indicates the physical location of the jack or device to which the pin complex is connected. This allows software to indicate, for instance, that the device is the “Front Panel Headphone Jack†as opposed to rear panel connections. Details: Convert the 2 digit hex number to binary. Pad the front with zeros to make it 8 dgits. Example: Code: 0x02 = binary 10 = 00000010 8 digit binary Reading the bits from left to right: Port Connectivity bits 7:6 ----------------------------------------------------------- 00 - Port is connected to a Jack 01 - No External Port -or- No physical connection for Port** 10 - Fixed Function/Built In Device (integrated speaker, mic, etc) 11 - Jack and Internal device are attached Location Part 1 - bits 5:4 ----------------------------------------------------------- 00 - External on primary chassis 01 - Internal 10 - Separate chassis 11 - Other Location Part 2 - bits 3:0 ----------------------------------------------------------- The meaning depends on Location Part 1 00 0000****N/A 00 0001** Rear 00 0010** Front 00 0011** Left 00 0100** Right 00 0101** Top 00 0110** Bottom 00 0111** Special (Rear panel) 00 1000** Special (Drive bay) 01 0000** N/A 01 0111** Special (Riser) 01 1000** HDMI 01 1001** ATAPI 10 0000****N/A 10 0001** Rear 10 0010** Front 10 0011** Left 10 0100** Right 10 0101** Top 10 0110** Bottom 11 0000** N/A 11 0110** ? 11 0111** Inside Mobile Lid (example: mic) 11 1000** Outside Mobile Lid ************Bits Hex******76 54 3210 ------------------- 71cf01 = 00 00 0001 - Port has a jack - It is External - Rear Location 71cf02 = 00 00 0010 - Port has a jack - It is External - Front Panel Location 71cf59 = 01 01 1001 - No External Port - ATAPI 71cf18 = 00 01 1000 - Port has a jack - External - HDMI 71cf90 = 10 01 0000 - Built In Device - Internal - N/A ******** |**|**|||| ******** |**|**|--------- Location part 2 ******** |**|------------ Location part 1** ******** |--------------- Port Connectivity1 point
-
CHAPTER -2 PATCHING XML FILES: ***Platforms and Layoutxx file Patch Explanation*** COMPRESSING AND UNCOMPRESSING ZLIB FILES OF PLATFORM AND LAYOUT XML: From 10.8 or later, the xml files are compressed to zlib format. We have to uncompress them to edit the files. After editing, again we have to compress it back to zlib. For Compressing and uncompressing, use the attached perl script and below commands in terminal: for uncompressing perl zlib.pl inflate layout28.xml.zlib > layout28.xml for compressing perl zlib.pl deflate layout28.xml > layout28.xml.zlib Layoutxx.xml file Patching You can either use the attached xml files (or) can choose any one of the layout xml file from the apple Resources directory inside AppleHDA kext that matches Inputs and outputs of your codec and try this only if you want to experiment. I'm using the Layout28.xml of Apple and edited to the values of ALC269. One of the reason to choose layout28 is because its used in MacBookPro8,1 and works very well. The other layout id's which also works for some codecs are '1' and '12' in hackintosh. Note: We removed the tags External Mic, SPDIF from the Apple layout28 xml file since they are not needed for our example ALC269. In the Layout xml file, we have to edit the following information. 1. LayoutID <key>LayoutID</key> <integer>28</integer> 2. CodecID [ALC 269 Vendor id decimal value =283902569 ] <key>CodecID</key> <array> <integer>283902569</integer> </array> 3. Edit the Inputs key like below for External Mic(LineIn) and Internal Mic in Notebooks <key>Inputs</key> <array> <string>Mic</string> <string>LineIn</string> </array> 4. Edit the "IntSpeaker" key like below and remove all the signal processing elements. Note: set MuteGPIO to 0 (or) remove this if its not working [ not supported by some codecs] For Realtek: <key>IntSpeaker</key> <dict> <key>MaximumBootBeepValue</key> <integer>48</integer> <key>MuteGPIO</key> <integer>0</integer> </dict> For others: <key>IntSpeaker</key> <dict> <key>MaximumBootBeepValue</key> <integer>110</integer> </dict> 5. Edit the "LineIn" key like below. For Realtek: <key>LineIn</key> <dict> <key>MuteGPIO</key> <integer>1342242840</integer> </dict> For Others: <key>Mic</key> <dict/> 6. Edit the "Mic" key like below. For Realtek: <key>Mic</key> <dict> <key>MuteGPIO</key> <integer>1342242841</integer> </dict> For Others: <key>LineIn</key> <dict/> 7. Edit the Outputs key like below for Speakers and Headphone in Notebooks <key>Inputs</key> <array> <string>Headphone</string> <string>IntSpeaker</string> </array> 8. Edit the PathMapID tag at the end of the file with the PathMapID value used in Platforms xml file. <key>PathMapID</key> <integer>269</integer> Note: SignalProcessing elements for Mic and Speaker are not supported by some codecs, so i've removed it. But can provide some good audio if used but not sure, so try to experiment with this later after getting audio working. I've attached xml files with the SignalProcessing working fine in ALC269 for speaker and Mic in Realtek and IDT for your reference, you can get more from Apple xml files. Platforms.xml Patching: This file contains the Mapping of Controls to its nodes giving a path. These path maps are contained in the key tag "PathMaps". Note:You can use the Platforms xml file i've attached which has all the PathMaps of Apple codec are removed and has only one PathMap of ALC269 in order to make it easy for editing instead of Apple file. We need to add our pathMaps to this root key which is a mapping of our Pin Complex's(O/P & I/P) to its Output/Input controls. Follow the pattern i've explained below and edit the values of your codec nodes PathMaps calculated in the first post for each input and output. After editing then add the PathMap pattern of yours inside the file Platforms.xml at the end after the key tag of PathMapID like below. <key>PathMapID</key> <integer>[some apple id]</integer> </dict> <<< Your pathMaps >> The pattern for the PathMap is <dict> <key>PathMap</key> <array> <array> <array> Data of Input1 (LineIn) </array> <array> Data of Input2 (Mic) </array> </array> <array> <array> Data of Output1 (Speaker) </array> <array> Data of Output2 (Headphone) </array> </array> </array> <key>PathMapID</key> <integer>[PathMapID used in layout#]</integer> </dict> Input Data pattern: <array> <dict> <key>Amp</key> <dict> <key>Channels</key> <array> <dict> <key>Bind</key> <integer>1</integer> <key>Channel</key> <integer>1</integer> </dict> <dict> <key>Bind</key> <integer>2</integer> <key>Channel</key> <integer>2</integer> </dict> </array> <key>MuteInputAmp</key> <true/> <key>PublishMute</key> <true/> <key>PublishVolume</key> <true/> <key>VolumeInputAmp</key> <true/> </dict> <key>NodeID</key> <integer>[Input Node#]</integer> </dict> <dict> <key>NodeID</key> <integer>[Audio Mixer/Selector Node#]</integer> </dict> <dict> <key>Boost</key> <integer>[Boost value# 1-3]</integer> <key>NodeID</key> <integer>[Pin complex Node#]</integer> </dict> </array> Input Data pattern without Audio Mixer/Selector: Note: Some codecs doesn't need (or) use Audio Mixer/Selector node, so in order to get them working we should remove it from the pattern. Mostly this has been seen from IDT and Conexant codecs so far by me. <array> <dict> <key>Amp</key> <dict> <key>Channels</key> <array> <dict> <key>Bind</key> <integer>1</integer> <key>Channel</key> <integer>1</integer> </dict> <dict> <key>Bind</key> <integer>2</integer> <key>Channel</key> <integer>2</integer> </dict> </array> <key>MuteInputAmp</key> <true/> <key>PublishMute</key> <true/> <key>PublishVolume</key> <true/> <key>VolumeInputAmp</key> <true/> </dict> <key>NodeID</key> <integer>[Input Node#]</integer> </dict> <dict> <key>Boost</key> <integer>[Boost value# 1-3]</integer> <key>NodeID</key> <integer>[Pin complex Node#]</integer> </dict> </array> Output data pattern: <array> <dict> <key>Amp</key> <dict> <key>MuteInputAmp</key> <false/> <key>PublishMute</key> <true/> <key>PublishVolume</key> <true/> <key>VolumeInputAmp</key> <false/> </dict> <key>NodeID</key> <integer>[Pin complex Node#]</integer> </dict> <dict> <key>Amp</key> <dict> <key>MuteInputAmp</key> <true/> <key>PublishMute</key> <true/> <key>PublishVolume</key> <true/> <key>VolumeInputAmp</key> <false/> </dict> <key>NodeID</key> <integer>[Audio Mixer Node#]</integer> </dict> <dict> <key>Amp</key> <dict> <key>Channels</key> <array> <dict> <key>Bind</key> <integer>1</integer> <key>Channel</key> <integer>1</integer> </dict> <dict> <key>Bind</key> <integer>2</integer> <key>Channel</key> <integer>2</integer> </dict> </array> <key>MuteInputAmp</key> <true/> <key>PublishMute</key> <true/> <key>PublishVolume</key> <true/> <key>VolumeInputAmp</key> <false/> </dict> <key>NodeID</key> <integer>[Output Node#]</integer> </dict> </array> Output Data pattern without Audio Mixer: Note: Some codecs doesn't need (or) use Audio Mixer, so in order to get them working we should remove it from the pattern. Mostly this has been seen from IDT and Conexant codecs so far by me. <array> <dict> <key>Amp</key> <dict> <key>MuteInputAmp</key> <false/> <key>PublishMute</key> <true/> <key>PublishVolume</key> <true/> <key>VolumeInputAmp</key> <false/> </dict> <key>NodeID</key> <integer>[Pin complex Node#]</integer> </dict> <dict> <key>Amp</key> <dict> <key>Channels</key> <array> <dict> <key>Bind</key> <integer>1</integer> <key>Channel</key> <integer>1</integer> </dict> <dict> <key>Bind</key> <integer>2</integer> <key>Channel</key> <integer>2</integer> </dict> </array> <key>MuteInputAmp</key> <true/> <key>PublishMute</key> <true/> <key>PublishVolume</key> <true/> <key>VolumeInputAmp</key> <false/> </dict> <key>NodeID</key> <integer>[Output Node#]</integer> </dict> </array> Layout12_XML_Files_ref.zip Layout28_XML_Files_ref.zip zlib.zip1 point
This leaderboard is set to London/GMT+01:00