안녕하세요.
이전에 다른 사이트에 ?작성한 내용이 있어 여기 옮겨봅니다.
VoodooHDA사용에 문제가 있으시면 아래와 같이 해보시면 해결 되실 것입니다.
ALC262칩을 사용하는 노트북을 보유 하고있습니다.
내장 마이크가 설정은 되어있지만 동작을 하지 않는 문제가 있어서 검색과 많은 자료를 수집하여 삽질을 해보았는데 ?해결을 못하다가
코덱 레퍼런스 문서를 보면서 방법을 알게 되어??ALC262 AppleHDA 패치방법에 대해서 공유 해보고자 합니다.
일단 Windows로 부팅이 가능한 시스템을 전재로 합니다.
1. DSDT에 ALC262패치가 되어있어야합니다.
?? 마운틴라이온 이후에는 원본 AppleHDA 가 Layout ID 12가 동작 하지 않으므로 Layout ID 92로 작업 하겠습니다.
??Device (HDEF)
????????????{
????????????????Name (_ADR, 0x001B0000)
????????????????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 (_DSM, 4, NotSerialized)
????????????????{
????????????????????Store (Package (0x0C)
????????????????????????{
????????????????????????????"CodecAddressMask",
????????????????????????????Buffer (One)
????????????????????????????{
???????????????????????????????? 0x01
????????????????????????????},
????????????????????????????"device-id",
????????????????????????????Buffer (0x04)
????????????????????????????{
???????????????????????????????? 0x3E, 0x3A, 0x00, 0x00
????????????????????????????},
????????????????????????????"MaximumBootBeepVolume",
????????????????????????????Buffer (One)
????????????????????????????{
???????????????????????????????? 0x40
????????????????????????????},
???????????????????????????? "layout-id",
????????????????????????????Buffer (0x04)
????????????????????????????{
???????????????????????????????? 0x5C, 0x00, 0x00, 0x00
????????????????????????????},
????????????????????????????"PinConfigurations",
????????????????????????????Buffer (Zero)
????????????????????????????{????????????????????????????????
????????????????????????????},
????????????????????????????"platformFamily",
????????????????????????????Buffer (One)
????????????????????????????{
???????????????????????????????? 0x00
????????????????????????????}
????????????????????????}, Local0)
????????????????????DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
????????????????????Return (Local0)
????
PinConfigurations 은 AppleHDAHardwareConfigDriver.kext의 것을 사용할것이므로 입력 하지 않으셔도 됩니다.
2. Windows로 부팅합니다.
3. 시작 -> 검색 -> regedit를 입력 후 엔터
4. Registry Editor 실행후 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\ 로 이동합니다.
5. 검색을 눌러 PinConfig을 검색합니다.
6. 아래와 같은 항목을 보실수 있습니다.
?? 여기서 검은색 부분은 사용자 마다 바뀔수 있습니다.
??
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}\0000\PinConfigOverrideVerbs]
"0000"=hex:30,1c,27,01
"0001"=hex:09,1d,27,01
"0002"=hex:a3,1e,27,01
"0003"=hex:99,1f,27,01
"0004"=hex:10,1c,47,01
"0005"=hex:01,1d,47,01
"0006"=hex:13,1e,47,01
"0007"=hex:99,1f,47,01
"0008"=hex:1f,1c,57,01
"0009"=hex:40,1d,57,01
"0010"=hex:21,1e,57,01
"0011"=hex:01,1f,57,01
"0012"=hex:f0,1c,67,01
"0013"=hex:11,1d,67,01
"0014"=hex:11,1e,67,01
"0015"=hex:41,1f,67,01
"0016"=hex:40,1c,87,01
"0017"=hex:9c,1d,87,01
"0018"=hex:a1,1e,87,01
"0019"=hex:01,1f,87,01
"0020"=hex:f0,1c,97,01
"0021"=hex:11,1d,97,01
"0022"=hex:11,1e,97,01
"0023"=hex:41,1f,97,01
"0024"=hex:f0,1c,a7,01
"0025"=hex:11,1d,a7,01
"0026"=hex:11,1e,a7,01
"0027"=hex:41,1f,a7,01
"0028"=hex:f0,1c,b7,01
"0029"=hex:11,1d,b7,01
"0030"=hex:11,1e,b7,01
"0031"=hex:41,1f,b7,01
"0032"=hex:f0,1c,c7,01
"0033"=hex:11,1d,c7,01
"0034"=hex:11,1e,c7,01
"0035"=hex:41,1f,c7,01
"0036"=hex:05,1c,d7,01
"0037"=hex:82,1d,d7,01
"0038"=hex:03,1e,d7,01
"0039"=hex:40,1f,d7,01
"0040"=hex:20,1c,e7,01
"0041"=hex:11,1d,e7,01
"0042"=hex:56,1e,e7,01
"0043"=hex:18,1f,e7,01
"0044"=hex:f0,1c,f7,01
"0045"=hex:11,1d,f7,01
"0046"=hex:11,1e,f7,01
"0047"=hex:41,1f,f7,01
"NumVerbs"=hex:30,00,00,00
??
위의 항목이 PinConfigData되겠습니다 ^^;
7. 맥에서 사용할수 있게 편집을 합니다.
??
"0000"=hex:30,1c,27,01?? => 01 27 1C 30
?????????? (4)(3)(2)(1)????(1)(2)(3)(4)
??????????
뒤에서 부터 두자리로 짤라서 변경합니다.
"NumVerbs"=hex:30,00,00,00 이놈은 삭제하시면됩니다. 변수의 갯수를 의미합니다.
8. 이렇게 편진된 값을 4줄씩 끊어서 아래와 같이 한줄로 만들어 줍니다.
01271C30 01271D09 01271EA3 01271F99
01471C10 01471D01 01471E13 01471F99
01571C1F 01571D40 01571E21 01571F01
01671CF0 01671D11 01671E11 01671F41
01871C40 01871D9C 01871EA1 01871F01
01971CF0 01971D11 01971E11 01971F41
01A71CF0 01A71D11 01A71E11 01A71F41
01B71CF0 01B71D11 01B71E11 01B71F41
01C71CF0 01C71D11 01C71E11 01C71F41
01D71C05 01D71D82 01D71E03 01D71F40
01E71C20 01E71D11 01E71E56 01E71F18
01F71CF0 01F71D11 01F71E11 01F71F41
9. 요걸 HDA Verb로 바꿉니다.
공식은 0 + Node + 71C + 1st
????????0 + Node + 71D + 2st
????????0 + Node + 71E + 3st
????????0 + Node + 71F + 4st
01271C30 01271D09 01271EA3 01271F99
즉 검은색 부분만 가져와서 변환하면 Node 12 = 30 09 A3 99 되겠습니다.
"Node 12 =" 이부분은 보기 편하라고 적은것입니다.
Node 12 = 30 09 A3 99 = [Fixed] Mic at Int ATAPI
Note 13 = 사용안함
Node 14 = 10 01 13 99 = [Fixed] Speaker at Int ATAPI
Node 15 = 1F 40 13 99 = [Jack] HP Out at Ext Rear
Node 16 = F0 11 11 41 = [N/A] Speaker at Ext Rear
Note 17 = 사용안함
Node 18 = 40 9C A1 01 = [Jack] Mic at Ext Rear
Node 19 = F0 11 11 41 = [N/A] Speaker at Ext Rear
Node 20 = F0 11 11 41 = [N/A] Speaker at Ext Rear
Node 21 = F0 11 11 41 = [N/A] Speaker at Ext Rear
Node 22 = F0 11 11 41 = [N/A] Speaker at Ext Rear
Node 23 = 05 82 03 40 = [N/A] Line Out at Ext N/A
Node 24 = 20 11 56 18 = [Jack] Digital Out at Int HDMI
Node 25 = F0 11 11 41 = [N/A] Speaker at Ext Rear
노트북이라 거진 N/A네요^^;;
저의 노트북의 CodeDump를 보면 Node12 가 내장 마이크이고 Node 14가 내장 스피커 Node 15가 이어폰잭 Node 18이 마이크잭이네요
하지만 공유되고 있는 Kext에서는 내장마이크가 엉뚱한 Node를 가리키고 있지요...
10. 첫번째 2개의 숫자가 중복이 되지 않게 수정을 해줍니다.
아래의 문자중에 하나를 택하시면되며 중복이 되면 안됩니다.
10
20
30
40
50
60
70
80
90
A0
B0
C0
D0
E0
F0
그냥 중복안되게 바꿔줍니다.
Node 12 = 30 00 A3 99
Note 13 = 사용안함
Node 14 = 10 00 13 99
Node 15 = A0 40 21 01
Node 16 = 60 10 11 41
Note 17 = 사용안함
Node 18 = 40 90 A1 01
Node 19 = 70 10 11 41
Node 20 = 80 10 11 41
Node 21 = 90 10 11 41
Node 22 = B0 10 11 41
Node 23 = 50 80 03 40
Node 24 = 20 10 56 18
Node 25 = D0 10 11 41
11. 두번째 2개의 숫자중 2번째를 모드 0으로 바꿉니다.
Node 12 = 30 00 A3 99
Note 13 = 사용안함
Node 14 = 10 00 13 99
Node 15 = AO 40 13 99
Node 16 = 60 10 11 41
Note 17 = 사용안함
Node 18 = 40 90 A1 01
Node 19 = 70 10 11 41
Node 20 = 80 10 11 41
Node 21 = 90 10 11 41
Node 22 = B0 10 11 41
Node 23 = 50 80 03 40
Node 24 = 20 10 56 18
Node 25 = D0 10 11 41
12. 두번째의 2개의 숫자중 1번째를 아래의 색깔표보고 맞춥니다. (Codedump를 이용하세요)
단자의 색깔이라고 생각하시면 됩니다.
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
다행이 전 틀린게 없네요 ^^
Node 12 = 30 09 A3 99
Note 13 = 사용안함
Node 14 = 10 01 13 99
Node 15 = AO 40 13 99
Node 16 = 60 11 11 41
Note 17 = 사용안함
Node 18 = 40 9C A1 01
Node 19 = 70 11 11 41
Node 20 = 80 11 11 41
Node 21 = 90 11 11 41
Node 22 = B0 11 11 41
Node 23 = 50 82 03 40
Node 24 = 20 11 56 18
Node 25 = D0 11 11 41
13. 세번째의 2개의 숫자중 1번째를 변경합니다.
노드의 성격을 지정하는 부분입니다. (codedump를 이용하세요)
Speaker, Line IN , Line Out , Mic In 등의 역할을 지정하는 부분입니다.
Line Out = 0
Speaker??= 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
이것역시 저는 틀린곳이 없네요.
Node 12 = 30 09 A3 99
Note 13 = 사용안함
Node 14 = 10 01 13 99
Node 15 = AO 40 13 99
Node 16 = 60 11 11 41
Note 17 = 사용안함
Node 18 = 40 9C A1 01
Node 19 = 70 11 11 41
Node 20 = 80 11 11 41
Node 21 = 90 11 11 41
Node 22 = B0 11 11 41
Node 23 = 50 82 03 40
Node 24 = 20 11 56 18
Node 25 = D0 11 11 41
14. 세번째의 2개의 숫자중 2번째를 변경합니다.
연결타입을 선택 하는 부분입니다.
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
역시나 변경 부분이 없습니다.
Node 12 = 30 09 A3 99
Note 13 = 사용안함
Node 14 = 10 01 13 99
Node 15 = AO 40 13 99
Node 16 = 60 11 11 41
Note 17 = 사용안함
Node 18 = 40 9C A1 01
Node 19 = 70 11 11 41
Node 20 = 80 11 11 41
Node 21 = 90 11 11 41
Node 22 = B0 11 11 41
Node 23 = 50 82 03 40
Node 24 = 20 11 56 18
Node 25 = D0 11 11 41
여기서 5.1체널 지원하는 포트일 경우??Multichannel Analog (DIN) = 8 로 설정 하셔야 되는건 아시겠지요 ^^;;
15. 휴~~ 힘들게 잘따라 오셨습니다.
이렇게 변경된 값을 이용하여 처음 저정했던??PinConfigData를 수정합니다.
이렇게 하여 얻어진 값이 아래와 같이 되겠습니다.
01271C30 01271D00 01271EA3 01271F99 01471C10 01471D00 01471E13 01471F99 01571CA0 01571D40 01571E21 01571F01 01671C60 01671D10 01671E11 01671F41 01871C40 01871D90 01871EA1 01871F01 01971C70 01971D10 01971E11 01971F41 01A71C80 01A71D10 01A71E11 01A71F41 01B71C90 01B71D10 01B71E11 01B71F41 01C71CB0 01C71D10 01C71E11 01C71F41 01D71C50 01D71D80 01D71E03 01D71F40 01E71C20 01E71D10 01E71E56 01E71F18 01F71CD0 01F71D10 01F71E11 01F71F41
Node 12 = 30 00 A3 99
Node 14 = 10 00 13 99
Node 15 = A0 40 21 01
Node 16 = 60 10 11 41
Node 18 = 40 90 A1 01
Node 19 = 70 10 11 41
Node 20 = 80 10 11 41
Node 21 = 90 10 11 41
Node 22 = B0 10 11 41
Node 23 = 50 80 03 40
Node 24 = 20 10 56 18
Node 25 = D0 10 11 41
이번은 본격적으로 AppleHDA를 패치하는 법을 알아보겠습니다.
일단 코덱덤프파일이 있어야겠지요 ^^;;;
쉬운 설명을 위해 저의 코덱덤프내용으로 설명해 보겠습니다.
일단 내장 마이크인 Node 12입니다.
Node 0x12 [Pin Complex] wcaps 0x400001: Stereo
??Pincap 0x00000020: IN
??Pin Default 0x99a30930: [Fixed] Mic at Int ATAPI
????Conn = ATAPI, Color = Unknown
????DefAssociation = 0x3, Sequence = 0x0
????Misc = NO_PRESENCE
??Pin-ctls: 0x20: IN
내장 스피커 Node 14입니다.
Node 0x14 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
??Control: name="Speaker Playback Switch", index=0, device=0
????ControlAmp: chs=3, dir=Out, idx=0, ofs=0
??Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
??Amp-In vals:??[0x00 0x00]
??Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
??Amp-Out vals:??[0x00 0x00]
??Pincap 0x0000003e: IN OUT HP Detect Trigger
??Pin Default 0x99130110: [Fixed] Speaker at Int ATAPI
????Conn = ATAPI, Color = Unknown
????DefAssociation = 0x1, Sequence = 0x0
????Misc = NO_PRESENCE
??Pin-ctls: 0x40: OUT
??Unsolicited: tag=00, enabled=0
??Connection: 2
???? 0x0c* 0x0d
????
코덱덤프의 내용을 보면 믹서도 있고 Switch도 있고 여러가지가 있습니다.
하지만 복잡하게 생각 하실필요가 없습니다.
어떤장치에서 -> 어떤걸통해서 -> 무엇을 할껀가?
이렇게 3가지의 단계로 이루어 집니다.
하지만 주의 할점이 있습니다.
출력의 경우에는 어떤장치 -> 어떤걸 통해 -> 무엇을 할껀가 이지만
입력의 경우에는 무엇을할껀가? -> 어떤걸통해 -> 어떤 장치 이렇게 반대로 됩니다.
이공식만 지켜 주시면 됩니다.
그럼 저의 내장 스피커 Node 14를 연결 하여 보겠습니다.
Speaker at Int ATAPI인 0x14 입니다. 그다음 어떤걸 통해를 찾는법은
??Connection: 2
???? 0x0c* 0x0d
위의 Connection 부분을 보시면됩니다. *표되어있는 부분이 있다면 아주 해피한 경우 되겠습니다.
바로 0x0c가 어떤걸 통해가 되겠습니다.
만일 *표가 없다면 Node 0x0c 와 Node 0x0d를 하나씩 찾아가서 성격에 맞는 어떤것을 지정해 주시면 되겠습니다.
당연히 출력이니 AudioMixer 같은 매개체가 있어야겠지요. *표가 없는 Node를 연결 하셔도 잘 연결하신다면??무방합니다 ^^;;
그럼 0x14 -> 0x0c 까지 찾았네요 그다음은 무엇을 할껀가 입니다.
Node 0x0c로 이동해 보겠습니다.
Node 0x0c [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
??Control: name="Master Playback Volume", index=0, device=0
????ControlAmp: chs=3, dir=Out, idx=0, ofs=0
??Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
??Amp-In vals:??[0x00 0x00] [0x00 0x00]
??Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0
??Amp-Out vals:??[0x12 0x12]
??Connection: 2
???? 0x02 0x0b
????
Audio Mixer가 나왔네요 ^^ 검은색 부분으로 무엇을 한건가를 찾아보겠습니다.
Node 0x02 [Audio Output] wcaps 0x11: Stereo
??Device: name="ALC262 Analog", type="Audio", device=0
??Converter: stream=5, channel=0
??PCM:
????rates [0x560]: 44100 48000 96000 192000
????bits [0xe]: 16 20 24
????formats [0x1]: PCM
Node 0x0b [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
??Control: name="Mic Playback Volume", index=0, device=0
????ControlAmp: chs=3, dir=In, idx=0, ofs=0
??Control: name="Mic Playback Switch", index=0, device=0
????ControlAmp: chs=3, dir=In, idx=0, ofs=0
??Amp-In caps: ofs=0x17, nsteps=0x1f, stepsize=0x05, mute=1
??Amp-In vals:??[0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x81 0x81] [0x81 0x81] [0x81 0x81]
??Connection: 8
???? 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x14 0x15
????
0x02 와 0x0b의 차이점을 아시겠지요 0x02는 더이상 Connection이 없지만 0x0b는 Connection이 있습니다. 즉 0x0b는 어떤걸 통해의 성격입니다.
그래서 0x02를 선택 해야됩니다.
그렇게해서 완성된 내장 스피커의 Node는 0x14 -> 0x0c -> 0x02 되겠습니다.
다음은 내장마이크를 연결 해보겠습니다.
Node 0x12 [Pin Complex] wcaps 0x400001: Stereo
??Pincap 0x00000020: IN
??Pin Default 0x99a30930: [Fixed] Mic at Int ATAPI
????Conn = ATAPI, Color = Unknown
????DefAssociation = 0x3, Sequence = 0x0
????Misc = NO_PRESENCE
??Pin-ctls: 0x20: IN
Connection이 없습니다. 위에서 설명드린것과 같이 입력은 반대입니다.
그럼 Node 0x12를 사용하는 Node를 찾아보겠습니다.
Node 0x22 [Audio Selector] wcaps 0x300101: Stereo
??Connection: 10
???? 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x14 0x15 0x0b 0x12*
????
다행이 저는 하나가있네요??0x22가 어떤걸 통해가 되겠습니다.
그럼 0x22를 연결하고있는걸 찾아볼까요?
Node 0x09 [Audio Input] wcaps 0x10011b: Stereo Amp-In
??Control: name="Capture Switch", index=0, device=0
??Control: name="Capture Volume", index=0, device=0
??Device: name="ALC262 Analog", type="Audio", device=0
??Amp-In caps: ofs=0x08, nsteps=0x1f, stepsize=0x05, mute=1
??Amp-In vals:??[0x17 0x17]
??Converter: stream=1, channel=0
??SDI-Select: 0
??PCM:
????rates [0x160]: 44100 48000 96000
????bits [0x6]: 16 20
????formats [0x1]: PCM
??Connection: 1
???? 0x22
????
0x09가되겠네요 0x09가 무엇을 할것인가? 가 되겠습니다.
그럼 입력은 반대로 정리 해야 겠지요.
내장마이크 0x09 -> 0x22 ->??0x12 이렇게 되겠습니다.
참고로 HDMI출력의 경우는 Node연결이 두개뿐입니다. 어떤장치로 -> 무엇을 할껀가 입니다.
1편에서 구한 Node 값을 정리해봅시다
이렇게 구해진 0x14 -> 0x0c -> 0x02 ,0x09 -> 0x22 ->??0x12 를 AppleHDA에 사용할려면
16진수를 10진수로 변환 하여야합니다.
진수변환기를 사용 하셔서 변환해주시면 됩니다.
Node 12 = 30 00 A3 99??=>??9, 34, 18 [Fixed] Mic at Int ATAPI
Node 14 = 10 00 13 99??=>??20, 12, 2??IN OUT HP Detect Trigger Speaker at Int ATAPI
Node 15 = A0 40 21 01??=>??21, 12, 2??[Jack] HP Out at Ext Rear OUT HP
Node 16 = 60 10 11 41??=> [N/A]
Node 18 = 40 90 A1 01??=>??7, 36, 24 [Jack] Mic at Ext Rear
Node 19 = 70 10 11 41??=> [N/A]
Node 20 = 80 10 11 41??=> [N/A]
Node 21 = 90 10 11 41??=> [N/A]
Node 22 = B0 10 11 41??=> [N/A]
Node 23 = 50 80 03 40??=> [N/A]
Node 24 = 20 10 56 18??=> 30, 6??[Jack] Digital Out at Int HDMI
Node 25 = D0 10 11 41??=> [N/A]
이제 AppleHDA를 패치 해보겠습니다.
일단 준비물입니다.
- 10.9 AppleHDA.kext 원본
- 10.8 AppleHDA.kext 패치되어 공유되고있는 파일 ( Layout 12패치된것이나 92패치된것)
- plisteditPro 나 XCODE Development
- HDAwizard
- KextUtility
1. 현재?다운받을수있는 ALC262용 패치된 AppleHDA 파일을 마우스 오른쪽 버튼을 눌러 패키지내용 보기합니다.
?? 그럼 아래와 같은 폴더 구조를 보이게됩니다.
??
AppleHDA.kext
???? - Contents
???????? - MacOS
???????? - PlugIns
????????????- AppleHDAController
????????????- AppleHDAHALPlugIn
????????????- AppleHDAHardwareConfigDriver
????????????- AppleMikeyDriver
????????????- DspFuncLib
????????????- IOHDAFamily
???????? - Resources
????
????
????여기서 필요한 파일은
????????
????????/Contents/Resources/layout12.xml (Layout 12패치된 파일일 경우)
????????/Contents/Resources/layout92.xml (Layout 92패치된 파일일 경우)
????????/Contents/Resources/Platforms.xml
????????/Contents/PlugIns/AppleHDAHardwareConfigDriver/Contents/Info.plist
????????
????위의 3개의 파일을 폴더를 만들어서 복사합니다.
????
2. 10.9 AppleHDA원본파일에서도 동일한 파일을 폴더를 만들어 복사합니다.
?? (주의!!!!) 원본파일은 layout92.xml.zlib Platforms.xml.zlib 와같이 압축되어있습니다.
??
3. HDAwizard 프로그램을 실행합니다.
?? HDAwizard프로그램을 이용하여 xml파일등을 넣고 패치하시면 동작 하지않습니다. 설마.. 저만 안되는거 ㅠㅠ....
?? 단지 이프로그램을 이용하여 zlib를 압축을 풀고 zlib로 다시 압축하는 용도로만 사용 할것입니다.
??
4. HDAwizard 실행후 Convert라는 탭을 클릭후 원본에서 추출한 layout92.xml.zlib 와 Platforms.xml.zlib를 드레그엔 드롭합니다.
?? zlib파일이 자동으로 압축이 풀리며 layout92.xml과 Platforms.xml 파일이 생성됩니다.
??
5. 패치된 layout92.xml이나 layout12.xml에서
????????<key>PathMapRef</key>
????????<array>
????????~~~????????
????????</array>
?? 부분을 복사하여 원본 layout92.xml에 붙여 넣기 합니다.
?? 원본은 패치된 파일보다 내용이 방대합니다. 시작과 끝을 잘 맞추어 덮어주세요.
??
?? 인식되지 않은 포트의 경우는 커스텀하게 아래부분을 수정합니다.
?? 보통 LineIn과 LineOut을 추가합니다.
?? HDMI출력 부분은 여기서 기술하는 부분이 아닙니다. 나중에 HDMI사운드 출력부분도 한번 글을 올려보겠습니다.
??
????????<key>Inputs</key>
????????<array>
????????????????<string>Mic</string>
????????????????<string>LineIn</string>
????????</array>
????????
????????<key>Outputs</key>
????????<array>
????????????????<string>IntSpeaker</string>
????????????????<string>Headphone</string>
????????</array>??????????
????????
????????
그리고 CodeID라고 되어있는부분의 283902562를 꼭 주의하세요. 해당 코덱의 ID입니다.
ALC262는 283902562입니다.
코덱ID를 저렇게 변경하시는건 다 아신다고 믿고 그냥 넘어가겠습니다.
????????<key>CodecID</key>
????????<array>
????????????????<integer>283902562</integer>
????????</array>
????????
????????
????????
6. 패치된 Platforms.xml 에서
????????<key>PathMaps</key>
????????<array>
????????????????<dict>
????????????????
????????~~~
????????????????</dict>
????????</array>????????
????????
?? 부분을 복사하여 원본 Platforms.xml에 붙여 넣기 합니다.
?? 원본은 패치된 파일보다 내용이 방대합니다. 시작과 끝을 잘 맞추어 덮어주세요.????????
??
여기서 붙여넣기 한 후 Node 부분을 체크해주셔야합니다.??
??????당연히 위에서 기술한 Input과 Outputs만큼 <array><dict>~~~</array></dict>가 맞아야합니다..??
??????????????????????????
Input일 경우 (AMP)가 먼저나오져~~??????????????????????????
????????<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>
????????????????????????????????????????<true/>
????????????????????????????????????????<key>PublishVolume</key>
????????????????????????????????????????<true/>
????????????????????????????????????????<key>VolumeInputAmp</key>
????????????????????????????????????????<true/>
????????????????????????????????</dict>
????????????????????????????????<key>NodeID</key>
????????????????????????????????<integer>7</integer>
????????????????????????</dict>
????????????????????????<dict>
????????????????????????????????<key>NodeID</key>
????????????????????????????????<integer>36</integer>
????????????????????????</dict>
????????????????????????<dict>
????????????????????????????????<key>Boost</key>
????????????????????????????????<integer>3</integer>
????????????????????????????????<key>NodeID</key>
????????????????????????????????<integer>25</integer>
????????????????????????</dict>
????????????????</array>
????????</array>
????????
Output일 경우 (NodeID)가 먼저나오져~~??
????????
????????<array>
????????????????<array>
????????????????????????<dict>
????????????????????????????????<key>NodeID</key>
????????????????????????????????<integer>20</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>12</integer>
????????????????????????</dict>
????????????????????????<dict>
????????????????????????????????<key>NodeID</key>
????????????????????????????????<integer>2</integer>
????????????????????????</dict>
????????????????</array>
????????</array>
????????
자 그럼 저번게시글에 찾았던 Node를 다시 살펴봅시당
Node 12 = 30 00 A3 99??=>??9, 34, 18 [Fixed] Mic at Int ATAPI
Node 14 = 10 00 13 99??=>??20, 12, 2??IN OUT HP Detect Trigger Speaker at Int ATAPI
Node 15 = A0 40 21 01??=>??21, 12, 2??[Jack] HP Out at Ext Rear OUT HP
Node 16 = 60 10 11 41??=> [N/A]
Node 18 = 40 90 A1 01??=>??7, 36, 24 [Jack] Mic at Ext Rear
Node 19 = 70 10 11 41??=> [N/A]
Node 20 = 80 10 11 41??=> [N/A]
Node 21 = 90 10 11 41??=> [N/A]
Node 22 = B0 10 11 41??=> [N/A]
Node 23 = 50 80 03 40??=> [N/A]
Node 24 = 20 10 56 18??=> 30, 6??[Jack] Digital Out at Int HDMI
Node 25 = D0 10 11 41??=> [N/A]
입력과 출력을 나누어 <key>NodeID</key> 를 맞추어봅니다.
저의 경우는 Mic가 동작 하지 않으므로...
검은색 부분을 맞추어봅니다.
????????<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>
????????????????????????????????????????<true/>
????????????????????????????????????????<key>PublishVolume</key>
????????????????????????????????????????<true/>
????????????????????????????????????????<key>VolumeInputAmp</key>
????????????????????????????????????????<true/>
????????????????????????????????</dict>
????????????????????????????????<key>NodeID</key>
????????????????????????????????<integer>7</integer>
????????????????????????</dict>
????????????????????????<dict>
????????????????????????????????<key>NodeID</key>
????????????????????????????????<integer>36</integer>
????????????????????????</dict>
????????????????????????<dict>
????????????????????????????????<key>Boost</key>
????????????????????????????????<integer>3</integer>
????????????????????????????????<key>NodeID</key>
????????????????????????????????<integer>25</integer>
????????????????????????</dict>
????????????????</array>
????????</array>
????????
엉뚱한 Node를 가르키고 있네요.
자신에게 맞는 NodeID로 변경합니다.
저의 내장마이크 Node 는 9, 34, 18 [Fixed] Mic at Int ATAPI 요놈이니 변경후의 부분은
아래와 같이 검은부분입니다.
????????<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>
????????????????????????????????????????<true/>
????????????????????????????????????????<key>PublishVolume</key>
????????????????????????????????????????<true/>
????????????????????????????????????????<key>VolumeInputAmp</key>
????????????????????????????????????????<true/>
????????????????????????????????</dict>
????????????????????????????????<key>NodeID</key>
????????????????????????????????<integer>9</integer>
????????????????????????</dict>
????????????????????????<dict>
????????????????????????????????<key>NodeID</key>
????????????????????????????????<integer>34</integer>
????????????????????????</dict>
????????????????????????<dict>
????????????????????????????????<key>Boost</key>
????????????????????????????????<integer>3</integer>
????????????????????????????????<key>NodeID</key>
????????????????????????????????<integer>18</integer>
????????????????????????</dict>
????????????????</array>
????????</array>
????????
모든 항목을 체크후 수정하실것은 NodeID를 수정해줍니다.
7. 다음은 Info.plist파일의 수정입니다.
?? 절대로 TextEdit로 수정하시면 안됩니다.
???????? PlistEdit를 이용하시거나 Xcode를 설치후 수정하세요
왜냐하면 일단 TextEdit로 오픈시 PinConfigdata 부분이 아래와같이 인코딩되어 보입니다.
AUccMAFHHQEBRx4QAUcfkAFXHEABVx0AAVce
IQFXHwEBlxwQAZcdAQGXHqABlx+QAYccIAGH
HQABhx6BAYcfAQEnHPABJx0AASceAAEnH0AB
ZxzwAWcdAAFnHgABZx9AAacc8AGnHQABpx4A
AacfQAG3HPABtx0AAbceAAG3H0ABxxzwAccd
AAHHHgABxx9AAdcc8AHXHQAB1x4AAdcfQAHn
HPAB5x0AAeceAAHnH0AB9xzwAfcdAAH3HgAB
9x9A????????
PlistEdit나 Xcode로 보시면 아래와 같이 정상 적으로 보입니다.
01271C30 01271D00 01271EA3 01271F99 01471C10 01471D00 01471E13 01471F99 01571CA0 01571D40 01571E21 01571F01 01671C60 01671D10 01671E11 01671F41 01871C40 01871D90 01871EA1 01871F01 01971C70 01971D10 01971E11 01971F41 01A71C80 01A71D10 01A71E11 01A71F41 01B71C90 01B71D10 01B71E11 01B71F41 01C71CB0 01C71D10 01C71E11 01C71F41 01D71C50 01D71D80 01D71E03 01D71F40 01E71C20 01E71D10 01E71E56 01E71F18 01F71CD0 01F71D10 01F71E11 01F71F41
????????<dict>
????????????????<key>HDA Hardware Config Resource</key>
????????????????<dict>
????????????????
????????????????~~~
????????????????</dict>
????????</dict>
?? 부분을 복사하여 원본 Info.plist에 붙여 넣기 합니다.
?? 원본은 패치된 파일보다 내용이 방대합니다. 시작과 끝을 잘 맞추어 덮어주세요.
??
8. 이전 게시물에서 찾은 PinConfigData로 바꿔줍니다.
????????<key>ConfigData</key>
????????<data>
????????01271C30 01271D00 01271EA3 01271F99 01471C10 01471D00 01471E13 01471F99 01571CA0 01571D40 01571E21 01571F01 01671C60 01671D10 01671E11 01671F41 01871C40 01871D90 01871EA1 01871F01 01971C70 01971D10 01971E11 01971F41 01A71C80 01A71D10 01A71E11 01A71F41 01B71C90 01B71D10 01B71E11 01B71F41 01C71CB0 01C71D10 01C71E11 01C71F41 01D71C50 01D71D80 01D71E03 01D71F40 01E71C20 01E71D10 01E71E56 01E71F18 01F71CD0 01F71D10 01F71E11 01F71F41
????????</data>
??
??
9.??그리고 저번에 설명했던바와 같이 ALC262 Layout92를 사용할것입니다.
????<key>LayoutID</key>
????<integer>12</integer>??
??????
????<key>LayoutID</key>
????<integer>92</integer>
??
??92로 수정합니다.
??
10. 거의 마지막 단계입니다.
????이제 수정된 layout92.xml 과 Platforms.xml을 HDWizard의 Convert탭을 클릭후 드레그엔 드롭합니다.
????그럼 자동으로 layout92.xml.zlib 와 Platforms.xml.zlib를 만들어줍니다.
????
??
11. 원본 AppleHDA.kext에 해당위치로 Info.plist, layout92.xml.zlib, Platforms.xml.zlib를 다시 넣어줍니다.
12. KextUtility로 kext를 설치합니다. (당연히 권한복구도 자동으로 됩니다.)
13. 재부팅후 내장마이크와 이어폰 스피커등을 체크합니다. 정상적으로 동작하면 끝~~~~
????혹시 AppleHDA가 로딩되지 않으면 sudo dmesg등을 이용하여 디버깅 후 오류를 찾으시거나 처음부터 다시합니다. ㅠㅠ
안녕하세요 codedump 는 프로그램 명인가요?
어찌 구하는지 궁금합니다.
저는 alc282 잡긴 잡았는데 스피커로 소리가 안들려서 방법을 찾아 보는 중입니다.
windows 10 에서는 소리가 잘들리는데요 sierra 에서는 장치는 잘 잡히는데 소리가 안들리네요 ㅠㅠ
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 조회 수 | 날짜 | 글쓴이 |
---|---|---|---|
macOS Sequoia 15.0.1 24A348 정식버젼 고스트 이미지 OC 1.0.2 ft: 전체공개 +29 | 937 | 24.10.1121:10 | 좌절금지 |
오픈코어 1.0.2 +23 | 575 | 24.10.0900:22 | 줌바이퍼 |
[중급편] 노트북 해킨 +16 | 1403 | 24.07.1219:19 | Stultus |
macOS Ventura 13.7 22H123 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체 공개 +17 | 575 | 24.09.1917:09 | 좌절금지 |
macOS Sonoma 14.7 23H124 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체공개 +31 | 909 | 24.09.1723:58 | 좌절금지 |
[초급편] 문제 스스로 해결하기 +20 | 4002 | 24.03.2920:07 | Stultus |
[입문편] 첫 해킨 길라잡이 +40 | 5086 | 24.01.1218:54 | Stultus |
[필독 - 안정화] macOS 해킨토시 설치 후 안정화 작업 목록 및 글타래 모음 총정리 📋 +67 | 5.1만 | 23.01.0913:39 | shl628 |
Hot AMD Sequoia용 AppleALC 1.9.2 +3 | 106 | 24.10.2319:04 | 사노라맨 |
Hot [Sequoia 15.0.1, OC r1.0.2] ASUS TUF B550-PLUS / RYZEN 5 5600X / RX470 +2 | 103 | 24.10.2322:26 | 뿌엥 |
Hot OCLP로 지원되지 않는 기기/dGPU를 사용하는 해킨토시의 사이드카 품질 문제 해결방법 +1 | 119 | 24.10.2321:29 | 해킨도전자 |
103 | 24.10.2322:26 | 뿌엥 | |
119 | 24.10.2321:29 | 해킨도전자 | |
106 | 24.10.2319:04 | 사노라맨 | |
784 | 24.10.1412:27 | shl628 | |
665 | 24.10.1316:00 | 수박 | |
344 | 24.10.1222:56 | Stultus | |
937 | 24.10.1121:10 | 좌절금지 | |
732 | 24.10.1115:53 | 수박 | |
575 | 24.10.0900:22 | 줌바이퍼 | |
1403 | 24.07.1219:19 | Stultus | |
1210 | 24.10.0500:31 | 줌바이퍼 | |
569 | 24.10.0410:49 | Tamy | |
749 | 24.09.2923:48 | 머트 | |
628 | 24.09.2822:28 | 머트 | |
463 | 24.09.2808:22 | Tamy | |
894 | 24.09.2321:32 | Stultus | |
994 | 24.09.2210:59 | 좌절금지 | |
644 | 24.09.2203:23 | 누림어멈 | |
1191 | 24.09.1919:17 | 좌절금지 | |
575 | 24.09.1917:09 | 좌절금지 | |
498 | 24.09.1813:37 | Stultus | |
909 | 24.09.1723:58 | 좌절금지 | |
601 | 24.09.1722:40 | 좌절금지 | |
453 | 24.09.1717:13 | 맥가즈아 | |
562 | 24.09.1708:13 | 김경석 | |
234 | 24.09.1617:47 | Panictosh | |
768 | 24.09.1504:35 | Tamy | |
584 | 24.09.1319:18 | Stultus | |
706 | 24.09.1019:44 | 치토 | |
484 | 24.09.0118:13 | 머핀X | |
462 | 24.09.0112:54 | 해킨도전자 | |
546 | 24.08.3115:34 | 머핀X | |
306 | 24.08.2601:42 | 화정큐삼 | |
305 | 24.08.2422:59 | 하나브 | |
318 | 24.08.2316:25 | 화정큐삼 | |
415 | 24.08.1810:56 | CanBe | |
363 | 24.08.1800:04 | 화정큐삼 | |
300 | 24.08.1722:03 | 화정큐삼 | |
201 | 24.08.1710:14 | jbhlyk | |
312 | 24.08.1622:06 | Stultus | |
218 | 24.08.1511:16 | hackillious | |
169 | 24.08.1421:30 | 세유니 | |
419 | 24.08.1419:58 | Stultus | |
377 | 24.08.1311:26 | 오디세이 | |
270 | 24.08.1115:46 | 좌절금지 | |
186 | 24.08.1111:21 | 티타보르 | |
233 | 24.08.1022:46 | Stultus | |
538 | 24.08.1022:10 | 오디세이 | |
168 | 24.08.1019:05 | jbhlyk | |
200 | 24.08.0923:20 | RogerT |
잠자던 삽질에 대한 투지를 불러일으킵니다.
지금 삼실의 커스토 코덱인 ALC221 이라고 듣보잡인데요.
예전에도 이 비슷한 (아니 기본적으로는 동일한 자료인 것 같아요) 자료를 가지고 실패했는데,
워낙 설명을 잘 해 주셔서 없던 용기도 생깁니다.
감사하구요... 성공하면 또 보고드릴게요.. 만만찮은 놈이기는 해요... 아! 성공하고 싶다...