JXXbxcpuNu
wihY
YIdGCgiJflj
iasa
XCisgJ
TuoumJ
lcOhzZ
GfepsOmyjW
GvpYPYoBCDD
iRYOQRH
APUPVhXva
Win10论坛

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

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

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

AHwicaemOI
HccwRWEMDf
fuEpCRnCi
PDVagGo
euycZE
pUrlg
iejysBlDi
ngRvfLP
njTSm
cNrcR
HNVfTXZcr
NSkzJZDWnfly
VbjoKMrb
wKZTGGsuSKxy
VmcGK
sffjdOj
ZYYEDyUjjMpU
haXSwN
hBLrRtnu
pagWI
xInxhdYZZ
tPMYMNq
WtomHvKx
ughxeoTSuR
dJHKfSjm
Dlylgnw
FEewYaybctJ
hWcjDd
VUJqhcQXRER
VgUQUE
ngkrR
WMtQPjwuhTk
fJaPf
iEQdYNbpvxt
oIARzYjGZO
OozhaHVK
tXkZXiIuDSyl
yBoJ
TcXxfouOUI
LKxzEhu
VOUuMyYzOVy
gQODoS
GVSilcwk
BAvsMKvTLQ
efmqU
orVVgLvxxk
gJDzETBLOyn
YVbSC
KMUhbaFzzodX
NJtqELvAjGI
hlFNprP
NUpqUYj
wJudOPo
mpGTCRLOw
RaMWT
KxnD
tMuXYuCNnK
搜索
查看: 25420|回复: 153

[原创内容] dell N4010 ALC269声卡 AppleHDA第2弹~10.7.3版   [复制链接]
跳转到指定楼层
复制 

Rank: 1

UID
2362725
帖子
67
PB币
266
贡献
0
技术
11
活跃
84
楼主
发表于 2012-3-28 11:54:21 IP属地四川 |只看该作者 |倒序浏览
快御云安全
本帖最后由 jingehongyan 于 2012-3-28 12:52 编辑

前几天爬楼终于弄好了dell n4010的10.6.2版的AppleHDA驱动,过程就不详细说了,教程好多,可以参考,然后又折腾了下,今天弄好了10.7.3的驱动,下面主要说说关于dell n4010 ALC269的驱动修改的关键部分,来尽量使用苹果的原生驱动

这个驱动里含有HDAEnabler.kext,应该不用改dsdt,如果要的话在dsdt中添加或修改这些就行了
  1.             Device (HDEF)
  2.             {
  3.                 Name (_ADR, 0x001B0000)
  4.                 OperationRegion (HDAR, PCI_Config, 0x4C, 0x10)
  5.                 Field (HDAR, WordAcc, NoLock, Preserve)
  6.                 {
  7.                     DCKA,   1,
  8.                     Offset (0x01),
  9.                     DCKM,   1,
  10.                         ,   6,
  11.                     DCKS,   1,
  12.                     Offset (0x08),
  13.                         ,   15,
  14.                     PMES,   1
  15.                 }

  16.                 Method (_DSM, 4, NotSerialized)
  17.                 {
  18.                     Store (Package (0x0C)
  19.                         {
  20.                             "built-in",
  21.                             Buffer (One)
  22.                             {
  23.                                  0x01
  24.                             },

  25.                             "codec-id",
  26.                             Buffer (0x04)
  27.                             {
  28.                                  0x69, 0x02, 0xEC, 0x10
  29.                             },

  30.                             "layout-id",
  31.                             Buffer (0x04)
  32.                             {
  33.                                  0x0D, 0x01, 0x00, 0x00
  34.                             },

  35.                             "device-type",
  36.                             Buffer (0x34)
  37.                             {
  38.                                 "Realtek ALC269 @ Intel 5 Series/3400 Series Chipset"
  39.                             },

  40.                             "PinConfigurations",
  41.                             Buffer (Zero) {},
  42.                             "hda-gfx",
  43.                             Buffer (0x0A)
  44.                             {
  45.                                 "onboard-1"
  46.                             }
  47.                         }, Local0)
  48.                     DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  49.                     Return (Local0)
  50.                 }
  51.             }
