질문용 시스템 사양 | 2번 |
---|---|
추가사양 및 설치(할)OS | Monterey 12.0.1 / OC 0.7.5 |
공지숙지/증상설명 | 숙지 |
최근에 Lidwake 삽질을 조금 했었습니다.
간략히 이야기하자면, _SB_.LPCB.H_EC 디바이스에 _PRW Method를 추가,
_OSI값이 Windows 일정 버전 이상이어랴먄 Lidwake가 작동하는 듯 했습니다.
[SSDT] 삼성 노트북 Lidwake 고치기 - 커스텀맥(해킨) 강좌&Tip - 엑스팔육 (x86.co.kr)
그래서 만든 _PRW Method를 추가하는 SSDT와 SSDT-XOSI를 사용하고 있었으나,
SSDT-XOSI가 블루스크린을 유발해 윈도우를 이용하기 위해서 rEFInd를 설정하다 보니
항상 엔트리가 바뀔 때마다 깔끔하게 만들기 위해서 자동 스캔 기능을 끄고 엔트리를 계속 만져주어야 했고,
부팅시마다 rEFInd 자체를 로드하는데 걸리는 시간이 꽤 되어 오픈코어로 윈도우를 부팅하기 위해 삽질하고 있습니다..
그래서 SSDT-OSYS를 이용해 OSYS값만 0x7E1로 만들어주면 되지 않을까 했으나 Lidwake가 동작하지 않았습니다.
왜 안될까.. 하고 DSDT를 살펴보니 GOST 라는 Method에서 _OSI값을 바탕으로 다른 역할을 하고 있었습니다.
그래서 이 Method를 수정하거나 통째로 교체하고 싶은데.. ACPI에 대한 상식이 부족한 탓인지 쉽지 않습니다 ㅠㅠ
DSDT의 해당 부분의 코드는 이렇습니다.
Method (GOST, 0, NotSerialized)
{
Local0 = 0x07D0
If (CondRefOf (\_OSI, Local1))
{
If (_OSI ("Linux"))
{
Local0 = 0x03E8
}
If (_OSI ("Windows 2001"))
{
Local0 = 0x07D1
}
If (_OSI ("Windows 2001 SP1"))
{
Local0 = 0x07D1
}
If (_OSI ("Windows 2001 SP2"))
{
Local0 = 0x07D1
}
If (_OSI ("Windows 2001 SP3"))
{
Local0 = 0x07D1
}
If (_OSI ("Windows 2006"))
{
Local0 = 0x07D6
}
If (_OSI ("Windows 2009"))
{
Local0 = 0x07D9
}
If (_OSI ("Windows 2012"))
{
Local0 = 0x07DC
}
If (_OSI ("Windows 2013"))
{
Local0 = 0x07DD
}
If (_OSI ("Windows 2015"))
{
Local0 = 0x07DF
}
If (_OSI ("Windows 2016"))
{
Local0 = 0x07E0
}
If (_OSI ("Windows 2017"))
{
Local0 = 0x07E1
}
}
OSTP = Local0
GSSM (One, Local0)
}
OSTP는 FieldUnitObject, GSSM 은 Method 입니다.
GOST Method는 어떤 Device의 하위에 속해있지 않습니다.
제 목표는
If (_OSI ("Windows 2017"))
{
Local0 = 0x07E1
}
를
If ((_OSI ("Windows 2017")) || (_OSI ("Darwin")))
{
Local0 = 0x07E1
}
으로 만들거나,
Method (GOST, 0, NotSerialized)
{
OSTP = 0x7E1
GSSM (One, 0x7E1)
}
위와 같은 기능을 하도록 만들고 싶습니다..
죽치고 앉아서 ACPI Spec을 읽고있을 시간은 없고.. 힌트라도 얻고 싶어 질문글 작성해 봅니다.ㅠ
감사합니다
exacore39님의 새글 알림을 받으실려면 구독
일단 SSDT-GOST.aml을 만들고
배터리 패치처럼 GOST를 가져온 다음 필요한 대로 수정하고 External을 추가한 다음(컴파일해보고 에러가 나는 각 항목별로 그냥 UnknownObj 하면 됩니다.) DSDT에서 GOST 정의를 찾고 ACPI Rename을 하면 됩니다.
학원이어서 자세히 알려드릴 수 없는 점 양해 부탁드립니다.
그나저나 XOSI 적용시 BSOD가 뜬다고요? 혹시 에러코드 알려주실 수 있나요?
ACPI_BIOS_ERROR 뜨면서 부팅 1초만에 BSOD 뜹니다..ㅋㅋ
지금은 수정되었지만, 이전에 Dortania's Guide에서도 SSDT-XOSI는
윈도우 부팅을 망가뜨리는것으로 알려져 있다고 서술되어 있었습니다.
일단 윈도우에서 DSDT 수정하듯이 SSDT-XOST를 만들어 뒀습니다.
이 방법은 이미 해보긴 했습니다만, 시도했던 파일을 지워버려 제가 뭘 잘못했었는지 알 수 없으니
현재 노트북 배터리 캘리브레이션 중이라 끝나는대로 GOST to XOST rename하고 다시 적용해보겠습니다.
답변 감사합니다.
음
한번 DSDT를 SysReport로 얻은 다음(debug버전 오코 필요) DSDT 수정해서 적용해보세요.
그리고 원본 SysReport 폴더는 백업해두세요.
BIOS 옵션을 건드리진 않았지만
혹시 몰라 방금 다시 SysReport로 뽑은 DSDT를 ACPI->Add 첫번째에 넣고 부팅했는데
요란한 고주파와 함께 트랙패드가 죽고 팬이 미친듯이 도네요;;
전부터 수정한 것이 없어도 DSDT만 넣으면 이래서 무조건 SSDT로 해결을 보고 있었는데..
이번에도 SSDT를 똑바로 만드는게 첫번째일 것 같습니다 ㅠ
AE_ALREADY_EXISTS 에러가 나는 이유가.. DSDT에 이미 GOST Method가 다 적혀있어서일까요..
따로 Device를 추가하고 _OSI가 Darwin일때만 _STA를 0x0F로 만들어서 패치하려 생각하니
기존의 GOST를 그렇게 대체할 수 있는지 잘 모르겠네요..
음
GOST to XOST를 하셨나요?
그리고 SSDT에서 If (_OSI ("Darwin"))의 Else 문에는 XOST()를 해주세요.
지금 학교 가는 길이라서...
학교 끝나고 시간 되면 다시 봐드릴게요.
그런데 수정 없이 dsdt만 넣어도, 그것도 sysreport로 뽑은 슈퍼 짱짱 오리지널인 건데도...
2상하네요...
오리지널 DSDT가 안먹는게 참 이상하죠..
일단 제가 AML 자체를 너무 모르고 있는 것 같으니
배터리 패치나 등등 다른 SSDT 가이드들을 읽어봐야겠습니다.
바쁜 와중에도 답변 감사합니다.
해결했습니다.
이게 왜 안될꼬.. 하고 자고 일어나서 제가 만들어둔 SSDT를 보니
GOST, 0 을 XOST, 0으로 Rename 해두고도 SSDT에 Method (XOST, 0, NotSerialized)로 적어 놨더군요;;;ㅋㅋ
맥에서 Lidwake 정상동작, 윈도우 정상부팅 확인 했습니다. 답변 주셔서 감사합니다.
엌
🎊 축하드려요! 🎉
그리고 GOST Method에서 If (_OSI ("Darwin"))의 Else문에 XOST()를 하셨죠?
그냥 DSDT의 method GOST 부분을 그대로 갖다 썼는데,
그렇게 하면 코드가 훨씬 간략하겠네요! 수정해보겠습니다.
DefinitionBlock ("", "SSDT", 2, "hack", "GOST", 0x00000000)
{
External (GSSM, MethodObj) // 2 Arguments
External (OSTP, FieldUnitObj)
External (XOST, MethodObj) // 0 Arguments
Method (GOST, 0, NotSerialized)
{
If (_OSI ("Darwin"))
{
Local0 = 0x07E1
OSTP = Local0
GSSM (One, Local0)
}
Else
{
XOST ()
}
}
}
이렇게 만들어 줬습니다. Lidwake, 윈도우 부팅 둘다 잘 되네요 ㅎㅎ
도움 감사합니다.
만들고 나면 왜 이걸 못했지 싶은데, 처음 접근할땐 참 헷갈리네요 ㅋㅋ
저도 이랬죠.
생각보다 단순하더라고요.
사실 배터리 패치도 external 노가다랑 몇개 더 노가다가 문제지 생각보다는 쉬웠어요.
그리고 배터리 패치를 할 때는 DSDT를 disassemble 후 바로 assemble 해보는 것도 좋을 것 같아요.
저도 OGNS 필드 길이가 SSDT 안 먹히는 원인이었는데 DSDT 수정으로 일단 해보자 하고 보다가 알게 되었어요.
관련 내용은 제 글 참고
그런데 어쩌다보니 저랑 exacore님이랑은 공감 표시가 거의 읽음 확인 수준이 돼버렸네요...
저는 옛날에 몰랐는데 공감 누른사람도 포인트가 올라가는걸 포인트 로그 보다가 알게 된 후로
그냥 공감을 막 퍼주게 됐어요ㅋㅋㅋ
ㅋㅋㅋㅋ 저도 그렇습니다
유용한 정보다 싶으면 다 누르고 다녔었는데
mswgen님께서 댓마다 공감 눌러주시길래 저도 다 누르다가 이렇게 됐네요 ㅋㅋ
대부분의 유저들이 생각하는 엑팔에서의 글, 댓글 공감의 뜻과 저랑 exacore님이 생각하는 뜻은 다르죠.
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|
모니터(오류화면) 사진 찍을 때 팁(소소함) +269 | 달쇠 | 17.07.3020:49 | 11만 |
빠르고 정확한 답변을 받는 팁 및 질답자의 매너, EFI폴더 압축법 +90 | Mactopia | 17.02.1014:21 | 12만 |
고스트파일을 부팅 USB에 넣은후 윈도우에서 폴더 접근이 안됩니다. +11 | ashly | 24.09.2720:41 | 75 |
인텔 ax200ngw를 사용하는데 와이파이 및 블루투스 인식이 되지 않습니... +7 | loopers | 24.09.2716:50 | 75 |
커널패닉 +2 | 머트 | 24.09.2723:18 | 58 |
머트 | 24.09.2723:18 | 58 | |
ashly | 24.09.2720:41 | 75 | |
loopers | 24.09.2716:50 | 75 | |
Caper | 24.09.2602:42 | 137 | |
낡은기계 | 24.09.2301:36 | 163 | |
Door | 24.09.2122:38 | 86 | |
루베콘 | 24.09.2108:35 | 171 | |
에잉 | 24.09.2022:16 | 367 | |
밤가시 | 24.09.1910:03 | 169 | |
SUNWAYFOTO | 24.09.1822:20 | 195 | |
Nelson | 24.09.1815:34 | 359 | |
sebali | 24.09.1814:34 | 351 | |
Panictosh | 24.09.1813:37 | 175 | |
SUNWAYFOTO | 24.09.1801:27 | 221 | |
그냥인간 | 24.09.1719:17 | 112 | |
dlraud | 24.09.1620:36 | 232 | |
Nelson | 24.09.1618:45 | 179 | |
아스타틴 | 24.09.1612:07 | 77 | |
lesmi | 24.09.1522:02 | 139 | |
윤수꾸하하 | 24.09.1323:56 | 191 | |
뚜비 | 24.09.1319:18 | 195 | |
Steer | 24.09.1200:33 | 168 | |
상큼버터 | 24.09.0918:08 | 213 | |
인터찹 | 24.09.0717:13 | 945 | |
서재희 | 24.09.0711:07 | 1437 | |
시습이 | 24.09.0113:39 | 1246 | |
블루 | 24.08.3022:44 | 475 | |
lesmi | 24.08.2911:20 | 415 | |
김덕뱀 | 24.08.2823:04 | 224 | |
그냥구름 | 24.08.2517:14 | 281 | |
Panictosh | 24.08.2218:42 | 251 | |
YouPick | 24.08.2022:45 | 125 | |
윤수꾸하하 | 24.08.2018:52 | 132 | |
HopeMan | 24.08.2012:14 | 208 | |
Panictosh | 24.08.1913:41 | 182 | |
YouPick | 24.08.1509:07 | 419 | |
Panictosh | 24.08.1518:04 | 344 | |
hackillious | 24.08.1514:14 | 141 | |
shion | 24.08.1420:32 | 117 | |
인터찹 | 24.08.1418:19 | 103 | |
Panictosh | 24.08.1217:23 | 374 | |
오디세이 | 24.08.1112:07 | 122 | |
동집 | 24.08.1105:35 | 238 | |
동집 | 24.08.1102:48 | 145 | |
유튜브 | 24.08.1019:03 | 153 | |
유튜브 | 24.08.0909:14 | 294 | |
Direct | 24.08.0901:18 | 256 | |
Panictosh | 24.08.0809:46 | 152 | |
인터찹 | 24.08.0801:41 | 124 | |
mac니망 | 24.08.0615:24 | 160 | |
페러 | 24.08.0615:10 | 144 | |
페러 | 24.08.0600:03 | 119 | |
bl | 24.08.0522:08 | 78 | |
Sequoia | 24.08.0410:04 | 257 | |
Panictosh | 24.08.0320:43 | 87 | |
yeojun | 24.08.0310:01 | 110 | |
yeojun | 24.08.0217:46 | 312 | |
oreo | 24.08.0214:44 | 112 | |
yeojun | 24.08.0214:07 | 271 | |
빅서로가 | 24.08.0118:45 | 304 | |
itstory | 24.08.0118:28 | 188 | |
oreo | 24.08.0115:38 | 81 | |
동집 | 24.07.3122:15 | 166 | |
류가파 | 24.07.3121:42 | 248 | |
마요네즈 | 24.07.3109:23 | 265 | |
동집 | 24.07.3012:52 | 99 | |
동집 | 24.07.2912:11 | 459 | |
인터찹 | 24.07.2901:06 | 309 | |
인터찹 | 24.07.2623:40 | 946 | |
찡준 | 24.07.2611:52 | 93 | |
psychyyy | 24.07.2503:18 | 591 | |
wnsks | 24.07.2502:19 | 145 | |
아키나리 | 24.07.2422:44 | 235 | |
페러 | 24.07.2313:55 | 129 | |
피아노맨 | 24.07.2216:20 | 211 | |
페러 | 24.07.2215:11 | 466 | |
인터찹 | 24.07.2113:23 | 208 | |
컴퓨터왕 | 24.07.2019:23 | 312 | |
인터찹 | 24.07.1816:18 | 639 | |
oreo | 24.07.1814:18 | 523 |
BIOS 옵션을 건드리진 않았지만
혹시 몰라 방금 다시 SysReport로 뽑은 DSDT를 ACPI->Add 첫번째에 넣고 부팅했는데
요란한 고주파와 함께 트랙패드가 죽고 팬이 미친듯이 도네요;;
전부터 수정한 것이 없어도 DSDT만 넣으면 이래서 무조건 SSDT로 해결을 보고 있었는데..
이번에도 SSDT를 똑바로 만드는게 첫번째일 것 같습니다 ㅠ
AE_ALREADY_EXISTS 에러가 나는 이유가.. DSDT에 이미 GOST Method가 다 적혀있어서일까요..
따로 Device를 추가하고 _OSI가 Darwin일때만 _STA를 0x0F로 만들어서 패치하려 생각하니
기존의 GOST를 그렇게 대체할 수 있는지 잘 모르겠네요..