背景

远景现在的applehda声卡仿冒教程还是老前辈紫米留下来的方法,黑果小兵的制作APPLEALC的教程虽然也很详细,但是也是太过繁琐,让我这种小白操作起来还是觉得麻烦,这里写一篇根据万能声卡VoodooHDA的驱动来快速定制APPLEALC,介于现在APPLEALC的广泛普及,如果制作APPLEALC的定制声卡驱动的话,实际上需要的做的是3件事。

  1. 提取声卡的 codec 信息
  2. 制作 layout.xml 文件
  3. 制作 platforms.xml 文件

以上的所有操作都是在mac下操作,无需linux,

前期准备

  1. Xcode开发工具
  2. Git
  3. VoodooHDA.kext驱动
  4. 已经安装好的黑苹果,但是是由万能声卡驱动的想替换为APPLEALC驱动原生声卡的用户
  5. getdump 在mac下获取声卡的codec和型号信息
  6. getDumpXml 获取自动生成的platforms.xml文件

生成configdata数据

好了,废话不多说,开始实操。
首先下载getdump工具,利用工具生成codec工具

sudo cp ~/Downloads/getdump /usr/local/bin  # 将getdump命令复制到/usr/local/bin目录下
sudo chmod +x /usr/local/bin/getdump       # 为getdump添加执行权限
getdump > ~/Desktop/voodoo_dump.txt

提取codec信息和声卡型号,搜索Probing codec ,从下面的文件中提取如下信息