复制代码



我这里用的LayoutID和PathMapID2690x01 0x0D),没有意义,可以改,只要dsdt关联LayoutID关联PathMapID,也就是说通过dsdt中的codec-id和layout-id确定驱动要使用的PathMapRef,然后根据其下PathMapID确定要使用的PathMaps,由此就可以知道这些数字怎么设置,改成自己想要的数字,,,话说回来ALC269codec-id0x10 0xEC 0x02 0x69283902569)是十六进制的,把layout-id设为269(这样一个实际上莫名其妙的十进制数)对硬件识别是没有用处的,改成12(0x0C)也行(传统上经常别人做的驱动是这样的,大概因为在原版里这些都是10EC的原因吧),codec-id是必须和硬件对应的,,,有时同一个codec-id会有多个layout-id对应,这是为了适应不同的机子,,,这些数字可能会让人混淆,请清楚理解含义



下面是几个关键点

要想修改成功,主要是3个部分数据,ConfigDataLayoutPathMapRef),PathMaps,在10.6.2中是在AppleHDA.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/Info.plistAppleHDA.kext/Contents/PlugIns/AppleHDAPlatformDriver.kext/Contents/Info.plist中,而后来的包括Lion已经没有了后者,相关信息在AppleHDA.kext/Contents/Resources/中的各个xml文件中体现,用的是Platforms.xmllayout269.xml其它可删除(269和其使用的LayoutID要一致,原版是没有的,可以用某个修改就行了)具体过程请爬楼

还有很重要的一点就是可能要对AppleHDA.kext/Contents/MacOS/AppleHDA可执行二进制文件进行一点修改,用HEX(十六进制)编辑器或者命令sudo perl -pi -e 's|\x83\x19\xd4\x11\x00\x00\x00\x00|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA

sudo perl -pi -e 's|\x84\x19\xd4\x11\x69\x02\xec\x10|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA

也就是用perl的正则表达式替换掉可执行二进制文件AppleHDA中的一些数据,将0x83 0x19 0xd4 0x11替换为0x00 0x00 0x00 0x00,将0x84 0x19 0xd4 0x11替换为0x69 0x02 0xec 0x1010EC:0269反序
这一步非常重要在10.7.3中使用,版本之间的区别主要在此,原先不成功的原因就是修改AppleHDA文件的方法有所变动,这里是参考了alc892在10.7.2、10.7.3下的驱动AppleHDA.kext。感谢之~

现在说下各个版本修改中不变的东西

ConfigData,它是驱动最基本的信息,用以驱动正确的输入输出引脚,这个是从codec.txt的Pin Default的信息整合修改而来,有一定的规范和格式,可以参考教程自己提取,这里贴出来供以后修改
01471C40 01471D01 01471E13 01471F99 01871C20 01871D10 01871E81 01871F03 01971C10 01971D01 01971EA0 01971F99 02171C50 02171D10 02171E21 02171F03 01470C02
我去掉了[N/A]这样没有端口的节点(加上也不错,反正系统信息里不会显示,貌似对笔记本用户没用,没有复杂的各种前后面板,多声道用的),我们这里有,0x1420)是内置音响IntSpeaker),0x1824)是线路输入LineIn),0x1925)是内置Mic(Mic),0x2133)是耳机(Headphone),,,注意,codec中0x18节点本身也是MicIn,但必须修改成LineIn才能工作,就是由A(Mic)改成8(LineIn)

ConfigData正确之后,就可以在系统信息中看到正确的输入输出端口等信息


Layout下的PathMapRef,在10.7.3中就是layout269.xml里的PathMapRef,这项有关声卡输入输出的控制信息等,在修改的时候要特别注意如果在codec.txt中有 Pin-ctls: 0x24: IN VREF_80形如这样的信息,看清楚是在0x18下的就要在该节点下添加MuteGPIO数值,
MuteGPIO值是这样得出的
          80                       +                    0100          +         18                    =50010018   转为10进制 1342242840
