시스템 사양 선택 | 1번 |
---|
가끔, GenI2C 가 터치패드와 관련된 SSDT Hot Patch 를 생성하면서
일부 External References 를 자동으로 감지하여 수정하더라도
여전히 자동으로 해결할 수 없는 일부 External References 가 있다고 합니다.
이 경우에는 우리가 누락된 부분을 직접 External Declaration 하여 수동으로 Fix 를 해줘야 한다고 합니다. :)
GenI2C 를 사용하여 터치패드와 관련된 SSDT Hot Patch 가 생성된 폴더로 들어가면
다음 사진과 같이 SSDT-GPI0.dsl 은 SSDT-GPI0.aml 로 컴파일되어 저장이 되었지만
SSDT-TPAD.dsl 파일은 그렇지 않은 것을 볼 수 있습니다.
확장자가 .aml 의 형태로 컴파일되어 저장되어 있지 않습니다.
🌿 누락된 External References 를 찾기
SSDT-TPAD.dsl 을 MaciASL 로 열고 컴파일 버튼을 누르면
다음 사진과 같이 Object does not exist 라는 Error 가 발생하는 것을 볼 수 있습니다.
ADR0, TPDF, TPID 라는 Object 에 해당하는 External References 가 없기 때문입니다.
ADR0, TPDF, TPID 라는 Object 는 DSDT 에 정의되어 존재하는 것을 확인할 수 있으며
외부의 DSDT 로부터 참조하므로 해당 Object 에 대한 External Declaration 을 추가해야 합니다.
☘️ Object's 의 유형을 파악하기
이제, 우리는 누락된 External References 에 해당하는 Object's 의 유형을 파악할 것입니다.
PkgObj 는 다음과 같이 나타납니다.
Name (TPID, Package (0x08)
{
...
}
IntObj 는 다음과 같이 나타납니다.
CreateWordField (SBFB, \_SB.PCI0.I2Cx.xxxx._Yxx._ADR, ADR0)
Field 에서 정의되어 있는 Object 는 다음과 같이 나타납니다.
TPDF 라는 Object 가 COMP 라는 SystemMemory Region 에서 COMP 라는 Field 에 정의되어 있습니다.
이의 올바른 해결 방법은 SSDT 에 동일한 Region 과 Field 를 입력하여 생성하고 해당 Object 를 입력하는 것입니다.
OperationRegion (COMP, SystemMemory, 0x89C8D018, 0x0200)
Field (COMP, AnyAcc, Lock, Preserve)
{
TPDF, 8
}
그러면, 다음 사진과 같이 입력하여 수정할 수 있습니다.
위의 Region 및 Field 는 예제일 뿐이며, 위의 구문을 그대로 복사하여 사용하지 마세요. 자신의 DSDT 에서 정의되어 있는 Region & Field 구문을 사용해주세요.
그 외 나머지 Object's 의 유형은 다음과 같습니다.
- Method 인 경우 : MethodObj
- Device 인 경우 : DeviceObj
- Field 에 정의된 경우 : FieldUnitObj
참고로, 이러한 Object 는 일반적으로 _CRS Method 에서 사용되지 않으므로 더 이상의 설명은 없을 것이라고 합니다.
이 문서에 문제가 있는 경우 UEFI.org 의 ACPI Specification 기술 문서를 확인해보세요.
https://uefi.org/sites/default/files/resources/ACPI_6_3_May16.pdf
🍀 Object's 의 경로를 확인하기
OEM DSDT 에서 I2C 방식의 터치패드 및 터치스크린과 관련된 장치는 거의 모두 \_SB.PCI0.I2C~ 라는 Scope 를 경유합니다.
노트북의 기종마다 다르며 터치패드가 I2C0 / I2C1 / I2C2 / I2C3 ... 등의 Scope 중에서 어느 부분에 해당하는지는 직접 확인해야 합니다.
누락된 Object's 는 거의 모두 I2C 장치의 경로에 존재하며, 해당 Object's 의 경로가 _SB.PCI0.I2Cx 가 아니라면 올바른 경로인지 확인해주세요.
위의 Field 예제에서 Field 를 작성하였으므로 해당 Field 에 대한 External Declaration 을 추가할 필요가 없습니다.
🌷 External Declaration 을 생성하기
SSDT 의 상단 부분에 누락된 External References 를 입력하여 추가하면 됩니다.
다음과 같은 External References 는 이미 입력되어 있을 것이며 아래 부분에 새로 입력하여 추가하면 됩니다.
External(_SB.PCI0.I2C1.TPAD, DeviceObj)
External(_SB.PCI0.I2C1.TPAD.SBFB, IntObj)
External(_SB.PCI0.I2C1.TPAD.SBFG, IntObj)
External(OSYS, FieldUnitObj)
External(_SB.PCI0.I2C1.TPAD.HID2, IntObj)
...
External References 의 형태는 다음과 같습니다.
External ("Path", "Object Type")
- Path 에는 해당 Object 의 이름을 포함하여 경로를 입력합니다.
- Object Type 에는 해당 Object 의 유형을 입력합니다.
위의 예제를 바탕으로 External Declaration 을 추가한다면
TPDF 라는 Object 는 Region 과 Field 를 생성하는 방법으로 해결하였으므로
TPID 과 ADR0 Object's 만 해결하면 됩니다.
- TPID 의 경우 : External (_SB.PCI0.I2C1.TPAD.TPID, PkgObj)
- ADR0 의 경우 : External (_SB.PCI0.I2C1.TPAD.ADR0, IntObj)
그러면, 최종적으로 다음 사진과 같이 수정이 완료될 것입니다.
누락된 Object's 를 SSDT 에 직접 복사하여 입력하는 방식으로 문제를 해결한 경우에는 OEM DSDT 에 정의되어 있는 원래의 Object's 의 이름을 다른 이름으로 Rename 하는 작업이 필요합니다.
🌻 참고 : GenI2C 가 자동으로 생성하는 External References 는 다음과 같습니다.
- External (_SB.PCI0.I2CM, MethodObj)
- External (_SB.PCI0.I2Cx.I2CX, UnknownObj)
- External (_SB.PCI0.I2Cx.xxxx.BADR, IntObj)
- External (_SB.PCI0.I2Cx.xxxx.SPED, IntObj)
- External (_SB.PCI0.I2Cx.xxxx.HID2, UnknownObj)
- External (_SB.PCI0.I2Cx.xxxx.SBFB, UnknownObj) *
- External (_SB.PCI0.I2Cx.xxxx.SBFI, UnknownObj) *
- External (_SB.PCI0.I2Cx.xxxx.SBFG, UnknownObj) *
- External references inside " If (( " , " If LLess ( " , " If LEqual ( " will be automatically created as FieldUnitObj.
* Interrupt Controller 의 이름은 DSDT 에서 사용된 Controller 에 따라 달라집니다.
🌾 External References 수정 작업을 완료하고 마무리하기
누락된 External References 를 입력 및 수정하여 Declaration 하는 작업을 모두 완료였습니다.
다음 사진과 같이 컴파일 버튼을 눌러도 Error 가 발생하지 않는 모습을 볼 수 있습니다.
⭐️ 이제, 수정한 SSDT 를 확장자가 .aml 인 형태로 컴파일하여 저장하고 적용하면 모두 완료됩니다. :)
❄️ Github 출처 및 참고한 사이트
https://github.com/williambj1/GenI2C/wiki/Manually-fix-missing-External-references-within-SSDT-En
shl628님의 새글 알림을 받으실려면 구독
*적용중인 도장
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|
macOS Ventura 13.7 22H123 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체 공개 +2 | 좌절금지 | 24.09.1917:09 | 55 |
macOS Sonoma 14.7 23H124 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체공개 +13 | 좌절금지 | 24.09.1723:58 | 167 |
[중급편] 노트북 해킨 +8 | Stultus | 24.07.1219:19 | 746 |
[초급편] 문제 스스로 해결하기 +17 | Stultus | 24.03.2920:07 | 3526 |
[입문편] 첫 해킨 길라잡이 +32 | Stultus | 24.01.1218:54 | 4291 |
[필독 - 안정화] macOS 해킨토시 설치 후 안정화 작업 목록 및 글타래 모음 총정리 📋 +63 | shl628 | 23.01.0913:39 | 5만 |
Sonoma 14.7(23H124) i9-12900, GA-Z690 Proart Creator + BCM WiFi Support +2 | 좌절금지 | 24.09.1722:40 | 190 |
OpenCore Legacy Patcher 2.0.1 +2 | 김경석 | 24.09.1708:13 | 214 |
2020 그램 sonoma efi 15Z90N +1 | 맥가즈아 | 24.09.1717:13 | 83 |
좌절금지 | 24.09.1919:17 | 111 | |
좌절금지 | 24.09.1917:09 | 55 | |
좌절금지 | 24.09.1723:58 | 167 | |
좌절금지 | 24.09.1722:40 | 190 | |
김경석 | 24.09.1708:13 | 214 | |
Tamy | 24.09.1504:35 | 462 | |
Stultus | 24.09.1319:18 | 430 | |
치토 | 24.09.1019:44 | 466 | |
해킨도전자 | 24.09.0112:54 | 293 | |
머핀X | 24.08.3115:34 | 369 | |
화정큐삼 | 24.08.2601:42 | 238 | |
하나브 | 24.08.2422:59 | 205 | |
화정큐삼 | 24.08.2316:25 | 247 | |
CanBe | 24.08.1810:56 | 327 | |
화정큐삼 | 24.08.1800:04 | 205 | |
화정큐삼 | 24.08.1722:03 | 189 | |
Stultus | 24.08.1419:58 | 345 | |
오디세이 | 24.08.1311:26 | 270 | |
좌절금지 | 24.08.1115:46 | 194 | |
Stultus | 24.08.1022:46 | 183 | |
RogerT | 24.08.0609:17 | 115 | |
jbhlyk | 24.08.0523:34 | 81 | |
수인과윤슈 | 24.08.0521:10 | 185 | |
Stultus | 24.08.0221:07 | 421 | |
Tamy | 24.07.3019:12 | 328 | |
Stultus | 24.07.2112:43 | 231 | |
Stultus | 24.07.1219:19 | 746 | |
Stultus | 24.07.1122:47 | 215 | |
Stultus | 24.07.1020:44 | 137 | |
Stultus | 24.07.0921:44 | 137 | |
Stultus | 24.07.0820:57 | 223 | |
Stultus | 24.07.0721:25 | 264 | |
bsiugr | 24.07.0604:41 | 287 | |
애플브리크 | 24.07.0509:56 | 491 | |
치토 | 24.06.2723:24 | 397 | |
Stultus | 24.06.1120:40 | 725 | |
Stultus | 24.04.3022:28 | 1097 | |
Stultus | 24.04.2718:46 | 1006 | |
Stultus | 24.04.1312:15 | 3048 | |
Stultus | 24.04.0712:49 | 2900 | |
Stultus | 24.04.0619:59 | 1530 | |
Stultus | 24.04.0613:43 | 1468 | |
Stultus | 24.04.0521:57 | 2555 | |
Stultus | 24.03.2920:07 | 3526 | |
Stultus | 24.03.2823:08 | 1410 | |
Stultus | 24.03.2322:35 | 1120 | |
Stultus | 24.03.2123:12 | 769 | |
Stultus | 24.03.0818:26 | 645 | |
Stultus | 24.02.1621:54 | 1088 | |
Stultus | 24.01.2321:47 | 941 | |
Stultus | 24.01.1218:54 | 4291 | |
Stultus | 24.01.1121:20 | 844 | |
Stultus | 24.01.0921:31 | 902 | |
Stultus | 24.01.0822:35 | 1330 | |
Stultus | 23.11.0920:54 | 4532 | |
Stultus | 23.10.2723:10 | 6430 | |
Stultus | 23.10.2722:40 | 6432 | |
Stultus | 23.10.2100:08 | 6965 | |
Stultus | 23.10.1700:57 | 3490 | |
Stultus | 23.09.2707:11 | 4703 | |
Stultus | 23.09.1022:47 | 8858 | |
Stultus | 23.08.2521:36 | 9224 | |
Stultus | 23.08.2313:42 | 9504 | |
Stultus | 23.08.2216:27 | 3862 | |
Stultus | 23.08.2115:14 | 9666 | |
Stultus | 23.08.2114:43 | 1만 | |
Stultus | 23.07.1318:42 | 1.6만 | |
Stultus | 23.07.0619:38 | 1.2만 | |
Stultus | 23.05.2512:02 | 1.7만 | |
Stultus | 23.04.0517:11 | 2.3만 | |
Stultus | 23.03.2800:39 | 5733 | |
Stultus | 23.03.2313:35 | 1.4만 | |
Stultus | 23.03.1211:40 | 3.2만 | |
Stultus | 23.03.0621:32 | 4.1만 | |
shl628 | 23.01.0913:39 | 5만 | |
곰비 | 21.02.1223:08 | 1311 | |
JGP | 21.02.1115:54 | 1985 | |
닉네임이당 | 21.02.1001:47 | 1344 | |
HKDavid | 21.02.0822:41 | 2076 | |
자유로이 | 21.02.0819:08 | 1264 |
말씀대로 SSDT-TPAD.dsl 파일은 컴파일도 안되고하길래
무시했는데 이걸 안넣어서 작동을 안하는거였을까요?
geni2c에서 deviceName이 enub으로만 나와서 너무 스트레스 받았는데
한번 해봐야겠습니다 ㅎㅎ