ound a device of class VoodooHDADevice: IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/HDAU@3/VoodooHDADeviceProbing codec #0...HDA Codec #0: Intel Haswell HDMIHDA Codec ID: 0x80862807Vendor: 0x8086Device: 0x2807Revision: 0x00Stepping: 0x00
PCI Subvendor: 0x397817aastartNode=1 endNode=2Found audio FG nid=1 startNode=2 endNode=4 total=2Processing audio FG cad=0 nid=1...
Powering up...
Parsing audio FG...
GPIO: 0x00000000 NumGPIO=0 NumGPO=0 NumGPI=0 GPIWake=0 GPIUnsol=0nid  3 0x18560010 as  1 seq  0 Digital-out   Jack  Digital Special Internal Unknown misc 0
Parsing vendor patch...
Nodes patching. Codec = 0
NumNodes = 2
VHDevice NID= 2 Config=00000000 (audio output  ) Cap=00000000 Ctrl=00000000 -- Conns:
VHDevice NID= 3 Config=18560010 (pin: Digital-o) Cap=09000094 Ctrl=00000040 -- Conns: 0=2
Parsing Ctls...
Disabling nonaudio...
Disabling useless...
Patched pins configuration:nid  3 0x18560010 as  1 seq  0 Digital-out   Jack  Digital Special Internal Unknown misc 0
Parsing pin associations...
1 associations found:
Association 0 (1) out:Pin nid=3 seq=0Redir type=-1 jack=0 def=0
Building AFG tree...
Tracing association 0 (1)Tracing pin 3 with min nid 0nid 2 returned 2nid 3 returned 2Pin 3 traced to DAC 2
Association 0 (1) trace succeeded
Tracing input monitor
Tracing other input monitors
Tracing beeper
Disabling unassociated widgets...
Disabling nonselected inputs...
Disabling useless...
Disabling crossassociated connections...
Disabling useless...
Binding associations to channels...
Assigning names to signal sources...
Assigning mixers to the tree...
Preparing pin controls...
AFG commit...
Creating PCM devices...
pcmAttach: HDA Intel Haswell HDMI PCM #0 DisplayPort at cad 0 nid 1
+--------------------------------------+
| DUMPING PCM Playback/Record Channels |
+--------------------------------------+Playback:Stream cap: 0x00000005AC3 PCMPCM cap: 0x001e07f016 20 24 32 bits, 32 44 48 88 96 176 192 KHzDAC: 2+-------------------------------+
| DUMPING Playback/Record Paths |
+-------------------------------+Playback:nid=3 [pin: Digital-out (HDMI)]|+ <- nid=2 [audio output] [src: pcm] bindSeq=00000001+-------------------------+
| DUMPING Volume Controls |
+-------------------------+Master Volume (OSS: vol)|+- control  1 (nid   3 out):    dir - out oss: vol, pcm mutePCM Volume (OSS: pcm)|+- control  1 (nid   3 out):    dir - out oss: vol, pcm muteOSS mixer initialization...
Registering PCM channels...
FG config/quirks: forcestereo ivref50 ivref80 ivref100 ivref
HP switch init...+-------------------+
| DUMPING HDA NODES |
+-------------------+Default Parameter
-----------------IN amp: 0x00000000OUT amp: 0x00000000nid: 2Name: audio outputWidget cap: 0x00006611PWR DIGITAL FORMAT_OVR 8CHAssociation: 0 (0x00000001)OSS: pcm (pcm)Stream cap: 0x00000005AC3 PCMPCM cap: 0x001e07f016 20 24 32 bits, 32 44 48 88 96 176 192 KHznid: 3Name: pin: Digital-out (HDMI)Widget cap: 0x0040778dCP PWR DIGITAL UNSOL AMP_OVR OUT_AMP 8CHAssociation: 0 (0x00000001)Pin cap: 0x09000094PDC OUT HDMI DP HBRPin config: 0x18560010Pin control: 0x00000040 OUTOutput amp: 0x80000000mute=1 step=0 size=0 offset=0Output val: [0x00 0x00]connections: 1 enabled 1|+ <- nid=2 [audio output]Found a device of class VoodooHDADevice: IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/HDEF@1B/VoodooHDADeviceProbing codec #0...HDA Codec #0: Realtek ALC282HDA Codec ID: 0x10ec0282Vendor: 0x10ecDevice: 0x0282Revision: 0x00Stepping: 0x03
PCI Subvendor: 0x397817aastartNode=1 endNode=2Found audio FG nid=1 startNode=2 endNode=36 total=34Processing audio FG cad=0 nid=1...
Powering up...
Parsing audio FG...
GPIO: 0x40000003 NumGPIO=3 NumGPO=0 NumGPI=0 GPIWake=0 GPIUnsol=1nid 18 0x90a60940 as  4 seq  0 Microphone    Fixed Digital N/A     Internal Unknown misc 4 NoPresenceDetectnid 20 0x411111f0 as 15 seq  0 Speaker       None  1/8     Rear    External Black   misc 0 NoPresenceDetectnid 23 0x411111f0 as 15 seq  0 Speaker       None  1/8     Rear    External Black   misc 0 NoPresenceDetectnid 24 0x04a11830 as  3 seq  0 Microphone    Jack  1/8     Right   External Black   misc 4nid 25 0x411111f0 as 15 seq  0 Speaker       None  1/8     Rear    External Black   misc 0 NoPresenceDetectnid 26 0x411111f0 as 15 seq  0 Speaker       None  1/8     Rear    External Black   misc 0 NoPresenceDetectnid 27 0x90170110 as  1 seq  0 Speaker       Fixed Analog  N/A     Internal Unknown misc 0 NoPresenceDetect
Patching widget caps nid=29 0x00400400 -> 0x00700400nid 30 0x04441120 as  2 seq  0 SPDIF-out     Jack  RCA     Right   External Black   misc 0 NoPresenceDetectnid 33 0x04211050 as  5 seq  0 Headphones    Jack  1/8     Right   External Black   misc 0
Parsing vendor patch...
Nodes patching. Codec = 0
NumNodes = 2
VHDevice NID= 2 Config=00000000 (audio output  ) Cap=00000000 Ctrl=00000000 -- Conns:
VHDevice NID= 3 Config=00000000 (audio output  ) Cap=00000000 Ctrl=00000000 -- Conns:
VHDevice NID= 4 Config=00000000 (vendor widget ) Cap=00000000 Ctrl=00000000 -- Conns:
VHDevice NID= 5 Config=00000000 (vendor widget ) Cap=00000000 Ctrl=00000000 -- Conns:
VHDevice NID= 6 Config=00000000 (audio output  ) Cap=00000000 Ctrl=00000000 -- Conns:
VHDevice NID= 7 Config=00000000 (vendor widget ) Cap=00000000 Ctrl=00000000 -- Conns:
VHDevice NID= 8 Config=00000000 (audio input   ) Cap=00000000 Ctrl=00000000 -- Conns: 0=35
VHDevice NID= 9 Config=00000000 (audio input   ) Cap=00000000 Ctrl=00000000 -- Conns: 0=34
VHDevice NID=10 Config=00000000 (vendor widget ) Cap=00000000 Ctrl=00000000 -- Conns:
VHDevice NID=11 disabled for Realtek by user info.list
VHDevice NID=12 Config=00000000 (audio mixer   ) Cap=00000000 Ctrl=00000000 -- Conns: 0=2 1=11
VHDevice NID=13 Config=00000000 (audio mixer   ) Cap=00000000 Ctrl=00000000 -- Conns: 0=3 1=11
VHDevice NID=14 Config=00000000 (vendor widget ) Cap=00000000 Ctrl=00000000 -- Conns:
VHDevice NID=15 Config=00000000 (audio mixer   ) Cap=00000000 Ctrl=00000000 -- Conns: 0=13
VHDevice NID=16 Config=00000000 (vendor widget ) Cap=00000000 Ctrl=00000000 -- Conns:
VHDevice NID=17 Config=00000000 (audio input   ) Cap=00000000 Ctrl=00000000 -- Conns: 0=18
VHDevice NID=18 Config=90a60940 (pin: Microphon) Cap=00000020 Ctrl=00000000 -- Conns:
VHDevice NID=19 Config=00000000 (vendor widget ) Cap=00000000 Ctrl=00000000 -- Conns:
VHDevice NID=20 Config=411111f0 (pin: Speaker () Cap=00010014 Ctrl=00000000 -- Conns: 0=12
VHDevice NID=21 Config=00000000 (vendor widget ) Cap=00000000 Ctrl=00000000 -- Conns:
VHDevice NID=22 Config=00000000 (vendor widget ) Cap=00000000 Ctrl=00000000 -- Conns:
VHDevice NID=23 Config=411111f0 (pin: Speaker () Cap=00000010 Ctrl=00000000 -- Conns: 0=15
VHDevice NID=24 Config=04a11830 (pin: Microphon) Cap=00003724 Ctrl=00000020 -- Conns:
VHDevice NID=25 Config=411111f0 (pin: Speaker () Cap=00003724 Ctrl=00000020 -- Conns:
VHDevice NID=26 Config=411111f0 (pin: Speaker () Cap=00003724 Ctrl=00000020 -- Conns:
VHDevice NID=27 Config=90170110 (pin: Speaker () Cap=0000373c Ctrl=00000020 -- Conns: 0=12 1=13
VHDevice NID=28 Config=00000000 (vendor widget ) Cap=00000000 Ctrl=00000000 -- Conns:
VHDevice NID=29 Config=00000000 (beep widget   ) Cap=00000000 Ctrl=00000000 -- Conns:
VHDevice NID=30 Config=04441120 (pin: SPDIF-out) Cap=00000014 Ctrl=00000040 -- Conns: 0=6
VHDevice NID=31 Config=00000000 (vendor widget ) Cap=00000000 Ctrl=00000000 -- Conns:
VHDevice NID=32 Config=00000000 (vendor widget ) Cap=00000000 Ctrl=00000000 -- Conns:
VHDevice NID=33 Config=04211050 (pin: Headphone) Cap=0000001c Ctrl=00000000 -- Conns: 0=12 1=13
VHDevice NID=34 Config=00000000 (audio mixer   ) Cap=00000000 Ctrl=00000000 -- Conns: 0=24 1=25 2=26 3=27 4=29 5=11
VHDevice NID=35 Config=00000000 (audio mixer   ) Cap=00000000 Ctrl=00000000 -- Conns: 0=24 1=25 2=26 3=27 4=29 5=11
Parsing Ctls...
Disabling nonaudio...
Disabling useless...Disabling control 10 nid 20 cnid -1 due to disabled widget.Disabling control 11 nid 23 cnid -1 due to disabled widget.Disabling control 13 nid 25 cnid -1 due to disabled widget.Disabling control 14 nid 26 cnid -1 due to disabled widget.Disabling control 19 nid 34 cnid 25 due to disabled widget.Disabling control 20 nid 34 cnid 26 due to disabled widget.Disabling control 24 nid 35 cnid 25 due to disabled widget.Disabling control 25 nid 35 cnid 26 due to disabled widget.Disabling nid 12 connection 1 due to disabled child widget.Disabling nid 13 connection 1 due to disabled child widget.Disabling nid 15 due to all it's consumers disabled.Disabling nid 34 connection 5 due to disabled child widget.Disabling nid 35 connection 5 due to disabled child widget.Disabling control 7 nid 15 cnid 13 due to disabled widget.
Patched pins configuration:nid 18 0x90a60940 as  4 seq  0 Microphone    Fixed Digital N/A     Internal Unknown misc 4 NoPresenceDetectnid 20 0x411111f0 as 15 seq  0 Speaker       None  1/8     Rear    External Black   misc 0 NoPresenceDetect [DISABLED]nid 23 0x411111f0 as 15 seq  0 Speaker       None  1/8     Rear    External Black   misc 0 NoPresenceDetect [DISABLED]nid 24 0x04a11830 as  3 seq  0 Microphone    Jack  1/8     Right   External Black   misc 4nid 25 0x411111f0 as 15 seq  0 Speaker       None  1/8     Rear    External Black   misc 0 NoPresenceDetect [DISABLED]nid 26 0x411111f0 as 15 seq  0 Speaker       None  1/8     Rear    External Black   misc 0 NoPresenceDetect [DISABLED]nid 27 0x90170110 as  1 seq  0 Speaker       Fixed Analog  N/A     Internal Unknown misc 0 NoPresenceDetectnid 30 0x04441120 as  2 seq  0 SPDIF-out     Jack  RCA     Right   External Black   misc 0 NoPresenceDetectnid 33 0x04211050 as  5 seq  0 Headphones    Jack  1/8     Right   External Black   misc 0
Parsing pin associations...
5 associations found:
Association 0 (1) out:Pin nid=27 seq=0Redir type=-1 jack=-1 def=0
Association 1 (2) out:Pin nid=30 seq=0Redir type=-1 jack=-1 def=0
Association 2 (3) in:Pin nid=24 seq=0Redir type=-1 jack=0 def=0
Association 3 (4) in:Pin nid=18 seq=0Redir type=-1 jack=-1 def=0
Association 4 (5) out:Pin nid=33 seq=0Redir type=-1 jack=0 def=0
Building AFG tree...
Tracing association 0 (1)Tracing pin 27 with min nid 0nid 2 returned 2nid 12 returned 2nid 3 returned 3nid 13 returned 3nid 27 returned 2Pin 27 traced to DAC 2
Association 0 (1) trace succeeded
Tracing association 1 (2)Tracing pin 30 with min nid 0nid 6 returned 6nid 30 returned 6Pin 30 traced to DAC 6
Association 1 (2) trace succeeded
Tracing association 2 (3)Tracing pin 24 to ADC 8tracing via nid 24tracing via nid 34tracing via nid 9nid 9 returned 0nid 34 returned 0tracing via nid 35tracing via nid 8nid 8 returned 1nid 35 returned 1nid 24 returned 1Pin 24 traced to ADC 8
Association 2 (3) trace succeeded
Tracing association 3 (4)Tracing pin 18 to ADC 9tracing via nid 18tracing via nid 17nid 17 returned 0nid 18 returned 0Unable to trace pin 18 to ADC 9, undo tracesTracing pin 18 to ADC 17tracing via nid 18tracing via nid 17nid 17 returned 1nid 18 returned 1Pin 18 traced to ADC 17
Association 3 (4) trace succeeded
Tracing association 4 (5)Tracing pin 33 with min nid 0nid 12 busy by association 0nid 3 returned 3nid 13 returned 3nid 33 returned 3Pin 33 traced to DAC 3
Association 4 (5) trace succeeded
Tracing input monitorTracing nid mix 35 to outtracing via nid 35tracing via nid 8nid 8 busy by input association 2nid 35 returned 0
Tracing other input monitorsTracing nid complex 18 to outtracing via nid 18tracing via nid 17nid 17 busy by input association 3nid 18 returned 0Tracing nid complex 24 to outtracing via nid 24tracing via nid 34tracing via nid 9nid 9 returned 0nid 34 returned 0tracing via nid 35nid 35 busy by input association 2nid 24 returned 0
Tracing beeperTracing nid 29 to outtracing via nid 29tracing via nid 34tracing via nid 9nid 9 returned 0nid 34 returned 0tracing via nid 35nid 35 busy by input association 2nid 29 returned 0
Disabling unassociated widgets...
Disabling nonselected inputs...
Disabling useless...Disabling control 4 nid 9 cnid -1 due to disabled widget.Disabling control 18 nid 34 cnid 24 due to disabled widget.Disabling control 21 nid 34 cnid 27 due to disabled widget.Disabling control 22 nid 34 cnid 29 due to disabled widget.
Disabling crossassociated connections...
Disabling useless...
Binding associations to channels...
Assigning names to signal sources...
Assigning mixers to the tree...
Preparing pin controls...
AFG commit...
Creating PCM devices...
pcmAttach: HDA Realtek ALC282 PCM #0 Analog at cad 0 nid 1
+--------------------------------------+
| DUMPING PCM Playback/Record Channels |
+--------------------------------------+Playback:Stream cap: 0x00000001PCMPCM cap: 0x000e056016 20 24 bits, 44 48 96 192 KHzDAC: 2Record:Stream cap: 0x00000001PCMPCM cap: 0x000e056016 20 24 bits, 44 48 96 192 KHzADC: 8+-------------------------------+
| DUMPING Playback/Record Paths |
+-------------------------------+Playback:nid=27 [pin: Speaker (Analog)]|+ <- nid=12 [audio mixer] [src: mix] bindSeq=00000001|+ <- nid=2 [audio output] [src: pcm] bindSeq=00000001Record:nid=8 [audio input]|+ <- nid=35 [audio mixer] [src: mix] bindSeq=00000001|+ <- nid=24 [pin: Microphone (Black Right)] [src: mic] bindSeq=00000001+ <- nid=29 [beep widget]Input Mix:nid=12 [audio mixer]|+ <- nid=2 [audio output] [src: pcm] bindSeq=00000001nid=13 [audio mixer]|+ <- nid=3 [audio output] [src: pcm] bindSeq=00000001nid=35 [audio mixer]|+ <- nid=24 [pin: Microphone (Black Right)] [src: mic] bindSeq=00000001+ <- nid=29 [beep widget]+-------------------------+
| DUMPING Volume Controls |
+-------------------------+Master Volume (OSS: vol)|+- control  1 (nid   2 out):    dir - out oss: vol, pcm, mix -65/+0dB (88 steps)+- control  5 (nid  12 in   0): dir - out oss: vol, pcm, mix mute+- control 15 (nid  27 out):    dir - out oss: vol, mix mutePCM Volume (OSS: pcm)|+- control  1 (nid   2 out):    dir - out oss: vol, pcm, mix -65/+0dB (88 steps)+- control  5 (nid  12 in   0): dir - out oss: vol, pcm, mix muteMicrophone Volume (OSS: mic)|+- control 12 (nid  24 in   0): dir - in oss: mic +0/+36dB (4 steps)+- control 23 (nid  35 in   0): dir - in oss: mic, rec muteSpeaker/Beep Volume (OSS: speaker)|+- control 27 (nid  35 in   4): dir - in oss: speaker, rec muteRecording Level (OSS: rec)|+- control  3 (nid   8 in   0): dir - in oss: mix, rec -17/+30dB (64 steps) + mute+- control 23 (nid  35 in   0): dir - in oss: mic, rec mute+- control 27 (nid  35 in   4): dir - in oss: speaker, rec muteInput Mix Level (OSS: mix)|+- control  1 (nid   2 out):    dir - out oss: vol, pcm, mix -65/+0dB (88 steps)+- control  3 (nid   8 in   0): dir - in oss: mix, rec -17/+30dB (64 steps) + mute+- control  5 (nid  12 in   0): dir - out oss: vol, pcm, mix mute+- control 15 (nid  27 out):    dir - out oss: vol, mix muteOSS mixer initialization...
Registering PCM channels...
pcmAttach: HDA Realtek ALC282 PCM #1 Digital at cad 0 nid 1
+--------------------------------------+
| DUMPING PCM Playback/Record Channels |
+--------------------------------------+Playback:Stream cap: 0x00000005AC3 PCMPCM cap: 0x000e05e016 20 24 bits, 44 48 88 96 192 KHzDAC: 6+-------------------------------+
| DUMPING Playback/Record Paths |
+-------------------------------+Playback:nid=30 [pin: SPDIF-out (Black Right)]|+ <- nid=6 [audio output] [src: pcm] bindSeq=00000001+-------------------------+
| DUMPING Volume Controls |
+-------------------------+OSS mixer initialization...
Registering PCM channels...
pcmAttach: HDA Realtek ALC282 PCM #2 Analog at cad 0 nid 1
+--------------------------------------+
| DUMPING PCM Playback/Record Channels |
+--------------------------------------+Playback:Stream cap: 0x00000001PCMPCM cap: 0x000e056016 20 24 bits, 44 48 96 192 KHzDAC: 3Record:Stream cap: 0x00000001PCMPCM cap: 0x000e056016 20 24 bits, 44 48 96 192 KHzADC: 17+-------------------------------+
| DUMPING Playback/Record Paths |
+-------------------------------+Playback:nid=33 [pin: Headphones (Black Right)]|+ <- nid=13 [audio mixer] [src: mix] bindSeq=00000001|+ <- nid=3 [audio output] [src: pcm] bindSeq=00000001Record:nid=17 [audio input]|+ <- nid=18 [pin: Microphone (Digital)] [src: monitor] bindSeq=00000001+-------------------------+
| DUMPING Volume Controls |
+-------------------------+Master Volume (OSS: vol)|+- control  2 (nid   3 out):    dir - out oss: vol, pcm, mix -65/+0dB (88 steps)+- control  6 (nid  13 in   0): dir - out oss: vol, pcm, mix mute+- control 17 (nid  33 out):    dir - out oss: vol, mix mutePCM Volume (OSS: pcm)|+- control  2 (nid   3 out):    dir - out oss: vol, pcm, mix -65/+0dB (88 steps)+- control  6 (nid  13 in   0): dir - out oss: vol, pcm, mix muteMicrophone2 Volume (OSS: monitor)|+- control  9 (nid  18 in   0): dir - in oss: monitor +0/+36dB (4 steps)Recording Level (OSS: rec)|+- control  8 (nid  17 in   0): dir - in oss: rec -17/+30dB (64 steps) + muteInput Mix Level (OSS: mix)|+- control  2 (nid   3 out):    dir - out oss: vol, pcm, mix -65/+0dB (88 steps)+- control  6 (nid  13 in   0): dir - out oss: vol, pcm, mix mute+- control 17 (nid  33 out):    dir - out oss: vol, mix muteOSS mixer initialization...
Registering PCM channels...
FG config/quirks: forcestereo ivref50 ivref80 ivref100 ivref
HP switch init...+-------------------+
| DUMPING HDA NODES |
+-------------------+Default Parameter
-----------------Stream cap: 0x00000001PCMPCM cap: 0x000e056016 20 24 bits, 44 48 96 192 KHzIN amp: 0x00000000OUT amp: 0x00000000nid: 2Name: audio outputWidget cap: 0x0000041dPWR FORMAT_OVR AMP_OVR OUT_AMP STEREOAssociation: 0 (0x00000001)OSS: pcm (pcm)Stream cap: 0x00000001PCMPCM cap: 0x000e056016 20 24 bits, 44 48 96 192 KHzOutput amp: 0x00025757mute=0 step=87 size=2 offset=87Output val: [0x38 0x38]nid: 3Name: audio outputWidget cap: 0x0000041dPWR FORMAT_OVR AMP_OVR OUT_AMP STEREOAssociation: 4 (0x00000001)OSS: pcm (pcm)Stream cap: 0x00000001PCMPCM cap: 0x000e056016 20 24 bits, 44 48 96 192 KHzOutput amp: 0x00025757mute=0 step=87 size=2 offset=87Output val: [0x38 0x38]nid: 4 [DISABLED]Name: vendor widgetWidget cap: 0x00f00000nid: 5 [DISABLED]Name: vendor widgetWidget cap: 0x00f00000nid: 6Name: audio outputWidget cap: 0x00000611PWR DIGITAL FORMAT_OVR STEREOAssociation: 1 (0x00000001)OSS: pcm (pcm)Stream cap: 0x00000001PCMPCM cap: 0x000e05e016 20 24 bits, 44 48 88 96 192 KHznid: 7 [DISABLED]Name: vendor widgetWidget cap: 0x00f00000nid: 8Name: audio inputWidget cap: 0x0010051bPWR FORMAT_OVR AMP_OVR IN_AMP STEREOAssociation: 2 (0x00000001)Stream cap: 0x00000001PCMPCM cap: 0x000e056016 20 24 bits, 44 48 96 192 KHzInput amp: 0x80023f17mute=1 step=63 size=2 offset=23Input val: [0x33 0x33] connections: 1 enabled 1|+ <- nid=35 [audio mixer]nid: 9 [DISABLED]Name: audio inputWidget cap: 0x0010051bPWR FORMAT_OVR AMP_OVR IN_AMP STEREOStream cap: 0x00000001PCMPCM cap: 0x000e056016 20 24 bits, 44 48 96 192 KHzInput amp: 0x80023f17mute=1 step=63 size=2 offset=23Input val: [0x80 0x80] connections: 1 enabled 1|+ <- nid=34 [audio mixer] [DISABLED]nid: 10 [DISABLED]Name: vendor widgetWidget cap: 0x00f00000nid: 11 [DISABLED]Name: audio mixerWidget cap: 0x0020010bAMP_OVR IN_AMP STEREOInput amp: 0x80051f17mute=1 step=31 size=5 offset=23Input val: [0x97 0x97] [0x97 0x97] [0x97 0x97] [0x97 0x97] [0x97 0x97] connections: 5 enabled 5|+ <- nid=24 [pin: Microphone (Black Right)]+ <- nid=25 [pin: Speaker (None)] [DISABLED]+ <- nid=26 [pin: Speaker (None)] [DISABLED]+ <- nid=27 [pin: Speaker (Analog)]+ <- nid=29 [beep widget]nid: 12Name: audio mixerWidget cap: 0x0020010bAMP_OVR IN_AMP STEREOAssociation: 0 (0x00000001)OSS: mix (mix)Input amp: 0x80000000mute=1 step=0 size=0 offset=0Input val: [0x00 0x00] [0x80 0x80] connections: 2 enabled 1|+ <- nid=2 [audio output]+ [DISABLED] <- nid=11 [audio mixer] [DISABLED]nid: 13Name: audio mixerWidget cap: 0x0020010bAMP_OVR IN_AMP STEREOAssociation: 4 (0x00000001)OSS: mix (mix)Input amp: 0x80000000mute=1 step=0 size=0 offset=0Input val: [0x00 0x00] [0x80 0x80] connections: 2 enabled 1|+ <- nid=3 [audio output]+ [DISABLED] <- nid=11 [audio mixer] [DISABLED]nid: 14 [DISABLED]Name: vendor widgetWidget cap: 0x00f00000nid: 15 [DISABLED]Name: audio mixerWidget cap: 0x0020010aAMP_OVR IN_AMPInput amp: 0x80000000mute=1 step=0 size=0 offset=0Input val: [0x80 0x80] connections: 1 enabled 1|+ <- nid=13 [audio mixer]nid: 16 [DISABLED]Name: vendor widgetWidget cap: 0x00f00000nid: 17Name: audio inputWidget cap: 0x0010051bPWR FORMAT_OVR AMP_OVR IN_AMP STEREOAssociation: 3 (0x00000001)Stream cap: 0x00000001PCMPCM cap: 0x000e056016 20 24 bits, 44 48 96 192 KHzInput amp: 0x80023f17mute=1 step=63 size=2 offset=23Input val: [0x39 0x39] connections: 1 enabled 1|+ <- nid=18 [pin: Microphone (Digital)]nid: 18Name: pin: Microphone (Digital)Widget cap: 0x0040040bPWR AMP_OVR IN_AMP STEREOAssociation: 3 (0x00000001)OSS: monitor (monitor)Pin cap: 0x00000020INPin config: 0x90a60940Pin control: 0x00000020 INInput amp: 0x002f0300mute=0 step=3 size=47 offset=0Input val: [0x02 0x02] nid: 19 [DISABLED]Name: vendor widgetWidget cap: 0x00f00000nid: 20 [DISABLED]Name: pin: Speaker (None)Widget cap: 0x0040058dPWR UNSOL AMP_OVR OUT_AMP STEREOPin cap: 0x00010014PDC OUT EAPDPin config: 0x411111f0Pin control: 0x00000000EAPD: 0x00000002Output amp: 0x80000000mute=1 step=0 size=0 offset=0Output val: [0x80 0x80]connections: 1 enabled 1|+ <- nid=12 [audio mixer]nid: 21 [DISABLED]Name: vendor widgetWidget cap: 0x00f00000nid: 22 [DISABLED]Name: vendor widgetWidget cap: 0x00f00000nid: 23 [DISABLED]Name: pin: Speaker (None)Widget cap: 0x0040050cPWR AMP_OVR OUT_AMPPin cap: 0x00000010OUTPin config: 0x411111f0Pin control: 0x00000000Output amp: 0x80000000mute=1 step=0 size=0 offset=0Output val: [0x80 0x80]connections: 1 enabled 1|+ <- nid=15 [audio mixer] [DISABLED]nid: 24Name: pin: Microphone (Black Right)Widget cap: 0x0040048bPWR UNSOL AMP_OVR IN_AMP STEREOAssociation: 2 (0x00000001)OSS: mic (mic)Pin cap: 0x00003724PDC IN VREF[ 50 80 100 GROUND HIZ ]Pin config: 0x04a11830Pin control: 0x00000025 IN VREFsInput amp: 0x002f0300mute=0 step=3 size=47 offset=0Input val: [0x02 0x02] nid: 25 [DISABLED]Name: pin: Speaker (None)Widget cap: 0x0040048bPWR UNSOL AMP_OVR IN_AMP STEREOPin cap: 0x00003724PDC IN VREF[ 50 80 100 GROUND HIZ ]Pin config: 0x411111f0Pin control: 0x00000000Input amp: 0x002f0300mute=0 step=3 size=47 offset=0Input val: [0x00 0x00] nid: 26 [DISABLED]Name: pin: Speaker (None)Widget cap: 0x0040048bPWR UNSOL AMP_OVR IN_AMP STEREOPin cap: 0x00003724PDC IN VREF[ 50 80 100 GROUND HIZ ]Pin config: 0x411111f0Pin control: 0x00000000Input amp: 0x002f0300mute=0 step=3 size=47 offset=0Input val: [0x00 0x00] nid: 27Name: pin: Speaker (Analog)Widget cap: 0x0040058fPWR UNSOL AMP_OVR OUT_AMP IN_AMP STEREOAssociation: 0 (0x00000001)Pin cap: 0x0000373cPDC HP OUT IN VREF[ 50 80 100 GROUND HIZ ]Pin config: 0x90170110Pin control: 0x00000040 OUTOutput amp: 0x80000000mute=1 step=0 size=0 offset=0Output val: [0x00 0x00]Input amp: 0x002f0300mute=0 step=3 size=47 offset=0Input val: [0x00 0x00] connections: 2 enabled 1|+ <- nid=12 [audio mixer] (selected)+ [DISABLED] <- nid=13 [audio mixer]nid: 28 [DISABLED]Name: vendor widgetWidget cap: 0x00f00000nid: 29Name: beep widgetWidget cap: 0x00700400PWRAssociation: -2 (0x00000000)OSS: speaker (speaker)nid: 30Name: pin: SPDIF-out (Black Right)Widget cap: 0x00400781PWR DIGITAL UNSOL STEREOAssociation: 1 (0x00000001)Pin cap: 0x00000014PDC OUTPin config: 0x04441120Pin control: 0x00000040 OUTconnections: 1 enabled 1|+ <- nid=6 [audio output]nid: 31 [DISABLED]Name: vendor widgetWidget cap: 0x00f00000nid: 32 [DISABLED]Name: vendor widgetWidget cap: 0x00f00040PROCnid: 33Name: pin: Headphones (Black Right)Widget cap: 0x0040058dPWR UNSOL AMP_OVR OUT_AMP STEREOAssociation: 4 (0x00000001)Pin cap: 0x0000001cPDC HP OUTPin config: 0x04211050Pin control: 0x000000c0 HP OUTOutput amp: 0x80000000mute=1 step=0 size=0 offset=0Output val: [0x00 0x00]connections: 2 enabled 1|+ [DISABLED] <- nid=12 [audio mixer]+ <- nid=13 [audio mixer] (selected)nid: 34 [DISABLED]Name: audio mixerWidget cap: 0x0020010bAMP_OVR IN_AMP STEREOInput amp: 0x80000000mute=1 step=0 size=0 offset=0Input val: [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] connections: 6 enabled 3|+ <- nid=24 [pin: Microphone (Black Right)]+ [DISABLED] <- nid=25 [pin: Speaker (None)] [DISABLED]+ [DISABLED] <- nid=26 [pin: Speaker (None)] [DISABLED]+ <- nid=27 [pin: Speaker (Analog)]+ <- nid=29 [beep widget]+ [DISABLED] <- nid=11 [audio mixer] [DISABLED]nid: 35Name: audio mixerWidget cap: 0x0020010bAMP_OVR IN_AMP STEREOAssociation: 2 (0x00000001)OSS: mix (mix)Input amp: 0x80000000mute=1 step=0 size=0 offset=0Input val: [0x00 0x00] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x00 0x00] [0x80 0x80] connections: 6 enabled 2|+ <- nid=24 [pin: Microphone (Black Right)]+ [DISABLED] <- nid=25 [pin: Speaker (None)] [DISABLED]+ [DISABLED] <- nid=26 [pin: Speaker (None)] [DISABLED]+ [DISABLED] <- nid=27 [pin: Speaker (Analog)]+ <- nid=29 [beep widget]+ [DISABLED] <- nid=11 [audio mixer] [DISABLED]logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

codec信息和节点信息

找到的Intel的集成声卡信息

Probing codec #0...HDA Codec #0: Realtek ALC282HDA Codec ID: 0x10ec0282Vendor: 0x10ecDevice: 0x0282Revision: 0x00Stepping: 0x03
PCI Subvendor: 0x397817aastartNode=1 endNode=2Found audio FG nid=1 startNode=2 endNode=36 total=34

Intel的集成HDMI的信息(这个暂时无关紧要)

Probing codec #0...HDA Codec #0: Intel Haswell HDMIHDA Codec ID: 0x80862807Vendor: 0x8086Device: 0x2807Revision: 0x00Stepping: 0x00
PCI Subvendor: 0x397817aastartNode=1 endNode=2Found audio FG nid=1 startNode=2 endNode=4 total=2

搜索Patched pins configuration:信息,提取pin default相关信息

Patched pins configuration:nid 18 0x90a60940 as  4 seq  0 Microphone    Fixed Digital N/A     Internal Unknown misc 4 NoPresenceDetectnid 20 0x411111f0 as 15 seq  0 Speaker       None  1/8     Rear    External Black   misc 0 NoPresenceDetect [DISABLED]nid 23 0x411111f0 as 15 seq  0 Speaker       None  1/8     Rear    External Black   misc 0 NoPresenceDetect [DISABLED]nid 24 0x04a11830 as  3 seq  0 Microphone    Jack  1/8     Right   External Black   misc 4nid 25 0x411111f0 as 15 seq  0 Speaker       None  1/8     Rear    External Black   misc 0 NoPresenceDetect [DISABLED]nid 26 0x411111f0 as 15 seq  0 Speaker       None  1/8     Rear    External Black   misc 0 NoPresenceDetect [DISABLED]nid 27 0x90170110 as  1 seq  0 Speaker       Fixed Analog  N/A     Internal Unknown misc 0 NoPresenceDetectnid 30 0x04441120 as  2 seq  0 SPDIF-out     Jack  RCA     Right   External Black   misc 0 NoPresenceDetectnid 33 0x04211050 as  5 seq  0 Headphones    Jack  1/8     Right   External Black   misc 0

生成applealc需要的pin configuration信息
将PinDefault进行小端转换little-endian,这里借用一张紫米教程里面的图片进行小端转换的理解:

紫米这张图上的小端转换,
pin configuration的规则是,把pin default按两个一组,分为四组结构类似于这样

Address + Node + 71c +【c】 Address + Node + 71d +【d】 Address + Node + 71e +【e】 Address + Node + 71f +【f】

这样四组数据加上刚才小端转换后的组,这个config data可以通过列式编辑工具来批量处理。
这里用VS Code来处理,我会做个视频来,演示如何具体操作。
处理完之后的格式如下所示

01271c60 01271d01 01271ea0 01271f90
01471cf0 01471d00 01471d00 01471f40
01771cf0 01771d00 01771e00 01771f40
01871c70 01871d90 01871e81 01871f01
01971cf0 01971d00 01971e00 01971f40
01a71cf0 01a71d00 01a71e00 01a71f40
01b71c10 01b71d10 01b71e13 01b71f99
01d71cf0 01d71d00 01d71e00 01d71f40
01e71c90 01e71d61 01e71e4b 01e71f01
02171c20 02171d40 02171e21 02171f01

最整理为一行

01271c60 01271d01 01271ea0 01271f90 01471cf0 01471d00 01471d00 01471f40 01771cf0 01771d00 01771e00 01771f40 01871c70 01871d90 01871e81 01871f01 01971cf0 01971d00 01971e00 01971f40 01a71cf0 01a71d00 01a71e00 01a71f40 01b71c10 01b71d10 01b71e13 01b71f99 01d71cf0 01d71d00 01d71e00 01d71f40 01e71c90 01e71d61 01e71e4b 01e71f01 02171c20 02171d40 02171e21 02171f01

处理pin configuration信息
需要把上面的数据添节点信息由10进制转换为16进制。其他的按上面的来操作生成configdata

生成paltform.xml

然后执行GetDumpXml,执行之后会在桌面上生成Platform.xml文件,大部分情况下这个文件不需要再调整。
DumpXML_Realtek ALC282

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict><key>CommonPeripheralDSP</key><array><dict><key>DeviceID</key><integer>0</integer><key>DeviceType</key><string>Headphone</string></dict><dict><key>DeviceID</key><integer>0</integer><key>DeviceType</key><string>Microphone</string></dict></array><key>PathMaps</key><array><dict><key>PathMap</key><array><array><array><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><false/><key>PublishVolume</key><false/><key>VolumeInputAmp</key><true/></dict><key>NodeID</key><integer>8</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><false/><key>PublishVolume</key><false/><key>VolumeInputAmp</key><false/></dict><key>NodeID</key><integer>35</integer></dict><dict><key>Boost</key><integer>1</integer><key>NodeID</key><integer>24</integer></dict></array></array></array><array><array><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><false/><key>PublishVolume</key><false/><key>VolumeInputAmp</key><true/></dict><key>NodeID</key><integer>17</integer></dict><dict><key>Boost</key><integer>1</integer><key>NodeID</key><integer>18</integer></dict></array></array></array><array><array><array><dict><key>NodeID</key><integer>27</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><false/><key>PublishVolume</key><false/><key>VolumeInputAmp</key><false/></dict><key>NodeID</key><integer>12</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><false/><key>PublishMute</key><false/><key>PublishVolume</key><true/><key>VolumeInputAmp</key><false/></dict><key>NodeID</key><integer>2</integer></dict></array></array></array><array><array><array><dict><key>NodeID</key><integer>30</integer></dict><dict><key>NodeID</key><integer>6</integer></dict></array></array></array><array><array><array><dict><key>NodeID</key><integer>33</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><false/><key>PublishVolume</key><false/><key>VolumeInputAmp</key><false/></dict><key>NodeID</key><integer>13</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><false/><key>PublishMute</key><false/><key>PublishVolume</key><true/><key>VolumeInputAmp</key><false/></dict><key>NodeID</key><integer>3</integer></dict></array></array></array></array><key>PathMapID</key><integer>1</integer></dict></array>
</dict>
</plist>

这个文件需要调整的是PathMapID的值,在给APPLEALC添加资源文件时。自己找个自己喜欢的数字来作为自己申请的layout-id,只要不跟现有的id重复即可。还有文件名改为相应的platform+id.xml

定制自己的APPLEALC

后面就是需要clone APPLEALC这个仓库,进入正题。前面的都是准备工作。
applealc

mkdir ~/applealc # 在家目录下新建立`applealc`目录
cd ~/applealc    # 进入`applealc`目录
git clone https://github.com/vit9696/AppleALC   # 克隆AppleALC到本地

打开AppleALC目录,进入Resources目录,找到刚才对应的声卡名称,例如,这里的就是ALC282的目录。

修改Resrouce目录中的PinConfigs.kext的Info.plist文件

打开Info.plist文件后,直接搜索自己的声卡类型。例如,这里用的alc282搜索,搜索后,复制最后一条,并且修改相应的值。如图所示

修改layoutid,填入整理为一行的configdata。codecid一个声卡系列是同一个值。

修改自己声卡中映射的layout.xml和platform.xml的位置

在每一个声卡目录下面都有一个Info.plist文件

到这一步了接下来,说怎么来layout.xml文件,这个文件用公用的就行,我会在附件重提供。

最后

把layout.xml和platform.xml放在自己声卡型号里的位置,编译,自己测试即可。

VooHooHDAd的下载资源
layout12

让大家在30分钟内完成APPLEALC的声卡仿冒相关推荐

  1. k8s aws 部署_如何在短短30分钟内使用CircleCI设置到AWS S3的持续部署

    k8s aws 部署 by Adam Watt 通过亚当·瓦特 如何在短短30分钟内使用CircleCI设置到AWS S3的持续部署 (How to setup Continuous Deployme ...

  2. 30分钟内使用MongoDB

    最近,我被NoSQL错误咬住了-或是我的同事Mark Atwell提出的"燃烧在哪里!" 运动. 尽管我无意于在不久的将来或可预见的将来回避友好的" SELECT ... ...

  3. 请使用recaptcha_如何在30分钟内使用ReCaptcha和PHP构建Bootstrap电子邮件表单

    请使用recaptcha by Ondrej Svestka 通过Ondrej Svestka 如何在30分钟内使用ReCaptcha和PHP构建Bootstrap电子邮件表单 (How to bui ...

  4. 机器人坐标系建立_如何在30分钟内建立一个简单的搜索机器人

    机器人坐标系建立 by Quinn Langille 奎因·兰吉尔(Quinn Langille) 如何在30分钟内建立一个简单的搜索机器人 (How to Build A Simple Search ...

  5. Retrace AV推出新型涂料添加剂,可在30分钟内灭杀新冠病毒

    新型涂料添加剂可在30分钟内消灭新冠病毒,为家庭和工作场所提供高达99.99%的保护   伦敦--(美国商业资讯)--全球数十亿人正尝试重返办公室.学校和社交场所.政府和企业主需要尽其所能提振信心,让 ...

  6. 如何零基础零费用的在30分钟内用hugo+github pages创建一个专属于你的个人博客 - 简单快捷到建议人手一个

    写这篇文章的原因是在网上看了很多的教程,踩了不少的坑,更多的白费了很多功夫,也没找到一篇从头到尾完整有效的个人建站方法. 有些教程年代久远,有些教程极为繁琐,有些教程压根跑不通. 为了方便自己,做个记 ...

  7. 如何实现生成订单30分钟内未支付则自动取消?

    如何实现生成订单30分钟内未支付则自动取消? 数据库轮询 JDK的延迟队列 Quartz 时间轮算法 使用消息队列 数据库轮询 不是很推荐的一种方式,需要定时扫描数据库,借助定时任务工具,如果是多服务 ...

  8. 停车30分钟内不收费,程序员远程操控挪车,实现自动免费停车...

    还记得前几天关于野生钢铁侠如何创造 自动驾驶自行车 的故事吗? 掌握核心科技的程序员们,又开始开脑洞啦!最近又有一个北京的开发者开了 这个脑洞的背景: 北京道路停车的自动收费,停车不足30分钟不计费 ...

  9. swiftui_使用SwiftUI在30分钟内制作一个应用

    swiftui This post was first delivered as a live coding presentation at a Telstra Purple Back2Base ev ...

  10. 30分钟内使用手机控制四轴飞行器(ESP8266 + A7105 + Blynk App for iOS/Android)

    很久以来,我就想做类似的项目了.但是手机集成工作的复杂性让我感到害怕.而且如果以后我有新的想法,也很难再重新利用这个项目. 现在,有了Blynk,这一切变得易如反掌:) 因此,我花了一个晚上,完成了这 ...

最新文章

  1. python写程序求1-3+5-7+...-99+101的值-python基本练习
  2. pushState 和 replaceState
  3. TCP/IP总结(4)TCP 之数据包格式
  4. json-lib-2.1-jdk15.jar
  5. 【深度学习】SETR:基于视觉 Transformer 的语义分割模型
  6. 三十一、R语言基本语法(上篇)
  7. 【Latex】分数写法区别
  8. 一键式安装Ubuntu 18.04和Win10双系统并超频的防坑指南
  9. 智慧校园建设方案!高校统一数据中心解决方案
  10. SQL Server 数据库之数据约束
  11. 使用Eclipse编译运行MapReduce程序_Hadoop2.6.0_Ubuntu/CentOS
  12. win7下安装MQTT Paho客户端
  13. 第1章 走进Java
  14. mysql auto increment offset_mysql auto_increment_increment和auto_increment_offset
  15. 每日一博 - 3D架构图 cloudcraft
  16. 这样软件开发人才级别的划分你同意吗
  17. matlab进行傅里叶分析
  18. 解决openssl提示链接库不存在的问题
  19. php 正则匹配省市区
  20. android手机解锁成功后的广播,android屏幕加解锁事件广播的监听

热门文章

  1. Vue中引入echarts之官网5分钟入门
  2. Jmeter下载与安装
  3. windows怎么删除服务, OpenService 失败 5,拒绝访问解决
  4. Java程序员简历这么写,还过不了筛选算我输
  5. 过程FMEA步骤七:结果文件化
  6. 莫烦python强化学习笔记——Q learning
  7. 运用mysql实现工资管理系统_企业工资管理系统的设计与实现(MySQL)
  8. python字典输出键值对_Python:遍历字典 键值对
  9. mysql5.7手册官方下载_MySQL官方手册5.7 PDF 下载
  10. VMware pro 14