快捷搜索:  汽车  科技

黑苹果12免驱的显卡:CloverN650DU定制

黑苹果12免驱的显卡:CloverN650DU定制ubuntu@ubuntu:~$dmesg|grepsnd [14.589033]snd_hda_codec_realtekhdaudioC0D0:autoconfigforALC269VC:line_outs=1(0x14/0x0/0x0/0x0/0x0)type:speaker [14.589036]snd_hda_codec_realtekhdaudioC0D0:speaker_outs=0(0x0/0x0/0x0/0x0/0x0) [14.589038]snd_hda_codec_realtekhdaudioC0D0:hp_outs=1(0x15/0x0/0x0/0x0/0x0) [14.589039]snd_hda_codec_realtekhdaudioC0D0:mono:mono_out=0x0 [14.589040]snd_hda_codec_realtekhdaudioC

基本信息

1. 声卡型号:Realtek ALC269VC

2. 提取声卡 codec

  • Ubuntu Desktop 刻录 U 盘镜像,直接在试用模式操作键鼠提取文件,路径 /proc/asound/card*

  • Clover 提取需要驱动 AudioDxe.efi,界面按 F8,保存路径 EFI/CLOVER/misc

  • 建议两种模式各提取一次。

Ubuntu 提取有效 Node 节点

1. 在 Ubuntu Shell 输入代码提取

ubuntu@ubuntu:~$dmesg|grepsnd [14.589033]snd_hda_codec_realtekhdaudioC0D0:autoconfigforALC269VC:line_outs=1(0x14/0x0/0x0/0x0/0x0)type:speaker [14.589036]snd_hda_codec_realtekhdaudioC0D0:speaker_outs=0(0x0/0x0/0x0/0x0/0x0) [14.589038]snd_hda_codec_realtekhdaudioC0D0:hp_outs=1(0x15/0x0/0x0/0x0/0x0) [14.589039]snd_hda_codec_realtekhdaudioC0D0:mono:mono_out=0x0 [14.589040]snd_hda_codec_realtekhdaudioC0D0:dig-out=0x1e/0x0 [14.589041]snd_hda_codec_realtekhdaudioC0D0:inputs: [14.589042]snd_hda_codec_realtekhdaudioC0D0:Mic=0x18 [14.589044]snd_hda_codec_realtekhdaudioC0D0:InternalMic=0x12

2. 可在 Ubuntu 设置 - 声音面板查看硬件:内外扬声器、内外麦克风的切换 & 使用是否正常,这个操作对后续提供判断很有作用。

3. 从命令日志获得节点:0x14 0x15 0x1e 0x18 0x12,配合下面手工提取会更准确。


Windows 提取有效 Node 节点 PathMap 路径信息

1. 先恢复微软或官方原始声卡驱动

2. 安装 Windows 工具 High Definition Audio Utility,进入 File => Local Machine Codecs => 选择声卡

查看中栏信息
Static device -> 静态设备 - 内置
Dynamic device -> 动态设备 - 外置

1. 音频输出
RedirectedHpSpeaker (Static)

0x140x2->0xC->0x14 0x150x2->0xC->0x15

SpdifOut (Static)

0x1E0x6->0x1E

2. 音频输入
MicIn (Dynamic)

0x180x8->0x23->0x18

MicIn (Static)

0x120x9->0x22->0x12

5 个有效节点
0x14,0x15,0x1E,0x18,0x12

整理数据得到

节点(16进制)10进制路径修正(音频输出从右向左推,输入从左向右推)设备确定 0x140x2->0xC->0x14202->12->2020->12->2Speaker内置扬声器 0x150x2->0xC->0x15212->12->2121->12->2HPOut外置扬声器 0x1E0x6->0x1E306->3030->6SPDIF数字传输 0x180x8->0x23->0x18248->35->248->35->24MicIn外置麦克风 0x120x9->0x22->0x12189->34->189->34->18MicIn内置麦克风

提取左栏 5 个节点信息,用于信息对比 (展开 Audio -> Widgets -> 0x1* 节点 -> Controls -> Pin Configuration)

多研究这个工具,一定会得到更多的声卡信息。

