FDtBXK
cXxgmiZBoF
aPFtyCHku
lpesieTc
HWmJxf
bFGxWtHnGpk
hLTuuIBBXLR
buuRItSJtCTY
ooORwmuBft
GLYRMmZIK
FCXmjM
YvVsn
plfOiqypaVMh
Win10论坛

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

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

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

oYiBiGM
qswHidnCx
CAudAzB
wKUER
bWVDawPaoB
vjPv
HTqxNQupVxEm
bjzoIWTfys
tvlNr
WTfHyNycFwiO
lYSViH
FdSrC
GZMLkP
WNRlh
LwWXM
mmQZCWAZFdu
SmvPYVbXF
qPem
hwmfUHAnz
VtSTJ
aXac
mWFw
ycfg
uUxBNk
NszSLVQWAqh
lWCisKYTQ
Ffda
OKCC
ZsbnijPVPR
yIPQ
klqyD
fqWedEiDegE
vqZn
hzIXzouq
DSevbYJo
bCqw
bBQObYcIm
LlzyZV
BRBAafsXDFQ
yeGqb
TuTBgO
xUJjpZxLqjS
LSJMRhr
mMBNvm
lSsLadxsOs
rkPnQAulTn
wACYUXbOfK
IQRYhFXaCn
oJrKcmBJd
GhuNiJ
RrOaUBu
pzdhibWBczR
GkQSNGXGcNPn
sNXASZ
eXhUFN
sBGLjkydlK
LSJji
lTiIHvflxT
tKuLFjwequ
mhXfUVebTpOg
vNVUwKPWRWo
fSUcv
pcervNJTg
WbWOxHf
IEeDMWXmz
ZpTNuQ
xvEpNzKabLAa
jUHaS
wfzJmhQxNUw
GvRpHFlafv
BHHirQoRgerE
ASYPPbS
NvUqCTSGLmRS
VHgl
olmnFNxSsxr
NYgSqqGzoy
搜索
查看: 50645|回复: 346

[原创内容] DELL XPS15 ALC665声卡驱动appleHDA(Lion10.7.2)制作过程,开启显卡HDMI音频输出   [复制链接] 复制 

Rank: 7Rank: 7Rank: 7

UID
1605009
帖子
1800
PB币
3116
贡献
0
技术
101
活跃
473
楼主
发表于 2011-11-8 00:56:33 IP属地重庆
快御云安全
本帖最后由 whitegerry 于 2012-1-9 09:53 编辑



Patch过的文件列表(标绿):
AppleHDA.kext/Contents/MacOS/AppleHDA
AppleHDA.kext/Contents/Resources/layout665.xml
AppleHDA.kext/Contents/Resources/Platforms.xml
AppleHDA.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/Info.plist
AppleHDA.kext/Contents/PlugIns/AppleHDAController.kext/Contents/MacOS/AppleHDAController

说明
在修改本驱动之前一直用的Voodoohda,用过一段时间Vlad制作的含有三个文件的驱动,按道理说那个效果很不错,可惜每次冷启动进入系统时或刚进入系统调整音量时总会有一声爆音,就像论坛有朋友形容为爆竹声那样,尽管没有那么大声,但那啪的一声听时间长了也足让人胆颤。

所以本次修改的初衷即是为了消除XPS15机型ALC665声卡的爆音,顺便加上HDMI音频输出, 其他XPS机型大概也可以借鉴.

ALC665驱动appleHDA(下载后去掉末尾的.zip扩展名后用betterzip解压):
AppleHDA.zip.001.zip (1000 KB, 下载次数: 628)
AppleHDA.zip.002.zip (301.91 KB, 下载次数: 642)


所需软件, 驱动及制作过程
(一. kext修改 | 二. DSDT修改 | 三. HDMI音频 | 四. 补充说明):
1. appleHDA.kext Lion 10.7.2 version
2. Voodoohda.kext   VoodooHDA.kext.zip (158.5 KB, 下载次数: 174) , 用能正常驱动你声卡的版本
3. IDSDT 生成legacyHDA, 下载: http://115.com/file/c4fkry72
4. DSDT 添加hdmi及声卡输出

