尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

LineageOS 21 x86_64 TV HDMI 无声音修复记录

发布时间:2026/11/5 8:02:02

资讯中心
01
ARTICLE

LineageOS 21 x86_64 TV HDMI 无声音修复记录

LineageOS 21 x86_64 TV HDMI 无声音修复记录
一、问题说明设备环境LineageOS 21 Android 14 x86_64 TV系统能够正常通过 HDMI 输出画面但 YouTube、系统提示音和本地播放器都没有声音。参考项目AndroidTV x86 HDMI Audio Fix https://github.com/RealMartinKevin/androidtv-x86-hdmi-audio-fix该项目可以帮助检测实际可用的 HDMI ALSA 设备但它原本通过修改/system/etc/init.sh实现永久修复。LineageOS 21 的系统分区默认受保护原脚本可能出现Read-only file system。最终处理思路检查 HDMI 声卡和 PCM 设备通过 ELD 确认电视已经被系统识别使用alsa_aplay验证底层 HDMI 音频正常检查 Android Audio Policy 状态修改hdmi_audio_policy_configuration.xml将HDMI_2设置为固定连接设备和默认输出。二、准备工作需要准备已安装 LineageOS 21 x86_64 TV 的设备Windows 电脑和 ADB 工具已开启 USB 调试一个标准 PCM WAV 测试音频系统支持adb root。确认连接adb devices adb root adb wait-for-device adb shell id正常应看到uid0(root) gid0(root)这表示 ADB Shell 已经是 root不需要再执行su。三、检查 ALSA 工具adb shell which alsa_aplay adb shell which alsa_amixer正常输出/system/bin/alsa_aplay /system/bin/alsa_amixer四、推送测试音频建议使用双声道、16 bit、48000 Hz 的 PCM WAV 文件。adb push sample.wav /data/local/tmp/sample.wav adb shell ls -l /data/local/tmp/sample.wav五、查看声卡adb shell cat /proc/asound/cards我的设备输出0 [PCH ]: HDA-Intel - HDA Intel PCH HDA Intel PCH at 0xdf120000 irq 130这里只显示一张HDA Intel PCH并不代表没有 HDMI 音频。Intel 平台上的 HDMI 音频通常作为同一张 HDA 声卡下面的 PCM 设备存在。六、查看 HDMI PCM 设备adb shell cat /proc/asound/pcm我的设备中可以看到00-03: HDMI 0 : HDMI 0 : playback 1 00-07: HDMI 1 : HDMI 1 : playback 1 00-08: HDMI 2 : HDMI 2 : playback 1对应 ALSA 设备plughw:0,3 plughw:0,7 plughw:0,8第一个数字是声卡号第二个数字是 PCM 设备号。七、查看 ELD确认电视已经连接ELD 是 HDMI 显示设备向系统上报的音频能力信息。先列出 ELD 文件adb shell ls -l /proc/asound/card0/eld*一次性读取全部 ELDadb shell for f in /proc/asound/card0/eld#2.*; do echo $f; cat $f; done找到包含以下内容的项目monitor_present 1 eld_valid 1 monitor_name Mi TV connection_type HDMI我的设备对应/proc/asound/card0/eld#2.0关键内容如下monitor_present 1 eld_valid 1 monitor_name Mi TV connection_type HDMI speakers [0x1] FL/FR sad0_coding_type [0x1] LPCM sad0_channels 2 sad0_rates [0xe0] 32000 44100 48000 sad0_bits [0xe] 16 20 24这说明 HDMI 线、电视握手、Intel HDMI 音频驱动和电视的 LPCM 支持都正常。八、检查 DRM HDMI 接口adb shell ls -1 /sys/class/drm我的设备输出card1 card1-DP-1 card1-HDMI-A-1 renderD128 version查看连接状态adb shell cat /sys/class/drm/card1-HDMI-A-1/status正常应返回connected不知道具体接口名称时可以执行adb shell for f in /sys/class/drm/*/status; do echo $f; cat $f; done九、打开 IEC958adb shell for ch in 0 1 2 3; do alsa_amixer -c0 set IEC958,$ch on; done部分通道提示不存在可以忽略。十、手动测试 HDMI 设备依次测试adb shell alsa_aplay -Dplughw:0,3 /data/local/tmp/sample.wav adb shell alsa_aplay -Dplughw:0,7 /data/local/tmp/sample.wav adb shell alsa_aplay -Dplughw:0,8 /data/local/tmp/sample.wav我的设备执行下面这条就能正常出声adb shell alsa_aplay -Dplughw:0,3 /data/local/tmp/sample.wav最终确认声卡号0 设备号3 ALSA 设备plughw:0,3如果alsa_aplay能响说明 HDMI 硬件、驱动和 ALSA 层都正常问题位于 Android Audio Policy。出现权限错误时先执行adb root十一、检查 Android Audio Policyadb shell dumpsys media.audio_policy audio_before.txt findstr /n /i Available output devices Outputs HDMI_2 Selected Device audio_before.txt修改前系统虽然能看到HDMI_2 AUDIO_DEVICE_OUT_HDMI hdmi_stereo hdmi_multi但HDMI_2只出现在Declared devices和Supported devices中。真正可用的输出仍然只有Available output devices (2): Speaker Telephony Tx媒体流始终选择Selected Device: AUDIO_DEVICE_OUT_SPEAKER这说明 HDMI 配置模块已经加载但HDMI_2没有被标记为可用输出。十二、将根目录重新挂载为可写先查看根目录挂载状态adb shell mount | findstr on / 我的系统最初是/dev/loop0 on / type ext4 (ro,seclabel,relatime)重新挂载为可写adb root adb shell mount -o remount,rw /再次检查成功后会显示/dev/loop0 on / type ext4 (rw,seclabel,relatime)可以测试写入adb shell touch /system/test_rw adb shell ls -l /system/test_rw adb shell rm /system/test_rw不要使用adb remount部分 Android-x86 系统会提示 overlayfs 不受支持。也不要执行mount -o remount,rw /system因为/system不是独立挂载点真正的挂载点是/。十三、找到 HDMI 配置文件adb shell grep -R -l HDMI_2 /vendor/etc /system/etc 2/dev/null我的设备返回/vendor/etc/hdmi_audio_policy_configuration.xml十四、拉取配置文件adb pull /vendor/etc/hdmi_audio_policy_configuration.xml . copy hdmi_audio_policy_configuration.xml hdmi_audio_policy_configuration.xml.original建议使用 Notepad 或 Visual Studio Code 编辑保持 UTF-8 和 Unix 换行格式。十五、修改 HDMI Audio Policy找到modulenamehdmihalVersion2.0在mixPorts前面加入attachedDevicesitemHDMI_2/item/attachedDevicesdefaultOutputDeviceHDMI_2/defaultOutputDevice修改后的结构modulenamehdmihalVersion2.0attachedDevicesitemHDMI_2/item/attachedDevicesdefaultOutputDeviceHDMI_2/defaultOutputDevicemixPorts.../mixPortsdevicePorts.../devicePortsroutes.../routes/moduleattachedDevices会让HDMI_2作为固定连接设备进入可用设备列表defaultOutputDevice会将 HDMI 设置为该模块的默认输出。不要删除原有的mixPorts、devicePorts和routes。十六、备份并推回设备adb push hdmi_audio_policy_configuration.xml /data/local/tmp/ adb shell cp -a /vendor/etc/hdmi_audio_policy_configuration.xml /vendor/etc/hdmi_audio_policy_configuration.xml.bak adb shell cp /data/local/tmp/hdmi_audio_policy_configuration.xml /vendor/etc/hdmi_audio_policy_configuration.xml adb shell chmod 644 /vendor/etc/hdmi_audio_policy_configuration.xml adb shell chown 0:0 /vendor/etc/hdmi_audio_policy_configuration.xml adb shell sync adb reboot十七、重启后验证adb root adb wait-for-device adb shell dumpsys media.audio_policy audio_after.txt findstr /n /i Available output devices Outputs HDMI_2 Selected Device audio_after.txt修复成功后应看到Available output devices (3): Speaker HDMI_2 Telephony Tx活动输出中应出现IOProfile name:hdmi_stereo Devices: {AUDIO_DEVICE_OUT_HDMI, :}媒体流会选择Selected Device: {AUDIO_DEVICE_OUT_HDMI, :}此时 YouTube、系统提示音和播放器都可以通过电视正常出声。十八、修复前后对比修改前ALSA plughw:0,3 可以出声 Android 系统没有 HDMI 声音 Available output devices (2) HDMI_2 只存在于 Declared devices Selected Device 为 Speaker修改后Available output devices (3) HDMI_2 进入可用设备列表 hdmi_stereo 成为活动输出 Selected Device 为 AUDIO_DEVICE_OUT_HDMI YouTube 和系统声音正常十九、恢复原配置adb root adb shell mount -o remount,rw / adb shell cp /vendor/etc/hdmi_audio_policy_configuration.xml.bak /vendor/etc/hdmi_audio_policy_configuration.xml adb shell chmod 644 /vendor/etc/hdmi_audio_policy_configuration.xml adb shell chown 0:0 /vendor/etc/hdmi_audio_policy_configuration.xml adb shell sync adb reboot二十、注意事项不同设备的声卡号和设备号可能不同必须先执行adb shell cat /proc/asound/pcm不同设备的 HDMI 配置名称可能不是HDMI_2应先搜索配置文件。alsa_aplay能响才说明底层 HDMI 音频链路正常。HDMI_2出现在Declared devices不代表已经可以使用。必须在Available output devices中看到 HDMI系统应用才可能路由到 HDMI。修改 XML 前一定要备份。Windows CMD 中没有grep应使用findstr或者把管道放进adb shell ...中执行。重启后可能需要重新执行adb root。如果仍然无声可以先把电视数字音频输出设置为 PCM。本方法适用于“ALSA 直出有声但 Android Audio Policy 没有启用 HDMI”的情况。对于内核完全未识别 HDMI 声卡的设备无效。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。