시스템 사양 선택 | 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: 전체 공개 +3 | 좌절금지 | 24.09.1917:09 | 79 |
macOS Sonoma 14.7 23H124 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체공개 +16 | 좌절금지 | 24.09.1723:58 | 189 |
[중급편] 노트북 해킨 +8 | Stultus | 24.07.1219:19 | 759 |
[초급편] 문제 스스로 해결하기 +17 | Stultus | 24.03.2920:07 | 3542 |
[입문편] 첫 해킨 길라잡이 +32 | Stultus | 24.01.1218:54 | 4302 |
[필독 - 안정화] macOS 해킨토시 설치 후 안정화 작업 목록 및 글타래 모음 총정리 📋 +63 | shl628 | 23.01.0913:39 | 5만 |
macOS Sequoia 15 설치 후기 + Bcm94360NG WiFi 작동함 | 좌절금지 | 24.09.1919:17 | 240 |
[ Sequoia 15.0, OC 1.0.1 ] BIOSTAR H410MH, i5-10500, RX580 | Stultus | 24.09.1813:37 | 169 |
좌절금지 | 24.09.1919:17 | 240 | |
좌절금지 | 24.09.1917:09 | 79 | |
Stultus | 24.09.1813:37 | 169 | |
좌절금지 | 24.09.1723:58 | 189 | |
좌절금지 | 24.09.1722:40 | 211 | |
맥가즈아 | 24.09.1717:13 | 91 | |
김경석 | 24.09.1708:13 | 223 | |
Panictosh | 24.09.1617:47 | 101 | |
Tamy | 24.09.1504:35 | 469 | |
Stultus | 24.09.1319:18 | 438 | |
치토 | 24.09.1019:44 | 475 | |
머핀X | 24.09.0118:13 | 397 | |
해킨도전자 | 24.09.0112:54 | 298 | |
머핀X | 24.08.3115:34 | 376 | |
화정큐삼 | 24.08.2601:42 | 241 | |
하나브 | 24.08.2422:59 | 213 | |
화정큐삼 | 24.08.2316:25 | 249 | |
CanBe | 24.08.1810:56 | 330 | |
화정큐삼 | 24.08.1800:04 | 205 | |
화정큐삼 | 24.08.1722:03 | 190 | |
jbhlyk | 24.08.1710:14 | 167 | |
Stultus | 24.08.1622:06 | 252 | |
hackillious | 24.08.1511:16 | 159 | |
세유니 | 24.08.1421:30 | 124 | |
Stultus | 24.08.1419:58 | 348 | |
오디세이 | 24.08.1311:26 | 272 | |
좌절금지 | 24.08.1115:46 | 194 | |
티타보르 | 24.08.1111:21 | 141 | |
Stultus | 24.08.1022:46 | 183 | |
오디세이 | 24.08.1022:10 | 394 | |
jbhlyk | 24.08.1019:05 | 127 | |
RogerT | 24.08.0923:20 | 145 | |
좌절금지 | 24.08.0717:18 | 286 | |
RogerT | 24.08.0609:17 | 115 | |
줌바이퍼 | 24.08.0606:14 | 463 | |
jbhlyk | 24.08.0523:34 | 81 | |
수인과윤슈 | 24.08.0521:10 | 186 | |
좌절금지 | 24.08.0521:08 | 838 | |
Stultus | 24.08.0221:07 | 429 | |
Tamy | 24.07.3019:12 | 343 | |
해킨도전자 | 24.07.2915:37 | 264 | |
june119 | 24.07.2813:52 | 233 | |
Stultus | 24.07.2112:43 | 246 | |
BlueGuerrilla | 23.05.0502:19 | 3995 | |
Stultus | 24.07.1219:19 | 759 | |
김태국 | 21.08.0213:10 | 3679 | |
Stultus | 24.07.1122:47 | 215 | |
Stultus | 24.07.1020:44 | 138 | |
Stultus | 24.07.0921:44 | 137 | |
Stultus | 24.07.0820:57 | 223 | |
의정이 | 24.07.0811:28 | 172 | |
Stultus | 24.07.0721:25 | 264 | |
bsiugr | 24.07.0604:41 | 288 | |
애플브리크 | 24.07.0509:56 | 495 | |
광호 | 24.02.1715:21 | 2188 | |
치토 | 24.06.2723:24 | 399 | |
talas | 24.06.2617:24 | 193 | |
블루사탕 | 24.06.2120:58 | 116 | |
gtrfxdsp | 24.06.1609:01 | 514 | |
Mactopia | 24.06.1401:04 | 345 | |
Stultus | 24.06.1120:40 | 730 | |
새콤칠리 | 24.06.1115:07 | 672 | |
좌절금지 | 23.02.2118:35 | 118만 | |
Steer | 24.06.1001:11 | 276 | |
Door | 24.06.0810:09 | 155 | |
Tamy | 24.06.0107:41 | 417 | |
ssdwe346 | 24.05.2923:53 | 299 | |
joy | 24.05.2809:58 | 267 | |
거니 | 24.05.2601:07 | 243 | |
RogerT | 24.05.2520:14 | 247 | |
좌절금지 | 24.05.1812:40 | 915 | |
wjdgkdus | 24.05.1615:02 | 213 | |
Tamy | 24.05.1417:36 | 797 | |
줌바이퍼 | 24.05.1002:04 | 1008 | |
의정이 | 24.05.0821:05 | 144 | |
ryzen | 23.10.0921:28 | 2411 | |
챠니앤차니 | 24.05.0319:15 | 146 | |
챠니앤차니 | 24.05.0220:17 | 175 | |
고맹이 | 24.05.0210:00 | 635 | |
shl628 | 24.04.3013:54 | 1067 |
말씀대로 SSDT-TPAD.dsl 파일은 컴파일도 안되고하길래
무시했는데 이걸 안넣어서 작동을 안하는거였을까요?
geni2c에서 deviceName이 enub으로만 나와서 너무 스트레스 받았는데
한번 해봐야겠습니다 ㅎㅎ