SSDT 좀 도와주세요
- dateno1
- 2150
- 17
dateno1님의 기기정보
이건 제대로 작동하는지 적용하니 SAT0 + 1이 사라지고, SATA가 생성되었습니다
하지만 애는 먹여도 ECDV도 안 꺼지고, EC도 안 생기네요 (렙탑이라 Fake EC가 아닌 기존 장치를 바꿀려고 합니다)
ACPI로 Rename할껄 SSDT로 처리하게 할려고 하나씩 수정중입니다
일단 작동하면 이후 조건문으로 OSI를 지정해서 되는 부분 추가 할 작정입니다
DSDT도 같이 올립니다 (어차피 여기서 주소등 뽑아야할테니)
Clover로 잘 되는데도 OpenCore로도 한번 구성해볼까했는데 쉽지가 않네요
추신 : 이외에도 리커버리 진입 시도하면 다운되거나, 잠자기에서 깨우면 터치패드 마비되는등 갈길이 머네요
dateno1
댓글 17
1. 원래 SAT1은 더미같은거고 (실재로 DSDT 하위에 거의 아무것도 없음), SAT0를 SATA로 바꾸어야 하는지라 SAT0 + 1 둘 다 꺼버리고, 주소를 지정해서 값을 재삽입할려고 한겁니다 (한마디로 SAT1은 안 건드려도 그만인데, 혹시나해서 죽여버릴려는것뿐입니다)
2. ECDV를 통째로 복사해서 붙인다음 수정해서 EC로 만들어버릴려다가 말았는데, 역시 그렇게 해야하나요?
다만 나머지 ECDV를 호출하는 애들이 문제가 되겠네요
전체적으로 좀 더 많은 부분을 DSDT에서 가져온다음 SSDT로 만들어야하나보네요
그런데 외부에서 ECDV나 SAT0를 부르는 부분을 다 EC나 SATA로 바꾸어야한다는건데, 모든 DSDT + SSDT를 다 추출해서 일일히 Full로 작업및 삽입하고, DSDT등을 죄다 drop하는 방법 말고 저걸 처리할 방법은 없을까요?
그리고 SAT0->SATA는 전혀 필요 없는 부분이고, ECDV는 놔두고 그냥 EC만 추가하셔도 상관 없습니다.
원래는 먹었는데, DSDT.aml을 추가하는 순간 안 먹네요 (ioreg 가보면 바꾸기전값이 들어있음) (혹시나해서 dsdt를 비활성화하면 다시 작동) (버그인지 원래 그런지 불명)
심지어는 DSDT를 추가하는 순간 WEG등의 동적 처리조차 무효화되네요
그리고 멀티 부트를 고려해버리면 피하고싶다보니... (다른 로더 물려서 또 부트하면 되지만, 그럴바엔 그냥 Clover 1개 쓰는게 낫죠)
SAT0 -> SATA 물른 필수는 아니지만, 호환성 향상을 도와준다고 합니다 (옛날부터 이거때문에 먹임)
데탑은 Fake EC가 추천되지만, Laptop은 추천되지 않습니다 (OpenCore 가이드 계열에도 나옵니다)
https://khronokernel.github.io/EC-fix-guide/desktop-ec.html
이런식으로 데탑은 Fake
https://khronokernel.github.io/EC-fix-guide/laptop-ec.html
렙탑은 Rename이 추천됩니다
이건 Clover때도 마찬가지였습니다 (다만 제경우는 Clover에서는 ECDV -> EC 하는 순간 부트 불능 (OC는 괜찮음)에 빠져서 못하고 Fake 썻는데도 다행히 큰 문제 안 생김)
아마 Fake EC로도 또 다시 괜찮을꺼라 생각하지만 전원 관리쪽 연동이 완벽하게 되는게 아니라서 그런지 베터리 사용시간이 Windows일때보다 꽤 심하게 짧더군요
제경우 Rename에 추가해둔 항목들 전멸해도 MacOSX 작동에 큰 지장이 없을정도라 (DSDT/SSDT로 다 잡음) 안 고집해도 괜찮은데, 최저한도로 방법정도는 습득해두고자합니다
오픈코어는 클로버와 성격이 다르고 전 DSDT를 안 써서... 오픈코어에서 DSDT를 추가하면 Rename이 적용 안 되는건지도 모르겠네요.
오픈코어 가이드는 Acidanthera가 만든게 아니다보니...틀릴 수도 있습니다: https://github.com/acidanthera/bugtracker/issues/743
질문자 :
2. Use SSDT-EC-USBX without disabling (returning_STA
toZero
) the original EC device
이게 맞는지?
vit9696 :
For the time being go with 2 if it works for you.
랩탑도 EC 추가하면 됩니다.
1개 받음
Fake EC로 안 되는건 아닙니다 (위에도 적혀있지만, 실재로 Clover로 했을때도 ECDV -> EC하니 부트 불능 되어서 Fake 씀)
다만 전원 관리쪽 문제로 피하고싶은게 원인일뿐입니다
그런데 지금 수동 Rename은 안 먹어도 되지만, 동적 처리까지 안 되는건 좀 심각한 문제가 되고 있습니다
예를 들어 WEG이 제대로 처리를 못하니까 PNLF로 밝기는 조절이 되는데, 덮개 동작은 안 되네요 (이쪽도 DSDT 끄면 됨) (이외에도 그래픽이나 사운드 작동등에 문제가 있을꺼라 추정되지만, 아직까지 전부 확인 안 해본 상태)
그렇다고 DSDT를 완전히 추방시킬려니 EHCI등이 안 고쳐지네요 (SSDT로 때워볼려고 했는데 원인이 명확하지 않아서 실패)
저도 DSDT 추가하니 너무 귀찮아져서 손되고싶진 않은데 이런 부분을 해결할 수 없네요
결국 OEM DSDT에서 추출된걸 이용해서 SMBus등의 호환성을 고치니 올라온겁니다 (그런데 SMBus등만 SSDT + Rename으로 잡으니 EHCI는 안 살아남) (동일한 내용의 DSDT에 동일한 패치를 먹이면 되는게, SSDT로 먹이면 SMBus만 고쳐지고, EHCI는 안 고쳐지는 괴현상)
현제 ECDV -> EC 안 되는것빼곤 거의 모든게 문제없이 잘 먹히는걸 확인하고, 심지어는 PCIe SD Reader같은 골치아픈넘까지 다 잡은 다음 그걸 그대로 OC로 바꿀려니 애먹이네요
SSDT로 이름을 바꾸는 것은 기존 장치를 Off하고 새로운 장치를 On해주는 것이 기본 원리입니다. 그런데 ACPI는 여러 군데(A)에서 한 오브젝트(A)를 언급하는데, 그 언급된 오브젝트의 정의나 이름만 바꾸어(A에서 B)버리고 언급되는 부분 또한 이름을 일치하게 바꾸지 않으면(A에서 B로 바꾸지 않음) 오류 납니다(A와 B 이름 불일치). SSDT에서 M(_STA){Return(0)}나 Name(_STA,0)는 모든 이름을 바꾸는 용도로 사용하실 수 없어요.
1. SAT0와 SAT1은 서로 다른 장치입니다. 둘 다 경로는 \_SB.PCI0아래 있습니다. config.plist에서 Rename으로 둘 다 SATA로 바꾼다면 똑같은 이름의 Object가 두 번 정의되서 어차피 오류입니다. 그런데 한 번만 정의하셨으니 둘 다 Rename을 진행하신것도 아니고요. 그 중 SAT0만 생각해본다면 DSDT에서 검색해보면 SAT0는 23번 중 1번 정의 22번 언급됩니다. 다른 OEM SSDT에서도 SAT0를 언급할 수도 있죠. 이 22번 이상의 SAT0가 바뀌는 것이 아니기 때문에 22군데는 전부 오류입니다. SAT1을 보면 _ADR는 새로 생성한 SATA의 _ADR와 다릅니다. 완전히 다른 장치로 Rename이라고 볼 수 없습니다.
2. DSDT에서 ECDV 안에 이미 _STA가 정의되어 있어서 이 부분을 무력화시키지 않으면 SSDT로 없애줄 수 없습니다. 이 문제를 건너뛰고 보면 DSDT에 ECDV는 1번 정의, 14번 언급됩니다. 14번 중 4번 직접적으로 언급되는 ECDV는 ECDV 안에 언급되므로 ECVD를 Off하고 EC를 On해서 그 안에 넣어주면 되고 그렇게 하셨네요. 그런데 나머지 하위 항목들은 왜 안 넣으셨는지 전혀 모르겠습니다. 14번 중 1번은 Scope(~~.ECDV){}이라서 아무런 의미가 없어서 상관 없습니다. 나머지 9번은 ECDV와 전혀 다른 부분에서 ECDV를 언급하는데 이 부분은 단순한 SSDT로 못 바꿉니다. 각 9번을 config.plist에서 위치 길이 계산해서 드롭해서 SSDT로 새로 정의하셔야 합니다.
아니면 그냥 config.plist Rename 쓰시죠.