注:该方法经测试支持12、13、14、15系统,但每次升级系统都需要下载最新的AppleALC-master进行重新编译,并配合最新的lilu.kext才能正常驱动。

教程以ALC892为例,主要针对笔记本的声卡。由于笔记本声卡经常同一型号的声卡驱动并不能通用,往往需要自己定制。台式机大多没有这个问题,只需要用AppleALC-master生成通用声卡即可,通用声卡不好用的可以借鉴本篇文章的思路。(台式机或者嫌麻烦的,可以直接跳到第八节,直接进行编译,如果不完美再进行定制)

目录:

一、定制驱动目标文件

二、定制声卡信息提取

三、所需工具

四、codec提取方法

五、修改configdata信息

六、推导节点及Platforms.xml修改

七、制作辅助文件

八、编译声卡驱动

九、实现声卡驱动

十、总结

一、定制驱动目标文件

完全自制声卡驱动,主要是要制作4个文件:

1.Applealc-master——resources——alc892中Platforms.xml.zlib(节点文件)

2.Applealc-master——resources——alc892中layout1.xml.zlib(layoutID文件)

3.Applealc-master—>resources—>alc892—>info.Plist

(描述声卡以及对layout和Platforms文件位置、id的说明)

4.Applealc-master—>resources—>pinconfigs.kext—>contents—>info.Plist

(包含codecID和layoutID相关值)

二、定制声卡信息提取

1、提取声卡codec

2、verbit获取你的声卡configdata和节点信息

3、推导自己的Platforms节点

三、所需工具

1、Ubuntu系统。

2、verbit

将codec生成verbs.txt文件。

链接:verbit.zip

3、zlib转换器

链接:已包含修改好的Platforms.xml以及zlib转换器

4、AppleALC-master声卡驱动

链接:vit9696大神最新AppleALC-master

需要最新lilu.kext配合,并且需要完整lilu才行(lilu中不能缺少Resources文件夹)

链接:vit9696大神最新Lilu-master

四、codec提取方法

1、U盘安装Ubuntu系统

网上很多需要在U盘中写入镜像,其实现在的Ubuntu也有类似WinPE的功能,将下载好的安装包解压到U盘中即可。新版ubuntu出现了解压后无法引导的情况,用制作U盘启动盘的方法把镜像写入U盘就可以(记得提前把U盘数据转移,会格盘的)。

开机启动时引导进入U盘的Ubuntu系统

出现Ubuntu的系统选项,选择Try Ubuntu without installing

ubuntu系统选项.jpg

进入Ubuntu系统的桌面打开我的电脑,进入路劲proc/asound/card1,将文件夹里面的所有名为codec#开头的文件都复制出来,其中一个就是你的声卡codec,千万不要把HDMI音频的文件复制出来了(如果card1没有就一定在card0文件夹,笔记本一般都在card1中)

2、进入macOS系统中,将提取的Codec.txt改名为codec_dump.txt放在桌面上,将verbit.zip解压到桌面,打开终端输入:

cd desktop

./verbit codec_dump.txt > verbs.txt

获得verbs.txt(部分朋友获取的为空白,是因为两个命令一起使用的结果)

注意:部分声卡终端输入命令会得到一个错误文件,

文件的内容如下:

Codec: Realtek ALC269VC

Address: 0

AFG Function Id: 0x1 (unsol 1)

需要删除codec_dump.txt文件中的这行数据AFG Function Id: 0x1 (unsol 1),也要把空格删除完。再执行一次命令,得到正确的verbit.txt文件。(感谢Lenged发现问题)

verbs.png

打开codec.txt搜索上面的红框中的Node,找到每个Node下面的Pin Default那行,看看中间是否有[N/A],将有[N/A]的将“节点信息”中的一行删除。

删除后,红框中的modified verbs每行四个数,一共7组就是需要的configdata(codec.txt内搜索EAPD字样,存在EAPD,必须在configdata中该接口最后加入一组01470C02)

五、修改configdata信息