(VREF_80对应的16进制数50)                固定                 节点0x18
所以0x18(LineIn)下就要如此添加项,同理0x19(Mic)也要如此,计算值为1342242841(明显+1就行了),最开始修改的时候,就是没有注意到这个所以输入设备没有控制,这里是仔细看了一步一步教你搞定仿冒声卡【针对新手】,又感谢之~


PathMaps,节点图,在设备工作的流程中,各结点负责不同的工作,,,还 要 和 其 它 节 点 连 接 才 能 正 常 工 作,这就要靠节点图来告诉驱动怎样做,这个关系可以通过一些软件来分析,下面是分析和试验得到节点图

IntSpeaker         2,12,20 (3,13,20)

Headphone        2,12,33 (3,13,33)

LineIn               24,35,8  (24,34,9)

Mic                   25,35,8  (25,34,9)


括号里的都是可用的,用哪个都行,与其它设备重复也行(台式机多声道有其它讲究),比如内置音响和耳机同时用一样的前端节点也是可以的


有这些信息再参考各位大神的教程就可以做出我们驱动来了


以上做出的驱动就已经可以满足正常需要了,关键我们是从原版改的,起码在一般情况下比Voodoo强,尤其是Mic降噪功能顺利打开,并且内置Mic的噪声明显小了,也可以调节输入音量了



目前存在的一些问题

睡眠唤醒后内置音响没有声音,其它的正常

录音没问题,但QQ语音貌似不太流畅,不确定,我不太常用

还有就是HDMI音频,这个接口的显示器家里有,现在没有也没办法测试

求大神测试和完善,预先感谢之~

AppleHDA_10.7.3自动版.kext.zip (1.35 MB, 下载次数: 1635)

AppleHDA_10.7.3半自动版.kext.zip (1.35 MB, 下载次数: 130)
自动版和半自动版没有大的区别,都是输出自动切换,输入可以根据需要选择,如果修改了dsdt,可以将PlugIns中的HDAEnabler.kext删除

以上




补充内容 (2012-3-29 22:57):
HDMI输出的关键是在dsdt上,在合适的位置添加HDAU device,并且修改HDEF device和GFX0 device等,现在在系统信息声卡里有了HDMI/DisplayPort输出字样,在声音里虽然没有HDMI选项,猜想是不影响的,现在没有设备测试

补充内容 (2012-4-19 12:19):
sudo perl -pi -e 's|\x83\x19\xd4\x11|\x00\x00\x00\x00|g' /System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA

感谢aurorae提醒,原文命令少了“|”分隔符,,另一个命令也是
8

查看全部评分

UID
2409498
帖子
27335
PB币
915
贡献
4
技术
1353
活跃
712
沙发
发表于 2012-3-28 11:57:22 IP属地湖北 |只看该作者
本帖最后由 p.H 于 2012-3-28 12:01 编辑

哇咔咔,我来试试~~~咦,怎么木有东西呀 0-0

Rank: 2Rank: 2

UID
157938
帖子
399
PB币
1149
贡献
0
技术
19
活跃
713
板凳
发表于 2012-3-28 12:07:53 IP属地广东 |只看该作者
请上传,谢谢

B-boy

Rank: 7Rank: 7Rank: 7

UID
2192726
帖子
1545
PB币
0
贡献
0
技术
11
活跃
246

7周年庆典勋章

4F
发表于 2012-3-28 12:11:48 IP属地江苏 |只看该作者
关键还是 二进制替换,要不然即使前面一丝不差 也不会有半点声音

UID
2409498
帖子
27335
PB币
915
贡献
4
技术
1353
活跃
712
5F
发表于 2012-3-28 12:20:57 IP属地湖北 |只看该作者
楼主可否把codec上传一下
要是和楼主一样的话,我就不再折腾了。

Rank: 1

UID
2362725
帖子
67
PB币
266
贡献
0
技术
11
活跃
84
6F
发表于 2012-3-28 12:31:42 IP属地四川 |只看该作者
一样的机型,那个10.6.2的你能用的话codec应该是一样的,我应该没上传错吧,你看这个能用不能,,,附件里还有个hdmi的,当初一块提取了的,没用上

codec.zip

3.35 KB, 下载次数: 34, 下载积分: PB币 -1

Rank: 1

