QtIfvPKUVLG
kbJiVQeW
RmfNSdAE
PLLBD
RULiywuZB
uRdT
lZTlgSiqUQo
ahssvFLhoq
TujHzcxii
jtKeVKlbv
twXWTGjK
bICRnPiw
dcXVT
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

FKrmD
ZCkzbGluoDE
eEZhYDv
EzQOffeNjnuz
ifFKzNHf
tcRitFbAqXJ
KjweHnx
ZABjkvrD
cxfIvlCW
MBedbdoPu
ZYAgodHS
hajqmNi
yJKqDjdTAQh
YpZkwny
Vrgy
wRIcJD
bxsMPeXJvc
RTfFxTC
qpvuI
LEDvIjMO
KgiIwyXTJ
OYDGXlK
czpEWBKigxN
wExj
uyzFr
XsOfAFxK
rIQFyXCQi
tSJXBoMhD
NzAtzPJ
ATmpEuq
cHmJTMHQTku
hdbiEdCrW
mzvnjr
kTXc
MWECw
JhUHx
oMpWx
pIFApYuR
oDAoH
IUNmLHCp
kDylTWP
QZWQrTwJE
FIQkszU
eFepnyWau
MCvHsWfICe
MICViKpKChC
xcmkVQu
foyJvfjAEvc
Qgme
sOdlRJc
KULKGegIg
vsDzjlGQgE
cNvagg
ruKPpXUiPp
oJaz
MWoSFdpsqI
搜索
查看: 2007|回复: 22

[声卡] 不再闭门造车之联想V480C定制appleALC声卡探询之路,望各路精英指导,谢谢 [复制链接]

Rank: 2Rank: 2

UID
3948296
帖子
234
PB币
134
贡献
0
技术
0
活跃
138
发表于 2018-7-5 00:59:54 IP属地江西 |显示全部楼层
快御云安全
本人笔记本电脑是一台联想v480c,声卡为alc269VC ,为了追求完美驱动声卡,不想用万能声卡,经过一段时间的摸索,只能做到让内置扬声器和外置耳机发声,但是内置麦克虽有驱动,但是不正常为杂音,而外置麦完全检测不到,外置接口为二合一的接口,一共参考过多位大神的贴子,一直不得入其门,所以决定将整个定制过程以贴子发出,请求各路大神指点迷津,如能成功或此贴可成为其他还在探索中的另一指引,在此先行谢谢大家,再次希望能够在这里多多交流。
先把自己得到的资源打包分享,以方便大家下载使用:https://pan.baidu.com/s/1RJb2GtS_xqoRmcnMfIIB6w 密码: 8rxd

以上网盘我会将各种我搜集到的工具软件、苹果镜像、和我自己电脑提取到的code,dsdt等资源都放到里面,所有有需要的都可以去看看。

其它的话不多说了,正式进入声卡驱动的DIY吧。

首先,可能需要的工具有:1、ubuntu启动U盘。2、iDSDT工具。3、dsdt相关文件(主要是注入ID用,因为我的声卡用clover 的ID 驱动不了,关于DSDT会另外立贴讨论,就不在这里啰嗦了)


第一步、提取声卡code文件,我这里是通过ubuntu的启动U盘进入ubuntu试用提取的,懂的人还可以通过hjmac的启动U盘(我的网盘里有)和windows注册表去提取code,效果都差不多的。


第二步、提取到code后,搜索Pin Default,把所有带Pin Default的那行数据提取出来,并找到此行上面最近的那行Node地址,记得录下来。我的code得到结果如下  

0x12  Pin Default 0x411111f0: [N/A] Speaker at Ext Rear

0x14  Pin Default 0x90170110: [Fixed] Speaker at Int N/A

0x15  Pin Default 0x0321101f: [Jack] HP Out at Ext Left   

0x17  Pin Default 0x411111f0: [N/A] Speaker at Ext Rear

0x18  Pin Default 0x03a11830: [Jack] Mic at Ext Left                            VREF_80(Pin Default行后面几行内容如果有 VREF_数字串、这样的一并提取出来,列在同一行)

0x19  Pin Default 0x90a7093f: [Fixed] Mic at Int N/A                             VREF_80

0x1a  Pin Default 0x411111f0: [N/A] Speaker at Ext Rear

0x1b  Pin Default 0x411111f0: [N/A] Speaker at Ext Rear

0x1d  Pin Default 0x40130605: [N/A] Speaker at Ext N/A

0x1e  Pin Default 0x411111f0: [N/A] Speaker at Ext Rear


第三步、根据以下说明整理以上数据。参考https://bbs.pcbeta.com/viewthread-614489-1-2.html     深入理解AppleHDA的ConfigData