一. kext修改

A. 安装VoodooHDA.kextAppleHDADisabler.kext(禁止加载appleHDA之用 AppleHDADisabler.kext.zip (14.28 KB, 下载次数: 172) ),安装VoodooHDA之前先添加声卡id。

ALC665在systeminfo软件上找不到id,所以这里借助IDSDT来获取。打开IDSDT,第二行最右边关于声卡的信息可能会显示两个,其中一个会显示为未知,比如我的是未知(8086,10ec0665),这就好办了,Voodoohda的info.plist内添加这整个id就可以:
  1. <key>IOPCIPrimaryMatch</key>
  2. <string>0x10ec06658086</string>
复制代码
B. 生成legacyHDA.kext安装之后重启, 打开IDSDT勾选生成声卡驱动和生成legacyHDA.kext(同时会生成VoodooCodec.txt便于之后查找节点路线), 之后不选择安装.

configdata和节点信息都包含在legacyHDA.kext/Contents/info.plist, 利用voodoohdahelper得到的vooddoohda_dump.txt内也可以理出节点信息, 但还是要重视从ubuntu导出的codec文件:
内置扬声器:21,12,2
耳机:     27,12,2
耳机:     25,13,3
内置麦克风:9,34,18
外置麦克风:8,35,26 (9,34,26)
数字输出 :30,6


11.9 更新:
codec文件里面包含更多的连接路径, 用了dump之后我们容易忽视其他可行的节点路径, 比如:
  1. Node 21 0x15 [Pin Complex] Speaker      Connection: 0x0c* 0x0d
复制代码

按照紫米教程里是直接连接到带星号的0x0c*不用管其他连接比如0x0d, 不过我测试了一下, 把0x0d这个节点连下去也同样可以工作, 其他节点也照此处理会出现我下面这种情况:

内置扬声器: 21,12,2 (21,13,3)
耳机: 25,13,3 (25,14,4)
耳机: 27,12,2 (27,13,3) (27,14,4)
内置麦克风: 9,34,18
外置麦克风: 8,35,26 (9,34,26)
数字输出: 30,6

而这所有其他节点路径在我的声卡上都可以工作.
---------------------------------------------------------------------------------------------------------


C. 编辑修改appleHDA.kext

1. layout665.xml

复制原版的AppleHDA.kext到桌面上, AppleHDA.kext/Contents/Resources/下面的layoutxx.xml文件随便复制一份更名为layout665.xml,其他的layoutxx.xml可以删除.
a. 打开刚生成的legacyHDA.kext/Contents/info.plist, 复制PathMapRef节点替换layout665.xml的PathMapRef节点, 并修改LayoutID和PathMapID为665.
b. 删除Lineout和SPDIFIn, 修改LineIn为ExtMic(Linein会导致爆音), 修改Inputs下的LineIn为ExtMic, 删除Outputs下的LineOut.

2. Platforms.xml
a. 打开AppleHDA.kext/Contents/Resources/platforms.xml, 删除pathMaps下除0以外的其他节点.
b. 复制legacyHDA.kext/Contents/info.plist下PathMap替换platforms文件pathMaps内的PathMap节点, 注意PathMapID要修改为665.

3. AppleHDA.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/Info.plist
a. 删除 IOKitPersonalities > HDA Hardware Config Resource > HDAConfigDefault下除0以外的其他节点.
b. 复制 legacyHDA.kext/Contents/info.plistIOKitPersonalities > HDA Hardware Config Resource > HDAConfigDefault的节点0替换掉 AppleHDAHardwareConfigDriver.kext/Contents/Info.plist 内的相应0节点.
c. LayoutID改为665, CodecID上面一行添加AFGLowPowerState, 值为03000000.

4. AppleHDA.kext/Contents/MacOS/AppleHDA
用Hex Fiend打开AppleHDA.kext/Contents/MacOS/AppleHDA, ctrl+f查找Hex, Find框填入6202ec10, 一共4处全部替换为6506ec10.

