질문용 시스템 사양 | 1번 |
---|---|
추가사양 및 설치(할)OS | Catalina ver.10.15.7 |
공지숙지/증상설명 | 숙지 |
안녕하세요, 해린이입니다.
삼성 노트북에 OpenCore 0.6.5로 카탈리나를 설치하고 ssdt 핫패치가 필요없는 안정화는 거의 다 잡아서 사용 중입니다.
이제 제가 해야할 안정화 작업은 배터리 잔량 표시, 터치패드, 전원 안꺼짐, 잠자기, 밝기 조절 단축키, 내장 마이크 정도인데
모두 ssdt를 이용한 패치가 필수적이더라구요.
며칠 동안 패치에 대해서 읽어보았는데 시작을 어떻게 해야할 지 도저히 감이 안잡혀서 여기에 또 글을 쓰네요..
참고한 글은 아래 세 글입니다.
https://www.tonymacx86.com/threads/guide-how-to-patch-dsdt-for-working-battery-status.116102/
https://x86.co.kr/mymac/5346198
https://x86.co.kr/mymac/5003460
제가 구체적으로 궁금한 것은
1. dsdt static patch를 시스템 dsdt에 바로 수정해야 하는 것인가요?
2. 만약 1번 질문의 답이 아니라면 패치한 dsdt를 적용시켜야 하나요?
3. ssdt 파일은 처음에 어떻게 만드는 건가요?
4. 제 dsdt에서 EmbeddedControl이 아래와 같이 작성되어있는데, 다른 분(밀감젤리님의 이온 패치 가이드 등)들은 Offset(0x10)에 있는 VERS이 16비트 임에도 8비트로 나누지 않으셨더라구요. 패치해야 할 Offset이 따로 정해져 있는건가요?
Scope (_SB.PCI0.LPCB.H_EC)
{
OperationRegion (ECR, EmbeddedControl, Zero, 0xFF)
Field (ECR, ByteAcc, Lock, Preserve)
{
Offset (0x10),
VERS, 16,
Offset (0x14),
CCI0, 8,
CCI1, 8,
CCI2, 8,
CCI3, 8,
CTL0, 8,
...
5. 전원이 꺼지지 않는 문제는 https://dortania.github.io/OpenCore-Post-Install/usb/misc/shutdown.html 부분과 엑팔에서 도움을 받았는데 달라지지 않았습니다. _PRW를 시스템 dsdt에서 검색하였는데 무수히 많이 나와서 어떤 것이 USB Controller의 ACPI인 지 구분이 안가더라구요..
6. 별개 질문인데 내장 사운드, usb type-c를 이용한 이어폰은 잡히고 소리가 나는데, 내장 마이크와 3.5파이 포트에 연결한 스피커가 인식은 되는데 소리는 나지 않습니다. 이 경우에 레이아웃을 변경해야 하는 건가요? 오디오는 Realtek ALC256 사용 중이고 레이아웃은 5 사용 중입니다.
제가 생각하기에도 이런 질문 올리기 참 그런데 며칠 째 혼자 시작도 못해서 염치없이 글을 또 쓰고 있네요ㅜㅜ 조언 달게 받습니다..
1. 음... 질문의 내용이 조금 이상한 것 같아요.
DSDT 를 직접 수정하여 패치하는 방식을 Static Patch 라고 합니다.
Static Patch 는 무언가의 특정 안정화 작업에 대한 실질적인 패치 내용을 의미하는 것이 아닙니다.
ACPI 를 패치하는 방식의 이름일 뿐입니다.
DSDT 를 직접 수정하여 패치하는 방식을 Static Patch 라고 하며
SSDT 를 사용하여 DSDT 의 일부를 내용만 패치하는 방식을 Hot Patch 라고 합니다.
그리고, SSDT 를 사용한 Hot Patch 방식 중에서도
ACPI Rename 을 적용하여 OEM DSDT 의 일부 내용을 무시하고 그 대신에 SSDT 의 내용을 사용하는 Override 방식의 패치가 있고
ACPI Rename 을 적용하지 않고 특정 변수의 값에 따라서 패치하는 Preset Variable Method (PVM) 방식의 패치가 있습니다.
추가로, OEM DSDT 라는 것은 수정하지 않은 원본 상태의 DSDT 를 의미하며 Clover 에서는 BIOS.aml 이라고도 표현합니다.
2. 배터리 잔량 표시 작업을 진행할 때 DSDT 를 직접 수정하여 Static 방식으로 패치할 것인지
SSDT 를 사용하여 Hot Patch & Override 방식으로 패치할 것인지는 자기 마음입니다.
단, OpenCore 는 ACPI 설정 및 패치한 내용을 모든 OS 에 적용하므로 DSDT 보다는 SSDT 를 사용하는 것을 권장하고 있습니다.
그리고, 배터리 패치는 먼저 DSDT 를 직접 수정하여 패치한 후에 OEM DSDT 와 비교하여 SSDT 로 생성하는 것이 좋습니다.
배터리 잔량 표시 작업을 한번에 SSDT 로 만들려고 하면 조금 힘듭니다.
3. MaciASL 에서 SSDT 를 자신이 직접 완전히 새로 작성하려면 처음에는 DefinitionBlock 을 정의해야 합니다.
DefinitionBlock ("", "SSDT", 2, "hack", "Battery", 0x00000000)
DefinitionBlock 의 중괄호 ( ) 안에서 4, 5번째 부분만 수정해주면 되는데 아무 이름이나 넣어주면 됩니다.
위의 hack 부분은 OEM ID 라고 하며 주로 OEM DSDT 나 OEM SSDT Tables 의 경우에는 Vendor ID 가 들어갑니다.
위의 Battery 부분은 OEM Table ID 라고 하며 저는 주로 이 SSDT 가 어떤 패치와 관련이 있는 SSDT 인지 간단한 문자열을 넣습니다.
OEM ID 와 OEM Table ID 부분은 어떤 문자열을 입력하든 상관없습니다.
나머지 부분인 "", 2, 0x00000000 은 굳이 알려고 하지 않아도 됩니다.
추가로, OEM Table ID 는 특정 OEM SSDT Table 을 통째로 수정하여 적용하려는 경우
해당 Table 을 Drop 할 때 Config.plist 의 ACPI 설정 관련 부분에서 사용되기도 합니다.
나머지 부분인 "", 2, 0x00000000 은 굳이 알 필요가 없으므로 무시하면 됩니다.
DefinitionBlock 을 정의한 후에는 이제 코드를 DSDT 등에서 가져와서 패치하거나 패치할 내용을 내용을 직접 작성하면 됩니다.
4. EmbeddedControl Region 에서 선언된 16 Bit 이상의 변수라도 다른 부분에서 사용되지 않으면 8 Bit 로 세분화하지 않아도 됩니다.
DSDT 에서 VERS 를 한번 검색해보세요.
EmbeddedControl Region 에서 VERS 라는 FieldUnitObj 만 선언되어 있고
다른 배터리 관련 Method 등의 다른 부분에서 사용되지 않는다는 것을 볼 수 있을 거예요.
그리고, 밀감젤리님은 SSDT 를 사용하여 배터리 패치 작업을 진행하셨으므로
EmbeddedControl Region 에서 세분화한 FieldUnitObj 에 해당하는 Offset 값을 직접 세서 수정해야 하는 것이 맞지만
DSDT 를 직접 수정하는 Static Patch 방식으로 배터리 패치를 진행하려는 경우에는 Offset 의 값을 수정하지 않아도 됩니다.
5. XHC Device 가 USB 3.x Controller 에 해당하는 장치이므로 XHC Device 의 _PRW 를 찾으면 됩니다.
그런데, SSDT-GPRW.aml 을 사용한다면 GPRW 를 Call 할 때 Arg0 이 0x6D 이던 0x0D 이던 GPRW 패치는 적용될 거예요.
음... 시스템 종료가 되지 않는 문제는 RTC 나 NVRAM 또는 SIP 이나 SecureBootModel 부분과 관련된 문제일 수도 있을 것 같아요...
그리고 제 system dsdt를 확인해보니 밀감젤리님의 노트북에서 수정하신 레지스트리와 그 레지스트리가 선언된 위치, 레지스트리 크기가 동일한데, 밀감젤리님의 ssdt를 그대로 적용해도 될까요?
한번 그대로 적용해보세요.
단, Config.plist 의 ACPI - Patch 부분에 ACPI Rename 패치도 똑같이 적용해야 합니다.
그리고, SMCBatteryManager.kext 도 추가해주세요.
VirtualSMC 공식 GitHub 사이트에서 최신 버전을 다운로드하면 같이 포함되어 있습니다.
밀감젤리님의 설치 후기글에 있는 ACPI Rename 패치는 MaciASL 의 Patch 내용이 아닙니다.
Config.plist 에 입력하는 것입니다.
아니요, Hot Patch 방식으로 배터치 패치된 SSDT 를 사용하려는 경우에는
DSDT 에 Static Patch 방식으로 배터리 패치를 진행할 필요가 없습니다.
그렇다고 보아야 할 것 같습니다.
확인해보니 배터리 설계 용량이 다르네요...
댕환님의 삼성 노트북 7 NT750XBE-X59 모델은 55 Wh 이고
밀감젤리님의 삼성 갤럭시북 Ion NT950XCR-G58A 모델은 69.7 Wh 입니다.
완전히 동일한 모델의 노트북이 아닌 이상 ACPI 내용이 완전히 같다고 확신할 수 없습니다.
Embeddedcontrol Region 에 선언된 배터리 관련 FieldUnitObj 의 이름이 같아도
배터리 관련 Method 의 전체적인 코드 내용은 다를 수도 있습니다.
패치하신 SSDT-BATT.dsl 을 확인해보니 여는 중괄호 { 와 닫는 중괄호 } 의 짝이 맞지 않아서 발생한 ASL 문법 오류입니다.
그래서, 코드를 작성할 때 들여쓰기도 잘 하면서 헷갈리지 않게 주의해야 하는데
저도 오류를 수정하려고 하였지만 잘 해결되지 않았습니다... ㅜㅅㅠ
그리고, DSDT 에서 EmbeddedControl Region 을 가져온 후에 Region 과 Field 의 이름은 다른 이름으로 변경하신 것은 잘 하셨어요. :)
하지만, EmbeddedControl Region 의 Offset 값을 수정하지 않으신 것 같아요. ㅜㅅㅠ
또한, 16 Bit 의 BTPC 라는 FieldUnitObject 가 있는데
이 변수를 사용하는 _BST Method 에서는 Store (Local0, BTPC) 라는 구문이 있습니다.
그런데, 위의 구문은 B1B2 Method 를 사용하는 것이 아닙니다.
만약, Store (Local0, BTPC) 가 아닌
Store (BTPC, Local0) 이라면 B1B2 Method 를 사용하는 것이 맞습니다.
Store (Local0, BTPC) 라는 구문은 Local0 의 값을 BTPC 에 쓴다는 의미인데
이런 경우에는 밀감젤리님처럼 Shift 연산자를 사용해야 합니다.
또는, W16B Method 라고 있는데 W16B Method 를 사용해도 됩니다.
그래서, 제가 댕환님의 삼성 노트북의 배터리 잔량 표시 작업을 위한 SSDT 를 다시 새로 직접 만들었습니다.
아래에 첨부한 압축 파일을 다운로드하고 풀면 SSDT-BATT.aml 과 Rename.plist 가 있을 거예요.
Battery Fix for NT750XBE-X59 by shl628.zip
Rename.plist 를 OpenCore Configurator 로 열고 ACPI - Patch 에 있는 ACPI Rename 패치를 모두 복사하여
현재 사용중인 Config.plist 의 ACPI - Patch 에 붙여넣기를 하면 됩니다.
그리고, SSDT-BATT.aml 을 ACPI 폴더에 넣고 Config.plist 의 ACPI - Add 에도 추가한 후에
Config.plist 의 Kernel - Add 에 SMCBatteryManager.kext 가 넣어져 있는지 확인하고 다시 부팅해보세요. :)
그 부분은 제가 수정한 후에 SSDT-BATT.aml 을 만들어서 걱정하지 않으셔도 됩니다. :)
또한, 배터리 잔량 표시는 제가 드린 SSDT-BATT.aml 를 사용하면 되므로 배터리 패치를 완료한 DSDT 는 이제 필요하지 않습니다.
네, 제가 드린 SSDT-BATT.aml 을 EFI - OC - ACPI 폴더에도 넣어줘야 합니다.
음... 혹시, Mac OS 에서는 배터리 잔량 포시가 잘 되나요?
내일 다시 확인해 보겠습니다.
네,, 부팅할 때 메소드 _BST와 _SBIX 쪽에서 ACPI 에러라고 문구가 뜨면서 부팅이 되더라구요. 너무 빨리 지나가서 사진으로는 찍지 못했네요..
ACPI에 ssdt 넣은 후에는 윈도우로 부팅했을 때 배터리가 잘 인식됐습니다
그러면, 현재 ACPI 폴더에 SSDT-BATT.aml 을 넣은 후에는 Mac OS 와 Windows 모두 배터리가 잘 작동하나요?
SSDT-BATT.aml 을 다시 한번 확인해보니 오류나 잘못 패치한 부분은 보이지 않았습니다.
혹시, EFI 폴더를 압축하고 댓글로 업로드하여 보내주실 수 있나요?
나중에 확인해 보겠습니다.
아래에 첨부한 EFI 폴더 안에 있는 BOOT 폴더와 OC 폴더로 교체하고 다시 부팅해주세요.
Microsoft 폴더를 삭제하지 않도록 주의해주세요.
OpenCore 를 현재 최신 버전의 0.6.6 으로 교체하였으며 Debug 버전입니다.
추출된 OEM ACPI Tables 를 제가 확인해보려고 Config.plist 에서 Misc - Debug - SysReport 옵션을 True 로 설정하였습니다.
위의 EFI 폴더 안에 있는 BOOT 폴더와 OC 폴더로 교체하고 다시 부팅하면
EFI 파티션에 SysReport 폴더가 있을 것입니다.
SysReport 폴더를 그대로 압축하고 댓글로 업로드하여 보내주세요.
그리고, Config.plist 에서 Device Properties 를 확인해보니 Intel UHD Graphics 620 내장 그래픽의 QE/CI 활성화는 잘 되어 있는 것 같아요.
또한, SSDT-ALS0.aml 과 SSDT-PNLF-CFL.aml 을 추가하여 노트북 내장 디스플레이 밝기 조절이 가능하도록 하였습니다.
시스템 환경설정의 디스플레이에서 밝기를 조절할 수 있는 슬라이더 바가 생겼는지 확인해보세요. :)
단, 밝기 조절 Fn 키를 담당하는 EC Query 는 패치하지 않았기 때문에 밝기 조절 Fn 키는 아직 작동하지 않을 거예요.
부팅해보았는데 맨 처음에 잠깐 오픈코어 로그?가 아주 잠깐 몇 줄 뜨고 바로 윈도우로 부팅해버리네요 오픈코어 os 선택없이..
OpenCore 0.6.6 버전부터 BootStrap 폴더가 없어지고
Config.plist 에서 기존의 BootStrap 옵션 이름도 LauncherOption 으로 변경되었는데
위의 댓글에서 드린 Config.plist 에서 LauncherOption 을 Disabled 로 설정하고 드렸네요... 죄송합니다... ㅜㅅㅠ
로그 사진을 보면 BS : ~ 로 시작하는 로그가 있는데 BS 는 BootStrap 의 약자입니다.
아래에 첨부한 EFI 폴더로 교체하고 다시 부팅해보세요.
Config.plist 에서 LauncherOption 을 Full 로 설정하였습니다.
현재 Mac OS 부팅이 불가능해서 Windows 로 부팅하고 EFI 파티션을 마운트한 후에
Explorer++ 프로그램을 사용하여 EFI 파티션에 들어간 후에 EFI 폴더를 수정할 수 있습니다.
또는, Windows 로 부팅하고 혹시 여분의 USB 가 있으시면 USB 에 EFI 폴더를 넣고 USB 로 부팅해주세요.
usb에 efi만 넣어서 usb로 부팅했을 때 배터리와 디스플레이 밝기 조절 확인했습니다 !
확인 후 efi에 Boot와 OC 폴더를 USB의 파일로 대치했는데 USB없이는 부팅이 되지 않네요ㅜㅜ
배터리와 디스플레이 밝기 조절이 모두 잘 된다니 다행입니다. :)
혹시, BIOS 설정에서 Boot - Boot Option Priorities 의 Boot Option 1 항목을 누르면 어떤 항목들이 보이는지 알려주실 수 있나요?
해결되었다니 다행입니다. :)
SysReport 폴더는 이제 보내주시지 않아도 됩니다.
이제, VoodooI2C 를 사용한 터치패드, 밝기 조절 Fn키 등의 나머지 안정화 작업들도 파이팅하세요. :)
추가로, 밝기 조절 Fn키의 패치에 대한 힌트를 드리자면
댕환님의 삼성 노트북은 _Q63 과 _Q64 라는 EC Query 를 패치하면 됩니다. :)
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 조회 수 | 날짜 | 글쓴이 |
---|---|---|---|
모니터(오류화면) 사진 찍을 때 팁(소소함) +270 | 11만 | 17.07.3020:49 | 달쇠 |
빠르고 정확한 답변을 받는 팁 및 질답자의 매너, EFI폴더 압축법 +90 | 12만 | 17.02.1014:21 | Mactopia |
Hot 오픈코어로 단일 ssd로 듀얼부팅 설정시 윈도우 블루스크린문제 해결방... +12 | 43 | 24.10.2318:25 | 헷인토시 |
Hot 새로운 os 설치, 벤츄라가 좋을까요? 세콰이어가 좋을까요? +10 | 98 | 24.10.2308:19 | 미찌콘 |
Hot 맥프로를 들여왔는데 질문이 있습니다. +5 | 56 | 24.10.2315:51 | 배고픈사람 |
33 | 24.10.2322:21 | 활주로임 | |
43 | 24.10.2318:25 | 헷인토시 | |
41 | 24.10.2317:01 | 활주로임 | |
56 | 24.10.2315:51 | 배고픈사람 | |
39 | 24.10.2315:18 | 희밍현수님 | |
98 | 24.10.2308:19 | 미찌콘 | |
93 | 24.10.2213:48 | 아킬리오 | |
80 | 24.10.2210:36 | MCMC | |
55 | 24.10.2200:57 | 헷인토시 | |
139 | 24.10.2123:22 | 마요네즈 | |
155 | 24.10.1914:54 | 활주로임 | |
178 | 24.10.2017:21 | RTings | |
193 | 24.10.2000:14 | Kylee | |
117 | 24.10.1921:50 | 루이코아낭 | |
198 | 24.10.1918:03 | Gastone | |
80 | 24.10.1721:28 | Oscar | |
198 | 24.10.1712:11 | 희밍현수님 | |
70 | 24.10.1612:42 | SystemShock | |
307 | 24.10.1517:37 | Gastone | |
1185 | 24.10.1517:20 | 물만두 | |
1622 | 24.10.1317:18 | 물만두 | |
1273 | 24.10.1315:07 | Steer | |
872 | 24.10.1004:51 | Steer | |
187 | 24.10.0920:24 | KImET | |
927 | 24.10.0915:49 | lesmi | |
179 | 24.10.0911:23 | LumOS | |
73 | 24.10.0902:16 | lesmi | |
909 | 24.10.0822:09 | 애플맨 | |
1313 | 24.10.0810:58 | soullees | |
112 | 24.10.0723:26 | 오십견 | |
1232 | 24.10.0723:14 | Steer | |
115 | 24.10.0721:40 | 서재희 | |
69 | 24.10.0704:04 | g2030h61 | |
88 | 24.10.0704:00 | g2030h61 | |
92 | 24.10.0620:14 | SystemShock | |
113 | 24.10.0617:57 | 늘심심 | |
1372 | 24.10.0601:48 | 아스타틴 | |
1271 | 24.10.0515:04 | lesmi | |
129 | 24.10.0422:58 | 낡은기계 | |
544 | 24.10.0315:33 | oreo | |
117 | 24.10.0315:26 | 매치포인트 | |
175 | 24.10.0313:01 | 매치포인트 | |
149 | 24.10.0311:30 | KAKU | |
343 | 24.10.0207:44 | 데스맥 | |
255 | 24.09.3014:22 | 민준송 | |
172 | 24.09.2922:21 | oreo | |
133 | 24.09.2917:58 | 수박 | |
111 | 24.09.2913:21 | 루마루 | |
206 | 24.09.2910:19 | 루마루 | |
140 | 24.09.2723:18 | 머트 | |
146 | 24.09.2720:41 | ashly | |
230 | 24.09.2716:50 | loopers | |
211 | 24.09.2602:42 | Caper | |
288 | 24.09.2301:36 | 낡은기계 | |
164 | 24.09.2122:38 | Door | |
225 | 24.09.2108:35 | 루베콘 | |
503 | 24.09.2022:16 | 에잉 | |
223 | 24.09.1910:03 | 밤가시 | |
306 | 24.09.1822:20 | SUNWAYFOTO | |
732 | 24.09.1815:34 | Nelson | |
444 | 24.09.1814:34 | sebali | |
236 | 24.09.1813:37 | Panictosh | |
338 | 24.09.1801:27 | SUNWAYFOTO | |
155 | 24.09.1719:17 | 그냥인간 | |
331 | 24.09.1620:36 | dlraud | |
217 | 24.09.1618:45 | Nelson | |
100 | 24.09.1612:07 | 아스타틴 | |
200 | 24.09.1522:02 | lesmi | |
265 | 24.09.1323:56 | 윤수꾸하하 | |
640 | 24.09.1319:18 | 뚜비 | |
1550 | 24.09.1200:33 | Steer | |
255 | 24.09.0918:08 | 상큼버터 | |
1446 | 24.09.0717:13 | 인터찹 | |
1554 | 24.09.0711:07 | 서재희 | |
1464 | 24.09.0113:39 | 시습이 | |
495 | 24.08.3022:44 | 블루 | |
435 | 24.08.2911:20 | lesmi | |
449 | 24.08.2823:04 | 김덕뱀 | |
327 | 24.08.2517:14 | 그냥구름 | |
264 | 24.08.2218:42 | Panictosh |
1. 혹시 질문 게시판 공지는 읽어 보셨나요? 빠른 답변을 받을수 있는 방법이 적혀 있습니다. 클릭
2. EFI 폴더를 올려서 질문하는 경우가 많은데 게시판에 업로드시 용량 제한에 부딪히는 분들이 있으신 듯 합니다.
아래 Apple 폴더 와 Audio 폴더 두가지 폴더가 있다면 삭제 하시고 압축후 업로드 하시면 됩니다.
3. 모든 걸 다 떠먹여 달라는 질문은 더 무시 당할수 있습니다. 핑거 프린세스가 되지 않도록 노력합시다.
5. 만약 본인 조차도 무엇이 문제인지 잘 모르는 상황이라면, 현재의 상황에 대해서 최대한 정확하게 글을 써 주시고, 오류화면이나 메세지등을 정확히 알려주셔야 답변을 빨리 받습니다. 그냥 "그냥 안 되요."라고 한다면 잡스가 와도 도움드리지 못할 공산이 큽니다.
6. 스스로 해결한 문제라면, 본인 질문 글에 해결 방법을 적어 두는게 좋습니다. 같은 문제로 고민하는 동료에게 도움을 줄 수도 있고, 대체로 한번 걸린 함정에 또 걸리기 마련입니다.
7. 긴 에러코드 등 같은 경우 오히려 질문의 가독성을 떨어뜨려 답변자에게 답변을 받기 힘들어 질수 있습니다. 글쓰기 하단의 코드 강조 박스 또는 스포일러(접기) 박스를 사용하시길 바랍니다.
8. 마지막으로 답변이 도움이 되었다면 답변채택 버튼을 눌러주세요.