珊瑚开发板 hdmi arc 输入/输出错误

问题描述

我正在尝试让 Coral 开发板通过 HDMI ARC 从我的电视接收音频。我很确定我在电视端启用了 ARC,但我认为 Coral Linux 端缺少一些东西。谁能帮我解决这个问题?有其他人让这个工作吗?

修改了 phanbell 设备树以启用 spdif2 和 sound-hdmi-arc。

sound-hdmi-arc {
    compatible = "fsl,imx-audio-spdif";
    model = "imx-hdmi-arc";
    spdif-controller = <&spdif2>;
    spdif-in;
};

&spdif2 {
    assigned-clocks = <&clk IMX8MQ_CLK_SPDIF2>;
    assigned-clock-parents = <&clk IMX8MQ_AUdio_PLL1_OUT>;
    assigned-clock-rates = <24576000>;
    status = "okay";
};

arc 设备显示在 Linux 中,但当我尝试从它录制时收到一条错误消息。

arecord -D hw:CARD=imxhdmiarc,DEV=0 -r 48000 -f S24_LE -c 2 -d 3 ~/arc.wav
Recording WAVE '/home/mendel/arc.wav' : Signed 24 bit Little Endian,Rate 48000 Hz,Stereo
arecord: pcm_read:2145: read error: Input/output error

如果我连接 Coral Dev Board 和一些音频测试设备,我会收到相同的错误消息。如果我将音频设备设置为禁用 ARC 链接协商并强制打开音频,则该命令确实有效。这让我相信 Coral Linux 端缺少某种链接协商。

如果有人可以帮忙,请告诉我。谢谢。

解决方法

我想通了。

# install the cec-ctl and read-edid utilities
sudo apt install cec-utils read-edid
# find our physical address reported by the TV
read-edid /devices/platform/display-subsystem/drm/card0/card0-HDMI-A-1/edid | grep physical
# set the logical address
cec-clt --audio
# set the physical address
cec-ctl -p 1.0.0.0
# send the command
cec-ctl --to 0 --initiate-arc