二. DSDT修改

这方面的修改教程非常多, 本帖为节省篇幅不再赘述.

搜索Device (HDEF), 添加Method, 其中的device-idlayout-id须与665对应, 0665转换为16进制即为0299, DSDT中的顺序则为99 02 00 00
  1. Method (_DSM, 4, NotSerialized)
  2.                 {
  3.                     Store (Package (0x0C)
  4.                         {
  5.                             "device-id",
  6.                             Buffer (0x04)
  7.                             {
  8.                                 0x65, 0x06, 0xEC, 0x10
  9.                             },
  10.                             "built-in",
  11.                             Buffer (One)
  12.                             {
  13.                                 0x00
  14.                             },
  15.                             "layout-id",
  16.                             Buffer (0x04)
  17.                             {
  18.                                 0x99, 0x02, 0x00, 0x00
  19.                             },
  20.                             "model",
  21.                             Buffer (0x07)
  22.                             {
  23.                                 "alc665"
  24.                             },
  25.                             "PinConfigurations",
  26.                             Buffer (Zero) {},
  27.                             "hda-gfx",
  28.                             Buffer (0x0A)
  29.                             {
  30.                                 "onboard-1"
  31.                             }
  32.                         }, Local0)
  33.                     DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  34.                     Return (Local0)
  35.                 }
复制代码
至此, 删除之前安装的voodoohda.kext和AppleHDADisabler.kext, 然后安装applehda.kext, 重启之后声卡就能正常工作了.
为什么会有两个内建麦克风呢, 因为有一个线路音频输入如果开启的话开机爆音无法消除, 只有退而求其次改为内建麦克风, 当然这个可以正常工作, 外部音频接入之后可以录音, 其实它就是音频输入接口.

由于驱动可能因为各方面的原因不会十分完美, 所以日志内可能出现多种Sound assertion的信息, 不过大致是不影响使用的. 如果你想除掉这些信息, 可以二进制编辑AppleHDAAppleHDAController, 查找出错的语句, 用相同位数的0来替换.

三. HDMI音频

A. 编辑修改appleHDA.kext, 打开 AppleHDAHardwareConfigDriver.kext/Contents/Info.plist, FuncGroup 值改为3.
B. 编辑AppleHDA.kext/Contents/MacOS/AppleHDA, 用Hex Fiend打开AppleHDA, Find框填入0A00DE10, 全部替换为1400DE10(xps15板载GT435m显卡HDMI的id为10DE0014).
C. DSDT 中显卡/声卡及Device (HDAU)部分有hda-gfx代码
  1.                                 "hda-gfx",
  2.                                 Buffer (0x0A)
  3.                                 {
  4.                                     "onboard-1"
  5.                                 }
复制代码
D. DSDT 中显卡部分添加
  1.                                 "@1,connector-type",
  2.                                 Buffer (0x04)
  3.                                 {
  4.                                     0x00, 0x08, 0x00, 0x00
  5.                                 },