0x14misc:0x1 color:Unknow connectiontype:Otheranalog DefaultDevice:Speaker DirectionalLocation:N/A Location:Internal PortConnectivity:FixedFunctionDevice 0x15misc:0x0 color:Black connectiontype:1/8"stereo/mono==>3.5mm接口 DefaultDevice:HPOut DirectionalLocation:Front Location:External PortConnectivity:Jack 0x1Emisc:0x1 color:Black connectiontype:RCA DefaultDevice:SPDIF DirectionalLocation:Front Location:External PortConnectivity:Jack 0x18misc:0x0 color:Black connectiontype:1/8"stereo/mono==>3.5mm接口 DefaultDevice:MicIn DirectionalLocation:Front Location:External PortConnectivity:Jack 0x12misc:0x1 color:Unknow connectiontype:OtherDigital DefaultDevice:MicIn DirectionalLocation:N/A Location:Internal PortConnectivity:FixedFunctionDevice


macOS 打开 PinConfigurator.app 导入 codec#0
选择修补 -> 删除无效节点,剩下的数量明显多于整理出的有效节点,手动移除那些没见过、很奇怪、从未使用的节点。
(类似 Other、ATAPI、Modern、CD,移除操作具体情况具体分析)

黑苹果12免驱的显卡:CloverN650DU定制(1)

修正插口位置

黑苹果12免驱的显卡:CloverN650DU定制(2)

修正设备类型
笔记本外置麦克风 Mic Ext 需设置为 Line In ,按照白苹果规范设定,否则不能正常工作。

黑苹果12免驱的显卡:CloverN650DU定制(3)

记录 EAPD 字样的节点 (下面会用到):
0x14 0x15

点击获取 ConfigData:

01471C1001471D0101471E1701471F9901470C0201571C1F01571D1001571E2101571F0101570C0201E71C2001E71D1101E71E4401E71F0101871C3001871D1001871E8101871F0101271C4001271D0101271EA601271F99

整理数组,直观分析

01471C1001471D0101471E1701471F9901470C02 01571C1F01571D1001571E2101571F0101570C02 01E71C2001E71D1101E71E4401E71F01 01871C3001871D1001871E8101871F01 01271C4001271D0101271EA601271F99

1. 带 EAPD 字样的两个节点多出 01470C02 01570C02,等下直接丢到最后。
(测试只放 01470C02 也能用,分析原生 AppleHDA 驱动也是这么做的,01570C02 放不放貌似没有硬性要求)

