질문용 시스템 사양 | 1번 |
---|---|
추가사양 및 설치(할)OS | 빅서 11.2.3 + OPENCORE |
공지숙지/증상설명 | 숙지 |
*적용중인 도장
LG 그램 13z940 4200u 하스웰 입니다.
Fn키 + F2 (화면 - )
Fn키 + F3 (화면 + ) 입니다.
F1 - (프로그램 호출) LG 제어판 프로그램 = 다른기능 매칭시켜서 활성화 가능할까요?
F2 - 화면 밝기 (-) << 동작X
F3 - 화면 밝기 (+) << 동작X
F4 - 잠자기 << 동작O
F5 - 터치패드 ON/OFF << 동작X
F6 - 비행기모드 << 동작X =활성화 가능할까요?
F7 - 듀얼모니터 단축키 << 동작X =활성화 가능할까요?
F8 - (프로그램 호출) SRS사운드 제어판 << 동작X = 다른기능 매칭시켜서 활성화 가능할까요?
F9 - 편안한모드(블루라이트 저감) << 동작O
F10 - 음소거 << 동작O
F11 - 소리 음량 (-) << 동작O
F12 - 소리 음량 (+) << 동작O
스크롤 락: 링크1의 kext 사용시 '화면 밝기 (-)' 로 동작함.
노트북 내장 키보드로 밝기 조절을 해결하기 위해 아래 링크를 참고해 보았습니다.
링크1: https://github.com/PKRN0/Samsung-NT350XCR-AD5AS-Opencore
링크2: https://x86.co.kr/qa/4974895
링크3: https://x86.co.kr/qa/6234161
링크2:의 방법은 DSDT를 수정하는 방법이라 opencore를 사용하는 제 시스템에는 사용할 수 없었습니다.
링크1:에서 제공하는 제공하는 SSDT-FNBL.aml 를 사용하니 아무 기능이 없던 스크롤 락 키가 '화면 밝기 (-)' 로 동작하게 되었습니다.
Fn키 + F2 (화면 - )
Fn키 + F3 (화면 + ) 로 동작하게 하고싶은데 어떻게 하면 가능할까요?
링크 2에서 나온 방법을 DSDT 가 아닌 SSDT Hot Patch 방식으로 패치하면 됩니다.
ACPI Hot Patch & Override 의 개념을 이해해야 직접 패치하실 수 있을 거예요.
저는 처음에 DSDT 를 수정해서 밝기 조절 Fn 키의 작동 여부를 확인하고 SSDT Hot Patch 로 옮겼습니다.
저의 LG Ultra PC 15U480-KA56K 노트북 GitHub 저장소에서 SSDT-FNBL.dsl 내용을 참고해보세요.
그리고, SSDT-PNLF.aml 을 적용하면 ACPI 상에서 PNLF Device 가 인젝션되고 macOS 에서 이를 인식하여
내장 디스플레이 밝기 조절 관련 단축키가 작동을 하는데 Apple 컴퓨터가 아니므로 일부 ADB Scan Code 나 EC Query 가 맞지 않아서 다른 키가 밝기 조절 키로 작동되는 것입니다.
이 부분은 VoodooPS2 관련해서 SSDT 로 일부 특정 ADB Scan Code 를 막는 방법이 있습니다.
말씀해 주신 ACPI Hot Patch & Override 에 대한 정보(로 참고할 수 있는 링크)를 좀 더 주실 수 있으실까요? 무지하여..
아래의 글을 참고해보세요.
https://x86.co.kr/info/3629426
추가로, ACPI 를 수정하지 않고 BrightnessKeys.kext 를 사용하는 방법도 있습니다.
아주 아주 험난한 여정이 되겠군요,,, (삽 조차 뜨지 못하겠어요)
BrightnessKeys.kext 사용 시 키보드 자체가 먹통이 되어버려서, (VoodooPS2Controller.kext 사용중입니다.)
SSDT-FNBL.aml 를 사용하는 방법을 찾고 있었습니다.
우선, DSDT 에서 밝기 조절 Fn 키를 담당하는 EC Query Method 를 찾아보세요.
DD1F Device 에 대하여 Notify 하는 구문이 있는지 또는 BRTN Method 가 있다면 어떤 EC Query 에서 특정 인수로 BRTN Method 를 Call(호출)하는지 확인해보세요.
그 후에, 링크 2의 뽀로로님의 댓글을 참고하여 PS2K Device 에 대하여 밝기 조절 관련 값을 Notify 하는 구문을 추가합니다.
DSDT.aml
---중략---
Method (_Q50, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P8XH (Zero, 0x50)
If ((OSDP & One))
{
BRTN (0x86)
Sleep (0x0A)
^MAP1.CA82 = (0x09000000 | 0x87)
Notify (MAP1, 0x82) // Device-Specific Change
}
Else
{
BRTN (0x86)
}
}
Method (_Q51, 0, NotSerialized) // _Qxx: EC Query, xx=0x00-0xFF
{
P8XH (Zero, 0x51)
If ((OSDP & One))
{
BRTN (0x87)
Sleep (0x0A)
^MAP1.CA82 = (0x09000000 | 0x87)
Notify (MAP1, 0x82) // Device-Specific Change
}
Else
{
BRTN (0x87)
}
}
---중략---
Method (BRTN, 1, Serialized)
{
If (((DIDX & 0x0F00) == 0x0400))
{
Notify (\_SB.PCI0.GFX0.DD1F, Arg0)
}
}
---중략---
If ((MAR0 == 0x82))
{
If ((MAR1 == One))
{
Return (FRED) /* \FRED */
}
If ((MAR1 == 0x02))
{
Local0 = MAR2 /* \MAR2 */
FRED = Local0
If ((Local0 == 0x185455AA))
{
Notify (SLPB, 0x80) // Status Change
}
If ((Local0 == 0x09000085))
{
BRTN (0x85)
}
If ((Local0 == 0x09000086))
{
BRTN (0x86)
}
If ((Local0 == 0x09000087))
{
BRTN (0x87)
}
If ((Local0 == 0x09000088))
{
BRTN (0x88)
}
If ((Local0 == 0x09000089))
{
BRTN (0x89)
}
Return (Zero)
}
Return (0x80000002)
}
여기서 찾은 결론은 Q50 과 Q51 이라고 생각합니다.
BRTN (0x86) 구문이 있는 _Q50 Method 가 밝기 증가 Fn 키이고
BRTN (0x87) 구문이 있는 _Q51 Method 가 밝기 감소 Fn 키입니다.
_Q50 에는 0x0406 를, _Q51 에는 0x0405 값을 Notify 해보세요.
만약, 안 된다면 다른 밝기 조절 Notify 값으로 시도해보세요.
원본 DSDT 를 추출하고 DSDT 수정해서 적용 후 다시 부팅해서 밝기 조절 Fn 키가 작동하는지 확인해보세요.
만약, 작동한다면 수정한 DSDT 를 가지고 SSDT 로 옮겨서 Hot Patch 방식으로 변경하면 됩니다.
OpenCore 도 수정한 DSDT.aml 로드하여 사용할 수 있습니다.
단, DSDT 보다는 SSDT 패치를 사용하는 것을 권장할 뿐입니다.
SSDT-FNBL.aml 내부 파일 내용>
DefinitionBlock ("", "SSDT", 2, "WEI756", "FNKEYFIX", 0x00001000)
{
External (_SB_.PCI0.LPCB.H_EC, DeviceObj)
External (_SB_.PCI0.LPCB.H_EC._X63, MethodObj) // 0 Arguments
External (_SB_.PCI0.LPCB.H_EC._X64, MethodObj) // 0 Arguments
External (_SB_.PCI0.LPCB.PS2K, DeviceObj)
Scope (\_SB.PCI0.LPCB.H_EC)
{
Method (_Q63, 0, Serialized) // _Qxx: EC Query, xx=0x00-0xFF
{
If (_OSI ("Darwin"))
{
Notify (\_SB.PCI0.LPCB.PS2K, 0x0205)
Notify (\_SB.PCI0.LPCB.PS2K, 0x0285)
}
Else
{
_X63 ()
}
}
Method (_Q64, 0, Serialized) // _Qxx: EC Query, xx=0x00-0xFF
{
If (_OSI ("Darwin"))
{
Notify (\_SB.PCI0.LPCB.PS2K, 0x0206)
Notify (\_SB.PCI0.LPCB.PS2K, 0x0286)
}
Else
{
_X64 ()
}
}
}
}
핫 패치 적용할 때에
찾을 값: _Q63 변경할 값: _Q50
찾을 값: _Q64 변경할 값: _Q51
으로 적용해 보았는데, 이렇게 하는 것이 아닌가요?
링크해주신 핫패치 설명서보았는데 이렇게 하는 이 방법이 맞을까요?
노트북 모델마다 ACPI 코드 내용이 다르기 때문에 External References 에 명시된 Object 의 절대 경로가
질문자님의 노트북의 DSDT 에 있는 경로와 일치하는지 확인해야 합니다.
EC 계열 Device 의 이름이 과연 자신의 노트북도 H_EC 인지 아니면 EC0 이거나 EC 또는 ECDV 인지 확인해야 합니다.
DSDT 에 있는 Object 를 외부 참조하기 때문에 경로가 틀리면 부팅할 때 ACPI Error 가 발생할 수 있습니다.
노트북 내장 키보드는 아마 대부분의 경우에는 PS2K 일 것입니다.
LPC 계열 Device 도 LPC 인지 LPCB 인지 DSDT 확인해보세요.
SSDT-FNBL.aml 내부 파일 내용>
DefinitionBlock ("", "SSDT", 2, "WEI756", "FNKEYFIX", 0x00001000)
{
External (_SB_.PCI0.LPCB.EC__, DeviceObj)
External (_SB_.PCI0.LPCB.EC__._X63, MethodObj) // 0 Arguments
External (_SB_.PCI0.LPCB.EC__._X64, MethodObj) // 0 Arguments
External (_SB_.PCI0.LPCB.PS2K, DeviceObj)
Scope (\_SB.PCI0.LPCB.EC)
{
Method (_Q50, 0, Serialized) // _Qxx: EC Query, xx=0x00-0xFF
{
If (_OSI ("Darwin"))
{
Notify (\_SB.PCI0.LPCB.PS2K, 0x0205)
Notify (\_SB.PCI0.LPCB.PS2K, 0x0285)
}
Else
{
_X63 ()
}
}
Method (_Q51, 0, Serialized) // _Qxx: EC Query, xx=0x00-0xFF
{
If (_OSI ("Darwin"))
{
Notify (\_SB.PCI0.LPCB.PS2K, 0x0206)
Notify (\_SB.PCI0.LPCB.PS2K, 0x0286)
}
Else
{
_X64 ()
}
}
}
}
말씀하신 부분들 수정해보았지만, 동작하지 않은데 어디가 잘못되었을까요?
안되었던, 키크론 USB키보드 Fn키 밝기조절은 정상동작하게되었으며,
노트북 내장키보드는 F14로 할당된 스크롤락이 화면밝기 감소로만 동작하고 있습니다.
External References 에서 _X63 과 _X64 를 _X50 과 _X51 로 수정하고 아래의 Else 문에 있는 것도 수정해주세요.
추가로, Config.plist 의 ACPI - Patch 에 Rename _Q50 to _X50 과 Rename _Q51 to _X51 패치를 추가해야 합니다.
또한, _Q50 Method 가 밝기 증가인데 밝기를 감소시키는 Notify 값이 입력되어 있습니다.
_Q50 과 _Q51 위치 서로 바꿔주세요.
댓글의 내용대로 SSDT 를 적용하면 ACPI 상에서 _Q50 과 _Q51 Method 가 2개로 중복됩니다.
macOS 로 부팅한 경우에는 SSDT 에 있는 _Q50 / _Q51 Method 를 사용하고
macOS 가 아닌 다른 OS 로 부팅한 경우에는 Else 문에 의해서 원래의 DSDT 에 있는 이름만 바뀐 _X50 / _X51 Method 를 Call(호출)하는 것입니다.
아래와 같이 수정해주세요.
DefinitionBlock ("", "SSDT", 2, "WEI756", "FNKEYFIX", 0x00001000)
{
External (_SB_.PCI0.LPCB.EC__, DeviceObj)
External (_SB_.PCI0.LPCB.EC__._X50, MethodObj) // 0 Arguments
External (_SB_.PCI0.LPCB.EC__._X51, MethodObj) // 0 Arguments
External (_SB_.PCI0.LPCB.PS2K, DeviceObj)
Scope (\_SB.PCI0.LPCB.EC)
{
Method (_Q50, 0, Serialized) // _Qxx: EC Query, xx=0x00-0xFF
{
If (_OSI ("Darwin"))
{
Notify (\_SB.PCI0.LPCB.PS2K, 0x0206)
Notify (\_SB.PCI0.LPCB.PS2K, 0x0286)
}
Else
{
_X50 ()
}
}
Method (_Q51, 0, Serialized) // _Qxx: EC Query, xx=0x00-0xFF
{
If (_OSI ("Darwin"))
{
Notify (\_SB.PCI0.LPCB.PS2K, 0x0205)
Notify (\_SB.PCI0.LPCB.PS2K, 0x0285)
}
Else
{
_X51 ()
}
}
}
}
Notify(~,0x10) Notify(~,0x0286) Notify(~,0x0206) Notify(~0x0406) Notify(~0x0366) 등이 있고 Down은 20, 0285, 0205, 0405, 365 등이 있습니다.
Q50, Q51에 위 값들을 다 사용해봤지만
동작하지 않았습니다
LG 구형 노트북에서 DSDT 에 밝기 조절 EC Query 가 있어도 이를 사용하지 않고 다른 방식으로 밝기 조절을 하는 부분이 있는 경우도 있는 것 같아요.
https://github.com/wei756/15U550-GR4EK-Hackintosh/blob/main/ssdt%20dsdt/SSDT-BRFN.dsl
LBRI 라는 변수의 값에 따라서 밝기 조절을 하는 것 같은데 이 방식은 저도 익숙하지 않아서 자세히는 모르겠습니다..
위의 사이트에서 External References 에 정의된 Object 가 모두 질문자님의 노트북의 DSDT 에 존재한다면 한 번 위의 사이트의 SSDT 를 사용해보세요.
Rename SBRT to XBRT 패치도 추가해야 합니다.
https://github.com/wei756/15U550-GR4EK-Hackintosh/blob/main/EFI/OC/config.plist
시도 해봤지만, 해결되지 않아서, 미해결로 종결 내립니다..
결과가 없어서 너무 아쉽습니다...
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 조회 수 | 날짜 | 글쓴이 |
---|---|---|---|
모니터(오류화면) 사진 찍을 때 팁(소소함) +270 | 11만 | 17.07.3020:49 | 달쇠 |
빠르고 정확한 답변을 받는 팁 및 질답자의 매너, EFI폴더 압축법 +90 | 12만 | 17.02.1014:21 | Mactopia |
Hot 오픈코어로 단일 ssd로 듀얼부팅 설정시 윈도우 블루스크린문제 해결방... +13 | 64 | 24.10.2318:25 | 헷인토시 |
Hot 새로운 os 설치, 벤츄라가 좋을까요? 세콰이어가 좋을까요? +10 | 126 | 24.10.2308:19 | 미찌콘 |
Hot 램 증설.. 그리고 자꾸 재부팅되는 PC.. +8 | 52 | 24.10.2513:02 | 김밉상 |
39 | 24.10.2513:28 | 희밍현수님 | |
52 | 24.10.2513:02 | 김밉상 | |
38 | 24.10.2421:15 | 활주로임 | |
49 | 24.10.2322:21 | 활주로임 | |
64 | 24.10.2318:25 | 헷인토시 | |
58 | 24.10.2317:01 | 활주로임 | |
95 | 24.10.2315:51 | 배고픈사람 | |
126 | 24.10.2308:19 | 미찌콘 | |
106 | 24.10.2213:48 | 아킬리오 | |
89 | 24.10.2210:36 | MCMC | |
63 | 24.10.2200:57 | 헷인토시 | |
165 | 24.10.2123:22 | 마요네즈 | |
1055 | 24.10.1914:54 | 활주로임 | |
191 | 24.10.2017:21 | RTings | |
967 | 24.10.2000:14 | Kylee | |
119 | 24.10.1921:50 | 루이코아낭 | |
207 | 24.10.1918:03 | Gastone | |
82 | 24.10.1721:28 | Oscar | |
205 | 24.10.1712:11 | 희밍현수님 | |
71 | 24.10.1612:42 | SystemShock | |
309 | 24.10.1517:37 | Gastone | |
1318 | 24.10.1517:20 | 물만두 | |
1624 | 24.10.1317:18 | 물만두 | |
1276 | 24.10.1315:07 | Steer | |
877 | 24.10.1004:51 | Steer | |
192 | 24.10.0920:24 | KImET | |
933 | 24.10.0915:49 | lesmi | |
182 | 24.10.0911:23 | LumOS | |
73 | 24.10.0902:16 | lesmi | |
909 | 24.10.0822:09 | 애플맨 | |
1315 | 24.10.0810:58 | soullees | |
115 | 24.10.0723:26 | 오십견 | |
1235 | 24.10.0723:14 | Steer | |
117 | 24.10.0721:40 | 서재희 | |
74 | 24.10.0704:04 | g2030h61 | |
89 | 24.10.0704:00 | g2030h61 | |
95 | 24.10.0620:14 | SystemShock | |
113 | 24.10.0617:57 | 늘심심 | |
1372 | 24.10.0601:48 | 아스타틴 | |
1272 | 24.10.0515:04 | lesmi | |
131 | 24.10.0422:58 | 낡은기계 | |
547 | 24.10.0315:33 | oreo | |
118 | 24.10.0315:26 | 매치포인트 | |
177 | 24.10.0313:01 | 매치포인트 | |
152 | 24.10.0311:30 | KAKU | |
393 | 24.10.0207:44 | 데스맥 | |
255 | 24.09.3014:22 | 민준송 | |
174 | 24.09.2922:21 | oreo | |
133 | 24.09.2917:58 | 수박 | |
111 | 24.09.2913:21 | 루마루 |
1. 혹시 질문 게시판 공지는 읽어 보셨나요? 빠른 답변을 받을수 있는 방법이 적혀 있습니다. 클릭
2. EFI 폴더를 올려서 질문하는 경우 아래 Apple 폴더 와 Audio 폴더 두가지 폴더가 있다면 삭제 하시고 압축후 업로드 하시면 됩니다.
3. 모든 걸 다 떠먹여 달라는 질문은 더 무시 당할수 있습니다. 핑거 프린세스가 되지 않도록 노력합시다.
5. 만약 본인 조차도 무엇이 문제인지 잘 모르는 상황이라면, 현재의 상황에 대해서 최대한 정확하게 글을 써 주시고, 오류화면이나 메세지등을 정확히 알려주셔야 답변을 빨리 받습니다. 그냥 "그냥 안 되요."라고 한다면 잡스가 와도 도움드리지 못할 공산이 큽니다.
6. 스스로 해결한 문제라면, 본인 질문 글에 해결 방법을 적어 두는게 좋습니다. 같은 문제로 고민하는 동료에게 도움을 줄 수도 있고, 대체로 한번 걸린 함정에 또 걸리기 마련입니다.
7. 긴 에러코드 등 같은 경우 오히려 질문의 가독성을 떨어뜨려 답변자에게 답변을 받기 힘들어 질수 있습니다. 글쓰기 하단의 코드 강조 박스 또는 스포일러(접기) 박스를 사용하시길 바랍니다.
8. 마지막으로 답변자의 회신에는 최대한 회신을 하며 소통을 하시면 상황 파악과 문제 해결에 도움이 됩니다.