ic005k / DELL7472

OC驱动及配置文件
87 stars 6 forks source link

关于alc256耳机和外放 #47

Open szhifei opened 2 years ago

szhifei commented 2 years ago

以前试过戴尔7577也是alc256,用的小兵的id56,外放麦克风完美但是耳机切换必须用combojack或者codeccommander,偶尔还会失效,最近黑了一下7472,声卡也是同样的情况。

之前无意中试了一个69的id发现耳机完美但是外放无声麦克风无电平,我就试着把这两个id缝合了一下,节点用的是id69的节点,把configdata改成<01271c20 01271d01 01271ea6 01271f90 01471c10 01471d01 01471e17 01471f90 01470c02 01971c40 01971d10 01971e8b 01971f02 02050010 02040020 02050046 020430a4>

然后耳机外放切换完美,内置麦克风也没问题,在7472上试了一下同样如此,并且在之前最新的Monterey beta版里(我不太记得哪个版了)拔插耳机右上角的图标也会发生变化。

如果您有兴趣的话可以试一下,至少我试过的两个alc256不需要额外驱动就能完美耳机外放切换,也许再完善一下可以投一个新的AppleALC的id AppleALC.kext.zip

ic005k commented 2 years ago

这绝对是个好消息。但我用你上面的文件,音频id采用69,声卡没法驱动,音频设备里面为空白?

szhifei commented 2 years ago

emmm虽然不知道有没有关系,试试看不使用alc256.aml,设备属性里我也是简洁优先了只留了一个id 还有,如果您是在Monterey里尝试的话可能需要-lilubetall

ic005k commented 2 years ago

如果您是在Monterey里尝试的话可能需要-lilubetall

非常Nice,我用的是12.0 Beta版(21A5506j),添加-lilubetaall参数即可。 这又是一个伟大的创举,一会儿闲了,我会逐一测试一下各个功能。同时建议您采用最新版的AppleALC来生成,这样就不需要-lilubetaall参数了。 如果各个功能测试无恙,您可以向AppleALC官方提供此解决方案,这绝对是彻底解决了困扰ALC256多年的诟病!

ic005k commented 2 years ago

It's very good! 我刚才在插着耳机的情况下进入Recovery,点击左上角的苹果图标,选择重新启动,再也不会出现之前的自动关机现象,能正常重启。 也就是说,您的这个方案非常完美,再次感谢并恭喜!🎉

szhifei commented 2 years ago

那真是太好了,不过我在驱动这方面也不过刚刚入门,而且手头也没有现成的环境,这个驱动还是我几个月前备份的,所以我可能不能再继续完善了🥲 而且这个configdata有一个我很不明白的地方,就是耳机输出节点实际上并不在0x20,而且我试着修改过0x20的节点数据,发现不注入信息反而可以使用,如图 1 但是少了0x20这个节点就是不能输出,并且这个configdata里并没有其他有配置的线路输出节点却可以通过耳机输出,实在是搞不懂。 如果可以的话希望您能完善一下这个驱动,我也算做出一份贡献了✌️

ic005k commented 2 years ago

好的,我回头研究一下,大家一起来探索。 不过,对于黑苹果来说,没有什么太有效或正统的理论来指导,一切均看实际效果,有时候“歪门邪道”也很重要。 目前来说你提供的这个驱动已经非常完美了,也没有必要再做其他改进了,回头只需将目前的数据拷贝到新版的AppleALC上面进行测试即可。 硬件驱动一旦稳定,就没有一直改动或升级的必要,你上文提到的0x20等节点问题,也指不定是节点的获取和检测本身有点问题呢。 其实通过你提供的这个方案可以看出,ALC256的驱动之前不完善,主要还是在节点错误上面,或许是获取节点的工具或者过程什么有问题,谁又知道呢,呵呵。 总之,实际效果能证明一切,目前你提供的方案,各节点数据肯定是最正确的。 打破常规,别让那些常见的或传统的有关声卡的制作流程束缚了我们的思想。

ic005k commented 2 years ago

后面我会在7472的包里面集成你提供的这个驱动,一起加油!

hoanX commented 2 years ago

我的是dell xps的alc256,这个应该是Windows下也需要maxaudio的驱动才能切换导致的吧,我一直使用的是id是13,这个也是combojack作者定制的id,一直使用良好,Recovery下这个case我试了下不会出现自动关机的问题

ic005k commented 2 years ago

我的是dell xps的alc256

机器不同,可能现象不同,你那边不一定出现自动关机的现象,但在7472上面是个非常典型的现象,包括ID13我也测试过。

ic005k commented 2 years ago

Recovery下这个case我试了下不会出现自动关机的问题

