DSDT 배터리 패치중 에러
- 유에
- 1025
- 32
유에님의 기기정보
질문용 시스템 사양 | 2번 |
---|---|
추가사양 및 설치(할)OS | Big Sur 1.12.3 |
공지숙지/증상설명 | 숙지 |
안녕하세요. 다름이 아니라 DSDT패치를 하다 에러가 나왔는데 parseop_end 에러가 떴습니다. 무슨 문제인가요?
그리고 이 부분 Store (\_SB.PCI0.LPCB.H_EC.B1AF, Local0)은 어케 수정해야하나요?
유에
댓글 32
BAF0, BAF1, BAF2, BAF3 와 같이 4개로 세분화하고 B1B4 Method 를 사용하면 됩니다.
Store (B1B4 (\_SB.PCI0.LPCB.H_EC.BAF0, \_SB.PCI0.LPCB.H_EC.BAF1, \_SB.PCI0.LPCB.H_EC.BAF2, \_SB.PCI0.LPCB.H_EC.BAF3), Local0)
변수 이름은 다른 변수의 이름과 중복되지 않으면 마음대로 해도 됩니다.
그리고, B2AF 를 검색해서 B2AF 라는 변수가 배터리와 관련된 다른 부분에서 사용되는지 확인해보세요.
사용되지 않고 EmbeddedControl Region 에 선언만 되어있는 것은 세분화할 필요가 없습니다.
만약, B2AF 도 배터리와 관련된 다른 부분에서 사용된다면 BBF0, BBF1, BBF2, BBF3 으로 세분화하고 패치하면 됩니다.
알겠습니다! 한가지 더 물어봐도 되곘습니까? too many arguments (b1b2 requires 2) 는 무슨 오류인가요?
B1B2 Method 는 2개의 인수를 필요로 하는 함수인데 너무 많은 인수가 입력되어 발생한 오류입니다.
혹시, 32 Bit 의 배터리 관련 변수에 B1B2 Method 를 사용하셨나요?
32 Bit 의 배터리 관련 변수에는 B1B4 Method 를 사용해야 합니다.
Store (Local0, B1B2(^^PCI0.LPCB.H_EC.TPC0, ^^PCI0.LPCB.H_EC.TPC1))랑
Store (B1B2(^^PCI0.LPCB.H_EC.YLC0, ^^PCI0,LPCB.H_EC.YLC1), Local0)
에만 썼는데 이런 오류가 뜨네요(둘다 16 Bit 맞습니다) 어느 부분을 수정해야하나요?
BTPC 변수는 B1B2 Method 가 아닌 W16B Method 를 사용해야 합니다.
Method (W16B, 3, NotSerialized)
{
Store (Arg2, Arg0)
ShiftRight (Arg2, 0x08, Arg1)
}
ACPI Source Language 문법상으로는 오류가 없지만 논리적으로 오류가 있습니다.
배터리 관련 변수의 값을 읽는 것인지 또는 특정한 값을 배터리 관련 변수에 쓰는 것인지를 구분해야 합니다.
기존의 Store (Local0, ^^PCI0.LPCB.H_EC.BTPC 구문을 완전히 삭제하고 W16B (TPC0, TPC1, Local0) 으로 대체하면 됩니다.
아예 Store (W16B (TPC0, TPC1), Local0) 구문을 통째로 삭제하고
W16B (^^PCI0.LPCB.H_EC.TPC0, ^^PCI0.LPCB.H_EC.TPC1, Local0) 을 입력하면 됩니다.
아래의 사진과 같이 되도록 입력하면 됩니다.
오 그렇게 하니까 되는군요 감사합니다! 모든 수정을 끝냈으니 이제 ssdt를 만들어서 진행하면 되나요?
SSDT Hot Patch 방식의 SSDT 로 바로 만들어도 되지만 그 전에 DSDT 에 배터리 패치가 잘 되었는지
잠시 DSDT.aml 을 OpenCore 에 추가하고 다시 부팅해서 확인해보는 것도 좋습니다.
그리고, OpenCore 에 추가하여 적용할 때에는 .aml 로 저장하고 추가해야 합니다.
확인한 결과 배터리 잔량이 1%로 나오고 터치패드는 잘 작동합나다. 배터리 잔량이 정상인가요? 혹시 몰라 dsdt파일 첨부합니다.
마우스 우클릭하고 Zip 으로 압축한 후에 드래그하면 첨부될 거예요.
EFI 폴더와 원본 DSDT.aml 및 수정하신 DSDT.aml 3개를 하나의 압축 파일로 업로드하여 보내주세요.
필요하지 않은 Kext 를 삭제하고 일부 Kext 를 최신 버전으로 교체하였습니다.
ACPIBatteryManager.kext 와 SMCBatteryManager.kext 가 둘 다 동시에 같이 사용하면 안 됩니다.
VirtualSMC 를 사용하므로 SMCBatteryManager 를 사용하는 것이 적합합니다.
그리고, DSDT.aml 은 ACPI - Add 에서 첫 번째 순서로 로드되도록 설정해야 합니다.
아래에 첨부한 EFI 폴더로 교체하고 다시 부팅해보세요.
모두 정상적으로 작동합니다. 혹시 에어드랍이 안되는 이유가 뭔지 아시나요? 이 상태로 현제 냅두는 중입니다
혹시, 제가 드린 EFI 폴더로 교체하기 전에는 AirDrop 이 작동했었나요?
Qualcomm Atheros QCA9377 무선 랜카드나 USB 동글의 무선 랜카드는 AirDrop 을 지원하지 않는 것으로 알고 있습니다.
AirDrop 기능이 작동하려면 Apple 에서 사용하는 Broadcom 사의 무선 랜카드로 교체해야 합니다.
에어드랍이나 에어플레이 활성화 방법 (해결완료) - 커스텀맥(해킨) 만능질문 - X86.CO.KR
아뇨 그 전에도 안되었습니다 그냥 이건 냅두는게 나을거같네요 그리고 하나 더 혹시 밝기 조절 키 패치는 어케하나요?
밝기 조절 Fn 키를 담당하는 EC Query 를 패치해야 합니다.
삼성 노트북이라면 거의 대부분 _Q63 과 _Q64 의 EC Query 가 밝기 조절 Fn 키를 담당할 것입니다.
밝기 조절 Fn 키와 관련된 아래의 질문글과 댓글을 댓글을 참고해보세요.
알겠습니다 혹시 HDMI 안정화 관련 패치는 어떻게 하는지 알려주실 수 있을까요? HDMI가 인식은 하지만 해상도가 4K가 안잡혀서 그리고 노트북 화면이 검게 변합니다.
아래의 사이트에서 HDMI 관련 부분의 내용을 참고하여 패치해보세요.
WhateverGreen/FAQ.IntelHD.en.md at master · acidanthera/WhateverGreen (github.com)
ACPI Source Language 에서 Syntax Error 는 문법 오류입니다.
질문글의 사진을 보니 여는 소괄호 ( 는 2개이지만 닫는 소괄호 ) 가 1개입니다.
괄호의 짝을 반드시 맞춰주어야 합니다.
YLC1 과 , 사이에 ) 가 빠졌습니다.
YLC1 과 , 사이에 ) 를 추가해주세요.
그리고, B1AF 라는 FieldUnitObject 가 16 Bit 이고 BAF0, BAF1 로 세분화하였다면
Store (B1B2 (\_SB.PCI0.LPCB.H_EC.BAF0, \_SB.PCI0.LPCB.H_EC.BAF1), Local0) 로 수정하면 됩니다.