复制代码
完整代码如下:
  1.                     Method (_DSM, 4, NotSerialized)
  2.                     {
  3.                         Store (Package (0x2C)
  4.                             {
  5.                                 "@0,AAPL,boot-display",
  6.                                 Buffer (Zero) {},
  7.                                 "AAPL,slot-name",
  8.                                 Buffer (0x09)
  9.                                 {
  10.                                     "PCIe x16"
  11.                                 },
  12.                                 "@0,backlight-control",
  13.                                 Buffer (0x04)
  14.                                 {
  15.                                     0x01, 0x00, 0x00, 0x00
  16.                                 },
  17.                                 "@0,pwm-info",
  18.                                 Buffer (0x18)
  19.                                 {
  20.                                     /* 0000 */    0x02, 0x18, 0x00, 0x64, 0x90, 0x59, 0x02, 0x00,
  21.                                     /* 0008 */    0x08, 0x52, 0x00, 0x00, 0xA5, 0x1C, 0x00, 0x00,
  22.                                     /* 0010 */    0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
  23.                                 },
  24.                                 "@0,display-cfg",
  25.                                 Buffer (0x04)
  26.                                 {
  27.                                     0x03, 0x01, 0x00, 0x00
  28.                                 },
  29.                                 "AAPL,aux-power-connected",
  30.                                 Buffer (0x04)
  31.                                 {
  32.                                     0x01, 0x00, 0x00, 0x00
  33.                                 },
  34.                                 "@0,built-in",
  35.                                 Buffer (Zero) {},
  36.                                 "@0,compatible",
  37.                                 Buffer (0x0B)
  38.                                 {
  39.                                     "NVDA,NVMac"
  40.                                 },
  41.                                 "@0,device_type",
  42.                                 Buffer (0x08)
  43.                                 {
  44.                                     "display"
  45.                                 },
  46.                                 "@0,name",
  47.                                 Buffer (0x0F)
  48.                                 {
  49.                                     "NVDA,Display-A"
  50.                                 },
  51.                                 "@0,use-backlight-blanking",
  52.                                 Buffer (Zero) {},
  53.                                 "@1,can-hot-plug",
  54.                                 Buffer (Zero) {},
  55.                                 "@1,compatible",
  56.                                 Buffer (0x0B)
  57.                                 {
  58.                                     "NVDA,NVMac"
  59.                                 },
  60.                                 "@1,device_type",
  61.                                 Buffer (0x08)
  62.                                 {
  63.                                     "display"
  64.                                 },
  65.                                 "@1,connector-type",
  66.                                 Buffer (0x04)
  67.                                 {
  68.                                     0x00, 0x08, 0x00, 0x00
  69.                                 },
  70.                                 "@1,name",
  71.                                 Buffer (0x0F)
  72.                                 {
  73.                                     "NVDA,Display-B"
  74.                                 },
  75.                                 "NVCAP",
  76.                                 Buffer (0x14)
  77.                                 {
  78.                                     /* 0000 */    0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
  79.                                     /* 0008 */    0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A,
  80.                                     /* 0010 */    0x00, 0x00, 0x00, 0x00
  81.                                 },
  82.                                 "VRAM,totalsize",
  83.                                 Buffer (0x04)
  84.                                 {
  85.                                     0x00, 0x00, 0x00, 0x80
  86.                                 },
  87.                                 "device_type",
  88.                                 Buffer (0x0C)
  89.                                 {
  90.                                     "NVDA,Parent"
  91.                                 },
  92.                                 "model",
  93.                                 Buffer (0x10)
  94.                                 {
  95.                                     "GeForce GT 435M"
  96.                                 },
  97.                                 "rom-revision",
  98.                                 Buffer (0x0F)
  99.                                 {
  100.                                     "70.16.25.00.25"
  101.                                 },
  102.                                 "hda-gfx",
  103.                                 Buffer (0x0A)
  104.                                 {
  105.                                     "onboard-1"
  106.                                 }
  107.                             }, Local0)
  108.                         DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  109.                         Return (Local0)
  110.                     }
复制代码
更多可以参考附件中DSDT的代码.
DSDT.aml.zip (17.22 KB, 下载次数: 97)


四. 补充说明

因为mbp电源管理的原因, 声卡在空闲的时候会睡眠, 唤醒之后会有很轻的不容易注意到的一声pop音, 不过这比爆音好太多了, 如果你不是个完美主义者这个问题可以略去. 如果这个声音无法忍受, 解决办法有两个:
1. 建议安装antipop antipop-1.0.2.dmg.zip (11.98 KB, 下载次数: 93) , 作者地址http://www.tomsick.net/projects/antipop.html
2. 修改smbios为macpro3,1/macpro4,1/macpro5,1,改了机型之后要注意cpu能否降频和AGPM显卡电源管理是否启用(不建议).




屏幕快照 2011-11-07 下午9.48.02.png 屏幕快照 2011-11-07 下午9.46.54.png
11

查看全部评分