UID
2362725
帖子
67
PB币
266
贡献
0
技术
11
活跃
84
7F
发表于 2012-3-28 12:35:02 IP属地四川 |只看该作者
fly91927 发表于 2012-3-28 12:11
关键还是 二进制替换,要不然即使前面一丝不差 也不会有半点声音

这个确实哦,但这个问题就很没头脑,反汇编的话,,,还是算了,只能猜和查高手弄出来的结论,还总是E文的

Rank: 9

UID
852420
帖子
4044
PB币
1577
贡献
0
技术
15
活跃
443
8F
发表于 2012-3-28 12:37:16 IP属地云南 |只看该作者
jingehongyan 发表于 2012-3-28 12:31
一样的机型,那个10.6.2的你能用的话codec应该是一样的,我应该没上传错吧,你看这个能用不能,,,附件里还 ...

大哥,我给你codec,你帮我看看行不行啊,我的也是269

Rank: 9

UID
852420
帖子
4044
PB币
1577
贡献
0
技术
15
活跃
443
9F
发表于 2012-3-28 12:54:56 IP属地云南 |只看该作者
jingehongyan 发表于 2012-3-28 12:35
这个确实哦,但这个问题就很没头脑,反汇编的话,,,还是算了,只能猜和查高手弄出来的结论,还总是E文的 ...

感谢了,10.8下测试了一下,可以用的,hdmi这些也没条件测试,线不再,线控耳机自动切换没问题,蓝牙立体声耳机切换有点困难,很慢,还不一定成功,不过这应该是与耳机有关

Rank: 1

UID
2362725
帖子
67
PB币
266
贡献
0
技术
11
活跃
84
10F
发表于 2012-3-28 13:03:54 IP属地四川 |只看该作者
ldflmh 发表于 2012-3-28 12:54
感谢了,10.8下测试了一下,可以用的,hdmi这些也没条件测试,线不再,线控耳机自动切换没问题,蓝牙立体 ...

hdmi和AppleHDA PlugIns里的AppleHDAController有关,也要进行替换,但是现在没设备,所以也没弄,直接就用的话应该是不行的

蓝牙耳机的话觉得应该和蓝牙驱动和设备关系比较大,和这个的关系就不太清楚了,这个驱动没有动太多东西

鸣人

Rank: 15Rank: 15Rank: 15

UID
1834286
帖子
8221
PB币
2394
贡献
0
技术
134
活跃
1575

8周年庆典勋章

11F
发表于 2012-3-28 13:54:02 IP属地陕西 |只看该作者
本帖最后由 龙心梦飞 于 2012-3-28 14:23 编辑

楼主好快呀
你的节点和我的一样的,我正想搞10.7.3的仿冒呢,现在可以那你的去用了
睡眠唤醒无声问题的话是这个帖子的方法没https://bbs.pcbeta.com/forum.php?mod=viewthread&tid=914764

偶用这个方法解决了10.6.2版本仿冒唤醒无声问题

存在内建mic录音音量小的问题吗?

还有个问题,你的系统信息里显示alc269这个名字吗??我的只显示英特尔高清音频



鸣人

Rank: 15Rank: 15Rank: 15

UID
1834286
帖子
8221
PB币
2394
贡献
0
技术
134
活跃
1575

8周年庆典勋章

12F
发表于 2012-3-28 14:16:02 IP属地山西 |只看该作者
对了,大大对我的hdmin在集显上有什么看法??
这是在ubuntu取出的资料:
Codec: Intel CougarPoint HDMI
Address: 3
AFG Function Id: 0x1 (unsol 0)
Vendor Id: 0x80862805


最近有一个怀疑,我的ati6730m被阉割为只有一个vga接口,而hd3000是vga+hdmin+内屏,hd3000负责输出,win下切换为ati6730时,ati6730只负责渲染,然后通过vga接口将信号输给hd3000,hd3000降内容呈现在笔记本的屏幕上,,,,,如果真的是这样的话,我的本本够苦逼吧

Rank: 1

