시스템 사양 선택 | 1번 |
---|
*적용중인 도장
VoodooI2C 를 사용하여 I2C 방식의 터치패드를 활성화하고 제스처 기능을 작동시키는 안정화 작업에 대하여 설명해 보고자 합니다.
노트북의 안정화 작업 중에서 VoodooI2C 를 사용하여 I2C 방식의 터치패드와 제스처가 작동하도록 패치하는 것은 조금 복잡하고 어려운 편입니다.
본 글의 후반부에서 VoodooI2C 의 ACPI 를 패치하는 부분에서 어느 부분을 어떻게 패치해야하는 지에 대해서 설명하며
DSDT 를 직접 수정하는 Static 방식으로 패치하는 방법과
터치패드와 관련된 SSDT 로 OEM DSDT 를 Override 하는 Hot Patch 방식으로 패치하는 방법에 대해서는 설명하지 않습니다.
ACPI 패치에 대한 내용은 아래의 글을 참고해주세요.
https://x86.co.kr/info/3629426
🌿 목차
🌱 1. VoodooI2C 설치를 시작하기 전에
1-1. 시스템 요구 사항
1-2. VoodooI2C 의 작동 방식(모드) 안내
🍀 2. VoodooI2C 설치 및 패치
2-1. VoodooI2C 관련 Kext 설치
2-2. Darwin OS Check Fix 패치
2-3. I2C Controller 패치 (Intel 6th Gen SKL 시스템만 해당)
2-4. GPIO Controller 활성화 (Intel 6th Gen SKL+ 이상의 시스템부터 해당)
2-5. VoodooI2C 의 ACPI 패치
🍃 3. 마무리
🌱 1. VoodooI2C 설치를 시작하기 전에
1-1. 시스템 요구 사항
- Intel 4th Gen Haswell CPU 이상
VoodooI2C 를 사용하기 위해서는 최소 Intel 4th Gen Haswell CPU 이상이어야 합니다.
- OS X El Capitan 10.11 버전 이상
VoodooI2C 의 Installaion 문서에는 최소 OS X Yosemite 10.10 이상이어야 된다고 하지만
Kext 의 Info.plist 에는 LSMinimumSystemVersion 이 10.11 로 되어 있어서 OS X El Capitan 10.11 버전 이상을 권장합니다.
- I2C 장치를 제어하기 위한 I2C Controller
기본적으로, Intel 4th Gen Haswell 이상의 시스템이라면 내장되어 있습니다.
'INT33C2', 'INT33C3' - Haswell
'INT3432', 'INT3433' - Broadwell
'pci8086,9d60', 'pci8086,9d61', 'pci8086,9d62', 'pci8086,9d63' - Skylake
'pci8086,a160', 'pci8086,a161', 'pci8086,a162', 'pci8086,a163' - Kaby Lake
'pci8086,9de8', 'pci8086,9de9', 'pci8086,9dea', 'pci8086,9deb' - Cannon Lake / Whiskey Lake
'pci8086,a368', 'pci8086,a369', 'pci8086,a36a', 'pci8086,a36b' - Coffee Lake
'pci8086,2e8', 'pci8086,2e9', 'pci8086,2ea', 'pci8086,2eb',
'pci8086,6e8', 'pci8086,6e9', 'pci8086,6ea', 'pci8086,6eb' - Comet Lake
'pci8086,34e8', 'pci8086,34e9', 'pci8086,34ea', 'pci8086,34eb' - Ice Lake
- I2C 방식의 터치패드 / 터치스크린 / 센서 허브 등
- 최신 버전의 BIOS 펌웨어 (BIOS 업데이트가 있는 경우 먼저 진행하는 것을 권장)
- GenI2C
반드시 필요한 것은 아니지만, Information 탭의 정보와 VoodooI2C 로그 확인 및 진단 기능 등 유용하게 사용할 수 있습니다.
1-2. VoodooI2C 의 작동 방식(모드) 안내
VoodooI2C 의 작동 방식으로는 Interrupt 와 Polling 두 가지 모드로 나뉘며
Interrupt 모드에서 GPIO Controller 와 APIC Controller 둘 중 어떤 것을 사용하느냐에 따라서 또 세부적으로 나뉩니다.
VoodooI2C 작동 방식은 다음과 같습니다.
- Interrupt (GPIO) 모드
- Interrupt (APIC) 모드
- Polling 모드
참고 : ASUS 노트북의 경우에는 Interrupt 모드가 잘 작동하지 않으며 Polling 모드를 주로 사용하는 사례가 많습니다.
단, BIOS 를 최신 버전으로 업데이트한 후에 일부 ASUS 노트북에서 Interrupt 모드가 잘 작동한다는 사례가 있으므로 직접 시도해보세요.
그리고, 본 글의 후반부에서 I2C 방식의 터치패드 장치에 해당하는 Device 의 _CRS Method 를 다루게 됩니다.
_CRS Method 에서 ConcatenateResTemplate 문이 사용됩니다.
즉, _CRS 에서 ConcatenateResTemplate 의 인수에 어떤 Object 가 들어가서 Return 되는지에 따라서
다음과 같은 VoodooI2C 의 작동 방식이 달라지게 됩니다.
- Interrupt (GPIO) 모드
- Interrupt (APIC) 모드
- Polling 모드
macOS 에서 I2C 방식의 터치패드가 GPIO Controller 에 의하여 Interrupt 모드로 작동하려면
Return (ConcatenateResTemplate (SBFB, SBFG))
APIC Controller 에 의하여 Interrupt 모드로 작동하려면
Return (ConcatenateResTemplate (SBFB, SBFI))
Polling 모드로 작동하려면
Return (ConcatenateResTemplate (SBFB, SBFI))
또는 Return (SBFB)
여기에서, SBFB 는 I2cSerialBusV2 에 해당하는 Object 이며
SBFG 는 GPIO Pin 이고 SBFI 는 APIC Pin 에 해당하는 IntObj 입니다.
단, 위는 예시일 뿐이며 일반적인 노트북의 I2C 터치패드의 ACPI 내용을 가져온 것입니다.
그런데, VoodooI2C 의 작동 방식인 Interrupt ( GPIO 또는 APIC ) 모드와 Polling 모드도 각각 지원 조건이 있습니다.
아래의 사진은 DSDT 에 따른 VoodooI2C 의 작동 방식인 Interrupt ( GPIO 또는 APIC ) 모드와 Polling 모드의 지원 여부에 대한 개요표입니다.
더불어, GPIO Controller 에 의하여 Interrupt 모드로 작동하려면
OEM DSDT 에서 GPIO Controller 에 해당하는 GPI0 Device 의 _STA 에서 Return (0x0F) 를 반환하도록 하여
GPIO Controller 도 활성화해야 Interrupt (GPIO) 모드로 작동할 수 있습니다.
참고로, Interrupt (APIC) 모드와 Polling 모드는 GPIO Controller 를 활성화할 필요가 없습니다.
또한, macOS 에서 I2C 방식의 터치패드가 APIC Controller 에 의하여 Interrupt 모드로 작동하려면
APIC Pin 에 해당하는 값이 0x2F 보다 작거나 같아야 합니다.
만약, APIC Pin 에 해당하는 값이 0x2F 보다 크면 Interrupt (APIC) 모드는 사용이 불가능하며
GPIO Controller 에 의해서만 Interrupt 모드로 작동시킬 수 밖에 없습니다.
그 외에도, macOS 에서 I2C Bus 속도 상수인 SSCN 과 FMCN 이 누락되어서 I2C 방식의 터치패드가 작동하지 않는 경우에는
VoodooI2C 의 Log 에서 해당 부분에 대하여 오류가 표시될 것이며 SSCN 및 FMCN 도 추가로 인젝션해야 합니다.
SSCN 및 FMCN 을 PKGX Method 와 연관하여 인젝션하는 방식을 주로 사용합니다.
위의 사진은 조금 복잡해서 노트북마다 ACPI 내용이 천차만별이지만 대부분의 경우에는 아래의 알고리즘을 따라가면 될 것 같습니다.
우선, Intel CPU 의 세대와 APIC Pin 의 값에 따라서 사용할 수 있는 VoodooI2C 의 작동 방식(모드)가 일부 제한되거나 달라집니다.
APIC Pin 의 값을 확인하는 방법과 APIC Pin 의 값을 통하여 GPIO Pin 의 값을 구하는 과정은 아래의 글을 참고해주세요.
https://x86.co.kr/info/6173668
❄️ 사양에 따른 VoodooI2C 작동 방식 알고리즘 정리
가. Intel 4th Gen Haswell & 5th gen Broadwell CPU 시스템인 경우
가-1. APIC Pin 의 값이 2F 보다 작거나 같은 경우 : Interrupt (APIC), Polling 모드 사용 가능
가-2. APIC Pin 의 값이 2F 보다 큰 경우 : Polling 모드만 사용 가능
나. Intel 6th Gen SKL+ CPU 이상의 시스템인 경우
나-1. APIC Pin 의 값이 2F 보다 작거나 같은 경우 : Interrupt (GPIO), Interrupt (APIC), Polling 모드 모두 사용 가능
나-2. APIC Pin 의 값이 2F 보다 큰 경우 : Interrupt (GPIO), Polling 모드 사용 가능
APIC Pin 의 값을 확인하여 자신의 노트북은 어느 경우에 해당되는지 미리 파악하는 것이 좋습니다.
본 글의 후반부 패치 단계에서 어느 경우에 해당되는지에 따라서 패치하는 과정이 달라집니다.
🍀 2. VoodooI2C 설치 및 패치
2-1. VoodooI2C 관련 Kext 설치
아래의 VoodooI2C 공식 GitHub 에서 VoodooI2C Kext 를 다운로드합니다.
https://github.com/VoodooI2C/VoodooI2C
- VoodooI2C 의 Core Kext (필수) : VoodooI2C.kext
- VoodooI2C 의 Satellite Kexts (다음 중 1개만 선택)
- VoodooI2CHID.kext : 대부분의 경우 이를 사용
- VoodooI2CELAN.kext : ELAN 사의 I2C 터치패드 중에서 모델명이 ELAN1200 미만인 경우에 사용
- VoodooI2CFTE.kext
- VoodooI2CSynaptics.kext
- VoodooI2CAtmelMXT.kext
참고 1 : ELAN 사의 I2C 터치패드 중에서 모델명이 ELAN1200+ 이상인 터치패드는 VoodooI2CELAN 이 아닌 VoodooI2CHID 를 사용합니다.
참고 2 : 삼성 노트북에서 Atmel 사의 ATML3000 모델의 I2C 터치패드는 VoodooI2CAtmelMXT 가 아닌 VoodooI2CHID 를 사용합니다.
참고 3 : Synaptics 사의 I2C 터치패드는 VoodooI2CSynpatics 가 아닌 VoodooI2CHID 도 사용할 수 있습니다.
참고 4 : Synaptics 사의 I2C 터치패드는 VoodooI2CSynpatics 가 아닌 VoodooRMI 를 Satellite Kext 로도 사용할 수 있습니다.
이에 대한 자세한 내용은 아래의 글을 참고해주세요.
https://x86.co.kr/info/5145174
주의사항 : VoodooI2CHID 는 바로 사용하면 되지만, 그 외 나머지 Satellite Kext 4개는
아래의 사진과 같이 Info.plist 의 IOPropertyMatch - name 항목의 터치패드 모델명을 자신의 것으로 직접 수정하고 적용해야 합니다.
OpenCore 부트로더를 사용하는 경우에는 Config.plist 에서 VoodooI2C 관련 Kext 의 로드 순서를 다음과 같이 설정합니다.
1. VoodooI2C.kext/Contents/PlugIns/VoodooI2CServices.kext
2. VoodooI2C.kext/Contents/PlugIns/VoodooGPIO.kext
3. VoodooI2C.kext/Contents/PlugIns/VoodooInput.kext
4. VoodooI2C.kext
5. VoodooI2CHID.kext
추가로, Apple 의 MagicTrackpad II 를 Emulation 하는 VoodooInput.kext 는 VoodooI2C 의 Plugins 으로 포함되어 있는 것을 사용합니다.
그러므로, 노트북의 내장 키보드를 작동하기 위한 VoodooPS2Controller.kext 의 Plugin 으로 포함되어 있는 VoodooInput.kext 은 삭제해야 합니다.
VoodooInput.kext 가 서로 중복되면 macOS 를 부팅할 때 커널 패닉이 발생할 수 있습니다.
또한, VoodooPS2Controller.kext 의 Plugin 에서 VoodooPS2Mouse.kext 와 VoodooPS2Trackpad.kext 도 삭제하는 것을 권장합니다.
2-2. Darwin OS Check Fix 패치
Darwin OS Check Fix 패치를 적용하는 단계입니다.
기본적으로, 거의 대부분 ACPI 에서 I2C Device 는 Windows 8 버전부터 활성화되어 작동되도록 설계되어 있습니다.
그래서, macOS 에서 Darwin OS Check Fix 패치를 적용하지 않으면
I2C Device _STA Method 에서 OSYS 의 값을 조건으로 하는 If 문이 False(거짓)으로 되기 때문에
I2C 방식의 터치패드가 활성화되지 않아서 터치패드가 작동하지 않습니다.
예를 들어, 위의 사진에서 OSTP 의 값이 0x07DC 미만이면 해당 If 문은 False(거짓)이므로
_STA Method 에서 Zero 를 Return 하게 되어서 해당 I2C 터치패드 장치는 비활성화되어 작동하지 않습니다.
보통은 OSYS 인데 OSYS 대신에 OSTP 라는 FieldUnitObject 가 들어갔네요.
OSTP 도 OSYS 와 비슷하게 Windows 의 세부적인 버전에 따라서 할당되는 값이 다릅니다.
OpenCore Install 가이드에서는 SSDT-XOSI.aml 과 Rename _OSI to XOSI 패치를 사용하는 Override & Hot Patch 방식을 사용하지만
저는 Assign 방식의 SSDT-OSYS.aml 을 사용하는 것이 편리하기 때문에 이 방식을 추천합니다.
SSDT-OSYS.aml 은 Assign 방식으로 패치하므로 Rename _OSI to XOSI 패치를 적용할 필요가 없습니다.
단, Windows 10 버전을 기준으로 OSYS 값이 작성되어 있습니다.
I2C 방식의 터치패드라면 대부분의 경우에는 Intel 6th Gen Sky Lake CPU 이상의 시스템이어서 SSDT-OSYS.aml 을 추가하기만 하면 되지만
조금 오래된 Intel 4th Gen Haswell / 5th gen Broadwell CPU 라면 BIOS 업데이트를 먼저 진행해보고
SSDT-OSYS.aml 에 있는 OSYS 값을 OEM DSDT 에서 _OSI 를 확인하여 최신 버전의 Windows 에 해당하는 OSYS 값으로 수정해주면 됩니다.
2-3. I2C Controller 패치 (Intel 6th Gen SKL 시스템만 해당)
Intel 6th Gen Sky Lake CPU 시스템만 해당되는 패치입니다.
그 이후의 Intel 7/8/9/10th Gen KBL+ CPU 는 I2C Controller 패치를 적용하지 마세요.
MaciASL 의 Patch 목록에서 VoodooI2C 의 패치 항목을 살펴보면 [Controllers] I2C Controllers [SKL] 패치가 있습니다.
DSDT 를 직접 수정하는 Static 방식으로 패치하는 경우에는 MaciASL 에서 바로 해당 패치를 적용하면 됩니다.
이 패치를 SSDT 로 패치하는 파일은 아래에 첨부하였습니다.
단, 자신의 노트북의 I2C 터치패드에 해당하는 장치의 경로가 I2C0 이 아닌 I2C1 / I2C2 / I2C3 / I2C4 / I2C5 등으로 다르다면
자신의 노트북의 I2C 터치패드에 해당하는 장치의 경로에 맞게 수정하고 관련 Object 변수들도 수정하고 적용해야 합니다.
MaciASL MaciASL 의 Patch 목록에서 [Controllers] I2C Controllers [SKL] 패치 내용 코드를 참고하여 직접 수정해주세요.
2-4. GPIO Controller 활성화 (Intel 6th Gen SKL+ 이상의 시스템부터 해당)
ACPI 에서 GPI0 Device 의 _STA Method 를 패치하여 GPIO Controller 를 활성화하는 단계입니다.
단, Intel 6/7/8/9/10th Gen SKL+ CPU 이상의 시스템부터 해당되는 패치입니다.
VoodooGPIO 는 Intel 6th Gen Sky Lake 이상의 시스템부터 지원합니다.
또한, Interrupt (GPIO) 모드를 사용하려는 경우에만 해당되는 패치 단계입니다.
본 글의 1-2. 단계에서 나-1. 경우의 Interrupt (GPIO) 모드를 사용하는 경우에만 해당 패치를 적용하며
나-1. 경우에서 Interrupt(APIC), Polling 모드를 사용하려는 경우에는 2-4. GPIO Controller 활성화 단계를 건너뛰면 됩니다.
패치하는 과정은 OpenCore Post Install 가이드의 내용으로 대체하겠습니다.
SSDT-XOSI.aml 및 OSYS 대한 내용도 나오지만 2-2. Darwin OS Check Fix 패치 단계에서 이미 진행한 내용이며 한 번 읽어보고 건너뛰면 됩니다.
https://dortania.github.io/Getting-Started-With-ACPI/Laptops/trackpad-methods/manual.html
2-5. VoodooI2C 의 ACPI 패치
본 글의 하이라이트 부분에 해당하는 패치 단계입니다.
이 단계에서 노트북마다 ACPI 내용이 천차만별로 다르기 때문에
직접 시도해보아야 하는 경우의 수도 있을 수 있으며 조금 복잡하고 어려울 수 있습니다.
이제, I2C 방식의 터치패드 장치에 해당하는 Device 의 _CRS Method 를 패치해야 합니다.
이번 패치 단계에서 예제로 사용할 I2C 터치패드의 ACPI 코드 내용은 아래의 사진과 같습니다.
자신의 노트북과 DSDT 내용이 조금 달라도 원리를 이해하면 어느 부분을 어떻게 수정해야 할지 감이 오실 거예요.
위의 _CRS Method 를 아래에서 해당하는 경우의 값으로 수정합니다.
가. Intel 4th Gen Haswell & 5th gen Broadwell CPU 시스템인 경우
가-1. APIC Pin 의 값이 2F 보다 작거나 같은 경우 : Interrupt (APIC), Polling 모드 사용 가능
- Interrupt (APIC) 모드를 사용하려는 경우 : Return (ConcatenateResTemplate (SBFB, SBFI))
- Polling 모드를 사용하려는 경우 : Return (SBFB)
가-2. APIC Pin 의 값이 2F 보다 큰 경우 : Polling 모드만 사용 가능
- Polling 모드 : Return (SBFB)
나. Intel 6th Gen SKL+ CPU 이상의 시스템인 경우
나-1. APIC Pin 의 값이 2F 보다 작거나 같은 경우 : Interrupt (GPIO), Interrupt (APIC), Polling 모드 모두 사용 가능
- Interrupt (GPIO) 모드를 사용하려는 경우 : Return (ConcatenateResTemplate (SBFB, SBFG))
- Interrupt (APIC) 모드를 사용하려는 경우 : Return (ConcatenateResTemplate (SBFB, SBFI))
- Polling 모드를 사용하려는 경우 : Return (SBFB)
나-2. APIC Pin 의 값이 2F 보다 큰 경우 : Interrupt (GPIO), Polling 모드 사용 가능
- Interrupt (GPIO) 모드를 사용하려는 경우 : Return (ConcatenateResTemplate (SBFB, SBFG))
- Polling 모드를 사용하려는 경우 : Return (ConcatenateResTemplate (SBFB, SBFI)) 또는 Return (SBFB)
SSDT 를 사용하여 Override & Hot Patch 방식으로 패치해도 되지만
Preset Variable Method (PVM) 방식으로 패치하는 것이 Rename 패치도 필요하지 않고 조금 더 편리하고 깔끔합니다.
_CRS Method 의 내용을 어떤 방식으로 패치할 지의 선택은 자유입니다.
단, _CRS Method 에서 Interrupt (GPIO) 모드로 작동되기 위한 If 문의 조건이
아래의 사진과 같이 I2C 터치패드에 해당하는 Device 의 _INI Method 에서도 사용된다면 SHPO (GPDI, One) 구문도 수행되어야 합니다.
이의 경우에는 Preset Variable Method (PVM) 방식으로 패치하는 것이 좋습니다.
만약, 나-2. 에 해당되고 Interrupt (GPIO) 모드를 사용하려는 경우를 Preset Variable Method 방식으로 패치한다면
위의 예제에서 ConcatenateResTemplate (SBFB, SBFG) 를 Return 하면 되므로
TPDM 이라는 Object 에 Zero (0) 의 값을 할당하는 SSDT 를 만들고 적용하면 됩니다.
위의 예제에 대하여 TPDM 이라는 Object 에 Zero (0) 의 값을 할당하는 SSDT 는 아래에 첨부하였습니다.
TPDM 대신에 다른 값으로 수정하여 사용하려는 경우 다운로드하여 사용하세요.
추가로, 나-2. 에 해당되고 Interrupt (GPIO) 모드를 사용하려는 경우에는 GPIO Pin 에 해당하는 Object 인 SBFG 의 Pin List 에
APIC Pin 의 값을 통하여 구한 GPIO Pin 의 값 수정하고 적용해야 했었습니다.
그런데, 현재 최신 버전의 VoodooI2C 는 자동으로 APIC Pin 의 값을 추출하고 GPIO Pin 의 값을 계산하여 적용합니다.
그래서, Pin List 를 수정하지 않고 0x0000 으로 그대로 두고 _CRS Method 만 패치해주면 되지만
만약, 작동하지 않을 경우에는 전에 제가 작성한 아래의 글을 참고하여 구한 GPIO Pin 의 값들을 하나씩 적용해보면서 되는 값을 찾으셔야 합니다.
https://x86.co.kr/info/6173668
조금 다른 예제로, SBFB 대신에 I2CM Method 를 사용하는 경우가 있습니다.
일부 노트북은 _CRS Method 를 보면 아래의 사진과 같이
SBFB 대신에 I2CM (I2CX, BADR, SPED) 라는 복잡한 Object 가 들어가 있습니다.
이는 아래의 사진과 같이 I2CM Method 에 정의되어 있는 I2cSerialBusV2 를 사용하는 것입니다.
하지만, SBFB 대신에 I2CM (I2CX, BADR, SPED) 를 사용하는 것이기 때문에
I2CM (I2CX, BADR, SPED) 를 SBFB 라고 가정하고 패치를 진행하면 됩니다.
이와 비슷한 사례로, I2C 방식의 삼성 노트북은 SPTP Device 를 보면 SBFB 대신에 SBFS 로 정의되어 있습니다.
ConcatenateResTemplate (SBFB, SBFG) 가 아닌
ConcatenateResTemplate (SBFS, SBFG) 로 패치하면 됩니다.
실제로, I2C 방식의 터치패드인 일부 삼성 노트북의 OEM DSDT 에서 SPTP Device 의 _CRS Method 내용은 다음과 같습니다.
MINT 라는 FieldUnitObject 에 Zero (0) 값을 할당하도록 패치하면 됩니다.
I2C 터치패드에 해당하는 Device 의 _CRS Method 패치를 완료하였다면 기본적인 VoodooI2C 의 ACPI 패치는 완료되었습니다. :)
수정 및 패치가 완료된 ACPI 및 SSDT 패치를 적용하고 다시 부팅해서 I2C 터치패드가 제스처까지 정상적으로 잘 작동하는지 확인해보세요.
만약, 안 될 경우에는 로그를 확인하고 필요한 경우 추가적인 패치를 진행해야 하는 것일 수도 있습니다.
주로, I2C Bus 속도 상수 활성화 패치(USTP, SSCN, FMCN) 입니다.
macOS 에서 I2C Bus 속도 상수인 SSCN 과 FMCN 이 누락되어서 I2C 방식의 터치패드가 작동하지 않는 경우에는
VoodooI2C 의 Log 에서 해당 부분에 대하여 오류가 표시될 것이며 SSCN 및 FMCN 도 활성화하거나 추가로 인젝션해야 합니다.
먼저, OEM DSDT 에서 USTP 를 검색해 봅니다.
USTP, 8, 이렇게 FieldUnitObject 가 정의된 것 하나만 나온다면 SSCN 과 FMCN 활성화하는 USTP 구문이 없는 것이며
이의 경우에는 I2C 터치패드가 존재하는 Scope 에 SSCN 과 FMCN 을 직접 인젝션하여 추가하면 됩니다.
I2C Bus 속도 상수인 SSCN 과 FMCN 을 추가하는 SSDT 를 첨부합니다.
I2C 터치패드에 해당하는 Device 의 경로에 맞는 SSDT 로 다운로드하고 적용해주세요.
또는, 위의 SSDT-I2Cx-SPED.aml 이 잘 작동하지 않는다면
아래에 첨부한 SSDT-I2C-SPEED.aml 을 사용해보세요.
I2C0 Device 와 I2C1 Device 의 Scope 에 모두 사용할 수 있으며
SSCN 과 FMCN 모두 PKG3 Method 를 사용하는 차이점이 있습니다.
만약, USTP 를 검색했을 때 아래의 사진과 같이 If (USTP) 구문이 있고 그 하위 부분에 SSCN, FMCN 등의 Object 가 있다면
USTP 의 값을 One 으로 할당하거나 I2C 터치패드에 해당하는 Device 의 Scope 경로에 Name (USTP, One) 을 새로 정의해줘도 됩니다.
뽀로로님의 SSDT-I2C1_USTP.aml 을 예제로 보면 다음과 같습니다.
Rename USTP to XSTP 패치를 굳이 적용하지 않아도 됩니다.
SSDT-I2C1_USTP.aml 파일을 첨부합니다.
만약, I2C 터치패드에 해당하는 Device 의 경로가 I2C0 등으로 다르다면 수정하고 적용해야 합니다.
또는, 만약 SSCN, FMCN 을 검색해 보았을 때 USTP 라는 Object 에 관계없이
아래의 사진처럼 SSCN 과 FMCN 이 직접 정의되어 있다면 I2C Bus 속도 상수가 이미 활성화되어 있는 상태이며
이의 경우에는 SSCN 과 FMCN 을 활성화하는 패치가 필요하지 않습니다.
I2C Bus 속도 상수인 SSCN 과 FMCN 패치에 대한 추가적인 내용은 아래의 GitHub 사이트를 참고해보세요.
https://github.com/5T33Z0/OC-Little-Translated/tree/main/05_Laptop-specific_Patches/Trackpad_Patches/I2C_TrackPad_Patches
추가로, ASUS 노트북의 I2C 터치패드를 Polling 모드로 작동시키는 과정과
Preset Variable Method (PVM) 방식으로 패치하는 과정에 대해서
예전에 뽀로로님이 작성하신 글도 같이 참고하면 좋을 것 같습니다.
https://x86.co.kr/info/3629205
https://x86.co.kr/info/3770221
🍃 3. 마무리
_CRS Method 패치와 추가적인 패치도 완료하였다면 VoodooI2C 의 ACPI 패치는 모두 완료되었습니다. :)
수정 및 패치가 완료된 ACPI 및 SSDT 패치를 적용하고 다시 부팅해서 I2C 터치패드가 제스처까지 정상적으로 잘 작동하는지 확인해보세요.
macOS 에서 VoodooI2C 로 I2C 터치패드를 패치하는 데에 많은 도움이 되었으면 좋겠습니다. ✨
혹시, 만약 너무 어렵거나 도저히 패치하지 못 하겠다면 본 글의 내용대로 ACPI 를 패치할 필요 없이
VoodooI2C 와 VoodooI2CHID 만 넣고 -vi2c-force-polling 부트 옵션을 추가하여 강제로 Polling 모드로 작동을 시도해보는 방법도 있습니다.
단, Polling 모드는 Interrupt (GPIO 또는 APIC) 모드보다 상대적으로 전력 소모율이 살짝 더 높고 성능 효율이 낮다는 점을 감안해야 합니다.
☕️ VoodooI2C 의 Troubleshooting (문제 해결)
방법 1. 아래에 제시된 파일을 첨부하여 질문글을 작성하는 방법이 있습니다.
1. 추출한 IOReg 덤프
2. EFI 폴더
3. GenI2C 앱의 Information 화면 스크린샷
4. DebugEnhancer.kext 를 추가하고 다시 부팅한 후에 터미널에서 아래의 명령어를 실행한 결과
sudo dmesg | grep -i "Voodoo"
방법 2. 아래의 VoodooI2C Troubleshooting GitHub 사이트를 참고하여
요구하는 파일, 시스템 사양, 로그 및 오류 정보 등을 첨부하여 VoodooI2C 의 Gitter 에서 영어로 질문글을 작성하는 방법이 있습니다.
https://github.com/VoodooI2C/VoodooI2C/blob/master/Documentation/Troubleshooting.md
https://gitter.im/alexandred/VoodooI2C
❄️ Github 출처 및 참고한 사이트
https://voodooi2c.github.io/#Installation/Installation
https://github.com/VoodooI2C/VoodooI2C
https://github.com/5T33Z0/OC-Little-Translated
https://uefi.org/specifications
https://uefi.org/sites/default/files/resources/ACPI_Spec_6_4_Jan22.pdf
자세한 설명 감사합니다. 저는 몇 번 시도하다 지금 사용하는 상태로 계속 두었었는데 한 번 시도해보고 싶게 하는 글이네요.
질문좀 드려도 될까요? 저는ideapad S340-14iwl 사용중입니다.
몇가지 방법으로 인터럽트(gpio)와 인터럽트(apic)를 가능하게 해봤고 여태 polling 모드로 사용중입니다만,,
인터럽트 방식의 장점에 대해 혹시 여쭤봐도 될런지요?(제가 전문지식이 없어서..ㅠㅠ)
오리지널 irq 는 0x50이라서 gpio pinning 값으로 0x000108로 하면 커서 움직임이 상당히 둔해지고 CPU가 하이클럭 상태입니다..
편법으로 사용하지 않는 irq 값 12를 오리지널 irq 0x50과 대체하여 0x00000C 로 변경하면 <3F 가 되어 apic로 작동하는데 gpio로 작동하는 것 보다는 약간 부드러워지지만 polling 모드보다는 역시 많이 둔하고 CPU 하이클럭도 마찬가지네요..
가이드에는 You can think of polling mode as the "safe boot" mode of VoodooI2C. As such it is a suitable mode for use during the installation of macOS. Polling mode is also suitable for people who machines with buggy GPIO implementation (such as various ASUS laptops).
마치 인터럽트 모드가 더 나은 것으로 소개하고 있는데 말이지요..
혹시, BIOS 가 최신 버전(ALCN33WW)이 아니라면 아래의 사이트에서 최신 버전으로 업데이트를 진행해보세요.
또한, BIOS 설정에서 Force unlock on all GPIO pads 를 Enabled 로 설정해보세요.
아래의 사이트를 참고하여 BIOS 의 Hidden 설정 메뉴를 Unlock 해보세요.
구글에서 해당 모델 노트북의 OEM DSDT 를 확인해 보았는데
저의 생각으로는 TPAD Device 의 APIC Pin 값이 원래 2F 를 초과하므로
다른 IRQ 값을 적용하더라도 Interrupt (APIC) 모드는 잘 작동하지 않을 것 같다는 생각이 듭니다.
와!!! 628님은 정말 고수이시군요!..답변감사합니다..
히든메뉴 언락 방법은 진작에 알고 있었는데 Force unlock on all GPIO pads 라는 항목을 찾아가보니 disabled 로 되어있더군요...enabled로 바꾸고 재부팅하면서 gpio 핀을 irq 0x50 에 맞는 계산값 0x0108로 할당해보니까 마우스 커서 움직임이 예전 polling 모드 처럼 부드러워지고 CPU 클럭도 안정화 되었습니다...거짓말같고 꿈같네요...이걸 모르고 헤메고 있었다니...체감상 polling 모드와 크게 달라진것 없는것 같으나....5~6년이나 묵은 마음의 짐을 덜어내고 평화가 찾아왔습니다..ㅎㅎ
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 조회 수 | 날짜 | 글쓴이 |
---|---|---|---|
macOS Sequoia 15.0.1 24A348 정식버젼 고스트 이미지 OC 1.0.2 ft: 전체공개 +28 | 727 | 24.10.1121:10 | 좌절금지 |
오픈코어 1.0.2 +22 | 540 | 24.10.0900:22 | 줌바이퍼 |
[중급편] 노트북 해킨 +16 | 1363 | 24.07.1219:19 | Stultus |
macOS Ventura 13.7 22H123 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체 공개 +16 | 557 | 24.09.1917:09 | 좌절금지 |
macOS Sonoma 14.7 23H124 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체공개 +31 | 889 | 24.09.1723:58 | 좌절금지 |
[초급편] 문제 스스로 해결하기 +20 | 3975 | 24.03.2920:07 | Stultus |
[입문편] 첫 해킨 길라잡이 +40 | 5032 | 24.01.1218:54 | Stultus |
[필독 - 안정화] macOS 해킨토시 설치 후 안정화 작업 목록 및 글타래 모음 총정리 📋 +67 | 5.1만 | 23.01.0913:39 | shl628 |
451 | 24.10.1412:27 | shl628 | |
583 | 24.10.1316:00 | 수박 | |
320 | 24.10.1222:56 | Stultus | |
727 | 24.10.1121:10 | 좌절금지 | |
401 | 24.10.1115:53 | 수박 | |
540 | 24.10.0900:22 | 줌바이퍼 | |
1363 | 24.07.1219:19 | Stultus | |
1167 | 24.10.0500:31 | 줌바이퍼 | |
562 | 24.10.0410:49 | Tamy | |
731 | 24.09.2923:48 | 머트 | |
622 | 24.09.2822:28 | 머트 | |
446 | 24.09.2808:22 | Tamy | |
876 | 24.09.2321:32 | Stultus | |
990 | 24.09.2210:59 | 좌절금지 | |
626 | 24.09.2203:23 | 누림어멈 | |
1158 | 24.09.1919:17 | 좌절금지 | |
557 | 24.09.1917:09 | 좌절금지 | |
496 | 24.09.1813:37 | Stultus | |
889 | 24.09.1723:58 | 좌절금지 | |
590 | 24.09.1722:40 | 좌절금지 | |
450 | 24.09.1717:13 | 맥가즈아 | |
555 | 24.09.1708:13 | 김경석 | |
226 | 24.09.1617:47 | Panictosh | |
758 | 24.09.1504:35 | Tamy | |
577 | 24.09.1319:18 | Stultus | |
693 | 24.09.1019:44 | 치토 | |
482 | 24.09.0118:13 | 머핀X | |
447 | 24.09.0112:54 | 해킨도전자 | |
536 | 24.08.3115:34 | 머핀X | |
299 | 24.08.2601:42 | 화정큐삼 | |
300 | 24.08.2422:59 | 하나브 | |
315 | 24.08.2316:25 | 화정큐삼 | |
411 | 24.08.1810:56 | CanBe | |
358 | 24.08.1800:04 | 화정큐삼 | |
297 | 24.08.1722:03 | 화정큐삼 | |
197 | 24.08.1710:14 | jbhlyk | |
309 | 24.08.1622:06 | Stultus | |
214 | 24.08.1511:16 | hackillious | |
161 | 24.08.1421:30 | 세유니 | |
416 | 24.08.1419:58 | Stultus | |
375 | 24.08.1311:26 | 오디세이 | |
253 | 24.08.1115:46 | 좌절금지 | |
184 | 24.08.1111:21 | 티타보르 | |
231 | 24.08.1022:46 | Stultus | |
521 | 24.08.1022:10 | 오디세이 | |
166 | 24.08.1019:05 | jbhlyk | |
192 | 24.08.0923:20 | RogerT | |
336 | 24.08.0717:18 | 좌절금지 | |
129 | 24.08.0609:17 | RogerT | |
568 | 24.08.0606:14 | 줌바이퍼 | |
86 | 24.08.0523:34 | jbhlyk | |
260 | 24.08.0521:10 | 수인과윤슈 | |
880 | 24.08.0521:08 | 좌절금지 | |
603 | 24.08.0221:07 | Stultus | |
389 | 24.07.3019:12 | Tamy | |
340 | 24.07.2915:37 | 해킨도전자 | |
272 | 24.07.2813:52 | june119 | |
301 | 24.07.2112:43 | Stultus | |
4030 | 23.05.0502:19 | BlueGuerrilla | |
3727 | 21.08.0213:10 | 김태국 | |
275 | 24.07.1122:47 | Stultus | |
211 | 24.07.1020:44 | Stultus | |
247 | 24.07.0921:44 | Stultus | |
370 | 24.07.0820:57 | Stultus | |
198 | 24.07.0811:28 | 의정이 | |
381 | 24.07.0721:25 | Stultus | |
357 | 24.07.0604:41 | bsiugr | |
643 | 24.07.0509:56 | 애플브리크 | |
2434 | 24.02.1715:21 | 광호 | |
470 | 24.06.2723:24 | 치토 | |
239 | 24.06.2617:24 | talas | |
155 | 24.06.2120:58 | 블루사탕 | |
551 | 24.06.1609:01 | gtrfxdsp | |
387 | 24.06.1401:04 | Mactopia | |
848 | 24.06.1120:40 | Stultus | |
762 | 24.06.1115:07 | 새콤칠리 | |
118만 | 23.02.2118:35 | 좌절금지 | |
311 | 24.06.1001:11 | Steer | |
210 | 24.06.0810:09 | Door | |
466 | 24.06.0107:41 | Tamy |
내용은 잘 몰라도... 정성글은 추천입니다...