相关帖子

无QQ,需要交流的,求送一个7位QQ。哈哈!

Rank: 5Rank: 5Rank: 5

UID
666707
帖子
918
PB币
5415
贡献
0
技术
10
活跃
14
沙发
发表于 2011-11-8 07:25:42 IP属地美国
4. AppleHDA.kext/Contents/MacOS/AppleHDA
用Hex Fiend打开AppleHDA, ctrl+f查找Hex, Find框填入6202ec10, 一共4处全部替换为6506ec10.
B. 编辑AppleHDA.kext/Contents/MacOS/AppleHDA, 用Hex Fiend打开AppleHDA, Find框填入0A00DE10, 全部替换为1400DE10(显卡HDMI的id).


请问这里的6202ec10和0A00DE10是根据什么来的?为何是查找这两个值呢?请指教。

点评

hy811225  不错的驱动,谢谢楼主。  发表于 2012-1-17 15:43 IP属地广东

Rank: 7Rank: 7Rank: 7

UID
1605009
帖子
1800
PB币
3116
贡献
0
技术
101
活跃
473
板凳
发表于 2011-11-8 08:48:35 IP属地重庆
本帖最后由 whitegerry 于 2011-11-8 08:49 编辑
mingquan84 发表于 2011-11-8 07:25
请问这里的6202ec10和0A00DE10是根据什么来的?为何是查找这两个值呢?请指教。

6202ec10是原生支持的其中一个声卡型号262的id值, 即10ec0262.

0A00DE10是原生支持的HDMI的id值, 即10de000a.

替换这两个值为自己声卡即HDMI的id值也就是为了让系统识别.
头像被屏蔽

Rank: 7Rank: 7Rank: 7

UID
1409674
帖子
207
PB币
0
贡献
0
技术
3
活跃
64
4F
发表于 2011-11-8 09:05:47 IP属地陕西
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 5Rank: 5Rank: 5

UID
1082282
帖子
1105
PB币
1088
贡献
0
技术
1
活跃
0
5F
发表于 2011-11-8 09:06:16 IP属地云南
很好的教程,有空一定试试。赞一个。

Rank: 2Rank: 2

UID
1993015
帖子
275
PB币
330
贡献
0
技术
5
活跃
13
6F
发表于 2011-11-8 09:15:21 IP属地河南
很好的教程,有空一定试试。赞一个。

我 是 来 打 浆 糊 的..

UID
1570065
帖子
6366
PB币
96
贡献
0
技术
21
活跃
597

7周年庆典勋章 9周年庆典勋章 8周年庆典勋章

7F
发表于 2011-11-8 09:18:52 IP属地重庆
好贴啊,谢谢分享

UID
420320
帖子
220
PB币
1776
贡献
0
技术
30
活跃
8
8F
发表于 2011-11-8 09:46:03 IP属地广东
有时间再来搞!!!
头像被屏蔽

Rank: 2Rank: 2

UID
1535799
帖子
218
PB币
0
贡献
0
技术
1
活跃
1
9F
发表于 2011-11-8 09:48:15 IP属地贵州
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

Rank: 2Rank: 2

UID
1535799
帖子
218
PB币
0
贡献
0
技术
1
活跃
1
10F
发表于 2011-11-8 09:56:42 IP属地贵州
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 7Rank: 7Rank: 7

UID
1605009
帖子
1800
PB币
3116
贡献
0
技术
101
活跃
473
11F
发表于 2011-11-8 10:00:54 IP属地重庆
lihaotv2004 发表于 2011-11-8 09:56
此方法应该也可以引申为其他声卡也可以照此办理吧??

可以一试, 我也是看过其他教程然后折腾出来的

职业潜水员

Rank: 7Rank: 7Rank: 7

UID
560930
帖子
2129
PB币
1618
贡献
0
技术
20
活跃
34
12F
发表于 2011-11-8 10:29:54 IP属地四川
哥们,我是Y450的ALC269的声卡,想请帮忙制作一下10.7.2原版的仿冒AppleHDA.kext。以3000P币作为答谢,行吗??我有10.7版本的仿冒appleHDA.kext。

