질문용 시스템 사양 | 2번 |
---|---|
추가사양 및 설치(할)OS | 카탈리나 15.3 |
공지숙지/증상설명 | 숙지 |
ASUS X403FA입니다. i5-8265U UHD620탑제했습니다.
배터리는 DSDT 직접 수정을 통해 8Bit 화 하였음에도 시스템 리포트에서 AC충전기 연결 여부는 작동되나
우측 상단 아이콘에서는 충전중으로 뜨지 않고 배터리 모드로 구동이되고있습니다. (배터리 충전은 됩니다.)
또한 ACPIBatteryManager.kext를 이용하여야 배터리 상태가 보이고 IORegistryExplorer에서 인식이 확인됩니다.
SMCBatteryManager.kext의 경우 부팅시 배터리나 어댑터를 찾을 수 없다는 로그가 뜨며 작동 및 IORegistryExplorer에서 인식하지 않습니다.
현재 VirtualSMC 사용 중입니다.
계속 삽질하고 실험 끝내 한계가와 질문 올려 도움을 구해봅니다 ㅠㅠ
#DSDT,#IORegistryExplorer,#ASUS_X403FA,#UHD620,#AC충
원본 상태의 DSDT 를 확인해보니 16 Bit 의 배터리 관련 변수이지만
다른 배터리 관련 Method 에서 호출되어 사용되지 않는 변수는 다음과 같습니다.
ANGL, 16,
CHGR, 16,
XX11, 16,
XX15, 16,
B1VT, 16,
그런데, 질문자님께서 수정하신 DSDT.aml 을 확인해보니
원래 16 Bit 의 변수였던 ANGL, CHGR, XX11, XX15, B1VT 와 같은 Object 가 8 Bit 로 되어 있었습니다.
혹시, ANGL, 16, 을 ANGL, 8, 로 수정하셨나요?
수정하면 안 됩니다.
또한, B1VT 는 16 Bit 이지만 다른 배터리 관련 Method 에서 사용되지 않기 때문에
B1VT Object 는 8 Bit 로 세분화하지 않아도 됩니다.
그리고, 혹시 SSDT 도 한번 살펴보니 SSDT 에서도 배터리 관련 변수를
외부의 DSDT 로부터 External 로 정의하고 호출하여 사용하네요.
즉, DSDT 뿐만 아니라 SSDT 도 같이 수정해줘야 할 수도 있습니다.
해당되는 SSDT 는 다음과 같습니다.
- SSDT-0-DptfTabl
- SSDT-6-PtidDevc
SSDT 를 직접 수정하는 방식인 Static 방식으로 패치하고 Patched 폴더에 넣어도 되고
다음 글을 참고하여 SSDT 를 따로 생성하여 필요한 부분만
OEM DSDT 의 내용을 SSDT 로 Override 하여 패치하는 방식인 Hot Patch 방법도 있습니다.
그리고, SSDT 를 수정하여 넣은 후에 반드시 Config.plist 의 ACPI 부분에서
외부의 DSDT 로부터 배터리 관련 변수를 External 로 정의하고 호출하여 사용하는
SSDT 의 OEM Table ID 를 Drop 해야 합니다.
추가로, 제가 수정한 DSDT 도 같이 첨부하였습니다.
SSDT 수정은 질문자님께서 직접 해보세요.
질문자님께서 수정하신 SSDT 를 확인해보니 조금 잘못된 점이 있습니다.
현재 DSDT 의 최상단 루트에 B1B2 Method 가 정의되어 있으므로
External (_SB_.B1B2, MethodObj) 가 아닌
External (B1B2, MethodObj) 라고 입력해야 합니다.
그리고, If (LEqual (\_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.B1FC)), Zero)) 라는 구문은
If (LEqual (\_SB.B1B2 (\_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.BFC0)), \_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.BFC1))), Zero)) 가 아니라
If (LEqual (B1B2(\_SB.PCI0.LPCB.EC.BFC0,\_SB.PCI0.LPCB.EC.BFC1), Zero)) 로 수정하면 됩니다.
ECRD 와 RefOf 구문을 지우고 B1B2 를 사용하여 패치하면 됩니다.
또한, 다음과 같은 구문은
Store (\_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.B1DC)), Index (PWRV, 0x06))
Store (\_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.B1RC)), Index (PWRV, 0x07))
Store (\_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.B1FC)), Index (PWRV, 0x08))
Store (\_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.B1FV)), Index (PWRV, 0x09))
Store (\_SB.B1B2 (\_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.BDC0)), \_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.BDC1))), Index (PWRV, 0x06))
Store (\_SB.B1B2 (\_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.BRC0)), \_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.BRC1))), Index (PWRV, 0x07))
Store (\_SB.B1B2 (\_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.BFC0)), \_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.BFC1))), Index (PWRV, 0x08))
Store (\_SB.B1B2 (\_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.BFV0)), \_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.BFV1))), Index (PWRV, 0x09))
Store (\_SB.B1B2 (\_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.BDI0)), \_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.BDI1))), Index (PWRV, 0x0A))
Store (\_SB.B1B2 (\_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.BCI0)), \_SB.PCI0.LPCB.H_EC.ECRD (RefOf (\_SB.PCI0.LPCB.H_EC.BCI1))), Index (PWRV, 0x0B))
위와 같이 수정하는 것이 아니라
아래와 같이 수정합니다.
Store (B1B2(\_SB.PCI0.LPCB.EC.BDC0,\_SB.PCI0.LPCB.EC.BDC1), Index (PWRV, 0x06))
Store (B1B2(\_SB.PCI0.LPCB.EC.BRC0,\_SB.PCI0.LPCB.EC.BRC1), Index (PWRV, 0x07))
Store (B1B2(\_SB.PCI0.LPCB.EC.BFC0,\_SB.PCI0.LPCB.EC.BFC1), Index (PWRV, 0x08))
Store (B1B2(\_SB.PCI0.LPCB.EC.BFV0,\_SB.PCI0.LPCB.EC.BFV1), Index (PWRV, 0x09))
추가로, B1DI 와 B1CI 는 8 Bit 로 세분화하지 않아도 됩니다.
DSDT 와 다른 SSDT 에서도 B1CI 와 B1DI 라는 Object 는 존재하지 않았습니다.
그런데, 왜 External 로 정의되어 있는지는 잘 모르겠네요...
B1CI 와 B1DI 는 그냥 무시하면 될 듯 합니다.
그리고, 제가 위의 댓글에서 깜빡하고 알려드리지 못 한 내용이 있습니다,
현재 질문자님의 Config.plist 에서 H_EC 를 EC 로 Rename 하는 패치가 있는데
이러한 Rename 패치는 OEM DSDT 와 수정하여 넣은 DSDT, OEM SSDT 에서만 적용됩니다.
수정하여 Patched 폴더에 넣은 SSDT 에는 H_EC 를 EC 로 Rename 하는 패치가 적용되지 않습니다.
그래서, 배터리 패치를 하고 H_EC 를 EC 로 Rename 하는 패치를 직접 하였습니다.
그 후에, OEM SSDT 의 Table 을 Drop 하였습니다.
또한, 질문자님의 ASUS 노트북의 DSDT 에서 H_EC Device 의 상태를 나타내는
_STA Method 에서 Return (Zero) 를 반환하지 않으므로 H_EC 를 EC 로 Rename 패치를 한 경우에는
SSDT-EC-USBX.aml 에서 Fake EC Device 를 추가하지 않아도 됩니다.
그래서, SSDT-EC-USBX.aml 에서 Fake EC 부분만 제거하고 SSDT-USBX.aml 로 이름을 변경하였습니다.
EFI 폴더 안에 있는 기존의 Boot 폴더와 Clover 폴더를 삭제해주세요.
그리고, 아래에 첨부한 EFI 폴더 안에 있는 Boot 폴더와 Clover 폴더를 복사하여 교체하고 다시 부팅해주세요.
최대한 원본 코드를 살려두려고 한건데 그럴 필요는 없었나보네요ㄷㄷ 다시한번 감사드립니다.
적용 결과 EC부분은 IORegistry에서 안보였던 속성이 보여집니다. 배터리 부분은 이전과 같습니다.ㅠㅠ
결론부터 말씀드리겠습니다. 배터리 상태랑 충전유무 정확히 나옵니다. 성공했습니다~
옛날에 펜티엄M 노트북에 타이거 설치했었을때보다 기쁜것같습니다~!
VirtualSMC 디버깅 켜서 SMCBatteryManager로 부터 출력되는 로그를 확인해보았는데,
배터리는 BAT0으로 정상 인식하고 어댑터는 인식하지 못하였다고 출력되더군요.
그래서 acidanthera의 github에서 SMCBatteryManager소스코드 BatteryManager.cpp를 확인해보았는데,
배터리와 어댑터가 둘다 인식이 되어 있어야 작동하도록 되어있었습니다.
그래서 어댑터 인식을 시키기 위해 DSDT를 수정하였습니다.
Device ADP1의 _STA가 ECON 상태에 따라 0x0인지 0xF인지 결정 되는데, 최적화가 덜되어서 그런지 항상 0x0이 더군요 (ASUS....)
그래서 아래 사진과 같이 0xF를 반환하도록 했습니다.
전
후
ACPI 레퍼런스 찾아서 코드 분석하면서 이것저것 해봤는데 역시.. 디버깅을 먼저 해보았어야했네요...
도와주신 shl628님 정말 감사합니다~!
해결되었다니 다행입니다. :)
덕분에, 저도 좋은 정보를 얻게 되었습니다.
ADP1 Device 의 _STA 를 수정하여 해결하였다니 대단합니다. :D
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 조회 수 | 날짜 | 글쓴이 |
---|---|---|---|
모니터(오류화면) 사진 찍을 때 팁(소소함) +270 | 11만 | 17.07.3020:49 | 달쇠 |
빠르고 정확한 답변을 받는 팁 및 질답자의 매너, EFI폴더 압축법 +90 | 12만 | 17.02.1014:21 | Mactopia |
Hot 오픈코어로 단일 ssd로 듀얼부팅 설정시 윈도우 블루스크린문제 해결방... +15 | 79 | 24.10.2318:25 | 헷인토시 |
Hot 램 증설.. 그리고 자꾸 재부팅되는 PC.. +9 | 88 | 24.10.2513:02 | 김밉상 |
Hot macos high sierra 설치후 재부팅시 please report this panic in http... +4 | 58 | 24.10.2322:21 | 활주로임 |
73 | 24.10.2513:28 | 희밍현수님 | |
88 | 24.10.2513:02 | 김밉상 | |
51 | 24.10.2421:15 | 활주로임 | |
58 | 24.10.2322:21 | 활주로임 | |
79 | 24.10.2318:25 | 헷인토시 | |
73 | 24.10.2317:01 | 활주로임 | |
113 | 24.10.2315:51 | 배고픈사람 | |
145 | 24.10.2308:19 | 미찌콘 | |
119 | 24.10.2213:48 | 아킬리오 | |
97 | 24.10.2210:36 | MCMC | |
70 | 24.10.2200:57 | 헷인토시 | |
182 | 24.10.2123:22 | 마요네즈 | |
1441 | 24.10.1914:54 | 활주로임 | |
201 | 24.10.2017:21 | RTings | |
1428 | 24.10.2000:14 | Kylee | |
124 | 24.10.1921:50 | 루이코아낭 | |
844 | 24.10.1918:03 | Gastone | |
89 | 24.10.1721:28 | Oscar | |
212 | 24.10.1712:11 | 희밍현수님 | |
77 | 24.10.1612:42 | SystemShock | |
319 | 24.10.1517:37 | Gastone | |
1326 | 24.10.1517:20 | 물만두 | |
1628 | 24.10.1317:18 | 물만두 | |
1282 | 24.10.1315:07 | Steer | |
881 | 24.10.1004:51 | Steer | |
199 | 24.10.0920:24 | KImET | |
940 | 24.10.0915:49 | lesmi | |
186 | 24.10.0911:23 | LumOS | |
77 | 24.10.0902:16 | lesmi | |
913 | 24.10.0822:09 | 애플맨 | |
1321 | 24.10.0810:58 | soullees | |
123 | 24.10.0723:26 | 오십견 | |
1243 | 24.10.0723:14 | Steer | |
124 | 24.10.0721:40 | 서재희 | |
80 | 24.10.0704:04 | g2030h61 | |
94 | 24.10.0704:00 | g2030h61 | |
102 | 24.10.0620:14 | SystemShock | |
118 | 24.10.0617:57 | 늘심심 | |
1437 | 24.10.0601:48 | 아스타틴 | |
1276 | 24.10.0515:04 | lesmi | |
136 | 24.10.0422:58 | 낡은기계 | |
551 | 24.10.0315:33 | oreo | |
121 | 24.10.0315:26 | 매치포인트 | |
183 | 24.10.0313:01 | 매치포인트 | |
155 | 24.10.0311:30 | KAKU | |
403 | 24.10.0207:44 | 데스맥 | |
258 | 24.09.3014:22 | 민준송 | |
190 | 24.09.2922:21 | oreo | |
136 | 24.09.2917:58 | 수박 | |
115 | 24.09.2913:21 | 루마루 |
EFI_novang.zip
EFI입니다.