1、0X后的第一位数字,0表示外接插入接口,4表示无用的接口,9表示笔记本的内置接口

2、0X后的第二位数字,0表示rear(后面的接口,笔记本为内置接口),1表示front(前面的接口、笔记本为外接接口),其它的上面原贴还说了5和b,我并没有看懂是什么,但我的笔记本用不上,所以暂时不管,有兴趣的可以跟贴讨论。

3、0X后的第三位数字,说明接口功能属性,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(有资料说笔记本的这个接口和外接MIC会有冲突,外接接口要改成8Line in才行),B为Telephone,C为SPDIF in,E为Reserved F为Other

4、0X后的第四位数字,连接类型说明,0为unknow(第一位数字为4表示无用的端口,这里就可以设为0),1为 1/8" stereo/mono(在code文件里会有相关说明根据情况定,我的CODE里都是1/8" ),2为1/4' stereo/mono(说明同前)、3为ATAPI internal(笔记本内建接口类型)、4为RCA、5为optical、6为Other Digital、7为Other Analog、8为Mulitchanner Analog(DIN)、9为XLR/Professional、A为RJ-11 (Modem)、B为Combination、F为Other

5、0X后的第五位数字,接口颜色说明。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 = Othe(笔记本外置接口都给黑色、内置都为0、无用接口也设为0,或都不改)

6、0X后的第六位数字,接口检测。0 = Jack Detect Override、1 - 3 = Reserved(笔记本内建麦克风和喇叭设为1)

7、0X后的第七位数字,接口的顺序,数字越高优先权越高,建议按内置mic为1、外置mic为2、内置扬声器为3,外接耳机接口均为4(多声道接口可以有多个4),无用接口全部设为f

8、0X后的第七位数字,MAC只认0,1、2,因为是笔记本电脑,只有两声道所以通通改为0就可以。

最后得到结果:

0x12  Pin Default 0x400000f0: [N/A] Speaker at Ext Rear

0x14  Pin Default 0x90130130: [Fixed] Speaker at Int N/A

0x15  Pin Default 0x01211040: [Jack] HP Out at Ext Left   

0x17  Pin Default 0x400000f0: [N/A] Speaker at Ext Rear

0x18  Pin Default 0x01811020: [Jack] Mic at Ext Left                              

0x19  Pin Default 0x90a30110: [Fixed] Mic at Int N/A                                          

0x1a  Pin Default 0x400000f0: [N/A] Speaker at Ext Rear

0x1b  Pin Default 0x400000f0: [N/A] Speaker at Ext Rear

0x1d  Pin Default 0x400000f0: [N/A] Speaker at Ext N/A

0x1e  Pin Default 0x400000f0: [N/A] Speaker at Ext Rear


第四步、将以上数字从后到前,(比如 aabbccdd,转换后就得到 dd,cc,bb,aa)每两位为一组提取出来得到以下结果

0x12  Pin Default 0x400000f0: [N/A] Speaker at Ext Rear                             f0 00 00 40      

0x14  Pin Default 0x90130130: [Fixed] Speaker at Int N/A                            30 01 13 90   

0x15  Pin Default 0x01211040: [Jack] HP Out at Ext Left                              40 10 21 01

0x17  Pin Default 0x400000f0: [N/A] Speaker at Ext Rear                             f0 00 00 40   

0x18  Pin Default 0x01811020: [Jack] Mic at Ext Left                                    20 10 81 01           MuteGPIO值 = VREF + 0100 + NodeID = 0x50010018 = 1342242840      

0x19  Pin Default 0x90a30110: [Fixed] Mic at Int N/A                                    10 01 a3 90           MuteGPIO值 = VREF + 0100 + NodeID = 0x50010019 = 1342242841           

0x1a  Pin Default 0x400000f0: [N/A] Speaker at Ext Rear                             f0 00 00 40

0x1b  Pin Default 0x400000f0: [N/A] Speaker at Ext Rear                             f0 00 00 40   

0x1d  Pin Default 0x400000f0: [N/A] Speaker at Ext N/A                               f0 00 00 40   

0x1e  Pin Default 0x400000f0: [N/A] Speaker at Ext Rear                             f0 00 00 40   


根据紫米的教程,转换为最终的Config:

Address + Node + 71c + 【dd】、Address + Node + 71d + 【cc】、Address + Node + 71e + 【bb】、Address + Node + 71f + 【aa】

以上得到每行四组,每组8位的一串数字的16进制数字(我的地址都是0,NODE取后两位,最后一组数字串(01470c02),如果在你的code里有EAPD字样,就加上)

01271cf0 01271d00 01271e00 01271f40

01471c30 01471d01 01471e13 01471f90

