5탄 쌩 초보도 할수있다 노트북 배터리 패치 DSDT-SSDT 패치를 하여보자.
- 원도리
- 9661
- 63
원도리님의 기기정보
시스템 사양 선택 | 1번 |
---|
원본 DSDT.dsl DSDT.dsl
배터리패치 적용된 DSDT.dsl DSDT_battery.dsl
비교 분석하기 위해 사용한 앱 Mactopia 운영자님이 애정하는 앱 애정하는 앱 소개 - Diff Merge 감사합니다.
- 쌩 초보는 Lenovo T450 노트북을 사용합니다.
그래서 패치중에 T450 패치가 있나 검색했습니다...아 없습니다.
인터넷에 떠또는 패치된 T450 DSDT 파일도 가져와서 적용해밧으나 cpu panic 발생합니다.
그래서 Lenovo 노트북중에 비슷한 기종을 패치했습니다…cpu panic 발생합니다.
Lenovo T450 은 배터리도 1개가 아닙니다…2개입니다.
아무리 생각해도 답이 없습니다…배터리 패치는 DSDT를 직접 수정 하기로 마음 먹었습니다.
- 일단 노트북 배터리 패치에 대한 자료를 찾아서 또 인터넷 여행을 했습니다.
쌩 초보도 할수있다 4탄까지 쓰면서 패치프로그램 설치 기본패치법 EFI에 실제적용하는법까지 배웠습니다.
하지만 직접 처음부터 배터리 패치를 하려고 하니 패치 할때 무었을 찾아서 어떻게 고쳐야 되는지 기준을 찾는것이 무엇보다 중요했습니다.
- 배터리 DSDT 패치를 하기 위한 정보를 여기서 찾을 수 있었습니다.
[Guide] How to patch DSDT for working battery status
https://www.tonymacx86.com/threads/guide-how-to-patch-dsdt-for-working-battery-status.116102/ - OS X을 실행할 때 ACPI를 사용하여 배터리 상태에 액세스 하기 때문에,
하드웨어 호환성 문제로 ACPIBatteryManager.kext를 사용하라고 나옵니다.
https://github.com/RehabMan/OS-X-ACPI-Battery-Driver - 최신 AppleACPIPlatform에서 EC (embedded controller) 내의 필드에 올바르게 액세스 할 수 없기 때문에,
ACPIBatteryManager에 배터리 장애 (_BIF, _STA, _BST 등) 문제가 발생된다고 나옵니다.
Apple의 AppleACPIPlatform의 제한 사항을 맞추어 DSDT를 패치해야 된다고 합니다.
특히 EC (embedded controller) 내의 8 비트보다 큰 모든 필드는 한 번에 8 비트로 액세스 하도록 변경해야 합니다.
( 16, 32, 64 및 더 큰 필드가 포함됩니다)
- ACPIBatteryManager.kext 설치 와 DSDT 패치를 2가지 작업을 하여야 합니다.
- DSDT 패치 시작 - 지금부터 쌩 초보에게는 쌩 노가다의 시작입니다.
첫째로 Device (EC) 안에있는 ’EmbeddedControl'섹션 에서 필드선언을 찾습니다.
두번째로 찾은 변수들이 사용 되는 곳( Store , Method 에서 사용됨 ) 을 찾습니다.
세번째로 어떤 메세드를 이용해서(D1D2, D1D4 등) 8비트로 변환해서 사용 할건지 선택합니다. - 위에서 언급한대로 먼저 DSDT.dsl 파일에서 변경할 부분을 찾기위해 'EmbeddedControl'을 검색합니다.
하나의 DSDT에는 여러 개의 'EmbeddedControl'섹션이있을 수 있으며 각 섹션에는 필드 선언이 첨부되어 있습니다.
Device (EC) 안에있는 ’EmbeddedControl'섹션을 찾았습니다.
여기서 부터 8비트보다 큰 16, 32, 64비트 및 더 큰 변수들을 찾아서 8비트로 변환을 할 겁니다. - 8비트보다 큰 변수를 찾다보니 16, 32, 128비트 등이 보입니다…저 변수들도 모두 8비트로 바꾸어 주어야 합니다.
위에 있던 16비트 32비트 변수를 아래와 같이 8비트로 바꾸었습니다.
앞에는 8비트로 변경된 변수입니다. ( // 뒤는 원래 변수명 입니다…지우지는 않고 주석처리 햇습니다.)
쌩 초보는 사용 되지 않고 필드선언만 되어있는 변수도 모두 변환했습니다…혹시 몰라서…?
바꾸는 방식은 변수명의 4자중1 자( 예:맨앞글자 )를 삭제하고
변수뒤에 숫자를 0, 1 붙여서 4자리 변수명을 다시 만드는 겁니다.
SBBM, 16 비트 변수가 BBM0,8 과 BBM1,8 로 8비트 변수명 2개로 변경되는 겁니다.
SBCH, 32 비트 변수는 BCH0,8, BCH1,8, BCH2,8, BCH3,8 로 8비트 4개로 변경됩니다.
- 위에서 변경된 SBBM 변수가 사용되는 곳( Store , Method 에서 사용됨 )은 아래와 같이 B1B2(BBM0, BBM1) 로 변경되어 사용하게 됩니다.
SBBM 변수가 여러곳에 사용 되어진다면 모두 찾아서 변경해주어야 합니다.
16비트 변수는 B1B2(~~~~), 32비트 변수는 B1B4(~~~~)를 이용해 줍니다.
- B1B2 , B1B4 메서드를 아래와 같이 하단에 추가합니다.
그래야 8비트로 변경하는 작업이 B1B2, B1B4 메서드를 이용하여 이루어집니다.
(여기에는 안나왔지만 24비트 변수가 있다면 8비트 3개로 변경하면 되겠죠
그리고 B1B3 메서드를 하나 더 만들어서 사용하면 될겁니다.) - 128비트 변수를 8비트로 변경하는 방법은 아래와 같이 합니다.
SBMN 이라는 변수를 8비트 16개로 변경하고 —> RDMN 이라는 변수로 저장을 합니다.
16개의 변수명 다 적기에 너무길어 RDMN 변수명에 저장하는것 같습니다.
더 길어보이지만 RDMN(=SBMN) 이라는 변수가 사용 되는 곳이 많다면 훨신 간단할것 같습니다.
B1B2 , B1B4 방식과는 조금 다릅니다…하지만 원리는 같은거로 보입니다. - 그리고 위에서 SBMN 변수를 RDMN으로 저장 되었기 때문에
앞으로 SBMN 변수는 아래와 같이 RDMN 으로 변경되어 사용하게 됩니다. - Device ( EC ) 에 있던 8비트보다 큰 16, 32, 64 변수들을 찾아서 모두 8비트로 변환을 합니다.
변환이 끝나면 컴파일 하여 에러가 있는지 확인합니다.
DSDT.dsl 파일을 저장하고 다른 이름으로 저장하여 DSDT.aml 파일로 저장합니다.
저장된 DSDT.aml 파일은 EFI 에 있는 patched 폴더에 저장합니다.(백업은 필수 입니다.)
다운로드 받아났던 ACPIBatteryManager.kext 설치도 같이 해줍니다. - 저장한 후 재 시작을 하여줍니다.
부팅후 맥에서 배터리 정보가 제대로 표시 되는지 확인을 합니다.
상태표시줄에 배터리 정보를 확인하기 위해 전원케이블을 분리했다 연결해 봅니다…제대로 표시됩니다.
전원표시상태가 올바른지 확인해 봅니다.
HW모니터에는 2개의 배터리가 정상적으로 표시되고 있습니다.
상태표시줄에는 배터리 2개중에 현재 사용 되고 있는 배터리 정보만 표시 됩니다…정상입니다.
- 시스템 전원정보에서 배터리 정보가 제대로 표시 되는지 확인합니다…굿
- 지금까지 쌩 초보의 DSDT 배터리 패치 작업 이였습니다.
DSDT 배터리 패치 작업은 일일이 다 수정해야 되기 때문에 시간이 많이 걸렸습니다.
배터리 패치 하실분들은 천천히 확인하시고 하시기 바랍니다.
1탄 쌩 초보도 할수있다 DSDT-SSDT 패치를 하여보자
2탄 쌩 초보도 할수있다 MaciASL 사용법 DSDT-SSDT 패치를 하여보자.
3탄 쌩 초보도 할수있다 디스플레이 패치 DSDT-SSDT 패치를 하여보자.
4탄 쌩 초보도 할수있다 DW1560 (Broadcom BCM94352Z M.2 NGFF) 와이파이 교체기
원도리
댓글 63
이제 해킨토시 관심가지고 설치한지 한달 조금 넘었습니다.
dsdt를 알아야 해킨토시와 빨리 친해질수 있을것 같아서 시작했습니다.
고수분들이 보면 갓 입문한 진짜 초짜 입니다.
밧데리 상태표시, 충전은 잘되는데 사이클수가 지멋대로 오락가락하고 최대충전 용량이 너무 적게 표시되네요. 표시되야할 정상 용량은 약 7900mAh 입니다..
올려주신 가이드가 제 DSDT 내용이랑 너무 달라서 어떻해 건드려야 할지 모르겠습니다 ㅠㅠ 바쁘시겠지만 한번 살펴봐 주시면 감사하겠습니다.
랩탑은 레노버 아이디어패드 720S-15IKB 입니다.
아직 쌩초보라 모르는게 너무많아 비교분석할 720s DSDT자료를 찾아 밨는데 신형이라 그런지 자료가 없습니다.
T450은 DSDT자료도 있고해서 한2주정도 열심이 파서 배터리 패치 했었습니다.
저는 배터리 패치 하기전에는 아예 배터리정보가 안나왔었습니다.
일단 배터리가 정상적으로 인식된다면 cpuid Hwmonitor(윈도우용) 로 배터리 용량체크해보신다거나
IORegistryExplorer 로 체크해 보시지요.
위에 파일은 64비트 변수만 빼고 다른건 다 8비트로 수정했는데 한번테스트해 보시기 바랍니다.
초보라서 수정한 부분도 맞나 틀리나 헤갈립니다...ㅠㅠ
바쁘실텐데 살펴봐주셔서 감사합니다. 허나 충전잔량을 봤을때는 제대로 표시되는 것 같은데 배터리 상태 표시가 0% 로 나오네요. ㅠ
그래도 감사합니다!
아무래도 64비트5개를 8비트로 변환하는 방법은 찾지를 못하여 변환을 못하였는데 마저 변환 해바야 될것같습니다.
이래서 또 다시 DSDT 공부를 하게 됩니다.
배터리 패치 다시 했습니다.
기존에 64비트 5개를 변환못했던거 추가하였습니다.
처음 패치 했던거 하고는 차이가 있을 겁니다.
여기서 또 문제있으면 쌩 초보라 그러니 이해해 주십시요.
저는 프로그래머 아닙니다...그냥 컴퓨터에 관심많은 유저 입니다.
윈도우만 사용하다가 해킨토시 사용하고 싶어져서 설치한지 한달하고 조금 더 되었습니다.
그전에는 해킨도 모르고 DSDT는 아예 들은적도 없습니다.
5탄만 보시면 내용 이해하기 힘들것 같습니다.
1탄 부터 5탄까지 패치프로그램 사용법 부터 익히시면서 천천이 보셔야 이해가 갈듯합니다.
감사합니다. 1탄부터 5탄까지 천천이 따라가본 결과, dsdt 수정에 대한 기본개념이 잘 잡히네요,
랩탑이라 이래저래 찾아보기만 했었는데, 자세한 설명과 함께 링크까지.. 감사합니다.
실력이 초보는 아니시네요.
256 비트도 잇던데 256비트는 어떻게 바꾸나요 ?!
16비트를 8비트 2개로 나누는건 알겠는데 256비트랑 store,method 에서 사용됨 그부분을 어떻게 처리해야되는지 잘모르겠네요 ㅠㅠ
랩탑 ASUS G750JM 입니다 ㅠ
https://github.com/RehabMan/Laptop-DSDT-Patch/tree/master/battery
https://github.com/RehabMan/Laptop-DSDT-Patch/blob/master/battery/battery_ASUS-G75vw.txt
참고해보시기 바랍니다...이미 제공되고 있는 패치중에 호환되는 배터리 패치가 있는지 찾아 보시기 바랍니다.
세부내용에 보시면 환환되는 랩탑 목록이 나옵니다.
패치내용에 보니 256비트 변환하는 방식도 나와 있습니다.
원도리님 설명이랑 좀 검색되는부분이랑 조금씩 내용이 다른데 혹시 질문좀 부탁드려도 될까요?!
처음 DSDT 에 common 패치들만 하고 나서 EmbeddedControl
검색하면 Device (EC) 안 Embedded 섹션이 나온다고 하셨는데 저는 Device(EC)안은 아니고 검색 되는 부분은 저기 한부분입니다!!
그래도 그냥 무시하고 진행하여서 16비트 짜리들 바꾸면서 컴파일 눌러보니
저기 BTPC 바꾸고 나서 아래와 같은 에러가 떠서 누르니까
이부분이 오류인거 같아서 store 부분을 설명해주신데로 ^^PCI0 저부분을 B1B2(TPC0,TPC1) 로
아래와 같이 바꿨는데
이렇게 컴파일 오류가 뜨던데 혹시 어디가 잘못된건지 질문좀 부탁드려도 될까요 ㅠㅠ
맨밑에 하단에 이것 추가해서
오류 한개는 해결했습니다!! ㅠ
삼성노트북 PEN S (NT950-SBV) 제품입니다!! 혹시 몰라서 dsdt도 남겨 봅니다..!!DS
fieldobj는 숫자로 시작하면 안됩니다. 알파벳으오 시작해야 되요. 1RR대신 R1R이나 다른 적당한 것으로 선택하시면 오류 사라질거에요.
아마도 경로를 있는 그대로를 입력해주셔야 될거에요. B1B2(^^PCI0.....TPC0,^^PCI0......TPC1) 그러면 오류 사라질 거에요.
잘 봤습니다 :) 혹시 이렇게 생긴 프로그램은 어떤프로그램인지 아시나요?ㅜㅜ
kext editor라고 검색해도 안나오고 conpiglist editor는 설치해보니 아니네요.
랩탑 트랙패드 활성화시키는 중인데 tonymax 글 중에 저 프로그램을 이용하여 kext파일을 수정하는게
필요한 과정인것같아서 이렇게 질문여쭙니다 :)즐거운 하루 되세요! :)
덕분에 쉽게 DSDT 수정해서 배터리잡았습니다 ㅎㅎ
저같은 경우는 귀찮아서 사용되지 않는 변수는 수정하지 않았는데 작동하네요
❝한성 tfx255 - catalina 10.15.1 설치❞
❝Lenovo ThinkPad X1 Carbon 7세대 (X1C7) 안정화 포기❞
ACPIBatteryManager.kext 이파일만 복사하고 리부팅한 후에 dsdt패치 하려고 하는데 그냥 잡힌것 같아서요. 이렇게 나오면 된건가요?
❝i5-10210u, 삼성 갤럭시북 이온(NT950XCR-G58A), 10.15.4 오픈코어 설치 후기❞
저 아직 DSDT 는 너무 어려운거같습니다 ㅠㅠㅠ
비슷한부분을 찾긴했지만 사진이랑 너무 다른거같아서 좀 겁도 나고 어렵기도 하네요...
바쁘시겠지만 가능하실떄 제 DSDT 좀 봐주실 수 있으신가요...?DSDT.dsl
윈도리님 덕분에 디스플레이패치는 얼덜결에 했지만 dsdt는 아직 저에겐 어려운것같습니다.. 도와주시면 감사하겠습니다ㅏㅏ!!
❝삼성 NT870Z5G-X71S 10.15.4 설치후기❞
❝배터리 패치 중 DSDT 파일에 EC 가 없습니다...❞
❝노트북 배터리 DSDT 패치 스크립트 + 오픈코어 적용 팁❞
안녕하세요. 저는 DSDT에서 이렇게 EmbeddedControl 아래에 있는 값이 다 8비트인데 그러면 베터리 패치가 필요없나요?
특이한 노트북을 해킨 작업 중에 있습니다.
이 글을 참고하여 배터리 패치 작업도 완료하였습니다. 감사합니다.
근데 궁금한게 수정하고 컴파일한 DSDT.aml 을 그대로 사용하나요?
EFI 자료실에 보면 SSDT-BATT.aml 등으로 배터리 패치 부분을 따로 설정하신 분들이 많던데요.
그렇게 분리하는건 어떻게 하나요?
보면서 공부하고 있습니다~
대충 남에껄로 부팅만 겨우 시켜서 써 오다 제대로 좀 써보고 싶어서 쓰신글 읽어가며 틈틈히 하고 있습니다~
제 노트북은 LG15ud570 - kx70k 모델 이구요
다른분이 만들어 놓은 opencore EFI 가 있어서 부팅은 겨우 되는상태구요
dsdt를 말씀하신대로 클로버 5151 버전으로 F4눌러서 받았습니다.
근데 이거 말씀하신대로 iasl 사용해서 dsl 로 변환하고 컴파일 하려고 하니 첫번째 줄부터 오류라고 뜨는데 찾기로 Device 나 Embedded가 나오질 않아요... ㅠ.ㅠ
이분... 윈도리님을 이제 dsdt 님이라 불러드려야겠읍니~더 (__)