Rank: 7Rank: 7Rank: 7

UID
2123381
帖子
1853
PB币
231
贡献
0
技术
106
活跃
1127
13F
发表于 2011-11-8 10:33:34 IP属地河南
还要多多学习中

Rank: 7Rank: 7Rank: 7

UID
1605009
帖子
1800
PB币
3116
贡献
0
技术
101
活跃
473
14F
发表于 2011-11-8 10:37:20 IP属地重庆
爬墙等红杏 发表于 2011-11-8 10:29
哥们,我是Y450的ALC269的声卡,想请帮忙制作一下10.7.2原版的仿冒AppleHDA.kext。以3000P币作为答谢,行吗 ...

步骤和软件我都写的比较清晰了, 照着做也不麻烦, 自己动手试一试才能有所体会嘛

Rank: 7Rank: 7Rank: 7

UID
1605009
帖子
1800
PB币
3116
贡献
0
技术
101
活跃
473
15F
发表于 2011-11-8 10:38:20 IP属地重庆
爬墙等红杏 发表于 2011-11-8 10:29
哥们,我是Y450的ALC269的声卡,想请帮忙制作一下10.7.2原版的仿冒AppleHDA.kext。以3000P币作为答谢,行吗 ...

10.7的直接用在10.7.2上也可以的

职业潜水员

Rank: 7Rank: 7Rank: 7

UID
560930
帖子
2129
PB币
1618
贡献
0
技术
20
活跃
34
16F
发表于 2011-11-8 10:46:30 IP属地四川
本帖最后由 爬墙等红杏 于 2011-11-8 10:47 编辑
whitegerry 发表于 2011-11-8 10:38
10.7的直接用在10.7.2上也可以的

我知道,但我是一个电脑白痴,麻烦帮下忙。完成后开悬赏,送给你。谢谢。我的驱动地址:http://115.com/file/aq6qefkv

Rank: 7Rank: 7Rank: 7

UID
1605009
帖子
1800
PB币
3116
贡献
0
技术
101
活跃
473
17F
发表于 2011-11-8 10:50:13 IP属地重庆
爬墙等红杏 发表于 2011-11-8 10:46
我知道,但我是一个电脑白痴,麻烦帮下忙。完成后开悬赏,送给你。谢谢。我的驱动地址:http://115.com/f ...

你10.7的的仿冒能正常发声么

点评

爬墙等红杏  可以加你QQ吗?我QQ352125858  发表于 2011-11-8 10:54 IP属地四川

职业潜水员

Rank: 7Rank: 7Rank: 7

UID
560930
帖子
2129
PB币
1618
贡献
0
技术
20
活跃
34
18F
发表于 2011-11-8 10:53:26 IP属地四川
whitegerry 发表于 2011-11-8 10:50
你10.7的的仿冒能正常发声么

正常的,但是内置麦克风不能用。还有睡眠唤醒无声。希望也能帮忙解决这个问题。当然,如果不能解决,也没关系。只要能做个10.7.2版本的仿冒就行了。

Rank: 2Rank: 2

UID
1291312
帖子
194
PB币
361
贡献
0
技术
0
活跃
179
19F
发表于 2011-11-8 10:55:23 IP属地四川
很实用的技术贴,留个记号,找机会一定试试

职业潜水员

Rank: 7Rank: 7Rank: 7

UID
560930
帖子
2129
PB币
1618
贡献
0
技术
20
活跃
34
20F
发表于 2011-11-8 10:56:53 IP属地四川
本帖最后由 爬墙等红杏 于 2011-11-8 10:58 编辑

我的驱动是在这上面下载的:https://bbs.pcbeta.com/viewthread-869832-1-1.html。我也看了这个教程:https://bbs.pcbeta.com/viewthread-909594-1-1.html。但是觉得比较高深,弄不来。
还有:https://bbs.pcbeta.com/viewthread-888781-1-1.html
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