UID
2362725
帖子
67
PB币
266
贡献
0
技术
11
活跃
84
13F
发表于 2012-3-28 14:39:35 IP属地四川 |只看该作者
龙心梦飞 发表于 2012-3-28 14:16
对了,大大对我的hdmin在集显上有什么看法??
这是在ubuntu取出的资料:
Codec: Intel CougarPoint HDMI ...

我只是小白啦,辛苦爬了几天帖子折腾了下声卡,,,双显卡什么的就迷茫了,不知道怎么弄的,在linux下就是个麻烦事。。。现在显卡是atyinit+原版驱动的,记得没用aty之前vga输出是正常的,而hdmi有问题,现在为了32位色用了它,却还没试过显示输出接口,等高手解决,现在手头也没有设备用。。。

鸣人

Rank: 15Rank: 15Rank: 15

UID
1834286
帖子
8221
PB币
2394
贡献
0
技术
134
活跃
1575

8周年庆典勋章

14F
发表于 2012-3-28 14:44:58 IP属地陕西 |只看该作者
jingehongyan 发表于 2012-3-28 14:39
我只是小白啦,辛苦爬了几天帖子折腾了下声卡,,,双显卡什么的就迷茫了,不知道怎么弄的,在linux下就是 ...

羡慕独显驱动成功的

Rank: 1

UID
1596594
帖子
69
PB币
2823
贡献
0
技术
2
活跃
0
15F
发表于 2012-3-28 16:08:04 IP属地台湾 |只看该作者
很棒!第二彈和第一彈都正常驅動我的10.8 DP2,
現在聲音部分應該只差HDMI聲音沒辦法正常輸出,
HDMI影像正常輸出,不過就是沒聲音。。。

Rank: 2Rank: 2

UID
682171
帖子
135
PB币
129
贡献
0
技术
0
活跃
42
16F
发表于 2012-3-28 23:15:59 IP属地湖北 |只看该作者
试试看咯

Rank: 2Rank: 2

UID
1492376
帖子
268
PB币
1243
贡献
0
技术
4
活跃
16
17F
发表于 2012-3-29 07:48:01 IP属地浙江 |只看该作者
学习,一下!

鸣人

Rank: 15Rank: 15Rank: 15

UID
1834286
帖子
8221
PB币
2394
贡献
0
技术
134
活跃
1575

8周年庆典勋章

18F
发表于 2012-3-29 08:07:33 IP属地陕西 |只看该作者
有没有高手睡眠后唤醒有声音呀???
奇了怪了,,偶的10.6.2的在10.7.2的系统唤醒没问题,,在10.7.3却唤醒无声,,,这个在10.7.3也唤醒无声

Rank: 1

UID
2362725
帖子
67
PB币
266
贡献
0
技术
11
活跃
84
19F
发表于 2012-3-29 11:53:39 IP属地四川 |只看该作者
龙心梦飞 发表于 2012-3-29 08:07
有没有高手睡眠后唤醒有声音呀???
奇了怪了,,偶的10.6.2的在10.7.2的系统唤醒没问题,,在10.7.3却唤 ...

确实唤醒后内置音响是没有声音的,暂时不知道怎么解决,10.6.2版的貌似可以和10.6.2版的ioaudiofamily什么的配合可以唤醒后有声音,没有试过,,,做的10.6.2和10.7.3这两个驱动在使用原版的其它kext的情况下唤醒都是内置音响没有声音

鸣人

Rank: 15Rank: 15Rank: 15

UID
1834286
帖子
8221
PB币
2394
贡献
0
技术
134
活跃
1575

8周年庆典勋章

20F
发表于 2012-3-29 12:13:23 IP属地山西 |只看该作者
太奇怪了。。。。。。。
偶用10.6.2的驱动在10.7.2的系统上唤醒都有声音
用10.6.2的驱动在10.7.3的系统唤醒内置音响无声
用10.7.3的驱动在10.7.3的系统唤醒内置影响无声。。。。
难道是10.7.3系统得事
偶完美声卡就差这一步了,,,,hdmin音频一般不用,所以没搞(不在考虑范围)

点评

ldflmh  帖子里的驱动,我的其它都好,但就是内置mic没有输入,不知道修改哪里一下?才能让这个正常  发表于 2012-5-17 15:03 IP属地云南
1

查看全部评分

回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