2. 多出数值可以在 AppleALC/Resources/PinConfigs.kext/Contents/Info.plist 找到 WakeConfigData。
(AppleALC_v1.2.5 更新日志里有提及,应该和睡眠唤醒无声有关 https://www.insanelymac.com/forum/topic/311293-applealc-—-dynamic-applehda-patching/?do=findComment&comment=2609221)

整理数据
0x14 节点数据 <01470C02> 放到最后,
0x15 节点数据 <01570C02> 放到最后 (存疑),
得到最终 configData:

01471C1001471D0101471E1701471F9901571C1F01571D1001571E2101571F0101E71C2001E71D1101E71E4401E71F0101871C3001871D1001871E8101871F0101271C4001271D0101271EA601271F9901470C0201570C02


cddesktop&&gitclonehttps://github.com/acidanthera/AppleALC.git

1. 声卡型号 ALC269 可用 layoutID 有:

0x100004 0x100100 0x100202 0x100203,1-21 27-33 35 40 45 55 58 66 76 88 93 99 100 127 188

2. 进入 AppleALC/Resources/ALC269 ,这里选择 layout29.xml。

3. 需要修改的文件:

|____AppleALC |... |____Resources(删除其它声卡文件夹) |____ALC269(删除其它声卡xml) ||____Info.plist(已修改) ||____Platforms29.xml(已修改) ||____layout29.xml(已修改) |____Controllers.plist |____Kexts.plist |____Vendors.plist |____PinConfigs.kext(已修改) |____Contents |____Info.plist

修改下列四个文件:

Platforms29.xml、Platforms29.xml、info.plist、PinConfigs.kext/Contents/info.list

1.PlistEdit 修改 Platforms29.xml(PathMap 映射文件)

  • 先修改 PathMapID 为 29,然后逐级展开,只修改 NodeID。其它保持原样,后期微调才动。

  • 清晰结构图 (0、1 非二进制,仅仅是 item 0、item 1)

    PathMap |____0(音频输入) ||____0(内置麦克风PathMap:9->34->18) |||____0 |||____0 ||||____AMPAmplifier(音频功率放大器,可将低功率电子音频信号放大到足以驱动扬声器或耳机的电平) |||||____Channels ||||||____0 |||||||____Bind1(声道数(0单声道,1&2双声道)) |||||||____Channel1(设定声道位置(1后左,2后右,3前置中央,4重低音,5前左,6前右)) ||||||____1 ||||||____Bind2 ||||||____Channel2 |||||____MuteInputAmp是(该选项对麦克风静音是否有效未知,但是对扬声器静音是有用的,所以扬声器建议都选true) |||||____PublishMute否(显示静音控制选项,在音频MIDI设置输入选项能看到) |||||____PublishVolume否(显示左右声道选项) |||||____VolumeInputAmp是(显示输入音量控制选项,在偏好设置-声音-输入能看到) ||||____MinimumSampleRate48000(采样率) ||||____NodeID9 |||____1 ||||____AMP |||||____Channels ||||||____0 |||||||____Bind1 |||||||____Channel1 ||||||____1 ||||||____Bind2 ||||||____Channel2 |||||____MuteInputAmp是 |||||____PublishMute否 |||||____PublishVolume否 |||||____VolumeInputAmp否 ||||____NodeID34 |||____2 |||____Boost1(默认1,看过一些资料,可能是某些声卡驱动麦克风的关键点,范围值1~3) |||____NodeID18 || ||____1(外置麦克风PathMap:8->35->24) ||____0 ||____0 |||____AMP ||||____Channels |||||____0 ||||||____Bind1 ||||||____Channel1 |||||____1 |||||____Bind2 |||||____Channel2 ||||____MuteInputAmp是 ||||____PublishMute否 ||||____PublishVolume否 ||||____VolumeInputAmp是 |||____MinimumSampleRate48000 |||____NodeID8 ||____1 |||____AMP ||||____Channels |||||____0 ||||||____Bind1 ||||||____Channel1 |||||____1 |||||____Bind2 |||||____Channel2 ||||____MuteInputAmp是 ||||____PublishMute否 ||||____PublishVolume否 ||||____VolumeInputAmp否 |||____MinimumSampleRate48000 |||____NodeID35 ||____2 ||____Boost2(音量增益,有其它说法:MicExt外置=1,MicInt内置=3,但看过白苹果很多参数内外都设定3,建议先不改看是否正常。) ||____NodeID24 | |____1(音频输出) ||____0(内置扬声器PathMap:20->12->2) |||____0 |||____0 ||||____AMP |||||____Channels ||||||____0 |||||||____Bind1 |||||||____Channel1 ||||||____1 ||||||____Bind2 ||||||____Channel2 |||||____MuteInputAmp是 |||||____PublishMute是 |||||____PublishVolume是 |||||____VolumeInputAmp否(该选项应该只针对麦克风,功能是显示:音量界面-输入-输入电平,和显示噪音分呗差不多) ||||____NodeID20 |||____1 ||||____AMP |||||____Channels ||||||____0 |||||||____Bind1 |||||||____Channel1 ||||||____1 ||||||____Bind2 ||||||____Channel2 |||||____MuteInputAmp是 |||||____PublishMute是 |||||____PublishVolume是 |||||____VolumeInputAmp否 ||||____NodeID12 |||____2 |||____AMP |||____Channels ||||____0 |||||____Bind1 |||||____Channel1 ||||____1 ||||____Bind2 ||||____Channel2 |||____MuteInputAmp是 |||____PublishMute是 |||____PublishVolume是 |||____VolumeInputAmp否 |||____NodeID2 || ||____1(外置扬声器PathMap:21->12->2) ||____0 ||____0 |||____AMP ||||____Channels |||||____0 ||||||____Bind1 ||||||____Channel1 |||||____1 |||||____Bind2 |||||____Channel2 ||||____MuteInputAmp是 ||||____PublishMute是 ||||____PublishVolume是 ||||____VolumeInputAmp否 |||____NodeID21 ||___1 |||____AMP ||||____Channels |||||____0 ||||||____Bind1 ||||||____Channel1 |||||____1 |||||____Bind2 |||||____Channel2 ||||____MuteInputAmp是 ||||____PublishMute是 ||||____PublishVolume是 ||||____VolumeInputAmp否 |||____NodeID12 ||___2 ||____AMP |||____Channels ||||____0 |||||____Bind1 |||||____Channel1 ||||____1 ||||____Bind2 ||||____Channel2 |||____MuteInputAmp是 |||____PublishMute是 |||____PublishVolume是 |||____VolumeInputAmp否 ||____NodeID2 | |____2(SPDIFOut数字传输PathMap:30->6)暂时不理 |____0 ||____0 ||____0 ||____AMP |||____Channels ||||____0 |||||____Bind1 |||||____Channel1 ||||____1 ||||____Bind2 ||||____Channel2 |||____MuteInputAmp是 |||____PublishMute是 |||____PublishVolume是 |||____VolumeInputAmp否 ||____NodeID30 |____1 |____0 |____1 |____AMP ||____Channels |||____0 ||||____Bind1 ||||____Channel1 |||____1 |||____Bind2 |||____Channel2 ||____MuteInputAmp是 ||____PublishMute是 ||____PublishVolume是 ||____VolumeInputAmp否 |____NodeID6

补充

MuteInputAmp,PublishMute,PublishVolume,VolumeInputAmp 参数定义可从Amp-In或Amp-Out:nsteps&mute入手。 #引用Code#0样例 Amp-Outcapsofs=0 nsteps=0 stepsize=0 mute=1Nsteps=0=>PublishVolume=falseMute=1=>PublishMute=true Amp-Incapsofs=0 nsteps=0 stepsize=0 mute=1Nsteps=0=>MuteInputAmp=falseMute=1=>VolumeInputAmp=true Amp-Outcapsofs=64 nsteps=64 stepsize=3 mute=0Nsteps=64=>PublishVolume=trueMute=0=>PublishMute=false Amp-Incapsofs=16 nsteps=46 stepsize=3 mute=1Nsteps=46=>MuteInputAmp=trueMute=1=>VolumeInputAmp=true Amp-Incapsofs=0 nsteps=0 stepsize=0 mute=1Nsteps=0=>PublishVolume=falseMute=1=>PublishMute=true Amp-Incapsofs=0 nsteps=3 stepsize=39 mute=0Nsteps=3onthepin-outputcomplexmeansBoosts=3

完成 Platforms29.xml 修改。


2.PlistEdit 修改 layout29.xml(电压,底噪,增益,多声道等参数文件)

  • 先修改 PathMapID 为 29

  • 打开 codec#0 搜索:

    VendorId:0x10ec0269(16转10进制=>283902569)填入CodecID

  • 搜索 NodeID 0x18 (外置麦克风)

    1.该节点VRef为VREF_80(全名:VoltageReference参考电压_模拟电压的百分比。) (10转16进制=>50)。 2.计算muteGPIO数值格式:50 0100 NodeID18=>50010018 (16转10进制=>1342242840,填入LineIn/MuteGPIO)。 (为什么填这里?记得前面PinConfigurator.app中有把外置麦克风设置为LineIn吗?) 3.外置麦克风需修改VRef参考电压实现驱动。 一般有Vrefcaps:HIZ50%Ground(0V)80%100%(都是十进制)。

  • 搜索 NodeID 0x12 (内置麦克风)

    1.如果数值为VREF_HIZ,则直接muteGPIO=0,填入Mic/MuteGPIO。 2.但是本机的该节点没有VREF字样,暂时也设定为muteGPIO=0试试。

完成 layout29.xml 修改。


3.PlistEdit 修改 info.list

  • 修改 CodecID 同上

    VendorId:0x10ec0269(16转10进制得283902569)填入CodecID

    黑苹果12免驱的显卡:CloverN650DU定制(4)

完成 info.list 修改。


4.PlistEdit 修改 PinConfigs.kext/Contents/info.list

  • 直接搜索 CodecID 为 283902569,并且为 LayoutID=29 的项目节点,仔细看,满足这两个条件才行。本机器搜索到的是 118 项目节点。[全部删掉也行,照葫芦画瓢]

  • 把前面整理的 ConfigData 数据:

    01471C1001471D0101471E1701471F9901571C1F01571D1001571E2101571F0101E71C2001E71D1101E71E4401E71F0101871C3001871D1001871E8101871F0101271C4001271D0101271EA601271F9901470C0201570C02

    填入到 ConfigData

    黑苹果12免驱的显卡:CloverN650DU定制(5)

完成 PinConfigs.kext/Contents/info.list 修改。


5.xml 转 xml.zlib

  • 这步 Xcode 编译时会自动转换无需干预。

  • 如需手动转换,脚本在 AppleALC/Tools 目录。

6. 编译 AppleALC.kext

  • 安装 Xcode

  • 把 lilu.kext DEBUG 版本拷贝到 AppleALC 源码根目录。
    提示:请勿使用 RELEASE 版本,会报错:

    AppleALC/Lilu.kext/Contents/Resources/Library/plugin_start.cpp'(intarget'AppleALC'fromproject'AppleALC')

  • Xcode 打开 AppleALC.xcodeproj
    开始编译:Product -> Archive -> Distribute Content -> Built Products,保存到桌面,完成。

    黑苹果12免驱的显卡:CloverN650DU定制(6)

  • 最后:

    • 把 AppleALC.kext 放到 EFI/CLOVER/kexts/Other

    • Clover Configurator 修改:Devices -> Audio -> Inject 填写 29。

    • 重启系统即可。

  • 进系统查看声卡注入信息:

    macos@macosdeMBP~%ioreg-l|grepALC|grepHDAConfigDefault ||||"HDAConfigDefault"=({"AFGLowPowerState"=<03000000> "CodecID"=283902569 "Comment"="CustomALC269VCClevoN650DUbyLeeyr" "ConfigData"=<01470c0201470c0201570c02> "FuncGroup"=1 "BootConfigData"=<01471c1001471d0101471e1701471f9901571c1f01571d1001571e2101571f0101e71c2001e71d1101e71e4401e71f0101871c3001871d1001871e8101871f0101271c4001271d0101271ea601271f9901470c0201570c02> "WakeVerbReinit"=Yes "LayoutID"=7}) #显示LayoutID=7原因是定制ALC的LayoutID以白苹果的方式运行?未知具体。


已完成:

扬声器:内外功放清晰不破音 切换正常
麦克风:内外切换正常 (手机耳机四段插头),内置录音清晰无杂音,电平显示正常,可调节。
睡眠唤醒均正常,HDMI 输出正常。

未完成:

麦克风:手机四段插头外置麦克风输入不正常,居然把耳机绕线组电流转成了麦克风输入,不清晰。没别的硬件测试。
SPDIF Out:无硬件测试

1.SPDIF、HDMI 等数码输出音频端口,不可调节音量,而由解码设备调节。
https://discussions.apple.com/thread/1214940
https://discussions.apple.com/thread/2529122

2. 如果开机后发现小喇叭图标是灰色,初步判断是节点路径问题;偏好设置音频管理界面输入 / 输出设备未发现,说明是 configData 问题。

3. 精简文件 AppleACL.kext:
修改 PinConfigs.kext/Contents/info.list 时搜索到对应的项目节点是 118,其它删除,编译出来 AppleALC.kext 整体文件就会只保留 1 个项目节点,文件容量会大大减小。

4. 案例分析(内容是精髓,工具是基础)
https://mega.nz/#!y9lVGSLB (已失效)
提取:CJc3_3Bjv1n8rEhZTA7qG7NsI2S4XH5oPcIdXsSATH4

紫米
http://bbs.pcbeta.com/viewthread-623626-1-1.html

英文解析制作 AppleALC
https://github.com/F0x1c/AppleALC_Instructions

猜您喜欢: