추가사양 및 설치(할)OS | Mac OS Catalina 10.15.5 버전, LG 15U480 - KA56K 노트북, CPU : Intel Core i5 - 8250U, Intel UHD Graphics 620 내장 그래픽 (외장 그래픽 장치 비활성화) |
---|---|
공지숙지/증상설명 | 숙지 |
안녕하세요. shl628 입니다.
어제, LG 15U480 - KA56K 노트북에 OpenCore r0.5.9 버전의 부트로더를 사용하여
Mac OS Catalina 10.15.5 설치를 완료하고 아래의 안정화 작업을 모두 마쳤습니다. :)
- Intel UHD Graphics 620 내장 그래픽의 QE/CI 그래픽 가속 활성화
- Intel UHD Graphics 620 내장 그래픽의 AGPM 인젝션
- Nvidia GeForce MX 150 외장 그래픽 장치 비활성화
- Realtek ALC 255 내장 사운드 출력 및 내장 마이크 입력
- Intel Core i5 - 8250U CPU 의 Speed Step 안정화 ( SSDT 를 사용하여 _DSM Method 로 Plugin - Type 인젝션 )
- 배터리 잔량 표시 ( DSDT 에서 EmbeddedControl Region 의 배터리 관련 변수 8 Bit 세분화 )
- Synaptics 의 SMBus 방식의 터치패드 및 제스처 활성화
- Fake ALS0 Device 인젝션 ( SSDT 를 사용하여 ALS0 Device 인젝션 )
- 노트북 디스플레이 화면 밝기 조절 ( SSDT 를 사용하여 PNLF Device 인젝션 )
이제, 노트북 디스플레이 화면 밝기 조절의 Fn 키를 Remaping 하는 단계를 진행하고 있는데
조금 어려움이 있네요... ㅜㅅㅠ
시스템 환경설정의 디스플레이 설정에서는 다음 사진과 같이 직접 밝기를 조절하는 것은 가능합니다.
이 노트북의 밝기 조절 Fn 키 조합은 다음과 같습니다. ( 상단의 F1 ~ F12 키에는 존재하지 않습니다. )
디스플레이 화면 밝기 증가 : Fn 키 + 화살표 방향 위키 (Up)
디스플레이 화면 밝기 감소 : Fn 키 + 화살표 방향 아래키 (Down)
추가로, 노트북의 키보드에서 상단의 F12 키 바로 오른쪽에 있는 Pause Break 키를 누르면
디스플레이 화면의 밝기가 증가합니다.
그래서, 그 옆에 있는 Prt Sc SysRq 키와 Del Ins 등의 키도 한번 눌러보았지만
디스플레이 화면의 밝기를 감소시키는 키는 없었습니다.
즉, 현재 키보드에서 Fn 키 + 화살표 방향 위키 (Up) / 화살표 방향 아래키 (Down) 로는 밝기 조절이 되지 않는 상황이며
F12 키 바로 오른쪽에 있는 Pause Break 키로 디스플레이 화면의 밝기를 증가시키는 것만 가능한 상황입니다.
그래서, DSDT 에 아래의 패치를 적용하고
- Add DSDT Debug Methods
- Instrument EC Queries
ACPIDebug.kext 도 추가하고 다시 부팅하여 밝기 조절 Fn 키의 EC Query 이벤트 로그를 출력하였습니다.
그런데, 다음 사진과 같이 디스플레이 화면의 밝기를 증가시키는 EC Query 와
디스플레이 화면의 밝기를 감소시키는 EC Query 의 값이 서로 다르지 않고 _Q6E 로 동일한 것을 볼 수 있습니다.
위의 4줄은 디스플레이 화면 밝기 증가 : Fn 키 + 화살표 방향 위키 (Up) 의 로그이며
아래의 4줄은 디스플레이 화면 밝기 감소 : Fn 키 + 화살표 방향 아래키 (Down) 의 로그입니다.
그리고, 각각 밝기 조절 Fn 키를 한 번씩만 눌렀는데 2줄이 아니라 4줄씩이나 출력이 되네요...
Remaping 패치는 아래의 코드에서 LG 15U480 - KA56K 노트북의 키보드는 PS2K 이므로 KBC0 을 PS2K 로 수정하면 되고,
_Q11 과 _Q12 를 위의 로그에서 출력되는 값으로 수정하고 패치를 적용하는 것으로 보입니다.
그런데, 이 EC Query 부분을 둘 다 똑같이 _Q6E 로 수정하는 것은 옳지 않은 것 같아서 질문을 드리게 되었습니다.
#Edit methods _Q11 and _Q12 to interface with KBC0 (or PS2K in some systems),
into method label _Q11 replace_content
begin
// Brightness Down\n
Notify (KBC0, 0x20)\n
end;
into method label _Q12 replace_content
begin
// Brightness Up\n
Notify (KBC0, 0x10)\n
end;
DSDT 에서 Scope (_SB.PCI0.LPCB) 하위의 EC0 Device 에 포함되는
_Q6E Method 의 EC Query 의 내용은 다음과 같습니다.
Method (_Q6E, 0, Serialized) // _Qxx: EC Query
{
\RMDT.P1 ("EC _Q6E enter")
Switch (WHOK)
{
Case (0x21)
{
Store (One, Local0)
}
...
( 중간 부분 생략 )
...
Case (0x26)
{
Store (0x0136, Local0)
If (LGreaterEqual (OSYS, 0x07DC))
{
Notify (HBTN, 0x80)
Return (Zero)
}
Else
{
If (LEqual (FL07, One))
{
SWRF (Zero)
STRF (One, Zero)
Store (Zero, WLST)
Sleep (0x32)
SWBT (Zero)
STBT (One, Zero)
Store (Zero, BTST)
}
Else
{
SWRF (One)
STRF (One, One)
Store (One, WLST)
Sleep (0x32)
SWBT (One)
STBT (One, One)
Store (One, BTST)
}
Sleep (0x32)
Notify (RP01, One)
}
}
Case (0x33)
{
Notify (^^^GFX0.DD1F, 0x87)
If (And (^^MAP1.OSDP, One))
{
Sleep (0x0A)
Store (0x09000087, ^^MAP1.CA82)
Notify (MAP1, 0x82)
}
}
Case (0x34)
{
Notify (^^^GFX0.DD1F, 0x86)
If (And (^^MAP1.OSDP, One))
{
Sleep (0x0A)
Store (0x09000086, ^^MAP1.CA82)
Notify (MAP1, 0x82)
}
}
}
Store (Local0, ^^MAP1.CAUS)
Notify (MAP1, 0x80)
\RMDT.P1 ("EC _Q6E exit")
}
위의 내용에서 다음 사진과 같이 초록색 코드의 내용이
노트북 디스플레이 화면 밝기 조절과 관련된 부분일 것 같은 느낌이 듭니다.
_Q6E Method 의 EC Query 에서 Switch 문이 사용되었는데
그 Switch 문의 조건에 해당하는 Object 가 WHOK 입니다.
그리고, 그 WHOK Object 의 값이 0x33 이라면
Notify (^^^GFX0.DD1F, 0x87)
If (And (^^MAP1.OSDP, One))
{
Sleep (0x0A)
Store (0x09000087, ^^MAP1.CA82)
Notify (MAP1, 0x82)
}
위의 코드에 해당하는 내용을 수행하고
0x34 라면
Notify (^^^GFX0.DD1F, 0x86)
If (And (^^MAP1.OSDP, One))
{
Sleep (0x0A)
Store (0x09000086, ^^MAP1.CA82)
Notify (MAP1, 0x82)
}
위의 코드에 해당하는 내용을 수행하는 것 같습니다.
또한, DSDT 에서 WHOK 를 검색해보니
ERAM 이라는 EmbeddedControl Region 의 ERAM Field 에 정의되어 있는 FieldUnitObject 인 것 같습니다.
배터리 관련 변수를 8 Bit 로 세분화 작업을 수행한 Region 과 같은 Region 입니다.
그리고, Scope (_SB.PCI0.LPCB) 의 MAP1 Device 에서 EKEY 라는 Method 에서도 사용되고 있습니다.
Notify (^^^GFX0.DD1F, 0x87) 과 Notify (^^^GFX0.DD1F, 0x86) 에 대해서 검색해보니
노트북 디스플레이의 화면 밝기 조절과 관련된 글이 조금 보였습니다.
그런데, 노트북 디스플레이의 밝기를 증가시키는 EC Query 와 감소시키는 EC Query 가 서로 같아서 잘 모르겠네요... ㅜㅅㅠ
OpenCore 의 EFI 폴더도 첨부합니다.
그리고, 원본 상태의 DSDT 와 현재 상태의 DSDT 를 첨부합니다.
원본 상태의 DSDT : DSDT.aml
현재 상태의 DSDT : DSDT - EC Query Debug.aml
현재 상태의 DSDT 는 다음과 같은 내용이 수정 및 패치되어 있습니다.
- EmbeddedControl Region 의 배터리 관련 변수 8 Bit 세분화
- 배터리 세분화 함수 인젝션 ( B1B2 Method, B1B4 Method 등 )
- Darwin OS Fix ( Windows 10 ) 패치 적용
- HBTN Device 의 _STA Method 에서 Return (Zero) 를 반환하도록 수정
- GPI0 Device 의 _STA Method 에서 Return (0x0F) 를 반환하도록 수정
HBTN Device 의 _STA Method 에서 Return (Zero) 를 반환하도록 수정한 이유는
LG 노트북의 비행기 모드인 F6 키에 해당하는 HBTN Device 가 Mac OS 를 부팅할 때 ACPI Error 를 발생시켜서
Status 를 나타내는 _STA Method 에서 Return (Zero) 를 반환하도록 수정하여 비활성화하기 위한 목적입니다.
제가 검색하여 참고한 글은 다음과 같습니다.
https://www.elitemacx86.com/threads/guide-how-to-remap-brightness-hotkeys-on-laptop.183/
https://www.insanelymac.com/forum/topic/305030-guide-how-to-fix-brightness-hotkeys-in-dsdt/
혹시, 제가 놓친 부분이나 잘못된 부분이 있을까요?
노트북 디스플레이의 밝기 조절 관련 Fn 키의 Remapping 에 대한 조언 부탁드립니다.
해결하였습니다. :)
_Q6E Method 의 EC Query 에서 Switch (WHOK) 문의
Case (0x33) 과 Case (0x34) 구문이 노트북 디스플레이의 밝기 조절과 관련된 부분입니다.
Case (0x33) 에 Notify (PS2K, 0x0365) 를 입력하고
Case (0x34) 에 Notify (PS2K, 0x0366) 를 입력하여 해결했습니다. :)
Case (0x33)
{
Notify (PS2K, 0x0365)
}
Case (0x34)
{
Notify (PS2K, 0x0366)
}
문제 해결에 도움을 주신 분들 모두 감사드립니다. :)
자세한 내용은 댓글을 참고해주세요.
shl628님의 새글 알림을 받으실려면 구독
*적용중인 도장
일단 _Q6E 이게 하나 이니 모든게 어려운 상황이 인데, 이런 경우 HKNO (HotKey Value) 값을 사용하라고 하는데
근데 문제는 shl628 님 DSDT 에서도 hkno 값 마저도 안 보입니다.
into method label _Q6E parent_label H_EC replace_content begin Store(HKNO, Local0)\n If (LEqual(Local0,7))\n {\n // Brightness Down\n Notify(\_SB.PCI0.LPCB.PS2K, 0x0205)\n Notify(\_SB.PCI0.LPCB.PS2K, 0x0285)\n }\n If (LEqual(Local0,8))\n {\n // Brightness Up\n Notify(\_SB.PCI0.LPCB.PS2K, 0x0206)\n Notify(\_SB.PCI0.LPCB.PS2K, 0x0286)\n }\n If (LEqual(Local0,4))\n {\n // Mirror toggle\n Notify(\_SB.PCI0.LPCB.PS2K, 0x026e)\n Notify(\_SB.PCI0.LPCB.PS2K, 0x02ee)\n }\n end;
그래서 VoodooPS2Controller.kext 가 아니라 ACPIKeybord.kext 로 설치 하여 kernel.log 에서 구분된 값이 기록 되어 나오는지
시도는 해볼수도 있겠습니다... 아래는 rebabman 의 관련 언급중 하나 입니다.
For example, there are not always two separate methods for each key (in the case of the u430 they are separate, yet the HP Envy shares one method for more than one key). And you'll need to send different codes and ACPIKeyboard.kext if you're using a PS2 driver other than mine. There is more details at my ACPIKeyboard.kext README at github.
한줄결론 : 왜 !! 하나 인 것인가!!
답변 감사합니다. :)
기존의 VoodooPS2Controller.kext 를 삭제하고 ACPIKeyboard.kext 를 추가하고
DSDT 에 Device (RMKB) 를 인젝션하고 Config.plist 에 Kext 변경 사항을 수정하고 다시 부팅하였지만
노트북의 키보드가 인식되지 않아서 로그인 화면에서 사용자 계정의 비밀번호를 입력할 수 없게 되었습니다.
그래서, ACPIKeyboard.kext 를 삭제하고 다시 VoodooPS2Controller.kext 를 추가하여 원래의 상태로 돌아왔습니다.
그리고, 키보드의 F1 ~ F12 키 중에서 사용하지 않는 남는 Fn 키를 노트북 디스플레이의 밝기 조절 기능키로 작동하도록
VoodooPS2Keyboard.kext 의 Info.plist 에서 PS2 Map 을 직접 수정하여 Remapping 하는 방식으로 한번 시도해 보았습니다.
https://github.com/acidanthera/VoodooPS2/blob/master/VoodooPS2Keyboard/ApplePS2ToADBMap.h
그 결과, 노트북 디스플레이의 밝기 조절이 가능하게 되어서 이 방식으로 패치하여 사용하기로 하였습니다.
답변 감사드립니다. :)
아니에요, 아래의 댓글도 참고해보려고 합니다. :)
아래의 댓글에서 설명해주신 내용으로도 한번 패치해보려고 합니다.
덕분에 많은 정보와 지식을 얻게 되는 것 같습니다. ㅎㅎ
자세한 설명과 답변 감사합니다. :)
Case (0x33) 에 Notify (PS2K, 0x0365) 를 입력하고
Case (0x34) 에 Notify (PS2K, 0x0366) 를 입력하여 해결했습니다. :)
처음에 0x10/0x20, 0x0206/0x0205, 0x0286/0x0285 를 차례대로 시도해보다가
Case (0x33) 에 Notify (PS2K, 0x0366) 를 입력하고
Case (0x34) 에 Notify (PS2K, 0x0365) 를 입력하였을 때 드디어 밝기 조절 Fn 키가 작동하였습니다.
그런데, Fn + Up 을 누르면 디스플레이의 밝기가 증가해야 하는데 감소하고
Fn + Down 을 누르면 반대로 디스플레이의 밝기가 증가해서 Notify 구문을 서로 바꿔주었습니다.
Case (0x33) 이 Fn + Down 이고 Case (0x34) 가 Fn + Up 인 것 같아요. ㅎㅎ
덕분에 디스플레이의 밝기를 Fn + Up / Down 키로 조절할 수 있게 되었습니다.
이제, 디스플레이 밝기 조절을 담당하는 _Q6E EC Query 를 SSDT Hot Patch 방식으로 한번 적용해보려고 합니다.
감사합니다. :)
오 잘 되었네요 ㅎㅎ 나머지 작업도 화이팅하세요~
사실 이제와서이긴 한데, Case (0x33)와 Case (0x34)가 Up인지 Down인지는 shl628님이 Notify(~0x86)과 0x87을 보시고 유추하셨던 건데 각각의 Case 아래에 EC querry 디버깅처럼 rmdt.p1("EC _Q6E(0x33) enter") 등으로 했으면 완벽했을 거라는 생각이 드네요 ㅎㅎ
콘솔과 터미널에서도 EC Query 관련 Log 가 나오지 않는다면
밝기 조절 Fn 키를 EC Query 에서 담당하지 않고 PS2 Scan Codes 인 경우일 수도 있습니다.
아래의 사이트에서 PS2 Scan Codes 부분을 참고해보세요.
그리고, 다른 노트북의 OEM DSDT 에서 _Q6E Method 가 존재한다고 해도
_Q6E Method 라는 EC Query 가 무조건 밝기 조절을 담당하는 것은 아닙니다.
Debug 버전의 VoodooPS2Controller.kext 를 사용하여 Log 를 출력하고 코드를 확인하여
Custom ADB Map 에 해당 코드를 Remapping 해주세요.
밝기 조절 Fn 키를 담당하는 EC Query 를 직접 확인해보셨나요?
LG 노트북이어도 완전히 동일한 모델이 아닌 이상 _Q6E Method 가 아닐 수도 있습니다.
ACPI 패치를 하지 않고 BrightnessKeys.kext 를 사용하는 방법도 있습니다.
https://github.com/acidanthera/BrightnessKeys
감사합니다.
네. 메서드는 완전히 동일합니다.
비슷한 기종이라 제가 자주 괴롭혀드릴거 같네요.
미리 죄송합니다.
_Q6E Method 에서 Switch 문의 조건에 해당하는 Object 가 WHOK 가 아닌 다른 변수이거나 Case 구문의 값이 다를 수도 있습니다.
그래서, DSDT 에 아래의 패치를 적용하고
- Add DSDT Debug Methods
- Instrument EC Queries
이 부분을 오픈코어(ssdt)에서 하는 방법을 알 수 있을까요?
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|
모니터(오류화면) 사진 찍을 때 팁(소소함) +269 | 달쇠 | 17.07.3020:49 | 11만 |
빠르고 정확한 답변을 받는 팁 및 질답자의 매너, EFI폴더 압축법 +90 | Mactopia | 17.02.1014:21 | 12만 |
고스트파일을 부팅 USB에 넣은후 윈도우에서 폴더 접근이 안됩니다. +11 | ashly | 24.09.2720:41 | 84 |
인텔 ax200ngw를 사용하는데 와이파이 및 블루투스 인식이 되지 않습니... +7 | loopers | 24.09.2716:50 | 85 |
커널패닉 +3 | 머트 | 24.09.2723:18 | 72 |
oreo | 24.09.2922:21 | 37 | |
수박 | 24.09.2917:58 | 38 | |
루마루 | 24.09.2913:21 | 41 | |
루마루 | 24.09.2910:19 | 72 | |
머트 | 24.09.2723:18 | 72 | |
ashly | 24.09.2720:41 | 84 | |
loopers | 24.09.2716:50 | 85 | |
Caper | 24.09.2602:42 | 148 | |
낡은기계 | 24.09.2301:36 | 180 | |
Door | 24.09.2122:38 | 87 | |
루베콘 | 24.09.2108:35 | 174 | |
에잉 | 24.09.2022:16 | 377 | |
밤가시 | 24.09.1910:03 | 183 | |
SUNWAYFOTO | 24.09.1822:20 | 201 | |
Nelson | 24.09.1815:34 | 363 | |
sebali | 24.09.1814:34 | 354 | |
Panictosh | 24.09.1813:37 | 177 | |
SUNWAYFOTO | 24.09.1801:27 | 222 | |
그냥인간 | 24.09.1719:17 | 125 | |
dlraud | 24.09.1620:36 | 234 | |
Nelson | 24.09.1618:45 | 181 | |
아스타틴 | 24.09.1612:07 | 77 | |
lesmi | 24.09.1522:02 | 140 | |
윤수꾸하하 | 24.09.1323:56 | 191 | |
뚜비 | 24.09.1319:18 | 202 | |
Steer | 24.09.1200:33 | 168 | |
상큼버터 | 24.09.0918:08 | 213 | |
인터찹 | 24.09.0717:13 | 963 | |
서재희 | 24.09.0711:07 | 1437 | |
시습이 | 24.09.0113:39 | 1247 | |
블루 | 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 | 433 | |
Panictosh | 24.08.1518:04 | 345 | |
hackillious | 24.08.1514:14 | 141 | |
shion | 24.08.1420:32 | 117 | |
인터찹 | 24.08.1418:19 | 103 | |
Panictosh | 24.08.1217:23 | 375 | |
오디세이 | 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 | 89 | |
yeojun | 24.08.0310:01 | 110 | |
yeojun | 24.08.0217:46 | 313 | |
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 | 82 | |
동집 | 24.07.3122:15 | 166 | |
류가파 | 24.07.3121:42 | 248 | |
마요네즈 | 24.07.3109:23 | 265 | |
동집 | 24.07.3012:52 | 99 | |
동집 | 24.07.2912:11 | 460 | |
인터찹 | 24.07.2901:06 | 309 | |
인터찹 | 24.07.2623:40 | 947 | |
찡준 | 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 |
다만 맥에서는 키보드를 통한 밝기 조절이 불가능한데(맥에서 PS/2가 네이티브가 아니라서 그런걸로 알고 있습니다. PS2 scancode인 경우 PS2 켁스트 Info.plist 안에 밝기 조절 코드를 넣어놔서 작동하는 경우가 있고 ACPI Querry로는 패치하기 전에는 안 되는 걸로 알고 있습니다.) _Q6E를 패치하셔야죠.(_Q11과 _Q12는 밝기Up과 밝기Down을 디버깅 했을 때 얻은 Method에 해당합니다. shl628님은 밝기Up과 밝기Down 디버깅으로 _Q6E를 얻으셨기 때문에 _Q6E를 패치하셔야 합니다.) Case(0x33)과 Case(0x34) 아래에 각각 밝기Up과 밝기Down에 해당하는 Notify들을 넣어서 테스트해보세요.(노트북에 따라 Up에 대해서는 Notify(~,0x10) Notify(~,0x0286) Notify(~,0x0206) Notify(~0x0406) Notify(~0x0366) 등이 있고 Down은 20, 0285, 0205, 0405, 365 등이 있습니다.)