Raspbian 上的 USB DAC 产生错误

Posted

技术标签:

【中文标题】Raspbian 上的 USB DAC 产生错误【英文标题】:USB DAC on Raspbian produces error 【发布时间】:2015-01-04 16:33:42 【问题描述】:

我今天终于为我的 Raspberry Pi(在 Raspbian Wheezy 上运行)获得了一个 USB DAC (HiFimeDIY Sabre DAC),但是当然,仅仅插入它并不能解决问题。我现在已经在 ALSA 配置上搞砸了很长一段时间,但无济于事。通过 3.5" 耳机插孔播放音频效果很好,但我似乎无法通过 USB 播放音频。aplay -L 给出

pi@raspberrypi ~ $ aplay -L
...
pulse
  Playback/recording through the PulseAudio sound server
  sysdefault:CARD=DAC
  HiFimeDIY DAC, USB Audio
  Default Audio Device
front:CARD=DAC
  HiFimeDIY DAC, USB Audio
  Default Audio Device
...
sysdefault:CARD=ALSA
  bcm2835 ALSA, bcm2835 ALSA
  Default Audio Device
front:CARD=ALSA
  bcm2835 ALSA, bcm2835 ALSA
  Default Audio Device

我想知道这两张卡都被标记为“默认音频设备”是不是一件好事?

无论如何,通过

测试播放
 pi@raspberrypi ~ $ aplay /usr/share/sounds/alsa/Front_Center.wav -D sysdefault:CARD=ALSA
 Playback: WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian,  Rate: 48000 Hz, mono

工作正常,但是

 pi@raspberrypi ~ $ aplay /usr/share/sounds/alsa/Front_Center.wav -D sysdefault:CARD=DAC
 ALSA lib pcm_direct.c:980:(snd1_pcm_direct_initialize_slave) unable to install hw params
 ALSA lib pcm_dmix.c:1030:(snd_pcm_dmix_open) unable to initialize slave
 aplay: main:682: Fehler beim Öffnen des Gerätes: Datenübergabe unterbrochen (broken pipe)

(对不起德语,它说的是打开设备时出错:数据流中断)

我的 /etc/asound.conf 如下所示:

 pcm.!default 
 type hw
 card 0
 device 0
 

并且 /etc/modprobe.d/alsa-base.conf 有以下条目:

# Keep snd-usb-audio from beeing loaded as first soundcard
options snd-usb-audio index=0
options snd_bcm2835 index=1

我做错了什么?非常感谢您的帮助!

编辑:

系统日志说明如下:

Nov  7 18:30:29 raspberrypi kernel: [    2.534311] usb 1-1: new full-speed USB device number 2 using dwc_otg
Nov  7 18:30:29 raspberrypi kernel: [    2.546658] Indeed it is in host mode hprt0 = 00021501
Nov  7 18:30:29 raspberrypi kernel: [    2.752653] usb 1-1: not running at top speed; connect to a high speed hub
Nov  7 18:30:29 raspberrypi kernel: [    2.765131] usb 1-1: New USB device found, idVendor=0424, idProduct=9514
Nov  7 18:30:29 raspberrypi kernel: [    2.776874] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber$
Nov  7 18:30:29 raspberrypi kernel: [    2.790194] hub 1-1:1.0: USB hub found
Nov  7 18:30:29 raspberrypi kernel: [    2.799746] hub 1-1:1.0: 5 ports detected
Nov  7 18:30:29 raspberrypi kernel: [    3.082453] usb 1-1.1: new full-speed USB device number 3 using dwc_otg
Nov  7 18:30:29 raspberrypi kernel: [    3.192745] usb 1-1.1: not running at top speed; connect to a high speed hub
Nov  7 18:30:29 raspberrypi kernel: [    3.205857] usb 1-1.1: New USB device found, idVendor=0424, idProduct=ec00
Nov  7 18:30:29 raspberrypi kernel: [    3.218650] usb 1-1.1: New USB device strings: Mfr=0, Product=0, SerialNumb$
Nov  7 18:30:29 raspberrypi kernel: [    3.239311] smsc95xx v1.0.4

