추가사양 및 설치(할)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)
}
문제 해결에 도움을 주신 분들 모두 감사드립니다. :)
자세한 내용은 댓글을 참고해주세요.
답변 감사합니다. :)
기존의 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)에서 하는 방법을 알 수 있을까요?
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 조회 수 | 날짜 | 글쓴이 |
---|---|---|---|
모니터(오류화면) 사진 찍을 때 팁(소소함) +270 | 11만 | 17.07.3020:49 | 달쇠 |
빠르고 정확한 답변을 받는 팁 및 질답자의 매너, EFI폴더 압축법 +90 | 12만 | 17.02.1014:21 | Mactopia |
Hot 오픈코어로 단일 ssd로 듀얼부팅 설정시 윈도우 블루스크린문제 해결방... +13 | 67 | 24.10.2318:25 | 헷인토시 |
Hot 새로운 os 설치, 벤츄라가 좋을까요? 세콰이어가 좋을까요? +10 | 132 | 24.10.2308:19 | 미찌콘 |
Hot 램 증설.. 그리고 자꾸 재부팅되는 PC.. +8 | 66 | 24.10.2513:02 | 김밉상 |
48 | 24.10.2513:28 | 희밍현수님 | |
66 | 24.10.2513:02 | 김밉상 | |
41 | 24.10.2421:15 | 활주로임 | |
50 | 24.10.2322:21 | 활주로임 | |
67 | 24.10.2318:25 | 헷인토시 | |
59 | 24.10.2317:01 | 활주로임 | |
100 | 24.10.2315:51 | 배고픈사람 | |
132 | 24.10.2308:19 | 미찌콘 | |
108 | 24.10.2213:48 | 아킬리오 | |
92 | 24.10.2210:36 | MCMC | |
65 | 24.10.2200:57 | 헷인토시 | |
174 | 24.10.2123:22 | 마요네즈 | |
1256 | 24.10.1914:54 | 활주로임 | |
197 | 24.10.2017:21 | RTings | |
1150 | 24.10.2000:14 | Kylee | |
119 | 24.10.1921:50 | 루이코아낭 | |
210 | 24.10.1918:03 | Gastone | |
85 | 24.10.1721:28 | Oscar | |
207 | 24.10.1712:11 | 희밍현수님 | |
73 | 24.10.1612:42 | SystemShock | |
309 | 24.10.1517:37 | Gastone | |
1322 | 24.10.1517:20 | 물만두 | |
1626 | 24.10.1317:18 | 물만두 | |
1280 | 24.10.1315:07 | Steer | |
877 | 24.10.1004:51 | Steer | |
193 | 24.10.0920:24 | KImET | |
935 | 24.10.0915:49 | lesmi | |
182 | 24.10.0911:23 | LumOS | |
75 | 24.10.0902:16 | lesmi | |
911 | 24.10.0822:09 | 애플맨 | |
1318 | 24.10.0810:58 | soullees | |
120 | 24.10.0723:26 | 오십견 | |
1237 | 24.10.0723:14 | Steer | |
120 | 24.10.0721:40 | 서재희 | |
76 | 24.10.0704:04 | g2030h61 | |
89 | 24.10.0704:00 | g2030h61 | |
97 | 24.10.0620:14 | SystemShock | |
116 | 24.10.0617:57 | 늘심심 | |
1374 | 24.10.0601:48 | 아스타틴 | |
1274 | 24.10.0515:04 | lesmi | |
133 | 24.10.0422:58 | 낡은기계 | |
549 | 24.10.0315:33 | oreo | |
120 | 24.10.0315:26 | 매치포인트 | |
179 | 24.10.0313:01 | 매치포인트 | |
152 | 24.10.0311:30 | KAKU | |
397 | 24.10.0207:44 | 데스맥 | |
255 | 24.09.3014:22 | 민준송 | |
176 | 24.09.2922:21 | oreo | |
135 | 24.09.2917:58 | 수박 | |
114 | 24.09.2913:21 | 루마루 |
일단 _Q6E 이게 하나 이니 모든게 어려운 상황이 인데, 이런 경우 HKNO (HotKey Value) 값을 사용하라고 하는데
https://www.insanelymac.com/forum/topic/305030-guide-how-to-fix-brightness-hotkeys-in-dsdt/?do=findComment&comment=2139810
근데 문제는 shl628 님 DSDT 에서도 hkno 값 마저도 안 보입니다.
그래서 VoodooPS2Controller.kext 가 아니라 ACPIKeybord.kext 로 설치 하여 kernel.log 에서 구분된 값이 기록 되어 나오는지
시도는 해볼수도 있겠습니다... 아래는 rebabman 의 관련 언급중 하나 입니다.
https://www.insanelymac.com/forum/topic/305030-guide-how-to-fix-brightness-hotkeys-in-dsdt/?do=findComment&comment=2121389
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.
한줄결론 : 왜 !! 하나 인 것인가!!