shl628님의 기기정보
    입력된 기기 정보가 없습니다.
    추가사양 및 설치(할)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 폴더도 첨부합니다.

    EFI.zip


    그리고, 원본 상태의 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/330440-beginners-guide-fix-keyboard-hot-keys-functional-keys/

    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's 도장 콜렉션

    profile

    인기글12개의 댓글
    Mactopia 일단 _Q6E 이게 하나 이니 모든게 어려운 상황이 인데,... 일단 _Q6E 이게 하나 이니 모든게...

    일단 _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 값 마저도 안 보입니다.

    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 의 관련 언급중 하나 입니다. 

    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.


    한줄결론 : 왜 !! 하나 인 것인가!!

    1411자
    shl628 답변 감사합니다. :)기존의 VoodooPS2Controller.kext ... 답변 감사합니다. :)기존의 Voodo...

    답변 감사합니다. :)

    기존의 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


    그 결과, 노트북 디스플레이의 밝기 조절이 가능하게 되어서 이 방식으로 패치하여 사용하기로 하였습니다.

    답변 감사드립니다. :)



    595자
    뽀로로 해결 보셨네용 축하드립니다. 아래 댓글이 필요 없어졌... 해결 보셨네용 축하드립니다. 아...
    해결 보셨네용 축하드립니다. 아래 댓글이 필요 없어졌...
    VoodooPS2 업데이트 할 때마다 Info.plist 패치하셔야 할텐데 SSDT에 Name(\_SB.PCI0.LPCB.PS2K.RMCF,Package()...로 SSDT로 대신하시면 업데이트마다 Info.plist 패치 안 하셔도 됩니다. https://github.com/acidanthera/VoodooPS2/tree/master/Docs/ACPI 살펴보시면 도움이 되실 것 같습니다. Info.plist에 PS2 to ADB를 하셨는지 PS2 to PS2를 하셨는지에 따라 "Custom ADB Map" 또는 "Custom PS2 Map"으로 진행하시면 됩니다.
    352자
    shl628 아니에요, 아래의 댓글도 참고해보려고 합니다. :)아래... 아니에요, 아래의 댓글도 참고해...

    아니에요, 아래의 댓글도 참고해보려고 합니다. :)

    아래의 댓글에서 설명해주신 내용으로도 한번 패치해보려고 합니다.

    덕분에 많은 정보와 지식을 얻게 되는 것 같습니다. ㅎㅎ

    자세한 설명과 답변 감사합니다. :)


    114자
    뽀로로 사실 shl628님 질문글 보고 Switch Operator 찾아본건... 사실 shl628님 질문글 보고 Switc...
    사실 shl628님 질문글 보고 Switch Operator 찾아본건데 찾아보면서 공부가 되었습니다 ㅋㅋㅋ
    화이팅하셔요~
    67자
    Mactopia 편안~ 축하 드립니다^^ 편안~ 축하 드립니다^^
    편안~ 축하 드립니다^^
    13자
    뽀로로 ACPI 스펙시트에 따르면 Switch는 여러 개의 condition... ACPI 스펙시트에 따르면 Switch는...
    ACPI 스펙시트에 따르면 Switch는 여러 개의 conditional statement를 편리하게 표기하기 위한 Operator라고 합니다. Case의 Value(0x34 등)의 ObjectType에 따라 conditional이 어떻게 작동하는지는 다르지만 ObjectType이 Integer/Buffer/String이라면 Switch의 Expression(WHOK)의 값이 conditional(Case(Integer/Buffer/String))과 일치하는지 확인하고 이에 해당하는 하위코드를 실행합니다. Case(0x33)과 Case(0x34)의 Value의 ObjectType은 Integer입니다. WHOK와 일치하는 Integer인지를 확인하게 되는거죠. (DSDT를 컴파일 한 번 눌러보시면 WHOK에 대해서 "40463, 3124, Switch expression is not a static Integer/Buffer/String data type, defaulting to Integer"라는 Warning이 나옵니다. "DSDT 에서 WHOK 를 검색해보니 ERAM 이라는 EmbeddedControl Region 의 ERAM Field 에 정의되어 있는 FieldUnitObject 인 것 같습니다."라고 본문에 발견하셨다시피 WHOK는 Integer가 아니라는 (Integer/Buffer/String이 아니라는), 그래서 Integer로 간주하고 코드를 실행할 것이라는 내용이네요.) 그래서 _Q6E를 실행해야 되는데 WHOK가 0x33인 경우(Fn+Up을 눌렀을 때)는 Case(0x33) 하위코드를 실행하고 _Q6E를 실행해야 되는데 WHOK가 0x34인 경우(Fn+Down)을 눌렀을 때 Case(0x34) 하위코드를 실행합니다. 대장님이 댓글로 알려주신 HKNO는 HP 노트북에서 값이 7일 때 Down을 실행하고 8일 때 Up을 실행하는 Switch와 비슷한 기능을 하는 값이고, 델 노트북에서는 Method(BRT6)의 Argument값이 0과 1로 각각의 값에 해당하면 Down 또는 Up을 실행하는 Switch와 비슷한 기능을 합니다.
    다만 맥에서는 키보드를 통한 밝기 조절이 불가능한데(맥에서 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 등이 있습니다.)
    1567자
    shl628 자세한 설명과 답변 감사드립니다. :) 자세한 설명과 답변 감사드립니다...

    자세한 설명과 답변 감사드립니다. :)



    21자
    shl628 Case (0x33) 에 Notify (PS2K, 0x0365) 를 입력하고Cas... Case (0x33) 에 Notify (PS2K, 0x...

    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 방식으로 한번 적용해보려고 합니다.

    감사합니다. :)


    554자
    뽀로로 오 잘 되었네요 ㅎㅎ 나머지 작업도 화이팅하세요~사실... 오 잘 되었네요 ㅎㅎ 나머지 작업...

    오 잘 되었네요 ㅎㅎ 나머지 작업도 화이팅하세요~

    사실 이제와서이긴 한데, Case (0x33)와 Case (0x34)가 Up인지 Down인지는 shl628님이 Notify(~0x86)과 0x87을 보시고 유추하셨던 건데 각각의 Case 아래에 EC querry 디버깅처럼 rmdt.p1("EC _Q6E(0x33) enter") 등으로 했으면 완벽했을 거라는 생각이 드네요 ㅎㅎ

    210자
    139자
    참조도우미 dohun0310님이 아래 글에서 이 글을 참조 하였습니다.❝... dohun0310님이 아래 글에서 이 글...
    dohun0310님이 아래 글에서 이 글을 참조 하였습니다.
    ❝키보드 밝기 조절❞
    44자