①第一组

第一组.png

红框中是接口的顺序。数字越低那么优先权就越高。如果有 [N/A] 的接口既是无用的接口可以设成 f。

内置麦克风 —— Mic at Int N/A

内置扬声器 ——Speaker at Int N/A

线路输出 —— line out

外置麦克风 —— Mic at Ext Rear

线路输入 —— Line In at Ext Rear

耳机 —— HP Out at Ext Rear

SPDIFOut —— SPDIF Out at Ext Rear

如果你的声卡有line out 节点那么

Mic at Int N/A =5

Speaker at Int N/A =1

line out =2

Mic at Ext Rear =6

Line In at Ext Rear =5

HP Out at Ext Rear =3

SPDIF Out at Ext Rear =4

如果无line out则

Mic at Int N/A =4

HP Out at Ext Rear =2

Mic at Ext Rear = 5

Line In at Ext Rear =4

Speaker at Int N/A =1

SPDIF Out at Ext Rear =3

注:以上关联,是我自行摸索出来的,仅供参考。感谢 @jomggx

提供出的建议,我将相对规范贴出来供参考

1.Mic(Mic at Int)

2.Line In

3.SPDIF In

4.IntSpeaker(Speaker at Int )

5.Headphone(HP Out at Ext Rear )

6.SPDIF Out

7.Ext Mic(Mic at Ext Rear)

8.Line Out

F.屏蔽

(耳机优先级一定要低于内置扬声器,外置麦克风一定要低于内置麦克风,默认开启的是内置扬声器和麦克风,第四组数据把耳机设置为0,既插入检测。这样就可以实现自动切换了。)

②第二组

第二组.png

line out设置为f,其余皆为0

③第三组

第三组.png

第三组为接口颜色,这个改不改无所谓,我是默认没改

0 = Unknown

1 = Black

2 = Grey

3 = Blue

4 = Green

5 = Red

6 = Orange

7 = Yellow

8 = Purple

9 = Pink

A - D = Reserved

E = White

F = Other

④第四组

第四组.png

接口为 0,表示当接口被检测到时使用。如果是笔记本的话内建的麦克风和扬声器要设成1,即当耳机插入时,内建扬声器静音,耳机0 接口被检测到就是用耳机。

Mic at Int N/A =1

Speaker at Int N/A =1

line out =0

Mic at Ext Rear =0

Line In at Ext Rear =0

HP Out at Ext Rear =0

SPDIF Out at Ext Rear =1

⑤第五组

第五组.png

设定接口功能信息,按照以下进行修改

0 = Line Out

1 = Speaker

2 = HP Out

3 = CD

4 = SPDIF Out

5 = Digital Other Out

6 = Modem Line Side

7 = Modem Handset Side

8 = Line In

9 = AUX

A = Mic In

B = Telephone

C = SPDIF In

D = Digital Other In

E = Reserved

F = Other

Mic at Int N/A =a

Speaker at Int N/A =1

line out =0

Mic at Ext Rear =8(ALC892需要通过line in实现外置mic)

Line In at Ext Rear =8

HP Out at Ext Rear =2

SPDIF Out at Ext Rear =4

⑥第六组

第六组.png

连接装置类型

0 = Unknown

1 = 1/8" stereo/mono

2 = 1/4' stereo/mono

3 = ATAPI internal

4 = RCA

5 = Optical

6 = Other Digital

7 = Other Analog

8 = Multichannel Analog (DIN)

9 = XLR/Professional

A = RJ-11 (Modem)

B = Combination

F = Other

通常接口是 1/8" stereo/mono,SPDIF 是 Optical。笔记本内建的接口是 ATAPI internal。(这只是描述,对驱动没有本质影响,我默认没有修改。)

⑦第七组

第七组.png

0为插入接口的,如外置麦克风、耳机等。

(如果codec_dump出来有 [N/A] 的就是无用的port,数字为4。)

9为给笔记本內建,像内置扬声器、内置麦克风等

Mic at Int N/A =9

