iec958 S/PDIF 输入没有声音 - 声卡 USB CM106

iec958 S/PDIF 输入没有声音 - 声卡 USB CM106

问题 : 数字输入 S/PDIF / IEC958 没有声音。

设备/软件: USB 外置声卡:CM106 - Ubuntu 20.04 LTS - GUI:Gnome-FlashBack

配置音频: FreeBox Player(法国互联网电视提供商) - 数字输出 S/PDIF ==[TosLink]=> 声卡 - 数字输入 S/PDIF

FreeBox 播放器配置:主声音输出 S/PDIF,带或不带直通


数字输入 iec958 在图形 pavucontrol 或脉冲命令行答案中可见。但声音计(vumeter)仍然是空的,没有声音,没有信号。

我没有任何其他声音设备来检查 FreeBox 播放器 S/PDIF 输出。

在 /sys 或 /proc 或 /dev 中是否有我可以检查的文件,以查看是否有任何数字信号/数据?

iec958 输入可见,但没有声音/信号?为什么 ?

是否需要做一些特定的事情才能使其发挥作用。

如何解决这个问题?从哪里开始?什么步骤?

我花了很多周末尝试修复它,阅读论坛,我不记得我尝试过的所有内容并在这里详细说明。我将回答您有关此故障排除的问题。

感谢您的帮助。

答案1

如果您在 pavucontrol 中看到输入电平,则您的卡正在接收输出,您应该能够记录它。

根据我的经验,除了设置持续录音/播放之外,没有办法让pulseaudio配置你的卡以将其传递到线路输出。

您也许可以使用 amixer 更改此设置,但这是高度特定于卡的,并且您的卡可能根本无法执行此操作,因此您可能有一个恒定的(消耗 CPU 的)环回解决方案。

如果您的问题是在输入上看不到任何内容,那么您需要配置您的卡:在 pavucontrol 中,将配置下的配置文件更改为包含“数字立体声 (IEC958) 输入”的内容。

更新:

我已经用我的 CM106 设备进行了实验,我认为 Linux 驱动程序不支持将 spdif 混合到输出中。

然而,根据数据表(http://www.steila.com/usb4io/CMedia/CM106--L_F-Datasheet-1.3.pdf),卡确实支持它,事实上,一些实验让我启用它,通过向寄存器1写入一个值来启用SPDIFMIX(hidraw1是与usb声卡对应的hidraw设备,插入时检查dmesg):

perl -e 'print pack "H*", "002001b001"' >/dev/hidraw1

这会将寄存器设置为加电默认值 (00b0) + SPDIFMIX 启用 (01b0)(采用小端字节序)。

以下 shell skript hack 在每个“USB 声音设备”上设置该位 - 当与错误的卡一起使用时可能会很危险:

#!/bin/sh

cd /sys/class/hidraw || exit
for dev in *; do
   set "$dev"/device/input/*/name
   read name <"$1"
   if [ "$name" = "USB Sound Device" ]; then
      echo "enabling SPDIFMIX on $dev"
      printf "\000\040\001\260\001" >/dev/"$dev"
   fi
done

相关内容