一定要插着耳机试才行,不插耳机我这边7472也是正常的。

ic005k commented 2 years ago

总之ALC256的问题主要集中在耳机上面,现在通过楼主的探索,这个问题终于彻底解决了(ID采用69)。 ALC256.kext.zip

ic005k commented 2 years ago

我根据最新的applealc做了个最新版本的,具体可以在此下载:https://github.com/ic005k/ALC256/releases/tag/20210912 这样在12.0beta下面就可以去掉-lilubetaall引导参数了。

daliansky commented 2 years ago

卧槽,太牛逼了,看来黑果是后继有人喽

szhifei commented 2 years ago

卧槽,太牛逼了,看来黑果是后继有人喽

不敢当,也是无意中搞出来的,兵哥替我把这个分享出去呗,希望能帮到更多人

crackself commented 2 years ago

同是dell ALC256,测试10.13.6及10.14.6均可行👍。 另外,外放无法驱动低音炮喇叭(耳机低音正常),按此思路猜想是不是和某个节点信息未添加有关?

szhifei commented 2 years ago

同是dell ALC256,测试10.13.6及10.14.6均可行👍。 另外,外放无法驱动低音炮喇叭(耳机低音正常),按此思路猜想是不是和某个节点信息未添加有关?

自从以前那次搞完这个声卡,我就开始怀疑这个configdata里是不是就得添加某几个实际上不是输出节点的位置才能完全正常地驱动声卡,但是那也只能一个一个试工作量太大

crackself commented 2 years ago

同是dell ALC256,测试10.13.6及10.14.6均可行👍。 另外,外放无法驱动低音炮喇叭(耳机低音正常),按此思路猜想是不是和某个节点信息未添加有关?

自从以前那次搞完这个声卡,我就开始怀疑这个configdata里是不是就得添加某几个实际上不是输出节点的位置才能完全正常地驱动声卡,但是那也只能一个一个试工作量太大

从Linux获取的节点使用信息来看,耳机喇叭为外接麦克风使用(Headset Mic),耳机线麦克风(Headphone Mic),外放输出+内置麦克风的节点都一致,所有猜测应该和0x19、0x1a 及其链结的Node有关。ALC项目变化太大,从源码编译没跑起来😅,厚颜求个编译说明

autoconfig for ALC3246: line_outs=2 (0x14/0x1b/0x0/0x0/0x0) type:speaker
[    1.488365] snd_hda_codec_realtek hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    1.488366] snd_hda_codec_realtek hdaudioC0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[    1.488368] snd_hda_codec_realtek hdaudioC0D0:    mono: mono_out=0x0
[    1.488369] snd_hda_codec_realtek hdaudioC0D0:    inputs:
[    1.488370] snd_hda_codec_realtek hdaudioC0D0:      Headset Mic=0x19
[    1.488371] snd_hda_codec_realtek hdaudioC0D0:      Headphone Mic=0x1a
[    1.488372] snd_hda_codec_realtek hdaudioC0D0:      Internal Mic=0x12
ic005k commented 2 years ago

编译说明

加入lilu和sdk就可以了。 可参照这个里面的源码结构:https://github.com/ic005k/ALC256

crackself commented 2 years ago

参考https://www.olarila.com/topic/7363-alc256-dell-7567-subwoofer-not-working-how-to-fix/ layout-id 用97,可以实现耳机自动切换。外发低音喇叭有输出,但是低音不明显。设备里看到一个Line In 的输入;同时存在内、外输出设备,能自动切换。 Screen Shot 2021-10-25 at 1 09 42 PM

更新: 经过逐个id测试,用ID=16 的configdata 合并https://github.com/ic005k/ALC256 提供的ID=69 中的 02050010 02040020 02050046 020430A4 可以做到识别2.1声道,左右声道音量调整生效,耳机自动切换。 不足是高低音喇叭反转,前面板播放低音,后面板低音炮反而播放高音。猜测是多声道配置文件没完全正确。 layout id =16

01271C20 01271D01 01271EA6 01271F90 01371CF0 01371D00 01371E00 01371F40 01471C40 01471D01 01471E10 01471F90 01470C02 01871CF0 01871D00 01871E00 01871F40 01971C40 01971D10 01971E8B 01971F02 01A71C70 01A71D00 01A71EA1 01A71F01 01B71C41 01B71D01 01B71E10 01B71F90 01B70C02 01D71CF0 01D71D00 01D71E00 01D71F40 01E71CF0 01E71D00 01E71E00 01E71F40 02050010 02040020 02050046 020430A4 02171C50 02171D10 02171E2B 02171F01 02170C02