Speaker at Int N/A =9

line out =0

Mic at Ext Rear =0

Line In at Ext Rear =0

HP Out at Ext Rear =0

SPDIF Out at Ext Rear =0

⑧第八组

第八组.png

插口所在位置

0 = Rear(后)

1 = Front(前)

8=HDMI

9=ATAPI (內建)

(这只是描述,对驱动没有本质影响,我默认没有修改。)

将八组数据修改后进行整理得到configdata值(每个参数中保留一位空格):

codec.txt内搜索EAPD,存在EAPD字样的接口后加入 0XX70C02(XX为接口名)

01271c50 01271d01 01271ea6 01271f90

01471c10 01471d01 01471e17 01471f90 01470C02

01771c20 01771d10 01771e01 01771f01

01871c60 01871d10 01871ea1 01871f01

01a71c50 01a71d10 01a71e81 01a71f01

01b71c30 01b71d10 01b71e21 01b71f01 01b70C02

01e71c40 01e71d11 01e71e45 01e71f01

六、推导节点及Platforms.xml修改

接口的节点信息.png

红框中为接口节点。

想要实现接口功能需要推导节点,一般为3个节点实现一个接口功能,且节点一般不重复。其中输入为反向推导,输出为正向推导,即输入时接口节点是最后一个节点,输出时接口节点是第一个节点(codec中的节点值为16进制,Platforms.xml中需要转换成10进制)

注:部分朋友的扬声器、mic等只有两个节点,疑似接口功能被屏蔽,需要在linux下激活接口才能提取到信息。过程复杂,建议详细查看黑果小兵的声卡驱动定制教程,本教程已不适用。

①输入以Mic at int(内置麦克风)为例在codec_dump.txt搜索0x12,

搜索到2个0x12,一个为节点本身即Node 0x12,一个在关联节点0x22下

0x22节点.png

0x12节点.png

然后在codec_dump.txt搜索0x22,搜索到2个0x22,一个为节点本身即Node 0x22,一个在关联节点0x09下

0x09节点.png

0x22节点.png

按照输入节点反向推导,获得内置麦克风的节点为:

十六进制:0x09 → 0x22 → 0x12

十进制:9 → 34 → 18

②输出以Speaker at Int N/A(内置扬声器)为例在codec_dump.txt搜索0x14,

搜索到4个0x14,首先找到节点本身即Node 0x14

0x14节点.png

找到connection中有关联节点0x0c

在codec_dump.txt搜索0x0c,搜索到6个0x0c,首先找到节点本身即Node 0x0c

0x0c节点.png

找到connection中有关联节点0x02,0x0b,在已选节点不重复的前提下,优先选择数字小,即0x02节点

按照输出节点正向推导,获得内置扬声器的节点为:

十六进制:0x14 → 0x0c → 0x02

十进制: 20 → 12 → 2

由此推导出所有节点,由于节点很多,可能出现有共同关联的节点,且没有其他节点,则更换上个节点,重新推导,直到没有重复的为止。

推导节点

2、修改Platforms.xml

根据我的Platforms.xml进行修改即可

Platforms

PathMap下一共三大项:

0为输入(第一输入项,外置mic可以实现自动切换的只需要一个输入项,无法实现的需要第二输入项),1为输出(第一输出项),2为SPDIF

输入项分为三大项:

0为内置mic,1为linein,2为外置mic(ALC892外置mic通过linein实现,由此删除外置mic项)

输出项分为三大项:

0为耳机,1为内置扬声器,2位lineout

以内置mic为例:内置mic底层三项代表三个节点,将之前推导的三个节点按顺序输入到NodeID中,在内置mic节点添加boost项(设置电平增效数值为1、2、3,数值3最大),设置为3,可以减少mic杂音的情况(外置mic和linein的节点也可以添加boost项)

内置mic.png

部分机器会出现插入外置mic不识别的情况,其实只是外置mic无法自动切换导致无法显示出来,需要调整将节点到第二类输入项中来实现手动切换,如图