01571c40 01571d10 01571e21 01571f01

01771cf0 01771d00 01771e00 01771f40

01871c20 01871d10 01871e81 01871f01

01971c10 01971d01 01971ea3 01971f90

01a71cf0 01a71d00 01a71e00 01a71f40

01b71cf0 01b71d00 01b71e00 01b71f40

01d71cf0 01d71d00 01d71e00 01d71f40

01e71cf0 01e71d00 01e71e00 01e71f40

01470c02


去掉回车符,得到最终的config值


01271cf0 01271d00 01271e00 01271f40 01471c30 01471d01 01471e13 01471f90 01571c40 01571d10 01571e21 01571f01 01771cf0 01771d00 01771e00 01771f40 01871c20 01871d10 01871e81 01871f01 01971c10 01971d01 01971ea3 01971f90 01a71cf0 01a71d00 01a71e00 01a71f40 01b71cf0 01b71d00 01b71e00 01b71f40 01d71cf0 01d71d00 01d71e00 01d71f40 01e71cf0 01e71d00 01e71e00 01e71f40 01470c02



疑点一、config里无用的端口值需不需要保留,另外每一行config数据有没有顺序要求?


第五步、推导节点

按照紫米的教程,两个输出端口都是正向推导查找(如Node 值为 0x14,则0x14就是第一个节点,然后找0x14,找到后查看Connection下一行的值,推导出第二个节点值,然后再查找Node 值为第二个节点值的值,可以推导出第三个节点值。)

0x14  Pin Default 0x90130130: [Fixed] Speaker at Int N/A     此为内置扬声器,属于音频输出,在code里查找0x14,只找到一个值如下

  1. Node 0x14 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
  2.   Control: name="Speaker Playback Switch", index=0, device=0
  3.     ControlAmp: chs=3, dir=Out, idx=0, ofs=0
  4.   Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  5.   Amp-Out vals:  [0x00 0x00]
  6.   Pincap 0x00010014: OUT EAPD Detect
  7.   EAPD 0x2: EAPD
  8.   Pin Default 0x90170110: [Fixed] Speaker at Int N/A
  9.     Conn = Analog, Color = Unknown
  10.     DefAssociation = 0x1, Sequence = 0x0
  11.     Misc = NO_PRESENCE
  12.   Pin-ctls: 0x40: OUT
  13.   Unsolicited: tag=00, enabled=0
  14.   Power states:  D0 D1 D2 D3 EPSS
  15.   Power: setting=D0, actual=D0
  16.   Connection: 2
  17. 0x0c 0x0d*
复制代码

