질문용 시스템 사양 | 1번 |
---|---|
추가사양 및 설치(할)OS | Catalina 10.15.6 |
공지숙지/증상설명 | 숙지 |
HDMI 때문에 2주간 고생하다가 글을 올립니다. 문제는 HDMI 싸운드가 되다 말다 합니다.
가끔 만지다가 우연히 HDMI가 동작하면 리부팅을 하거나 혹은 부트캠프로 윈도우를 다녀오면 또다시 안됩니다.
레이아웃은 1220 권장은 다 시도해본것 같고, 버전도 여러개 테스트 해보았으나, 최신개발빌드가 가장 낳았습니다.
버전이 낮아지면 되던 헤드셋도 안되고 하는 경우가 많이 생기더라구요.
제가 무슨 과정을 잘못하고 있는건지 고수님들의 도움이 필요 합니다.
헤드레스로 인텔 그래픽은 사용하고 RX580에 2개의 HDMI로 모니터를 연결 합니다.
FakePCIID_Intel_HDMI_Audio 또한 사용해보았으나 로드되지 않아도 HDMI오디오가 작동할때 있고 로드되어도 작동하지 않고.. 큰 의미가 없었습니다.
OpenCore 0.59, 0.60과 AppleALC layout-id 7번으로 하기 디바이스를 전부 테스트를 진행 하였습니다.
00:1b.0 8086:06c0 /PCI0@0/RP17@1B = PciRoot(0x0)/Pci(0x1B,0x0)
01:00.1 1002:aaf0 /PCI0@0/PEG0@1/HDAU@0,1 = PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x1)
00:1f.3 8086:06c8 /PCI0@0/HDEF@1F,3 = PciRoot(0x0)/Pci(0x1F,0x3)
RX580의 SSDT는 하기와 같습니다.
/*
* Intel ACPI Component Architecture
* AML/ASL+ Disassembler version 20180427 (64-bit version)(RM)
* Copyright (c) 2000 - 2018 Intel Corporation
*
* Disassembling to non-symbolic legacy ASL operators
*
* Disassembly of iASLavuS5S.aml, Fri Jul 31 05:28:10 2020
*
* Original Table Header:
* Signature "SSDT"
* Length 0x000005D3 (1491)
* Revision 0x01
* Checksum 0xA5
* OEM ID "AMD"
* OEM Table ID "RX580"
* OEM Revision 0x00000000 (0)
* Compiler ID "INTL"
* Compiler Version 0x20180427 (538444839)
*/
DefinitionBlock ("", "SSDT", 1, "AMD", "RX580", 0x00000000)
{
External (_SB_.PCI0.PEG0, DeviceObj) // (from opcode)
External (_SB_.PCI0.PEG0.PEGP, DeviceObj) // (from opcode)
External (BRTL, IntObj) // (from opcode)
External (DTGP, MethodObj) // 5 Arguments (from opcode)
External (EGPS, IntObj) // (from opcode)
External (PEGP, DeviceObj) // (from opcode)
Scope (_SB.PCI0.PEG0)
{
Scope (PEGP)
{
Name (_STA, Zero) // _STA: Status
}
Device (GFX0)
{
Name (_ADR, Zero) // _ADR: Address
Name (ATIB, Buffer (0x0100){})
Method (ATIF, 2, Serialized)
{
If (LEqual (Arg0, Zero))
{
Return (AF00 ())
}
If (LEqual (Arg0, One))
{
Return (AF01 ())
}
If (LEqual (Arg0, 0x02))
{
Return (AF02 ())
}
Else
{
CreateWordField (ATIB, Zero, SSZE)
CreateWordField (ATIB, 0x02, VERN)
CreateDWordField (ATIB, 0x04, NMSK)
CreateDWordField (ATIB, 0x08, SFUN)
Store (Zero, SSZE)
Store (Zero, VERN)
Store (Zero, NMSK)
Store (Zero, SFUN)
Return (ATIB)
}
}
Method (AF00, 0, NotSerialized)
{
CreateWordField (ATIB, Zero, SSZE)
CreateWordField (ATIB, 0x02, VERN)
CreateDWordField (ATIB, 0x04, NMSK)
CreateDWordField (ATIB, 0x08, SFUN)
Store (0x0C, SSZE)
Store (One, VERN)
Store (0x0C, NMSK)
Store (0x03, SFUN)
Return (ATIB)
}
Method (AF01, 0, NotSerialized)
{
CreateWordField (ATIB, Zero, SSZE)
CreateDWordField (ATIB, 0x02, VMSK)
CreateDWordField (ATIB, 0x06, FLGS)
Store (0x0A, SSZE)
Store (0x03, VMSK)
Store (One, FLGS)
Return (ATIB)
}
Method (AF02, 0, NotSerialized)
{
CreateWordField (ATIB, Zero, SSZE)
CreateDWordField (ATIB, 0x02, PSBI)
CreateByteField (ATIB, 0x09, FPWR)
CreateByteField (ATIB, 0x0A, FPID)
Store (0x0D, SSZE)
Store (0x08, PSBI)
Store (Zero, FPWR)
Store (EGPS, FPID)
Return (ATIB)
}
Method (ABCL, 0, NotSerialized)
{
Return (Package (0x52)
{
0x50,
0x32,
One,
0x02,
0x03,
0x04,
0x05,
0x06,
0x07,
0x08,
0x09,
0x0A,
0x0B,
0x0C,
0x0D,
0x0E,
0x0F,
0x10,
0x11,
0x12,
0x13,
0x14,
0x15,
0x16,
0x17,
0x18,
0x19,
0x1A,
0x1B,
0x1C,
0x1D,
0x1E,
0x1F,
0x20,
0x21,
0x22,
0x23,
0x24,
0x25,
0x26,
0x27,
0x28,
0x29,
0x2A,
0x2B,
0x2C,
0x2D,
0x2E,
0x2F,
0x30,
0x31,
0x32,
0x33,
0x34,
0x35,
0x36,
0x37,
0x38,
0x39,
0x3A,
0x3B,
0x3C,
0x3D,
0x3E,
0x3F,
0x40,
0x41,
0x42,
0x43,
0x44,
0x45,
0x46,
0x47,
0x48,
0x49,
0x4A,
0x4B,
0x4C,
0x4D,
0x4E,
0x4F,
0x50
})
}
Method (_DOD, 0, Serialized) // _DOD: Display Output Devices
{
Return (Package (0x01)
{
0x0110
})
}
Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake
{
Return (Package (0x02)
{
0x69,
0x03
})
}
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
If (LEqual (Arg2, Zero))
{
Return (Buffer (One)
{
0x03
})
}
Return (Package (0x1C)
{
"AAPL,slot-name",
Buffer (0x07)
{
"Slot-1"
},
"@0,AAPL,boot-display",
Buffer (One)
{
0x00
},
"@0,name",
Buffer (0x0C)
{
"ATY,Orinoco"
},
"@1,name",
Buffer (0x0C)
{
"ATY,Orinoco"
},
"@2,name",
Buffer (0x0C)
{
"ATY,Orinoco"
},
"@3,name",
Buffer (0x0C)
{
"ATY,Orinoco"
},
"@4,name",
Buffer (0x0C)
{
"ATY,Orinoco"
},
"ATY,Card#",
Buffer (0x10)
{
"113-4E353CU-O6T"
},
"ATY,Copyright",
Buffer (0x33)
{
"(C) 1988-2017, AMD Technologies Inc."
},
"ATY,VendorID",
Buffer (0x02)
{
0x02, 0x10
},
"ATY,DeviceID",
Buffer (0x02)
{
0xDF, 0x67
},
"device_type",
Buffer (0x12)
{
"ATY,OrinocoParent"
},
"model",
Buffer (0x12)
{
"AMD Radeon RX 580"
},
"hda-gfx",
Buffer (0x0A)
{
"onboard-2"
}
})
}
OperationRegion (PEGH, PCI_Config, Zero, 0x40)
Field (PEGH, ByteAcc, NoLock, Preserve)
{
VID0, 16,
DID0, 16,
GCMD, 8,
Offset (0x24),
BAR4, 32
}
Return (0x80000002)
}
Device (HDAU)
{
Name (_ADR, One) // _ADR: Address
OperationRegion (HDAH, PCI_Config, Zero, 0x40)
Field (HDAH, ByteAcc, NoLock, Preserve)
{
VID0, 16,
DID0, 16
}
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
Store (Package (0x0E)
{
"built-in",
Buffer (One)
{
0x00
},
"AAPL,slot-name",
Buffer (0x07)
{
"Slot-1"
},
"layout-id",
Buffer (0x04)
{
0x01, 0x00, 0x00, 0x00
},
"name",
Buffer (0x10)
{
"RX 580 HD-Audio"
},
"model",
Buffer (0x10)
{
"RX 580 HD-Audio"
},
"device_type",
Buffer (0x16)
{
"Multimedia Controller"
},
"hda-gfx",
Buffer (0x0A)
{
"onboard-2"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
Return (0x80000002)
}
}
Method (DTGP, 5, NotSerialized)
{
If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
{
If (LEqual (Arg1, One))
{
If (LEqual (Arg2, Zero))
{
Store (Buffer (One)
{
0x03
}, Arg4)
Return (One)
}
If (LEqual (Arg2, One))
{
Return (One)
}
}
}
Store (Buffer (One)
{
0x00
}, Arg4)
Return (Zero)
}
}
아래 글 10번부터 참조해 보세요. 외장그래픽 HDMI 오디오 잡는 방법인듯 합니다.
저도 rx580.aml(다른 것)를 사용하는데 모니터 1개 DP포트로 연결되어 있어 해 보면 소리 잘 나옵니다.
그런데 블루투스를 사용 중이라서 자세히는 모르겠습니다.
클로버 기준으로 설명이 되어 있는 아래 글을 참조하세요. layout-id 값을 입력하는 듯 함.
1<완결편> <필독요망>인텔그래픽 퍼팩트하게 잡는 방법과 headless 완벽 구성
그리고 RootPci 값 이 조금 다르네요. 강좌에 있는 것도 아래와 같이 되어 있습니다. 참조하세요.
내장그래픽(HD4000) onboard-2 , Internal@0,2,0
외장그래픽(RX580) onboard-1 , Internal@0,1,0/0,0 그리고 HDMI Audio onboard-1 , Internal@0,1,0/0,1
설정 후 인젝션 7
해도 안되네요 ㅠㅠ
DSDT 또한 수정해서 테스트 해봤어여.
/*
* Intel ACPI Component Architecture
* AML/ASL+ Disassembler version 20180427 (64-bit version)(RM)
* Copyright (c) 2000 - 2018 Intel Corporation
*
* Disassembling to non-symbolic legacy ASL operators
*
* Disassembly of iASLfPZJPX.aml, Fri Jul 31 14:24:40 2020
*
* Original Table Header:
* Signature "SSDT"
* Length 0x000004D2 (1234)
* Revision 0x01
* Checksum 0x5E
* OEM ID "AMD"
* OEM Table ID "RX580"
* OEM Revision 0x00000000 (0)
* Compiler ID "INTL"
* Compiler Version 0x20180427 (538444839)
*/
DefinitionBlock ("", "SSDT", 1, "AMD", "RX580", 0x00000000)
{
External (_SB_.PCI0.PEG0, DeviceObj) // (from opcode)
External (_SB_.PCI0.PEG0.PEGP, DeviceObj) // (from opcode)
External (BRTL, IntObj) // (from opcode)
External (EGPS, IntObj) // (from opcode)
External (PEGP, DeviceObj) // (from opcode)
Scope (_SB.PCI0.PEG0)
{
Scope (PEGP)
{
Name (_STA, Zero) // _STA: Status
}
Device (GFX0)
{
Name (_ADR, Zero) // _ADR: Address
Name (ATIB, Buffer (0x0100){})
Method (ATIF, 2, Serialized)
{
If (LEqual (Arg0, Zero))
{
Return (AF00 ())
}
If (LEqual (Arg0, One))
{
Return (AF01 ())
}
If (LEqual (Arg0, 0x02))
{
Return (AF02 ())
}
Else
{
CreateWordField (ATIB, Zero, SSZE)
CreateWordField (ATIB, 0x02, VERN)
CreateDWordField (ATIB, 0x04, NMSK)
CreateDWordField (ATIB, 0x08, SFUN)
Store (Zero, SSZE)
Store (Zero, VERN)
Store (Zero, NMSK)
Store (Zero, SFUN)
Return (ATIB)
}
}
Method (AF00, 0, NotSerialized)
{
CreateWordField (ATIB, Zero, SSZE)
CreateWordField (ATIB, 0x02, VERN)
CreateDWordField (ATIB, 0x04, NMSK)
CreateDWordField (ATIB, 0x08, SFUN)
Store (0x0C, SSZE)
Store (One, VERN)
Store (0x0C, NMSK)
Store (0x03, SFUN)
Return (ATIB)
}
Method (AF01, 0, NotSerialized)
{
CreateWordField (ATIB, Zero, SSZE)
CreateDWordField (ATIB, 0x02, VMSK)
CreateDWordField (ATIB, 0x06, FLGS)
Store (0x0A, SSZE)
Store (0x03, VMSK)
Store (One, FLGS)
Return (ATIB)
}
Method (AF02, 0, NotSerialized)
{
CreateWordField (ATIB, Zero, SSZE)
CreateDWordField (ATIB, 0x02, PSBI)
CreateByteField (ATIB, 0x09, FPWR)
CreateByteField (ATIB, 0x0A, FPID)
Store (0x0D, SSZE)
Store (0x08, PSBI)
Store (Zero, FPWR)
Store (EGPS, FPID)
Return (ATIB)
}
Method (ABCL, 0, NotSerialized)
{
Return (Package (0x52)
{
0x50,
0x32,
One,
0x02,
0x03,
0x04,
0x05,
0x06,
0x07,
0x08,
0x09,
0x0A,
0x0B,
0x0C,
0x0D,
0x0E,
0x0F,
0x10,
0x11,
0x12,
0x13,
0x14,
0x15,
0x16,
0x17,
0x18,
0x19,
0x1A,
0x1B,
0x1C,
0x1D,
0x1E,
0x1F,
0x20,
0x21,
0x22,
0x23,
0x24,
0x25,
0x26,
0x27,
0x28,
0x29,
0x2A,
0x2B,
0x2C,
0x2D,
0x2E,
0x2F,
0x30,
0x31,
0x32,
0x33,
0x34,
0x35,
0x36,
0x37,
0x38,
0x39,
0x3A,
0x3B,
0x3C,
0x3D,
0x3E,
0x3F,
0x40,
0x41,
0x42,
0x43,
0x44,
0x45,
0x46,
0x47,
0x48,
0x49,
0x4A,
0x4B,
0x4C,
0x4D,
0x4E,
0x4F,
0x50
})
}
Method (_DOD, 0, Serialized) // _DOD: Display Output Devices
{
Return (Package (0x01)
{
0x0110
})
}
Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake
{
Return (Package (0x02)
{
0x69,
0x03
})
}
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
If (LEqual (Arg2, Zero))
{
Return (Buffer (One)
{
0x03
})
}
Return (Package (0x1C)
{
"AAPL,slot-name",
Buffer (0x07)
{
"Slot-1"
},
"@0,AAPL,boot-display",
Buffer (One)
{
0x00
},
"@0,name",
Buffer (0x0C)
{
"ATY,Orinoco"
},
"@1,name",
Buffer (0x0C)
{
"ATY,Orinoco"
},
"@2,name",
Buffer (0x0C)
{
"ATY,Orinoco"
},
"@3,name",
Buffer (0x0C)
{
"ATY,Orinoco"
},
"@4,name",
Buffer (0x0C)
{
"ATY,Orinoco"
},
"ATY,Card#",
Buffer (0x10)
{
"113-4E353CU-O6T"
},
"ATY,Copyright",
Buffer (0x33)
{
"(C) 1988-2017, AMD Technologies Inc."
},
"ATY,VendorID",
Buffer (0x02)
{
0x02, 0x10
},
"ATY,DeviceID",
Buffer (0x02)
{
0xDF, 0x67
},
"device_type",
Buffer (0x12)
{
"ATY,OrinocoParent"
},
"model",
Buffer (0x12)
{
"AMD Radeon RX 580"
},
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
}
})
}
OperationRegion (PEGH, PCI_Config, Zero, 0x40)
Field (PEGH, ByteAcc, NoLock, Preserve)
{
VID0, 16,
DID0, 16,
GCMD, 8,
Offset (0x24),
BAR4, 32
}
Return (0x80000002)
}
}
Method (DTGP, 5, NotSerialized)
{
If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
{
If (LEqual (Arg1, One))
{
If (LEqual (Arg2, Zero))
{
Store (Buffer (One)
{
0x03
}, Arg4)
Return (One)
}
If (LEqual (Arg2, One))
{
Return (One)
}
}
}
Store (Buffer (One)
{
0x00
}, Arg4)
Return (Zero)
}
}
단지 orinoco 프레임버퍼를 인젝트 하고 싶으신거면 디바이스 프로퍼티에
<dict>
<key>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)</key>
<dict>
<key>@0,name</key>
<string>ATY,Orinoco</string>
</dict>
</dict>
요렇게만 넣어 주셔도 됩니다.~ PCIRoot 은 본인꺼로 바꾸셔야 하구요.
좋은 정보 감사드립니다. 도전해 보아야겠네요.
도전해 보니 Orinoco 로 인식을 못 합니다. 저는 안 되는 모델인듯 합니다.
아무튼, 감사드리며 즐거운 하루 되세요.
혹시? WhateverGreen.kext 사용하시는지요? 저는 사용중입니다.
한번 넣어서 해 보세요.
프레임버퍼 인젝트는 아래와 같이 더 넣으니 정상적으로 되네요.
@0,name @1,name @2,name @3, name @4,name
터미널에서 ioreg | grep -i aty 입력하니 Orinoco 로 나옵니다.
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 조회 수 | 날짜 | 글쓴이 |
---|---|---|---|
모니터(오류화면) 사진 찍을 때 팁(소소함) +270 | 11만 | 17.07.3020:49 | 달쇠 |
빠르고 정확한 답변을 받는 팁 및 질답자의 매너, EFI폴더 압축법 +90 | 12만 | 17.02.1014:21 | Mactopia |
Hot 오픈코어로 단일 ssd로 듀얼부팅 설정시 윈도우 블루스크린문제 해결방... +13 | 65 | 24.10.2318:25 | 헷인토시 |
Hot 새로운 os 설치, 벤츄라가 좋을까요? 세콰이어가 좋을까요? +10 | 127 | 24.10.2308:19 | 미찌콘 |
Hot 램 증설.. 그리고 자꾸 재부팅되는 PC.. +8 | 60 | 24.10.2513:02 | 김밉상 |
45 | 24.10.2513:28 | 희밍현수님 | |
60 | 24.10.2513:02 | 김밉상 | |
39 | 24.10.2421:15 | 활주로임 | |
49 | 24.10.2322:21 | 활주로임 | |
65 | 24.10.2318:25 | 헷인토시 | |
58 | 24.10.2317:01 | 활주로임 | |
96 | 24.10.2315:51 | 배고픈사람 | |
127 | 24.10.2308:19 | 미찌콘 | |
106 | 24.10.2213:48 | 아킬리오 | |
90 | 24.10.2210:36 | MCMC | |
63 | 24.10.2200:57 | 헷인토시 | |
169 | 24.10.2123:22 | 마요네즈 | |
1164 | 24.10.1914:54 | 활주로임 | |
195 | 24.10.2017:21 | RTings | |
1059 | 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 | |
1319 | 24.10.1517:20 | 물만두 | |
1624 | 24.10.1317:18 | 물만두 | |
1278 | 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 | 애플맨 | |
1316 | 24.10.0810:58 | soullees | |
117 | 24.10.0723:26 | 오십견 | |
1235 | 24.10.0723:14 | Steer | |
118 | 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 | |
394 | 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 | 루마루 |
특별한 목적이 없다면 SSDT는 독이 될 수도 있습니다