外置mic节点接口

以此类推,所有节点修改完毕后,在PathMapID中输入你的声卡型号,Platforms.xml完毕,保存后用zlib转换器转换成Platforms.xml.zlib格式。

七、制作辅助文件

1、Applealc-master——resources——alc892中的info.Plist

用来描述你的声卡以及对layout和Platforms文件位置、id的说明

ALC892的codecID为283904146,这是0x10ec0892十六进制转换过来的。在codec_dump开头中可以找到,macos的计算器有进制转换功能。

然后修改layouts第一项,修改id为1,path地址改为你做好的layouts.xml.zlib文件,Platforms设置方式一样。(全篇LayoutID统一为1,也可统一为其他数字)

info.png

2、Applealc-master——resources——pinconfigs.kext——contents中的info.Plist

集合了所有声卡的信息,我们只用保留需要的,为防止冲突,只修改第一项,其他都可以删除。第一项中修改codec为alc892,codecID为283904146,这是0x10ec0892十六进制转换过来的。在codec_dump开头中可以找到,macos的计算器有进制转换功能。configData中修改为自己的configdata即可。LayoutID修改为1(全篇LayoutID所有统一为1,也可统一为其他数字)

info.png

3、Applealc-master——resources——alc892中layout1.xml.zlib

描述声卡型号以及声卡ID信息

首先向zlib文件转换为xml文件才可以编辑

LayoutID修改为1(全篇LayoutID所有统一为1,也可统一为其他数字),修改codecID为283904146,这是0x10ec0892十六进制转换过来的。在codec_dump开头中可以找到,macos的计算器有进制转换功能。

pathmapID修改为892。部分声卡需要删除lineout项才能驱动,需要自行尝试。

layout.png

外置mic需要修改电压控制值来实现外置mic驱动。

搜索codec中外置mic下的vref值,vref含义为初始电压基础上增加的百分比,如图为vref为50。当vref不为Hiz时,muteGPIO={(vref转换为16进制)+"0100"+node id}转换为10进制,codec中vref表示的是十进制,计算时转为16进制。如:在节点 0x18发现vref_50,50转换为16进制=32,则muteGPIO=(32010018)转换为10进制=838926360;如果vref为Hiz,则muteGPIO=0

vref值.png

由于外置mic需要通过linein实现,因此修改linein中的muteGPIO为838926360

muteGPIO值.png

最后确认一共需要修改和定制的为4个文件:

1.Applealc-master——resources——alc892—>Platforms.xml.zlib

2.Applealc-master——resources——alc892—>layout1.xml.zlib

3.Applealc-master—>resources—>alc892—>info.Plist

4.Applealc-master—>resources—>pinconfigs.kext—>contents—>info.Plist

全篇所有的layoutID都为1,如果需要修改其他数字,需要注意layout文件名也需要修改,如layout25.xmI.zlib

这四个文件保存好以后,系统升级驱动失效时可获取最新的AppleALC-master文件重新编译即可,十分方便。

八、编译声卡驱动

下载好最新的AppleALC-master文件,由于10.12.6之后需要lilu.kext才能编译并驱动声卡,还需要下载最新的lilu.kext放置在AppleALC-master的根目录,需要注意的是lilu.kext中必须包含有Resources(部分lilu.kext缺少该文件)

将之前定制好的四个文件,放置在对应的位置,运行AppleALC-master中的AppleALC.xcodeproj

运行xcode.png

如果出现红色叹号报错,可能出现以下问题:

1、缺少lilu.kext文件或lilu.kext中缺少resources下的文件(查找最新lilu.kext,并确保必须包含有Resources)

报错1.png

2、显示缺少liluAPI,说明lilu.kext与AppleALC-master版本不对应,在下载时确保最新或者版本说明中相互对应,确保相互兼容。

报错2.png

九、实现声卡驱动

将做好驱动和对应版本的lilu.kext放到EFI—>CLOVER—>kexts—>10.13文件夹中。

然后在config.plist中加入以下代码:

Audio

Inject

1

在10.15系统升级后,部分朋友因为ALC声卡驱动造成睡眠自动重启,可以打入kexttopatch补丁

Find: 63 6F 6D 2E 61 70 70 6C 65 00 5F 5F 6B 65 72 6E 65 6C 5F 5F 00

Replace: 6E 6F 74 2E 61 70 70 6C 65 00 5F 5F 6B 65 72 6E 65 6C 5F 5F 00

clover注入ID不能让这个声卡驱动正常工作所以这里必须采用DSDT注入ID

打开DSDT搜索HDEF插入函数

Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method`

{

Store (Package (0x0A)

{

"hda-gfx",

Buffer (0x0A)

{

"onboard-1"

},

"codec-id",

Buffer (0x04)

{

0x92, 0x08, 0xEC, 0x10 //修改为自己的声卡型号

},

"layout-id",

Buffer (0x04)

{

0x01, 0x00, 0x00, 0x00//修改为自己的layoutID

},

"device-type",

Buffer (0x07)

{

"ALC892"//修改为自己的声卡型号

},

"PinConfigurations",

Buffer (Zero) {}

}, Local0)

DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))

Return (Local0) }

十、总结

以这种仿冒方式定制的声卡,对于笔记本十分友好,同时也能很好的解决唤醒无声以及杂音问题。以上教程是通过学习远景贴并总结个人经验写成的,我个人定制声卡驱动后没有出现唤醒无声以及杂音等问题,如果由以上问题没有解决的,可以参考一下帖子。这里附上原贴,以及我个人的帖子

作者:13469977015002 傻瓜式仿冒声卡驱动第二季(仿冒ALC892)

(适用于10.12和13)ALC892的经验之谈,简化大神教程帮助喜欢动手仿冒的朋友

部分不适用于该教程的声卡可以根据黑果小兵的教程进行尝试,祝Good Lock。

黑果小兵:使用AppleALC声卡仿冒驱动AppleHDA的正确姿势

黑苹果alc269声卡仿冒id_黑苹果定制声卡驱动(ALC892为例)相关推荐

  1. windows下修改黑苹果config_【黑苹果】解决linux和黑苹果下usb无线网卡兼容问题

    黑苹果* 简单的说,就是在自己的电脑上安装苹果系统(MAC OS).但由于苹果公司的软硬件限制,导致装系统这么一个在WIN系统中平常的事情,变成很多极客爱好者的专业.比如,我们的毛老师- 上面这个配置 ...

  2. amd860k能装黑苹果吗_黑苹果配置 篇六:黑苹果硬件选购指南之终篇--2019年8月

    黑苹果配置 篇六:黑苹果硬件选购指南之终篇--2019年8月 2019-08-17 17:31:38 26点赞 238收藏 33评论 你是AMD Yes党?还是intel和NVIDIA的忠实簇拥呢?最 ...

  3. v8声卡怎么录制唱歌_V8声卡坑爹?想买的看完再决定,买了的看如何调试声卡...

    作为职业声卡测评人,我不想带有主观情绪去评价任何一款声卡,入行的时候,我的师傅告诉我永远要保持客观公正.中立的态度去看待一款产品,因为任何一产品款就像万事万物一样:存在即合理. 今天我随意搜索了下V8 ...

  4. USB声卡噪音问题,USB声卡中文名设置,基于STM32F411

    目录 1.USB声卡噪音问题 1.1USB声卡噪音问题解决 1.2USB消除噪声测试 2.USB声卡中文名设置 2.1USB想要中文名,咋整 3.晒晒板子 1.USB声卡噪音问题 使用STM32F41 ...

  5. 黑苹果安装教程,教您黑苹果怎么安装

    现在很多年轻人都可以去折腾着黑苹果了,说句实话其实不是因为他们没有钱,这些小年轻人就是爱去折腾,可能是最简单的安装教程,纯小白纯傻瓜式的教程.此教程适用于单硬盘,而且硬盘格式为MBR的童鞋们.下面,小 ...

  6. 黑苹果alc269声卡仿冒id_10.10中我的ALC269VC依旧无声?学习并尝试制作了仿冒声卡,依然无声。...

    请各位帮忙看一下我电脑的情况.下面有相关的截图和照片.哪位大大可以帮忙修改一下不? 问题有3个: 1.其中V图中显示的声卡信息ID为[8086:1e20],这个地址是集成显卡中的HDMI音频的驱动吗? ...

  7. 黑苹果alc269声卡仿冒id_Alc269声卡的一些信息

    节点信息 Mic at Int Node=0x12 Speaker at Int Node=0x14 HP Out at Ext Front Node=0x15 Mic at Ext Front No ...

  8. amd860k能装黑苹果吗_想用黑苹果?这些硬件不要买(内附支持列表)

    小编曾写过好几篇关于如何安装黑苹果的教程,但是对于黑苹果最主要的硬件要求并没有过多的讲解,于是,本文小编就整理一下哪些硬件雷区是需要避免的.接下来,我们就来看看,如果你要配置一款支持黑苹果的主机,哪些 ...

  9. 黑苹果白果序列号_黑苹果从入门到放弃黑苹果:OC配置入门

    自从苹果采用intel处理器以来,黑苹果成为不少DIY玩家的选择,在现在科技快速发展的时代,在黑苹果引导方面也有很大的进步.目前open core引导的普及,使安装黑苹果很简单,甚至和安装Window ...

  10. 4600u黑苹果 r5_联想G50-70AT-ISE上黑苹果成功,分享经验和clover配置。

    简要说明: 先说一下我的电脑配置(后面会有我的clover配置) CPU Intel 酷睿I7 4510U CPU主频    2GHz 核心架构     Haswell 内存容量     4G(4GB ...

最新文章

  1. STM32低功耗模式下GPIO如何配置最节能?
  2. Qt——模态、非模态
  3. 为什么说Netty是性能之王,因为它用了 Reactor 模型啊
  4. 随笔18 java中的类加载器
  5. 线性表 c++语言代码,线性表C++的两种实现(顺序表示、单链表)
  6. html 按下和松开事件,利用JQuery实现一个键盘按下与松开触发事件
  7. JavaFX 中使用多线程与保证 UI 线程安全
  8. MYSQL--一条SQL更新语句是如何执行的?
  9. 普通公司员工的编程水平与阿里巴巴有多大差距?
  10. linux中文件大小设置函数,truncate函数和ftruncate修改文件大小-linux
  11. 实战VEEAM BR 10针对物理AD服务器备份与APP感知还原
  12. Sentinel服务熔断配置exceptionsToIgnore_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0053
  13. Linux基础急速入门:用 TCPDUMP 抓包
  14. asp.net dev xtraReporting(一)静态页面
  15. 微信.gif表情包保存到本地
  16. 关于VS2019调试问题:进程已退出,代码为-1073741819(已解决)
  17. 牛客SQL练习题笔记 -- 通配符%和以扩充表的角度理解内连接
  18. Trove 3.0.0
  19. 企业服务是移动互联网的下一个风口
  20. 云师大的计算机师范专业好吗,云南除了云南师范大学,还有这些实力不错的师范学校...

热门文章

  1. 改变PDF阅读器、CAJViewer的背景颜色
  2. 我去,还有这种网站!
  3. 关于解决miui10国际版刷入之后无法认证的问题
  4. 求解汉诺塔问题(提示, 使用递归)
  5. 快速入门linux(收藏版)
  6. 异速联服务器配置系统管理员,异速联V6.2.4.0正式版全新发布
  7. 解决删除文件时出现“无法读取源文件或磁盘”的办法
  8. 图书租赁管理系统 图书馆借书还书 计算机毕设项目
  9. 联想服务器怎么备份系统软件,联想电脑管家备份电脑驱动程序教程
  10. 美国通货膨胀持续引发市场关注,国际黄金价格还有上涨机会吗?