*적용중인 도장
So for this example, we'll assume your codec is ALC1220. To verify yours, you have a couple options:
Now with a codec, we'll want to cross reference it with AppleALC's supported codec list:
With the ALC1220, we get the following:
0x100003, layout 1, 2, 3, 5, 7, 11, 13, 15, 16, 21, 27, 28, 29, 34
So from this it tells us 2 things:
Now with a list of supported layout IDs, we're ready to try some out
Note: If your Audio Codec is ALC 3XXX this is likely false and just a rebranded controller, do your research and see what the actual controller is.
To test out our layout IDs, we're going to be using the boot-arg alcid=xxx where xxx is your layout. Remember that to try layout IDs one at a time. Do not add multiple IDs or alcid boot-args, if one doesn't work then try the next ID and etc
config.plist ├── NVRAM ├── Add ├── 7C436110-AB2A-4BBB-A880-FE41995C9F82 ├── boot-args | String | alcid=11
Once you've found a Layout ID that works with your hack, we can create a more permanent solution for closer to how real macs set their Layout ID.
With AppleALC, there's a priority hierarchy with which properties are prioritized:
As we can see in AppeALC's source, it expects your layout ID to be set via alc-layout-id so to make things easier on AppleALC we'll set it with DeviceProperties
To start, we'll need to find out where our Audio controller is located on the PCI map. For this, we'll be using a handy tool called gfxutil then with the macOS terminal:
path/to/gfxutil -f HDEF
Then add this PciRoot with the child alc-layout-id to your config.plist under DeviceProperties -> Add:
Note that the value is in HEX/Data, you can use a simple decimal to hexadecimal calculator to find yours. printf '%x\n' DECI_VAL:
So in this example, alcid=11 would become alc-layout-id | Data | <0B000000>
Note that the final value should be 4 bytes in total(ie. 0B 00 00 00 ), for layout IDs surpassing 255(FF 00 00 00) will need to remember that the bytes are swapped. So 256 will become FF 01 00 00
No Mic on AMD:
Same layout ID from Clover doesn't work on OpenCore
This is likely do to IRQ conflicts, on Clover there's a whole sweep of ACPI hot-patches that are applied automagically. Fixing this is a little bit painful but SSDTTime's FixHPET option can handle most cases.
For odd cases where RTC and HPET take IRQs from other devices like USB and audio, you can reference the HP Compaq DC7900 ACPI patch example in the trashOS repo
So for troubleshooting, we'll need to go over a couple things:
o start, we'll assume you already have Lilu and AppleALC installed, if you're unsure if it's been loaded correctly you can run the following in terminal(This will also check if AppleHDA is loaded, as without this AppleALC has nothing to patch):
kextstat | grep -E "AppleHDA|AppleALC|Lilu"
If all 3 show up, you're good to go. And make sure VoodooHDA is not present. This will conflict with AppleALC otherwise. Other kexts to make sure you do not have in your system:
Hey Lilu and/or AppleALC aren't showing up
Generally the best place to start is by looking through your OpenCore logs and seeing if Lilu and AppleALC injected correctly:
14:354 00:020 OC: Prelink injection Lilu.kext () - Success 14:367 00:012 OC: Prelink injection AppleALC.kext () - Success
If it says failed to inject:
15:448 00:007 OC: Prelink injection AppleALC.kext () - Invalid Parameter
Main places you can check as to why:
Note: To setup file logging, see OpenCore Debugging.
So with AppleALC, one of the most easiest things to check if the patching was done right was to see if your audio controller was renamed correctly. Grab IORegistryExplorer and see if you have an HDEF device:
As you can see from the above image, we have the following:
Note: Do not rename your audio controller manually, this can cause issues as AppleALC is trying to patch already. Let AppleALC do it's work.
More examples:
vs Incorrect layout IDs:
As you can see from the above 2, the right image is missing a lot of AppleHDAInput devices, meaning that AppleALC can't match up your physical ports to something it can understand and output to. This means you've got some work to find the right layout ID for your system.
This section is mainly relevant for those who were replacing the stock AppleHDA with a custom one, this is going to verify whether or not yours is genuine:
sudo kextcache -i / && sudo kextcache -u /
This will check if the signature is valid for AppleHDA, if it's not then you're going to need to either get an original copy of AppleHDA for your system and replace it or update macOS(kexts will be cleaned out on updates). This will only happen when you're manually patched AppleHDA so if this is a fresh install it's highly unlikely you will have signature issues.
아... 번역 할려다가... 클로버에서 이미 AppleALC 로 잡으실줄 아는 사람들에게는 굳이 번역할 이유가 없는 섹션이라 그냥 업로드 합니다.
https://dortania.github.io/OpenCore-Desktop-Guide/post-install/audio.html
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 조회 수 | 날짜 | 글쓴이 |
---|---|---|---|
macOS Sequoia 15.0.1 24A348 정식버젼 고스트 이미지 OC 1.0.2 ft: 전체공개 +28 | 833 | 24.10.1121:10 | 좌절금지 |
오픈코어 1.0.2 +22 | 547 | 24.10.0900:22 | 줌바이퍼 |
[중급편] 노트북 해킨 +16 | 1365 | 24.07.1219:19 | Stultus |
macOS Ventura 13.7 22H123 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체 공개 +17 | 560 | 24.09.1917:09 | 좌절금지 |
macOS Sonoma 14.7 23H124 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체공개 +31 | 890 | 24.09.1723:58 | 좌절금지 |
[초급편] 문제 스스로 해결하기 +20 | 3975 | 24.03.2920:07 | Stultus |
[입문편] 첫 해킨 길라잡이 +40 | 5035 | 24.01.1218:54 | Stultus |
[필독 - 안정화] macOS 해킨토시 설치 후 안정화 작업 목록 및 글타래 모음 총정리 📋 +67 | 5.1만 | 23.01.0913:39 | shl628 |
Hot AMD Sequoia용 AppleALC 1.9.2 +3 | 42 | 24.10.2319:04 | 사노라맨 |
Hot [Sequoia 15.0.1, OC r1.0.2] ASUS TUF B550-PLUS / RYZEN 5 5600X / RX470 +2 | 20 | 24.10.2322:26 | 뿌엥 |
Hot OCLP로 지원되지 않는 기기/dGPU를 사용하는 해킨토시의 사이드카 품질 문제 해결방법 +1 | 27 | 24.10.2321:29 | 해킨도전자 |
20 | 24.10.2322:26 | 뿌엥 | |
27 | 24.10.2321:29 | 해킨도전자 | |
42 | 24.10.2319:04 | 사노라맨 | |
467 | 24.10.1412:27 | shl628 | |
600 | 24.10.1316:00 | 수박 | |
325 | 24.10.1222:56 | Stultus | |
833 | 24.10.1121:10 | 좌절금지 | |
409 | 24.10.1115:53 | 수박 | |
547 | 24.10.0900:22 | 줌바이퍼 | |
1365 | 24.07.1219:19 | Stultus | |
1179 | 24.10.0500:31 | 줌바이퍼 | |
564 | 24.10.0410:49 | Tamy | |
734 | 24.09.2923:48 | 머트 | |
623 | 24.09.2822:28 | 머트 | |
448 | 24.09.2808:22 | Tamy | |
879 | 24.09.2321:32 | Stultus | |
990 | 24.09.2210:59 | 좌절금지 | |
627 | 24.09.2203:23 | 누림어멈 | |
1166 | 24.09.1919:17 | 좌절금지 | |
560 | 24.09.1917:09 | 좌절금지 | |
496 | 24.09.1813:37 | Stultus | |
890 | 24.09.1723:58 | 좌절금지 | |
592 | 24.09.1722:40 | 좌절금지 | |
450 | 24.09.1717:13 | 맥가즈아 | |
558 | 24.09.1708:13 | 김경석 | |
226 | 24.09.1617:47 | Panictosh | |
760 | 24.09.1504:35 | Tamy | |
580 | 24.09.1319:18 | Stultus | |
695 | 24.09.1019:44 | 치토 | |
482 | 24.09.0118:13 | 머핀X | |
451 | 24.09.0112:54 | 해킨도전자 | |
537 | 24.08.3115:34 | 머핀X | |
300 | 24.08.2601:42 | 화정큐삼 | |
300 | 24.08.2422:59 | 하나브 | |
316 | 24.08.2316:25 | 화정큐삼 | |
411 | 24.08.1810:56 | CanBe | |
358 | 24.08.1800:04 | 화정큐삼 | |
297 | 24.08.1722:03 | 화정큐삼 | |
197 | 24.08.1710:14 | jbhlyk | |
309 | 24.08.1622:06 | Stultus | |
214 | 24.08.1511:16 | hackillious | |
164 | 24.08.1421:30 | 세유니 | |
416 | 24.08.1419:58 | Stultus | |
375 | 24.08.1311:26 | 오디세이 | |
263 | 24.08.1115:46 | 좌절금지 | |
184 | 24.08.1111:21 | 티타보르 | |
231 | 24.08.1022:46 | Stultus | |
525 | 24.08.1022:10 | 오디세이 | |
166 | 24.08.1019:05 | jbhlyk | |
193 | 24.08.0923:20 | RogerT | |
336 | 24.08.0717:18 | 좌절금지 | |
129 | 24.08.0609:17 | RogerT | |
568 | 24.08.0606:14 | 줌바이퍼 | |
86 | 24.08.0523:34 | jbhlyk | |
262 | 24.08.0521:10 | 수인과윤슈 | |
880 | 24.08.0521:08 | 좌절금지 | |
603 | 24.08.0221:07 | Stultus | |
389 | 24.07.3019:12 | Tamy | |
340 | 24.07.2915:37 | 해킨도전자 | |
272 | 24.07.2813:52 | june119 | |
301 | 24.07.2112:43 | Stultus | |
4030 | 23.05.0502:19 | BlueGuerrilla | |
3727 | 21.08.0213:10 | 김태국 | |
275 | 24.07.1122:47 | Stultus | |
211 | 24.07.1020:44 | Stultus | |
250 | 24.07.0921:44 | Stultus | |
371 | 24.07.0820:57 | Stultus | |
198 | 24.07.0811:28 | 의정이 | |
381 | 24.07.0721:25 | Stultus | |
357 | 24.07.0604:41 | bsiugr | |
645 | 24.07.0509:56 | 애플브리크 | |
2435 | 24.02.1715:21 | 광호 | |
470 | 24.06.2723:24 | 치토 | |
239 | 24.06.2617:24 | talas | |
155 | 24.06.2120:58 | 블루사탕 | |
551 | 24.06.1609:01 | gtrfxdsp | |
387 | 24.06.1401:04 | Mactopia | |
849 | 24.06.1120:40 | Stultus | |
762 | 24.06.1115:07 | 새콤칠리 | |
118만 | 23.02.2118:35 | 좌절금지 |
이 가이드에서는 예제로 ALC1220 코덱이 있다고 가정할겁니다. 당신의 것을 찾아보려면 여러 방법이 있습니다.
마더보드의 스펙 페이지나 메뉴얼을 확인하기
윈도우 내에서 '장치 관리자'로 찾아보기
리눅스 내에서 'cat' 명령어를 써보기
//(명령어: cat /proc/asound/card0/codec#0 | less )
이렇게 코덱을 찾았으면 이제 AppleALC 페이지에서 지원이 되는 코덱 목록에서 교차 확인을 해봅니다.
ALC1220 코덱에서는 이렇게 나옵니다.
"0x100003, 레이아웃 1, 2, 3, 5, 7, 11, 13, 15, 16, 21, 27, 28, 29, 34"
여기서 우리는
- 어느 하드웨어 리비전(0x100003)이 지원되는지(해당 코덱이 여러 리비전으로 나와 있는 경우에만 해당됩니다.)
- 어느 레이아웃이 코덱에서 지원되는 지(레이아웃 1, 2, 3, 5, 7, 11, 13, 15, 16, 21, 27, 28, 29, 34)
를 알 수 있습니다.
/참고사항: 오디오 코덱이 ALC 3XXX 같이 나와 있을 경우, 이름이 바뀐 가짜 코덱일 가능성이 큽니다.
/리눅스의 Cat 명령어를 사용해서 코덱이 무엇인지를 확실히 할 수 있습니다. (예시: ALC3601 을 리눅스에서 보면 ALC671로 확인됨)
1. 레이아웃을 테스트해보기
레이아웃을 테스트하기 위해 boot-args 에서 'alcid=(레이아웃 숫자)' 를 사용할 겁니다.
한 번에 한 번씩만 테스트하는 것임을 잊지 마세요. 여러 레이아웃 ID나 alcid= 를 중복해서 넣지 마세요.
config.plist 에서, NVRAM -> Add -> 7C436110-AB2A-4BBB-A880-FE41995C9F82
안에 있는 boot-args 에 alcid=(레이아웃)을 수정하면서 테스트하세요.
- 레이아웃을 11로 맞출 때의 예시:
config.plist
├── NVRAM
├── Add
├── 7C436110-AB2A-4BBB-A880-FE41995C9F82
├── boot-args | String | alcid=11
==============
::레이아웃을 영구적으로 설정하기 (주석: boot-args 에서 alcid=xxx 를 빼기, 선택사항입니다.)::
이제 당신의 해킨토시에 사용될 레이아웃을 찾았으면, 리얼맥이 레이아웃을 설정하는 것처럼 하는 방법을 할 수 있습니다.
AppleALC를 쓰는 해킨토시에서, 레이아웃은 해당 우선권에 따라서 설정이 됩니다.
- 1. boot-args 안의 alcid=xxx , 디버깅(안정화)할 때 유용하게 사용되며, 밑의 다른 값을 덮어 씌웁니다.
- 2. DeviceProperties 안의 alc-layout-id , AppleALC 문서에서 권장하는 방법입니다.
- 3. DeviceProperties 안의 layout-id , 리얼맥이 쓰는 값입니다.
AppleALC 문서에서 보이듯이, AppleALC에서는 레이아웃을 alc-layout-id 로 설정되게 하는 걸 권장하고 있습니다. 따라서 DeviceProperties 에다가 설정을 해보겠습니다.
처음부터, 우리는 PCI 맵에서 오디오 컨트롤러가 어디있는지를 찾아야 합니다. 그러기 위해 gfxutil 을 다운로드해서 macOS 터미널을 통해 사용해볼겁니다.
(gfxutil 폴더 위치)/gfxutil -f HDEF
해서 나온 PciRoot 값을 DeviceProperties 의 Add 항목에 alc-layout-id 라는 이름을 넣어서 합니다.
- 예시: [사진 1]
config.plist
├── DeviceProperties
├── Add
├── PciRoot(0x0)/Pci(0x1B, 0x0)
├── alc-layout-id | Data | 01000000
참고1: 16진수/Data 값으로 넣어야 하는 걸 잊지 마세요.
참고2: alc-layout-id 는 Data 입니다. String 등등...으로 값을 지정하지 마세요.
참고사항: 10진수 -> 16진수 계산기를 통해서 값을 쉽게 변환할 수 있습니다.
예를 들어 레이아웃이 11이면, 값은 , 하지만 OpenCore는 Little Endian 을 사용하기 때문에 Byte swap도 해줘야 하니, 최종 값은
/Byte Swap 을 할 때 유의할 점이라면, 최종 값은 총 4 Byte(예시: 0B 00 00 00 )이기 때문에,
/255(FF 00 00 00)을 넘는 값을 Byte Swap할 때 유의해야합니다. 레이아웃 ID가 256인 경우에는 FF 01 00 00 이 최종값이 됩니다.
==============
::기타 이슈::
AMD 에서 마이크가 안됨
AppleALC 를 쓰는 AMD 기기에서 흔히 보이는 이슈인데, AppleALC 에는 마이크 입력을 받게 해주는 것에 관한 패치가 없기 때문입니다.
현재에서 가장 좋은 방법은 USB DAC/마이크를 사용하거나, VoodooHDA.kext 방법으로 바꾸는 것밖에 없습니다.
다만, VoodooHDA.kext 는 보통 AppleALC 보다 오디오 퀄리티가 낮거나, 불안정하다고 알려져 있으니 이 점을 유의하세요.
또, Clover 에서 사용되는 레이아웃은 OpenCore 에서 쓰지 못할 수 있습니다.
IRQ 충돌로 인한 경우가 많으며, Clover 같은 경우에는 ACPI 핫패치가 자동으로 적용되기 때문임으로 보입니다.
이걸 고치는 건 힘들 수 있지만, 대부분의 경우에는 SSDTTime 의 FixHPET 을 사용해서 고칠 수 있습니다.
/RTC 나 HPET 가 USB 와 오디오에서 사용되는 IRQ 를 가져가는 경우에는, trashOS 리포지터리에 있는 Compaq DC7900 ACPI 패치를 참고해보세요.
==============
::문제가 생겼을 때::
문제를 찾기 위해서는 여러가지를 확인해봐야합니다.
1. 알맞은 Kext를 사용중인지 확인하기
2. AppleALC 가 제대로 패치를 하는지 확인하기
3. AppleHDA 가 순정인지 확인하기
-------------
1. 알맞은 Kext를 사용중인지 확인하기
일단 Lilu, AppleALC 가 이미 설치되어 있다고 가정합니다. 이때 kext 가 제대로 불러와졌는지를 확인하려면, macOS 터미널에서 상태를 확인할 수 있습니다.
kextstat | grep -E "AppleHDA|AppleALC|Lilu"
(이 명령어는 AppleHDA의 유무도 확인합니다.)
3개가 모두 보여지면, 이제 다음 kext들이 존재하는지 확인하세요. 이 kext들은 시스템에 존재하지 않아야합니다.
realtekALC.kext
CloverALC.kext
VoodooHDA.kext
HDA Blocker.kext
HDAEnabler#.kext (# 은 버전 이름)
1-1. Lilu 나 AppleALC 가 안보이는데요?
Lilu 나 AppleALC 가 안보일때는, OpenCore 의 로그 파일을 참조해서 Lilu 와 AppleALC 가 제대로 불러와졌는지를 확인하세요.
(주석: OpenCore의 Debug 버전을 사용해야 로그가 생성됩니다. 이 점을 유의하세요.)
제대로 불러와졌을 때의 예시:
14:354 00:020 OC: Prelink injection Lilu.kext () - Success
14:367 00:012 OC: Prelink injection AppleALC.kext () - Success
안 불러와졌을 때의 예시:
15:448 00:007 OC: Prelink injection AppleALC.kext () - Invalid Parameter
안 불러와졌을 때, 확인해야 할 게 몇개 있습니다.
불러오는 순서, config.plist 에서, Lilu.kext 는 가장 최상단에 위치(가장 먼저 불러와지는 kext)여야 합니다.
최신 버전 kext, 알맞지 않은/버전이 틀린 kext, 특히 Lilu 와 그걸 쓰는 플러그인, kext들은 버전 궁합이 맞아야합니다.
-------------
2. AppleALC 가 제대로 패치를 하는지 확인하기.
AppleALC에서, AppleALC 가 제대로 되는 지 확인하기 위해서는, 오디오 컨트롤러가 제대로 이름이 바뀌었는지만 확인하면 됩니다.
IORegisterExplorer 프로그램을 사용해서, HDEF 기기가 있는지 확인하세요.
-예시:
[사진 3]
위에서 보이다시피 몇가지가 눈에 띕니다.
HDEF 기기, 그러니깐 오디오 컨트롤러의 이름이 제대로 바뀌었습니다.
AppleHDAController가 존재합니다. 즉 애플의 오디오 kext 가 제대로 불러와진걸 볼 수 있습니다.
alc-layout-id가 존재합니다. 즉 boot-args 또는 DeviceProperty 설정이 제대로 된 걸 볼 수 있습니다.
참고: alc-layout-id 는 위에서 설명했듯이, AppleHDA에서 쓰이는 layout-id 값을 덮어 씌웁니다.
주의: 오디오 컨트롤러의 이름을 직접 수정하려고 하지 마세요. AppleALC가 스스로 하게 냅두세요.
추가 예시
-제대로 작동함
[사진 4]
-작동이 안됨(잘못된 레이아웃 ID가 적용된 경우)
[사진 5]
위 두 사진에서 보다시피, [사진 5]는 AppleHDAInput 기기 대부분이 사라져있습니다. 즉, AppleALC 가 여러 물리적 포트들을 출력할 수 있는 것에 물리지 못했다는 말입니다. 다시 알맞은 레이아웃 ID를 찾아야하겠네요.
-------------
3. AppleHDA 가 순정인지 확인하기
AppleHDA 를 수정하거나 커스텀으로 바꾼 경우에만 해당되는 부분입니다. macOS 터미널에서 이 명령어를 써서, AppleHDA 가 순정인지를 확인할 수 있습니다.
sudo kextcache -i / && sudo kextcache -u /
다시 한번 말하지만, 이 부분은 AppleHDA 를 순정이 아닌 것으로 바꾼 사람들에게만 해당됩니다.
순정으로 다시 돌리기 위해서는 다른 맥에서 순정인 AppleHDA 를 가져오거나, 재설치, 혹은 업그레이드 등으로 순정으로 바꿔보세요.
(주석. 가끔씩 AppleALC, Lilu는 제대로 불러와지지만 AppleHDA 만 실종되는 경우가 있는데, 이 때는 위의 DeviceProperties, alc-layout-id 가 잘못 설정되어 있을 때도 나타나는 현상입니다. 값이 'Data' 인지 제대로 확인하세요.)