...

Nov  7 18:30:29 raspberrypi kernel: [    3.308141] smsc95xx 1-1.1:1.0 eth0: register 'smsc95xx' at usb-bcm2708_usb$
Nov  7 18:30:29 raspberrypi kernel: [    3.432526] usb 1-1.3: new full-speed USB device number 4 using dwc_otg
Nov  7 18:30:29 raspberrypi kernel: [    3.626813] usb 1-1.3: New USB device found, idVendor=1852, idProduct=7022
Nov  7 18:30:29 raspberrypi kernel: [    3.647601] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumb$
Nov  7 18:30:29 raspberrypi kernel: [    3.664695] usb 1-1.3: Product: HiFimeDIY DAC
Nov  7 18:30:29 raspberrypi kernel: [    3.676431] usb 1-1.3: Manufacturer: HiFimeDIY Audio
Nov  7 18:30:29 raspberrypi kernel: [    3.703597] input: HiFimeDIY Audio HiFimeDIY DAC as /devices/platform/bcm27$
Nov  7 18:30:29 raspberrypi kernel: [    3.721606] hid-generic 0003:1852:7022.0001: input,hidraw0: USB HID v1.00 D$
Nov  7 18:30:29 raspberrypi kernel: [    7.529882] usbcore: registered new interface driver snd-usb-audio

但是一旦启动过程完成,我就会连续数亿次:

Nov  7 18:30:38 raspberrypi kernel: [   41.221205] INFO:: schedule_periodic: Insufficient periodic bandwidth for p$
Nov  7 18:30:38 raspberrypi kernel: [   41.221205]
Nov  7 18:30:38 raspberrypi kernel: [   41.221261] ERROR::dwc_otg_hcd_urb_enqueue:544: DWC OTG HCD URB Enqueue fai$
Nov  7 18:30:38 raspberrypi kernel: [   41.221261]
Nov  7 18:30:38 raspberrypi kernel: [   41.221288] cannot submit urb 0, error -1: unknown error

还有:

Nov  7 18:45:21 raspberrypi kernel: [  861.969647] bcm2835_audio_set_ctls:558  Controls set for stream 0
Nov  7 18:47:58 raspberrypi pulseaudio[2390]: [pulseaudio] module-always-sink.c: Unable to load module-null-sink

Nov  7 18:48:46 raspberrypi pulseaudio[2494]: [pulseaudio] module-udev-detect.c: Tried to configure /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.1/sound/card0 (alsa_card.usb-HiFimeDIY_Audio_HiFimeDIY_DAC-01-DAC) more often than 5 times in 10 seconds

编辑 2:

/proc/asound/card0/stream0 的内容是

HiFimeDIY Audio HiFimeDIY DAC at usb-bcm2708_usb-1.3, full speed : USB Audio

Playback:
 Status: Stop
 Interface 3
  Altset 1
  Format: S16_LE
  Channels: 2
  Endpoint: 3 OUT (ADAPTIVE)
  Rates: 8000, 16000, 32000, 44100, 48000, 96000
 Interface 3
  Altset 2
  Format: S24_3LE
  Channels: 2
  Endpoint: 3 OUT (ADAPTIVE)
  Rates: 8000, 16000, 32000, 44100, 48000, 96000

Capture:
 Status: Stop
 Interface 2
  Altset 1
  Format: S16_LE
  Channels: 2
  Endpoint: 2 IN (ADAPTIVE)
  Rates: 8000, 16000, 32000, 44100, 48000, 96000
 Interface 2
  Altset 2
  Format: S24_3LE
  Channels: 2
  Endpoint: 2 IN (ADAPTIVE)
  Rates: 8000, 16000, 32000, 44100, 48000, 96000

每次我想通过 USB 卡强制声音(下面我将它设置为 .asoundrc 中的默认音频设备)我得到

