OC SSDT 배터리 패치 오류
- 닉네임이당
- 695
- 3
닉네임이당님의 기기정보
질문용 시스템 사양 | 1번 |
---|---|
추가사양 및 설치(할)OS | 빅 서 |
공지숙지/증상설명 | 숙지 |
원래 클로버에서 잘 사용하던 DSDT 대신 OC에서는 SSDT를 추천한다 하여 변환하였습니다.
특히 배터리패치가 워낙에 거대해서, 이걸 만드는 과정에 문제가 있었는지
ACPI Error: Method parse/execution failed [\_SB.BAT1.SBIX] (Node ...), AE_BAD_PARAMETER (...)
ACPI Error: Method parse/execution failed [\_SB.BAT1._BIX] (Node ...), AE_BAD_PARAMETER (...)
[SBIX] @0018F #002D: ^^PCI0.LPCB.EC.B1AF
No Local Variables are initialized for method [SBIX]
등의 에러가 쏟아져 나옵니다.
원본 DSDT, 패치 DSDT, 그리고 생성한 SSDT-BAT1 압축하여 첨부합니다.
제가 추정하기로는 ^ (캐럿) 기호를 SSDT 패치에는 사용하지 못 하는 것으로 보이는데, 이를 어떻게 해결해야 할지 잘 모르겠습니다.
오코에서 배터리 패치 하신 다른 분들은 어떻게 하셨나요?
닉네임이당
댓글 3
참여를 하시면 세상을 바꿉니다.
닉네임이당
shl628
상세한 설명 감사합니다. 사실 해당 부분은 제가 마지막에 테스트해본다고 수정한 부분인데 하도 오래 붙들고 있다보니 깜빡하고 본문에 언급을 하지 않았습니다. 미리 말씀 못드려서 죄송합니다. 원래는 다른 이름을 사용했습니다만, 안되더군요...
저도 다시 한 번 자세히 보고오겠습니다.
저도 다시 한 번 자세히 보고오겠습니다.
권한이 없습니다. 로그인
SSDT 에서도 ^ 기호는 사용할 수 있습니다.
ACPI Source Language 에서 ^ 는 Parent Scope 기호입니다.
즉, 현재 위치하는 ACPI 경로에서 한 단계 상위 경로의 Scope 를 의미합니다.
일부 노트북은 DSDT 내용을 보면 배터리 관련 부분 등에서 ^^PCI0.LPCB.H_EC.B1DV 이런 형태를 종종 볼 수 있습니다.
서로 다른 Scope 에 위치한 Object 끼리 값을 주고 받는 경우에 \_SB.PCI0.~ 와 같이 절대 경로로 접근하거나 Parent Scope 기호 ^ 를 사용합니다.
그리고, 패치하신 SSDT-BAT1.aml 의 내용을 확인해보니 잘못된 부분이 하나 있습니다.
SSDT 를 사용하여 OEM DSDT 의 일부를 Override 하는 Hot Patch 방식으로 배터리 패치를 진행하려는 경우에는
SSDT 로 가져온 EmbeddedControl Region 과 그 하위의 Field 이름을
기존의 OEM DSDT 에 정의되어 있는 EmbeddedControl Region 의 이름과 서로 다르게 정의해야 합니다.
ECR 을 XCR 이나 XECR 등으로 기존의 OEM DSDT 에 정의되어 있는 EmbeddedControl Region 의 이름과 서로 다르게 수정해주세요.
추가로, 혹시 Windows 와 멀티 부팅을 하신다면 OpenCore 는 ACPI 설정 및 패치한 내용을 모든 OS 에 적용하여 부팅하므로
If (_OSI ("Darwin")) 구문과 필요한 경우 Else 문까지 사용하여 ACPI 에서 OS 별로 수행할 내용을 분리하는 것이 좋습니다.
If (_OSI ("Darwin")) 구문 등을 사용하여 패치하지 않으면 Windows 로 부팅이 되지 않는 문제가 발생할 수 있습니다.
제가 작성한 LG Ultra PC 15U480 - KA56K 노트북의 설치 후기에서 안정화 5-6. 배터리 잔량 표시 단계의 내용도 참고해보세요. :)
https://x86.co.kr/mymac/5003460