WeHack BBS
T420 coreboot在windows下耳机口没有声音输出,该怎么解决 - 可打印的版本

+- WeHack BBS (https://bbs.wehack.space)
+-- 版块: 计算机技术 (https://bbs.wehack.space/forum-5.html)
+--- 版块: 固件技术讨论区 (https://bbs.wehack.space/forum-8.html)
+--- 主题: T420 coreboot在windows下耳机口没有声音输出,该怎么解决 (/thread-95.html)



T420 coreboot在windows下耳机口没有声音输出,该怎么解决 - dalao - 10-28-2019

看帖子 https://www.reddit.com/r/coreboot/comments/dh9kq7/t420_issues_after_corebooting/ 也有不少人遇到过,但还没解决,搜了下相关文件hda_verb.c和Windows下的hdaudio.inf看了下也不知道怎么解决。该怎么解决?


RE: T420 coreboot在windows下耳机口没有声音输出,该怎么解决 - vimacs - 10-28-2019

在 GNU/Linux 下呢?
我现在的 T440p 在 GNU/Linux 下耳机口也没有声音输出,不知道是什么原因。


RE: T420 coreboot在windows下耳机口没有声音输出,该怎么解决 - dalao - 10-28-2019

(10-28-2019, 07:23 PM)vimacs 提到: 在 GNU/Linux 下呢?
我现在的 T440p 在 GNU/Linux 下耳机口也没有声音输出,不知道是什么原因。
 在linux下完全正常,Manjaro发行版


RE: T420 coreboot在windows下耳机口没有声音输出,该怎么解决 - dalao - 02-08-2020

最近还发现一个问题,通过DP口连接显示器,显示器的音箱没有输出。

在Windows下我看是因为设备管理器里的这个设备有个黄色的叹号:
位置 3 (Internal High Definition Audio Bus)
HDAUDIO\FUNC_01&VEN_8086&DEV_2805&SUBSYS_80860101&REV_1000
该设备无法启动。 (代码 10)

它自带的驱动是Microsoft的2019/9/4的10.0.18362.356版本的驱动,我手动换成Intel Corporation的2014/09/09的6.16.0.3154版本的驱动就解决了。(但也挺奇怪的,按理说Windows Update应该能自动处理好驱动,不知道其他人没coreboot的有没有这个问题)

---------------------------------
在linux上好像也有这个问题,但是还不知道怎么解决。

我看到x220的hda_verb.c文件有这样一段正好对应这个设备的ID,但是t420的hda_verb.c文件里没有

代码:
    /* --- Next Codec --- */

/*    Vendor Name    : Intel
*    Vendor ID      : 0x80862806
*    Subsystem ID   : 0x80860101
*    Revision ID    : 0x100000
*/
    /* coreboot specific header */
    0x80862805,    // Codec Vendor / Device ID: Intel PantherPoint HDMI
    0x80860101,    // Subsystem ID
    0x00000004,    // Number of IDs

    /* NID 0x01, HDA Codec Subsystem ID Verb Table: 0x80860101 */
    AZALIA_SUBVENDOR(0x3, 0x80860101),

    /* Pin Complex (NID 0x05) Digital Out at Int HDMI */
    AZALIA_PIN_CFG(0x3, 0x05, 0x18560010),

    /* Pin Complex (NID 0x06) Digital Out at Int HDMI */
    AZALIA_PIN_CFG(0x3, 0x06, 0x18560020),

    /* Pin Complex (NID 0x07) Digital Out at Int HDMI */
    AZALIA_PIN_CFG(0x3, 0x07, 0x18560030)

我把这段复制到t420里,但还是解决不了。
我想在网上搜别人的看看他们的没coreboot的t420是不是有这个设备,但我用dmesg输出出来的没有8086:2805这个ID。
我以为会像上次触摸板那样能输出硬件的ID呢,我想请教下在linux上怎样能像windows的设备管理器这样查看VEN_8086&DEV_2805这种硬件ID?


RE: T420 coreboot在windows下耳机口没有声音输出,该怎么解决 - vimacs - 02-10-2020

(02-08-2020, 11:21 PM)dalao 提到: 最近还发现一个问题,通过DP口连接显示器,显示器的音箱没有输出。


我看到x220的hda_verb.c文件有这样一段正好对应这个设备的ID,但是t420的hda_verb.c文件里没有

代码:
    /* --- Next Codec --- */

/*    Vendor Name    : Intel
*    Vendor ID      : 0x80862806
*    Subsystem ID   : 0x80860101
*    Revision ID    : 0x100000
*/
    /* coreboot specific header */
    0x80862805,    // Codec Vendor / Device ID: Intel PantherPoint HDMI
    0x80860101,    // Subsystem ID
    0x00000004,    // Number of IDs

    /* NID 0x01, HDA Codec Subsystem ID Verb Table: 0x80860101 */
    AZALIA_SUBVENDOR(0x3, 0x80860101),

    /* Pin Complex (NID 0x05) Digital Out at Int HDMI */
    AZALIA_PIN_CFG(0x3, 0x05, 0x18560010),

    /* Pin Complex (NID 0x06) Digital Out at Int HDMI */
    AZALIA_PIN_CFG(0x3, 0x06, 0x18560020),

    /* Pin Complex (NID 0x07) Digital Out at Int HDMI */
    AZALIA_PIN_CFG(0x3, 0x07, 0x18560030)

我把这段复制到t420里,但还是解决不了。
我想在网上搜别人的看看他们的没coreboot的t420是不是有这个设备,但我用dmesg输出出来的没有8086:2805这个ID。
我以为会像上次触摸板那样能输出硬件的ID呢,我想请教下在linux上怎样能像windows的设备管理器这样查看VEN_8086&DEV_2805这种硬件ID?

刚刚看了下代码。X220写的是8086:2806而不是2805. 另一个发现是这段是从X230抄过来的,因为注释里面的PantherPoint是7系芯片组,而X220用的是6系芯片组。
查看HDAudio codec应该是有办法的,但不是看PCI/USB设备。我现在不知道有没有现成的工具,不过可以看 /sys/class/sound/card*/hw*/vendor_id 来看 codec 的设备号。


RE: T420 coreboot在windows下耳机口没有声音输出,该怎么解决 - dalao - 02-11-2020

我用的是之前的代码,之前一直是8086:2805,最近这个 https://review.coreboot.org/c/coreboot/+/37541/5/src/mainboard/lenovo/x220/hda_verb.c 才改成8086:2806,他好像把注释里的当作正确的了,我也没x220不知道他改得这段是对还是不对的。
不过我在网上搜到x220好像有这样的驱动 HDAUDIO\FUNC_01&VEN_8086&DEV_2805&SUBSYS_80860101&REV_1000,我猜测大概率还是8086:2805是对的。

我刚用这个cat /sys/class/sound/card*/hw*/vendor_id 这个试了下,t420无论加不加上面那段x220的代码都能出来 0x80862805 ,挺奇怪的。
我还找到这里有人提到 https://review.coreboot.org/c/coreboot/+/10431 可以 cat /proc/asound/card0/codec#* 查看,我看这个codec#3输出的在加和不加输出的有些区别。对比了下这四行有区别

加之前
Pin Default 0x18560010: [Jack] Digital Out at Int HDMI
DefAssociation = 0x1, Sequence = 0x0
Pin Default 0x18560010: [Jack] Digital Out at Int HDMI
DefAssociation = 0x1, Sequence = 0x0

加之后
Pin Default 0x18560020: [Jack] Digital Out at Int HDMI
DefAssociation = 0x2, Sequence = 0x0
Pin Default 0x18560030: [Jack] Digital Out at Int HDMI
DefAssociation = 0x3, Sequence = 0x0

不过加不加在Windows下使用DP输出音频到显示器都还正常,不知道这个区别代表什么。


RE: T420 coreboot在windows下耳机口没有声音输出,该怎么解决 - vimacs - 12-13-2020

看到这个帖子突然想起来T440p耳机口不能用的问题,后来我是把原厂固件的HDA verbs贴到coreboot里面,就把问题解决了。我做HP EliteBook Folio 9480m的移植的时候,也需要用完整的原厂HDA verbs,否则声音也不正常。这两个机器的HDA codec都是Realtek家的产品。