pi@raspberrypi ~ $ aplay piano2.wav Wiedergabe: WAVE 'piano2.wav' : Signed 16 bit Little Endian, Rate: 48000 Hz, stereo aplay: set_params:1145: Fehler beim Setzen der Hardware-Parameter: ACCESS: RW_INTERLEAVED FORMAT: S16_LE SUBFORMAT: STD SAMPLE_BITS: 16 FRAME_BITS: 32 CHANNELS: 2 RATE: 48000 PERIOD_TIME: 125000 PERIOD_SIZE: 6000 PERIOD_BYTES: 24000 PERIODS: 4 BUFFER_TIME: 500000 BUFFER_SIZE: 24000 BUFFER_BYTES: 96000 TICK_TIME: 0

(德语部分说“aplay: set_params:1145: 无法安装硬件参数:)。 此外, aplay -L 仍然给我

Karte 0: DAC [HiFimeDIY DAC], Gerät 0: USB Audio [USB Audio]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0
Karte 0: DAC [HiFimeDIY DAC], Gerät 1: USB Audio [USB Audio #1]
  Sub-Geräte: 1/1
  Sub-Gerät #0: subdevice #0

当我使用aplay -D hw:0,1 sound.wav 时,播放似乎可以正常工作(没有抛出任何错误消息),但我什么也听不到。卡 0,1 是记录设备吗?如果我使用板载声音,一切正常。我没有使用 USB 集线器(DAC 直接插入 pi)。这可能是电源问题吗?

lsusb 有

pi@raspberrypi ~ $ lsusb Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 1852:7022 GYROCOM C&C Co., LTD

目前,打印机已插入(但已关闭)并且拔下它没有任何改变,lsusb 仍然显示相同的设备(我想知道为什么有 4 个和 3 个不同,而 Pi 只有 2 个端口,其中之一是 DAC)。当 pi 启动并且扬声器插入 DAC 时,我会听到几声噼啪声,就像它们插入耳机插孔时一样。

【问题讨论】:

系统日志中的错误信息是什么? 添加了系统日志,至少我认为可能会感兴趣 如果你的问题不是关于编程的,那是题外话,你最好在raspberrypi.stackexchange.com提问 谢谢,当我已经问过这个问题时发现为时已晚 您还有其他 USB 设备吗(请参阅lsusb)? /proc/asound/card0/stream0的内容是什么? 【参考方案1】:

即使我也遇到过类似的问题。


可能的解决方案:

检查内核配置( zcat /proc/config.gz | grep 'CONFIG_FW_LOADER' )。如果未启用该配置,则尝试构建启用此配置的内核。 我在不同的内核中为相同的 ROOT FILE SYSTEM 尝试了类似的方法,然后检查了我发现上述解决方案的配置。

感谢和问候, 桑德什 K A

让我知道这个解决方案是否适合您。

【讨论】:

【参考方案2】:

不久前,我遇到了同样的问题。我设法通过仔细检查配置文件来修复它。就我而言,我在配置 ~/.asoundrc 后运行了 alsa 混音器。通过运行 alsa 混音器/拔下 USB,alsa 会自动更新 ~/.asoundrc 文件。因此,覆盖了我以前的配置。

请确保您在 conf 文件中所做的更改仍然存在,然后再重试。我希望这也适用于你。

Set up Raspberry Pi 3 USB mic ( creative sound blaster )

【讨论】:

以上是关于Raspbian 上的 USB DAC 产生错误的主要内容,如果未能解决你的问题,请参考以下文章

DAC 在 Raspbian 的歌曲开始/停止时弹出

Raspberry Pi - Raspbian - 运动 - USB 摄像头 - 黑色图像

在 Raspbian 上通过 USB 启用 RTL8188CUS 的监控模式

Raspbian 上的 Alsa 配置

Raspbian镜像无头烧录

将 raspbian wheezy USB 驱动程序 ch341.c 编译为 ch341.ko