(已解决)HD4600的HDMI音频到底应该如何修改才能输出
本帖最后由 wx3124558 于 2017-12-13 20:19 编辑------------------------------ 2017.12.13更新 ------------------------------
自从论坛打不开之后就一直没玩黑果了,差不多过去快一年了吧,上周刷回10.12.6,用的是10.12.3的EFI,目前没有BUG,今天呢,突然可以打开远景了,上来看到很多私信,那么就把我现在用的EFI放出来吧,具体的教程我以前的帖子中有,适用的型号也有说明,祝大家早日吃上10.13吧!
10.12.6_EFI配置文件:
https://pan.baidu.com/s/1mhO91uK
折腾了一天一夜,终于解决了HDMI音频输出的问题,这里要感谢@biggreat帮忙修改了DSDT,现在简单说下步骤:
1. 即DSDT中要确保有HDAU、HDEF、IGPU,对于Haswell/Broadwell集成显卡:dsdt需要打入补丁 renaming B0D3 to HDAU (device at 0x00030000);
2. dsdt中,对于HDAU、IGPU、HDEF三个装备注入相同的"hda-gfx" = "onboard-1" or= “onboard-2”;
3. 对于Haswell/Broadwell集成显卡,dsdt中HDAU和HDEF注入的layout id要一致;
4. 对于Haswell集成显卡还要安装rehabman的FakePCIID.kext和FakePCIID_Intel_HDMI_Audio.kext;
5. kextstopatch下加入以下补丁,记得把补丁里面的disable取消勾选:
<key>Comment</key>
<string>HDMI-audio, port 0105, 0x0a260005 0x0a260006, 0x0d220003, 0x0a2e000a, 0x0a26000a</string>
<key>Disabled</key>
<true/>
<key>Find</key>
<data>
AQUJAAAEAACHAAAA
</data>
<key>Name</key>
<string>AppleIntelFramebufferAzul</string>
<key>Replace</key>
<data>
AQUJAAAIAACHAAAA
</data>
</dict>
<dict>
<key>Comment</key>
<string>HDMI-audio, port 0105(12), 0x0a260005 0x0a260006, 0x0d220003, 0x0a2e000a, 0x0a26000a</string>
<key>Disabled</key>
<true/>
<key>Find</key>
<data>
AQUJAAAEAACHAAAA
</data>
<key>Name</key>
<string>AppleIntelFramebufferAzul</string>
<key>Replace</key>
<data>
AQUSAAAIAACHAAAA
</data>
</dict>
<dict>
<key>Comment</key>
<string>HDMI-audio, port 0204(12), 0x0d220003, 0x0a2e000a, 0x0a26000a</string>
<key>Disabled</key>
<true/>
<key>Find</key>
<data>
AgQKAAAEAACHAAAA
</data>
<key>Name</key>
<string>AppleIntelFramebufferAzul</string>
<key>Replace</key>
<data>
AgQSAAAIAACHAAAA
</data>
</dict>
<dict>
<key>Comment</key>
<string>HDMI-audio, port 0204, 0x0d220003, 0x0a2e000a, 0x0a26000a</string>
<key>Disabled</key>
<true/>
<key>Find</key>
<data>
AgQKAAAEAACHAAAA
</data>
<key>Name</key>
<string>AppleIntelFramebufferAzul</string>
<key>Replace</key>
<data>
AgQKAAAIAACHAAAA
</data>
</dict>
<dict>6. 我的情况是修改ig-platform-id为0x0a260006即可输出音频,如果不行,请自行尝试更换ig-platform-id,还有一点要说明一下,我用的是仿冒声卡,如果你们用的是AppleALC的话,可能效果会不同,即HDMI开启失败,因我没试过AppleALC来驱动声卡,所以需自行测试,如果这两种都有效果的话,请在楼下反馈;
------------------------------------------------------我是华丽的分割线------------------------------------------------------
现在视频输出是正常的,就是输出的时候没有声音,音频下包括声音下都没有HDMI选项,声卡ALC282已经驱动,目前DSDT里有IGPU、HDEF、但是没有HDAU,注入了FakePCIID_Intel_HDMI_Audio.kext驱动,真心不知道应该怎么添加,心力憔悴啊,翻遍了论坛也没有个规范的说法,拜托各路大神指导一下{:9_365:}
你试过提取code注入声卡信息了吗 看我签名帖子,2楼更新帖子,有个开启集成显卡hdmi 的说明 biggreat 发表于 2016-6-26 23:59 https://www.pcbeta.com/static/image/common/back.gif
看我签名帖子,2楼更新帖子,有个开启集成显卡hdmi 的说明
看了你的帖子,教程里提到HDAU、IPGU、HDEF下注入相同的"hda-gfx" = "onboard-1" or= “onboard-2”;
但是我的DSDT里HDAU下没有这段代码,而我添加后:
Method (_DSM, 4, NotSerialized)// _DSM: Device-Specific Method
{
Store (Package (0x0C)
{
"built-in",
Buffer (One)
{
0x00
},
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
},
"layout-id",
Buffer (0x04)
{
0x03, 0x00, 0x00, 0x00
},
"PinConfigurations",
Buffer (Zero) {}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
就会出现200个错误如下:
Jevons-Chan 发表于 2016-6-26 23:56 https://www.pcbeta.com/static/image/common/back.gif
你试过提取code注入声卡信息了吗
我的仿冒声卡就是自己提取codec节点信息修改的,ubuntu下提取的时候,提取了两个一个是ALC282的音频信息,还有一个是HDMI的音频信息,这个HDMI的节点信息有用吗?
biggreat 发表于 2016-6-26 23:59 https://www.pcbeta.com/static/image/common/back.gif
看我签名帖子,2楼更新帖子,有个开启集成显卡hdmi 的说明
修改了一下加入的代码,但是目前出现这一个错误:
syntax error, unexpected PARSEOP_DEVICE, expecting $end and premature End-Of-FileDevice (HDAU)
{
Name (_ADR, 0x00030000)// _ADR: Address
Name (BARA, 0x80000000)
Name (TBAR, Zero)
Name (TCMD, Zero)
Name (MODB, Zero)
Name (MODC, Zero)
Method (_DSM, 4, NotSerialized)
{
If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }
Return (Package()
{
"layout-id", Buffer() { 0x03, 0x00, 0x00, 0x00 },
"hda-gfx", Buffer() { "onboard-1" },
})
}
}
}
Method (_STA, 0, NotSerialized)// _STA: Status
{
If (LNotEqual (AUVD, 0xFFFF))
{
Return (0x0F)
}
Return (Zero)
}
Method (_INI, 0, NotSerialized)// _INI: Initialize
{
If (LAnd (LNotEqual (And (ABAR, 0xFFFFC004), 0xFFFFC004), LNotEqual (And (ABAR, 0xFFFFC000), Zero)))
{
Store (ABAR, BARA)
}
}
OperationRegion (RPCS, SystemMemory, XBAS, 0x00018040)
Field (RPCS, AnyAcc, NoLock, Preserve)
{
Offset (0x18004),
ACMD, 8,
Offset (0x18010),
ABAR, 32
}
OperationRegion (RPCZ, PCI_Config, Zero, 0x40)
Field (RPCZ, DWordAcc, Lock, Preserve)
{
AUVD, 16
}
Method (ASTR, 0, Serialized)
{
If (LAnd (LNotEqual (And (ABAR, 0xFFFFC004), 0xFFFFC004), LNotEqual (And (ABAR, 0xFFFFC000), Zero)))
{
And (ABAR, 0xFFFFFFF0, BBAR)
Add (BBAR, 0x1000, BBAR)
OperationRegion (RPCY, SystemMemory, BBAR, 0x25)
Field (RPCY, DWordAcc, NoLock, Preserve)
{
Offset (0x0C),
EM4W, 32,
EMWA, 32,
Offset (0x1C),
ADWA, 32
}
Store (AUDA, EMWA)
Store (AUDB, ADWA)
Store (AUDC, EM4W)
}
}
Method (VSTR, 1, Serialized)
{
Name (CONT, 0x03E8)
Name (ADDR, 0x80000000)
Store (Arg0, ADDR)
OperationRegion (CCDC, SystemMemory, ADDR, 0x04)
Field (CCDC, ByteAcc, NoLock, Preserve)
{
CDEC, 32
}
If (LAnd (LNotEqual (And (ABAR, 0xFFFFC004), 0xFFFFC004), LNotEqual (And (ABAR, 0xFFFFC000), Zero)))
{
If (LNotEqual (CDEC, Zero))
{
And (ABAR, 0xFFFFFFF0, BBAR)
OperationRegion (IPCV, SystemMemory, BBAR, 0x70)
Field (IPCV, DWordAcc, NoLock, Preserve)
{
Offset (0x60),
AVIC, 32,
Offset (0x68),
AIRS, 16
}
Store (0x03E8, CONT)
While (LAnd (LEqual (And (AIRS, One), One), LNotEqual (CONT, Zero)))
{
Stall (One)
Decrement (CONT)
}
Or (AIRS, 0x02, AIRS)
Store (CDEC, AVIC)
Or (AIRS, One, AIRS)
Store (0x03E8, CONT)
While (LAnd (LEqual (And (AIRS, One), One), LNotEqual (CONT, Zero)))
{
Stall (One)
Decrement (CONT)
}
}
}
}
Method (CXDC, 0, Serialized)
{
Name (IDDX, 0x80000000)
If (LAnd (LNotEqual (CADR, Zero), LNotEqual (CCNT, Zero)))
{
Store (CADR, IDDX)
While (LLess (IDDX, Add (CADR, Multiply (CCNT, 0x04))))
{
VSTR (IDDX)
Add (IDDX, 0x04, IDDX)
}
}
}
Method (ARST, 0, Serialized)
{
If (LAnd (LNotEqual (And (ABAR, 0xFFFFC004), 0xFFFFC004), LNotEqual (And (ABAR, 0xFFFFC000), Zero)))
{
And (ABAR, 0xFFFFFFF0, BBAR)
OperationRegion (IPCV, SystemMemory, BBAR, 0xBF)
Field (IPCV, AnyAcc, NoLock, Preserve)
{
Offset (0x08),
CRST, 32,
Offset (0x4C),
CORB, 32,
Offset (0x5C),
RIRB, 32,
Offset (0x80),
OSD1, 32,
Offset (0xA0),
OSD2, 32
}
And (CORB, 0xFFFFFFFD, CORB)
And (RIRB, 0xFFFFFFFD, RIRB)
And (OSD1, 0xFFFFFFFD, OSD1)
And (OSD2, 0xFFFFFFFD, OSD2)
And (CRST, 0xFFFFFFFE, CRST)
}
}
Method (AINI, 0, Serialized)
{
Name (CONT, 0x03E8)
If (LAnd (LNotEqual (And (ABAR, 0xFFFFC004), 0xFFFFC004), LNotEqual (And (ABAR, 0xFFFFC000), Zero)))
{
And (ABAR, 0xFFFFFFF0, BBAR)
OperationRegion (IPCV, SystemMemory, BBAR, 0x70)
Field (IPCV, DWordAcc, NoLock, Preserve)
{
GCAP, 16,
Offset (0x08),
GCTL, 32,
Offset (0x0E),
SSTS, 8,
Offset (0x60),
AVIC, 32,
Offset (0x68),
AIRS, 16
}
Or (GCTL, One, GCTL)
Store (0x03E8, CONT)
While (LAnd (LEqual (And (GCTL, One), Zero), LNotEqual (CONT, Zero)))
{
Stall (One)
Decrement (CONT)
}
And (GCAP, 0xFFFF, GCAP)
Or (SSTS, 0x0F, SSTS)
And (GCTL, 0xFFFFFFFE, GCTL)
Store (0x03E8, CONT)
While (LAnd (LEqual (And (GCTL, One), One), LNotEqual (CONT, Zero)))
{
Stall (One)
Decrement (CONT)
}
Or (GCTL, One, GCTL)
Store (0x03E8, CONT)
While (LAnd (LEqual (And (GCTL, One), Zero), LNotEqual (CONT, Zero)))
{
Stall (One)
Decrement (CONT)
}
}
}
Method (ABWA, 1, Serialized)
{
If (Arg0)
{
If (LOr (LEqual (And (ABAR, 0xFFFFC004), 0xFFFFC004), LEqual (And (ABAR, 0xFFFFC000), Zero)))
{
If (LNotEqual (BARA, 0x80000000))
{
Store (ABAR, TBAR)
Store (ACMD, TCMD)
Store (BARA, ABAR)
Store (0x06, ACMD)
Store (One, MODB)
}
}
ElseIf (LNotEqual (And (ACMD, 0x06), 0x06))
{
Store (ACMD, TCMD)
Store (0x06, ACMD)
Store (One, MODC)
}
}
ElseIf (MODB)
{
If (LEqual (ABAR, BARA))
{
Store (TBAR, ABAR)
Store (TCMD, ACMD)
}
}
}
Method (_DSM, 4, NotSerialized)// _DSM: Device-Specific Method
{
If (LEqual (Arg2, Zero))
{
Return (Buffer (One)
{
0x03
})
}
Return (Package (0x04)
{
"layout-id",
Buffer (0x04)
{
0x0C, 0x00, 0x00, 0x00
},
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
}
})
}
}
Device (IGPU)
{
Name (_ADR, 0x00020000)// _ADR: Address
Method (_DEP, 0, NotSerialized)// _DEP: Dependencies
{
ADBG ("GFX0 DEP Call")
If (LEqual (S0ID, One))
{
ADBG ("GFX0 DEP")
Return (Package (0x01)
{
PEPD
})
}
Else
{
ADBG ("GFX0 DEP NULL")
Return (Package (0x00) {})
}
}
防沉补丁x1 你可以试试clover打补丁的方法,这是一个带HDMI补丁的配置文件,你参照着给你的配置文件打补丁吧 wx3124558 发表于 2016-6-27 11:42 https://www.pcbeta.com/static/image/common/back.gif
防沉补丁x1
ssdt和dsdt 发上来看看,再说下你机子的配置,cpu 集显 还是 独显 biggreat 发表于 2016-6-27 12:09 https://www.pcbeta.com/static/image/common/back.gif
ssdt和dsdt 发上来看看,再说下你机子的配置,cpu 集显 还是 独显
神舟K610D-I7-D2,
CPU I7 4710MQ 2.5GHZ
HD4600集显
声卡ALC282
谢谢了
dsdt已修改,试试吧 hdmi-audio.kext或者clover打入fb补丁,应该就可以了
biggreat 发表于 2016-6-27 16:05 https://www.pcbeta.com/static/image/common/back.gif
dsdt已修改,试试吧 hdmi-audio.kext或者clover打入fb补丁,应该就可以了
刚试了一下,clover下注入了HDMIAudio.kext和FakePCIID_Intel_HDMI_Audio.kext还是没有声音;
在你的贴子596楼中,提到“根据自己集成显卡注入的ig-platform-id结合以下信息,选择正确的补丁打入clover或者二进制文件”,下面列出的一段代码中,怎么样才叫正确选择呢?是全部都注入到kextstopatch中吗?
你提到:ig-platform-id:集成显卡注入的此属性有以下对应关系
0x01660003: HD4000 1366x768
0x01660004: HD4000 1600x900, 1920x1080
0x01660008: HD4000 1600x900, 1920x1080
0x01660009: HD4000 1600x900, 1920x1080
0x0a260006: HD4400/HD4600/HD5000
但是我注入的ig-platform-id为0x0d270006,是否把代码中0x0a260006替换为0x0d270006呢? biggreat 发表于 2016-6-27 16:05 https://www.pcbeta.com/static/image/common/back.gif
dsdt已修改,试试吧 hdmi-audio.kext或者clover打入fb补丁,应该就可以了
目前的情况是,在音频信息下有HDMI信息,声音面板下找不到HDMI的选项; wx3124558 发表于 2016-6-27 17:30 https://www.pcbeta.com/static/image/common/back.gif
目前的情况是,在音频信息下有HDMI信息,声音面板下找不到HDMI的选项;
要接上HDMI设备才会出现在声音输出设备中 审核好慢,上午给你发的带附件的回复到现在还在审核{:5_270:} 关云长羽 发表于 2016-6-27 18:14 https://www.pcbeta.com/static/image/common/back.gif
审核好慢,上午给你发的带附件的回复到现在还在审核
...感谢了,这两天弄HDMI音频这块搞得人都快废掉了,还好有你们能指导{:5_264:} biggreat 发表于 2016-6-26 23:59 https://www.pcbeta.com/static/image/common/back.gif
看我签名帖子,2楼更新帖子,有个开启集成显卡hdmi 的说明
谢了大神,托你的福我弄好了,用你改的DSDT,然后把IG改为0x0a260006之后就能输出音频了,thx{:5_264:} wx3124558 发表于 2016-6-27 19:09 https://www.pcbeta.com/static/image/common/back.gif
谢了大神,托你的福我弄好了,用你改的DSDT,然后把IG改为0x0a260006之后就能输出音频了,thx
恭喜,离完美又前进一步了 biggreat 发表于 2016-6-27 18:10 https://www.pcbeta.com/static/image/common/back.gif
要接上HDMI设备才会出现在声音输出设备中
还有个问题哦,就是连上HDMI后,不能自动切换到HDMI音频,要手动切换,这样正常吗? 本帖最后由 biggreat 于 2016-6-27 19:15 编辑
wx3124558 发表于 2016-6-27 19:12 https://www.pcbeta.com/static/image/common/back.gif
还有个问题哦,就是连上HDMI后,不能自动切换到HDMI音频,要手动切换,这样正常吗?
我这里是自动切换的,第一次手动切换,以后可能自动吧,即使手动也能接受吧