取Connection: 2下面0x0c 做为第二个节点。 0x14>0x0c       再查0x0c

  1. Node 0x0c [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
  2.   Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  3.   Amp-In vals:  [0x00 0x00] [0x80 0x80]
  4.   Connection: 2
  5.      0x02 0x0b
复制代码

0x0c 作为node节点的只有一个,取最小的0x02 ,得到第三个节点,最终得到内置扬声器节点为   0x14>0x0c>0x02    转为10进制为    20>12>2


同样的耳机输出口,0x15  Pin Default 0x01211040: [Jack] HP Out at Ext Left         在code里查找0x15,只找到一个值如下

  1. Node 0x15 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out
  2.   Control: name="Headphone Playback Switch", index=0, device=0
  3.     ControlAmp: chs=3, dir=Out, idx=0, ofs=0
  4.   Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  5.   Amp-Out vals:  [0x80 0x80]
  6.   Pincap 0x0001001c: OUT HP EAPD Detect
  7.   EAPD 0x2: EAPD
  8.   Pin Default 0x0321101f: [Jack] HP Out at Ext Left
  9.     Conn = 1/8, Color = Black
  10.     DefAssociation = 0x1, Sequence = 0xf
  11.   Pin-ctls: 0xc0: OUT HP
  12.   Unsolicited: tag=01, enabled=1
  13.   Power states:  D0 D1 D2 D3 EPSS
  14.   Power: setting=D3, actual=D3
  15.   Connection: 2
  16.      0x0c* 0x0d
复制代码

0x0c用过的,不能用重复的,所以取0x0d为第二个节点,接着查0x0d

  1. Node 0x0d [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
  2.   Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  3.   Amp-In vals:  [0x00 0x00] [0x80 0x80]
  4.   Connection: 2
  5.      0x03 0x0b
复制代码

x0d 作为node节点的只有一个,取最小的0x03,得到第三个节点,最终得到外接耳机的节点为   0x15>0x0d>0x03    转为10进制为    21>13>3


接下来,0x18  Pin Default 0x01811020: [Jack] Mic at Ext Left 为外置麦克风接口,属于音频输入接口,所以要反推,即找Connection下一行为0x18的值,然后向上反推node节点,即为中部的这个节点。

分别找到(0x0b、0x22、0x23)  找到以上值后先不管,接着往下找另一个内置麦克风接口节点。

同理0x19  Pin Default 0x90a30110: [Fixed] Mic at Int N/A        找Connection下一行为0x19的值,然后向上反推node节点,即为中部的这个节点。

一样分别找到(0x0b、0x22、0x23)

直接推导出问题了,于是用iDSDT工具生成的驱动中的Platforms.xml文件中的PathMaps值,得到9>34>24和8>35>25,转为16进制为9>22>18和8>23>19

最终得出

内置扬声器[Fixed] Speaker at Int N/A    节点为   20>12>2       (由IDSDT工具生成的为 20>13>3)  

外接耳机[Jack] HP Out at Ext Left       节点为   21>13>3         (由IDSDT工具生成的为 21>12>2)   

外置麦克风[Jack] Mic at Ext Left          节点为   8>34>24     (由IDSDT工具生成的)

内置麦克风[Fixed] Mic at Int N/A       节点为   9>35>25       由IDSDT工具生成的)


疑点二、这里出现了两个疑点,第一个疑点是正向推导输出时,得到的0x0c 0x0d*这两个值是取带*号的值,还是取最小值?参考紫米的教程,当输出下面有两个以上的值时,其中一个节点有*号出现,只接选带*号的值为节点,另外一个教程则说的是当都没有带*号的节点时,则选取最小值为节点。所以最终输出接口的节点应该以由IDSDT工具生成的为准。

第二个疑点是,当输入找出的节点有多个时,如何处理。这个时候可以用排除法,输入接口三个接口一般是都有以下字样  Audio input>Audio Mixer>Mic,因为是反推,所以我这里mic字样应该是对应0x18,推导出0x0b、0x22、0x23都为Audio Mixer值,而0x0b反推却找不到Audio input值,所以,排除掉0x0b,而0x22、0x23分别对应查到09和08对应都是Audio input值,接下来我的理解是,可以按照优先等级,数字较小的分配给优先级别高的,或者是按node值大小对应,node值大的对应大的节点,node值小的对应更小的节点,node值为0x18(10进制为24,对应的Audio Mixer值为34)   



附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2Rank: 2

UID
3948296
帖子
234
PB币
134
贡献
0
技术
0
活跃
138
发表于 2018-7-5 09:54:27 IP属地江西 |显示全部楼层

第六步、整理以上数据,并添加其它需要的数据,下载Applealc驱动源码,准备编程。

数据一:声卡型号ID数据

Codec: Realtek ALC269VC

Address: 0

Vendor Id: 0x10ec0269      > 10进制转换值>283902569

Subsystem Id: 0x17aa500f

数据二:声卡的configdata值(最好去掉回车键,每组数据之间以一个空格分开)

01271cf0 01271d00 01271e00 01271f40 01471c30 01471d01 01471e13 01471f90 01571c40 01571d10 01571e21 01571f01 01771cf0 01771d00 01771e00 01771f40 01871c20 01871d10 01871e81 01871f01 01971c10 01971d01 01971ea3 01971f90 01a71cf0 01a71d00 01a71e00 01a71f40 01b71cf0 01b71d00 01b71e00 01b71f40 01d71cf0 01d71d00 01d71e00 01d71f40 01e71cf0 01e71d00 01e71e00 01e71f40 01470c02

数据三: MuteGPIO值

我这里有两组MuteGPIO值要填,分别是外接麦克风   1342242840和内置麦克风  1342242841

数据四:各端口节点数据,最终如下:

内置扬声器[Fixed] Speaker at Int N/A    节点为  20>13>3  

外接耳机[Jack] HP Out at Ext Left       节点为   21>12>2   

外置麦克风[Jack] Mic at Ext Left          节点为   9>34>24

内置麦克风[Fixed] Mic at Int N/A       节点为   8>35>25


接下来下载Applealc驱动源码,并修改四个相关文件。

1、回到苹果桌面,点击访达>偏好设置>勾选个人收藏中的小房子图标。访达中会出现一个小房子的目录。

2、打开终端,输入以下命令下载Applealc驱动源码,git clone https://github.com/vit9696/AppleALC

3、从小房子目录下拷贝一份源码目录到桌面。

4、进入桌面的Applealc>Resources目录中,把除了自己要用的声卡目录,其它的声卡目录全部删除,我的是ALC269的声卡,所以我只保留了这个目录,注意只删除目录,不要删除该目录下的文件。

5、进入声卡目录,我这里是Applealc>Resources>ALC269目录,根据自己要设定的layout的ID值,删除其它的layout文件,比如我设定layout的ID值为1,则保留layout1.xml文件,其余的layout*文件全部删除。

6、保留一份Platforms*.xml文件,我这里保留的是PlatformsM1.xml文件,其余的Platforms*文件全部删除。并将Platforms*.xml文件改名为Platforms.xml   

7、用plistedit打开目录下的Info.plist文件进行编辑,CodecID值修改为Vendor Id的十进制值:283902569,下一行的CodecName值填写你的声卡型号,我保持默认的ALC269,不作修改。Files>Layouts>0项目保留,Files>Layouts下的其它相关项删除。编辑Files>Layouts>0>Comment的值为Mirone Laptop patch ALC269 for  V480c,Files>Layouts>0>ID的值改为1,Files>Layouts>0>Path值改为layout1.xml.zlib

Files>Platforms>0项目保留,Files>Platforms下的其它项目删除。编辑Files>Platforms>0>Comment的值为Mirone Laptop patch ALC269 for  V480c,Files>Platforms>0>ID的值改为1,Files>Platforms>0>Path值改为Platforms.xml.zlib,修改完成保存退出。

8、修改layout1.xml文件,LayoutID改为1,  PathMapRef>0>CodecID>0项值改为283902569 , PathMapID值改为269 , PathMapRef>0>LineIn>MuteGPIO值改为1342242840(此处值对应外接麦克风),PathMapRef>0>Mic>MuteGPIO值改为1342242840(此处值对应内置麦克风)修改完成,保存退出。

9、用plistedit打开并修改Platforms.xml文件, PathMaps>0>PathMap>0项为输入项,PathMaps>0>PathMap>1项为输入项, PathMaps>0>PathMap>0>0为内置mic子项,展开其子项后分别在0,1,2子项的NodeID值分别填入8,35,25 。 PathMaps>0>PathMap>0>1为外置mic(Line in)子项,展开其子项后分别在0,1,2子项的NodeID值分别填入9,34,24 。PathMaps>0>PathMap>1>0为内置扬声器输出项,展开其子项后分别在0,1,2子项的NodeID值分别填入20,13,3 ,PathMaps>0>PathMap>1>1为耳机或音频输出项,展开其子项后分别在0,1,2子项的NodeID值分别填入21,12,2 。检查修改最后一项PathMapID是否为269,最后保存退出。        

10、鼠标右键Applealc>Resources>目录下的PinConfigs.kext文件,弹出菜单选:显示包内容。进入Contents目录,用plistedit打开Info.plist文件。搜索声卡ID值283902569,找到一组较为接近的alc269声卡的键值,如果是笔记本,最好找到接近型号的笔记本。删除兄弟子项的其它声卡键值。修改Codec值为Mirone Laptop patch ALC269 for  V480c,修改ConfigData值为你整理好的ConfigData数据,我这里为数据二,LayoutID改为1,  修改完成,保存退出。

11、拖动Platforms.xml和layout1.xml到zlib文件生成器窗口,生成Platforms.xml.zlib和layout1.xml.zlib文件。备份修改好的Platforms.xml和layout1.xml、Info.plist和PinConfigs.kext文件,删除编译目录里的Platforms.xml和layout1.xml文件,并拷贝相应的Lilu.kext文件到Applealc根目录下。

12、用xcode 打开Applealc目录下的AppleALC.xcodeproj进行编译,生成Applealc.kext驱动文件。

13、将生成Applealc.kext驱动拷贝到EFI分区下的EFI>Clover>Kexts>other目录下,修改DSDT注入layoutID为1,修改layoutID为1,重启MAC,查看驱动是否生效。


最终声卡驱动后的效果有以下几个疑点和问题等待解决。

1、声卡外置扬声器有时会出现无声(主要出现在睡眠唤醒后以及热重启后),有的时启动后声卡驱动不一定能加载(估计是dsdt有些问题,或受到其它驱动的干扰)

2、内置麦克风可以录制声音,但是噪音相当的大,插入耳麦(带麦的耳机,因为我的笔记本电脑是二合一接口,只能用带麦的耳机)后,不能识别外置麦克风,查得一贴  华硕PRO4JS(PRO43SJ)10.8.3完美,ALC269声卡Mic完美输入,分享驱动 上面有说:“内置Mic 中01971C10 01971D01 01971EA0 01971F90这组数,红色原本是3,代表“内建设备”。这与实际情况一致的,但是如果就用3,会发现内置Mic无电平。改为0才有电平输入我也不知什么原因。”我的这里也是3,但是我的结果是有声音电平,但是噪音大。   


3、最大的疑点是,我编译生成的Applealc.kext驱动显示包文件,结果里面的内容和别人的有所不同,我生成的驱动比别人少了一个PlugIns目录,另外关于本机>系统报告>音频,只有内建麦克风和内建输出两项,没有别人贴图的interHDA高清晰音频项。






附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 7Rank: 7Rank: 7

UID
2033567
帖子
1222
PB币
360
贡献
0
技术
0
活跃
1510
发表于 2018-7-5 10:08:08 IP属地四川 |显示全部楼层
太深奥了,望而生畏~~~~~~~~
伸手党路过

Rank: 9

UID
750326
帖子
4537
PB币
3277
贡献
0
技术
102
活跃
2890
发表于 2018-7-5 10:14:22 IP属地四川 来自手机 |显示全部楼层
学习了。

Rank: 7Rank: 7Rank: 7

UID
4583288
帖子
2267
PB币
1640
贡献
0
技术
1
活跃
3175
发表于 2018-7-5 10:16:52 IP属地湖北 |显示全部楼层
269vc可以直接被applealc支持吧,不用定制

Rank: 9

UID
750326
帖子
4537
PB币
3277
贡献
0
技术
102
活跃
2890
发表于 2018-7-5 10:18:27 IP属地四川 来自手机 |显示全部楼层
不是说用lilu+applealc就可以驱动吗

求配置,不带预算,血压拉满

Rank: 9

UID
2765012
帖子
4913
PB币
3280
贡献
0
技术
35
活跃
2588
发表于 2018-7-5 10:20:44 IP属地江苏 来自手机 |显示全部楼层
用的啥耳麦?

如果是国行iPhone耳机,换港行或国际标准耳机,再试

Rank: 2Rank: 2

UID
3948296
帖子
234
PB币
134
贡献
0
技术
0
活跃
138
发表于 2018-7-5 10:26:07 IP属地江西 |显示全部楼层
ic005k 发表于 2018-7-5 10:16
269vc可以直接被applealc支持吧,不用定制

不知道为什么,我怎么修改clover的layoutID都不能驱动,269的layoutID也很多,全都试了个遍,就是驱动不起来,加上我的是笔记本电脑,和一般的主板是不同的吧,我查看过AppleALC的源码,就没有找到和我声卡节点和configdata数据相同的,所以才想自己改AppleALC出来的。

Rank: 7Rank: 7Rank: 7

UID
4583288
帖子
2267
PB币
1640
贡献
0
技术
1
活跃
3175
发表于 2018-7-5 10:46:54 IP属地湖北 |显示全部楼层
四水哥 发表于 2018-7-5 10:26
不知道为什么,我怎么修改clover的layoutID都不能驱动,269的layoutID也很多,全都试了个遍,就是驱动不起 ...

这就没办法了,据说可以向applealc提交声卡的数据,由他们来分析并加进去。

Rank: 5Rank: 5Rank: 5

UID
120544
帖子
742
PB币
1858
贡献
0
技术
30
活跃
1776
发表于 2018-7-5 11:00:51 IP属地北京 |显示全部楼层
四水哥 发表于 2018-7-5 10:26
不知道为什么,我怎么修改clover的layoutID都不能驱动,269的layoutID也很多,全都试了个遍,就是驱动不起 ...

看你发的图,显示已驱动啊

Rank: 2Rank: 2

UID
3948296
帖子
234
PB币
134
贡献
0
技术
0
活跃
138
发表于 2018-7-5 11:02:23 IP属地江西 |显示全部楼层
clickmed 发表于 2018-7-5 11:00
看你发的图,显示已驱动啊

第六步、整理以上数据,并添加其它需要的数据,下载Applealc驱动源码,准备编程。
数据一:声卡型号ID数据
Codec: Realtek ALC269VC
Address: 0
Vendor Id: 0x10ec0269      > 10进制转换值>283902569
Subsystem Id: 0x17aa500f
数据二:声卡的configdata值(最好去掉回车键,每组数据之间以一个空格分开)
01271cf0 01271d00 01271e00 01271f40 01471c30 01471d01 01471e13 01471f90 01571c40 01571d10 01571e21 01571f01 01771cf0 01771d00 01771e00 01771f40 01871c20 01871d10 01871e81 01871f01 01971c10 01971d01 01971ea3 01971f90 01a71cf0 01a71d00 01a71e00 01a71f40 01b71cf0 01b71d00 01b71e00 01b71f40 01d71cf0 01d71d00 01d71e00 01d71f40 01e71cf0 01e71d00 01e71e00 01e71f40 01470c02
数据三: MuteGPIO值
我这里有两组MuteGPIO值要填,分别是外接麦克风   1342242840和内置麦克风  1342242841
数据四:各端口节点数据,最终如下:
内置扬声器[Fixed] Speaker at Int N/A    节点为  20>13>3  
外接耳机[Jack] HP Out at Ext Left       节点为   21>12>2   
外置麦克风[Jack] Mic at Ext Left          节点为   9>34>24
内置麦克风[Fixed] Mic at Int N/A       节点为   8>35>25

接下来下载Applealc驱动源码,并修改四个相关文件。
1、回到苹果桌面,点击访达>偏好设置>勾选个人收藏中的小房子图标。访达中会出现一个小房子的目录。

2、打开终端,输入以下命令下载Applealc驱动源码,git clone https://github.com/vit9696/AppleALC
3、从小房子目录下拷贝一份源码目录到桌面。
4、进入桌面的Applealc>Resources目录中,把除了自己要用的声卡目录,其它的声卡目录全部删除,我的是ALC269的声卡,所以我只保留了这个目录,注意只删除目录,不要删除该目录下的文件。
5、进入声卡目录,我这里是Applealc>Resources>ALC269目录,根据自己要设定的layout的ID值,删除其它的layout文件,比如我设定layout的ID值为1,则保留layout1.xml文件,其余的layout*文件全部删除。
6、保留一份Platforms*.xml文件,我这里保留的是PlatformsM1.xml文件,其余的Platforms*文件全部删除。并将Platforms*.xml文件改名为Platforms.xml   
7、用plistedit打开目录下的Info.plist文件进行编辑,CodecID值修改为Vendor Id的十进制值:283902569,下一行的CodecName值填写你的声卡型号,我保持默认的ALC269,不作修改。Files>Layouts>0项目保留,Files>Layouts下的其它相关项删除。编辑Files>Layouts>0>Comment的值为Mirone Laptop patch ALC269 for  V480c,Files>Layouts>0>ID的值改为1,Files>Layouts>0>Path值改为layout1.xml.zlib
Files>Platforms>0项目保留,Files>Platforms下的其它项目删除。编辑Files>Platforms>0>Comment的值为Mirone Laptop patch ALC269 for  V480c,Files>Platforms>0>ID的值改为1,Files>Platforms>0>Path值改为Platforms.xml.zlib,修改完成保存退出。
8、修改layout1.xml文件,LayoutID改为1,  PathMapRef>0>CodecID>0项值改为283902569 , PathMapID值改为269 , PathMapRef>0>LineIn>MuteGPIO值改为1342242840(此处值对应外接麦克风),PathMapRef>0>Mic>MuteGPIO值改为1342242840(此处值对应内置麦克风)修改完成,保存退出。
9、用plistedit打开并修改Platforms.xml文件, PathMaps>0>PathMap>0项为输入项,PathMaps>0>PathMap>1项为输入项, PathMaps>0>PathMap>0>0为内置mic子项,展开其子项后分别在0,1,2子项的NodeID值分别填入8,35,25 。 PathMaps>0>PathMap>0>1为外置mic(Line in)子项,展开其子项后分别在0,1,2子项的NodeID值分别填入9,34,24 。PathMaps>0>PathMap>1>0为内置扬声器输出项,展开其子项后分别在0,1,2子项的NodeID值分别填入20,13,3 ,PathMaps>0>PathMap>1>1为耳机或音频输出项,展开其子项后分别在0,1,2子项的NodeID值分别填入21,12,2 。检查修改最后一项PathMapID是否为269,最后保存退出。        
10、鼠标右键Applealc>Resources>目录下的PinConfigs.kext文件,弹出菜单选:显示包内容。进入Contents目录,用plistedit打开Info.plist文件。搜索声卡ID值283902569,找到一组较为接近的alc269声卡的键值,如果是笔记本,最好找到接近型号的笔记本。删除兄弟子项的其它声卡键值。修改Codec值为Mirone Laptop patch ALC269 for  V480c,修改ConfigData值为你整理好的ConfigData数据,我这里为数据二,LayoutID改为1,  修改完成,保存退出。
11、拖动Platforms.xml和layout1.xml到zlib文件生成器窗口,生成Platforms.xml.zlib和layout1.xml.zlib文件。备份修改好的Platforms.xml和layout1.xml、Info.plist和PinConfigs.kext文件,删除编译目录里的Platforms.xml和layout1.xml文件,并拷贝相应的Lilu.kext文件到Applealc根目录下。
12、用xcode 打开Applealc目录下的AppleALC.xcodeproj进行编译,生成Applealc.kext驱动文件。
13、将生成Applealc.kext驱动拷贝到EFI分区下的EFI>Clover>Kexts>other目录下,修改DSDT注入layoutID为1,修改layoutID为1,重启MAC,查看驱动是否生效。

最终声卡驱动后的效果有以下几个疑点和问题等待解决。
1、声卡外置扬声器有时会出现无声(主要出现在睡眠唤醒后以及热重启后),有的时启动后声卡驱动不一定能加载(估计是dsdt有些问题,或受到其它驱动的干扰)
2、内置麦克风可以录制声音,但是噪音相当的大,插入耳麦(带麦的耳机,因为我的笔记本电脑是二合一接口,只能用带麦的耳机)后,不能识别外置麦克风,查得一贴  华硕PRO4JS(PRO43SJ)10.8.3完美,ALC269声卡Mic完美输入,分享驱动 上面有说:“内置Mic 中01971C10 01971D01 01971EA0 01971F90这组数,红色原本是3,代表“内建设备”。这与实际情况一致的,但是如果就用3,会发现内置Mic无电平。改为0才有电平输入我也不知什么原因。”我的这里也是3,但是我的结果是有声音电平,但是噪音大。   

3、最大的疑点是,我编译生成的Applealc.kext驱动显示包文件,结果里面的内容和别人的有所不同,我生成的驱动比别人少了一个PlugIns目录,另外关于本机>系统报告>音频,只有内建麦克风和内建输出两项,没有别人贴图的interHDA高清晰音频项。

Rank: 2Rank: 2

UID
3948296
帖子
234
PB币
134
贡献
0
技术
0
活跃
138
发表于 2018-7-5 11:03:23 IP属地江西 |显示全部楼层
clickmed 发表于 2018-7-5 11:00
看你发的图,显示已驱动啊

那个就是我定制的声卡呀,是驱动起来了,但问题好多的,本来我是要发两贴说明的,但一直没审核通过。。。。。

Rank: 5Rank: 5Rank: 5

UID
4807122
帖子
594
PB币
225
贡献
0
技术
0
活跃
782
发表于 2018-7-5 11:05:14 IP属地广东 |显示全部楼层
技术贴 帮楼主顶

Rank: 5Rank: 5Rank: 5

UID
120544
帖子
742
PB币
1858
贡献
0
技术
30
活跃
1776
发表于 2018-7-5 11:08:58 IP属地北京 |显示全部楼层
四水哥 发表于 2018-7-5 10:26
不知道为什么,我怎么修改clover的layoutID都不能驱动,269的layoutID也很多,全都试了个遍,就是驱动不起 ...

网盘里唯独没有你的codec。

Rank: 2Rank: 2

UID
3476938
帖子
207
PB币
198
贡献
0
技术
0
活跃
225
发表于 2018-7-5 11:09:02 IP属地广东 |显示全部楼层
四水哥 发表于 2018-7-5 10:26
不知道为什么,我怎么修改clover的layoutID都不能驱动,269的layoutID也很多,全都试了个遍,就是驱动不起 ...

我笔记本也是你这样改的。目前还没什么bug。我参考的黑果小兵的教程

Rank: 2Rank: 2

UID
3948296
帖子
234
PB币
134
贡献
0
技术
0
活跃
138
发表于 2018-7-5 11:14:38 IP属地江西 |显示全部楼层
eastlhu 发表于 2018-7-5 11:09
我笔记本也是你这样改的。目前还没什么bug。我参考的黑果小兵的教程

你是什么型号的笔记本电脑呢

Rank: 2Rank: 2

UID
3948296
帖子
234
PB币
134
贡献
0
技术
0
活跃
138
发表于 2018-7-5 11:16:29 IP属地江西 |显示全部楼层
clickmed 发表于 2018-7-5 11:08
网盘里唯独没有你的codec。

codec_dump.txt这个文件就是我从ubuntu提取出来的声卡code文件,还没有改名,不好意思

Rank: 5Rank: 5Rank: 5

UID
4838985
帖子
913
PB币
6
贡献
0
技术
0
活跃
281
发表于 2018-7-5 11:23:38 IP属地广东 |显示全部楼层
看着好复杂的样子,我还是老实用万能了,折腾不明白

Rank: 2Rank: 2

UID
3476938
帖子
207
PB币
198
贡献
0
技术
0
活跃
225
发表于 2018-7-5 14:17:37 IP属地广东 |显示全部楼层
四水哥 发表于 2018-7-5 11:14
你是什么型号的笔记本电脑呢

我签名有,微星游戏本,ge63vr 7rf 004cn

Rank: 2Rank: 2

UID
964712
帖子
140
PB币
3
贡献
0
技术
1
活跃
130
发表于 2018-7-19 14:10:54 IP属地新加坡 |显示全部楼层
收藏 学习下  改code 还是个技术活
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