标签: usb-audio

RasPi - USB 麦克风锁定

在我的 RasPi 板 Debian Linux 上,USB 麦克风偶尔会被锁定,以至于没有人可以使用它。麦克风有一个 LED,它通常会闪烁,当它锁定时,它会关闭。

该实用程序arecord对其进行了如下描述:

card 1: Device [DYNEX USB MIC Device], device 0:USB Audio [USB Audio]
    Subdevices: 1/1
    Subdevice #0: subdevice #0
Run Code Online (Sandbox Code Playgroud)

当麦克风停止工作时,arecord给出如下诊断:

> arecord -D plughw:1,0 > recording.wav
Recording WAVE 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono
arecord: set_params:1145: Unable to install hw_params:
ACCESS:  RW_INTERLEAVED
FORMAT:  U8
etc...
Run Code Online (Sandbox Code Playgroud)

拔下和插入麦克风修复它,只是因为当前的下降迫使 RasPi 重新启动!不是理想的情况。

有没有办法从命令行或 C 可执行文件解决这个问题?

我还尝试使用ioctl(fd, USBDEVFS_RESET, 0)from 的输出lsusb来提供总线和设备编号。这会使 LED 重新亮起,但这太过分了。必须使用 alsamixer 重新设置设备。

lock raspberry-pi usb-audio

8
推荐指数
1
解决办法
717
查看次数

ALSA 将 plughw 设置为默认值

我有一个 USB 音频设备,配置为卡 0 的默认设备。

我有一个 3rd 方应用程序试图播放 wav 文件,但失败并显示以下内容:

Playing WAVE 'sound.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
aplay: set_params:1239: Channels count non available
Run Code Online (Sandbox Code Playgroud)

如果我尝试手动播放相同的 wav,我不会出错,但也没有声音:

aplay sound.wav
Playing WAVE 'sound.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
Run Code Online (Sandbox Code Playgroud)

如果我指定 device plughw:0,0,声音播放正确!

aplay -D plughw:0,0 sound.wav
Playing WAVE 'sound.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
Run Code Online (Sandbox Code Playgroud)

我尝试了各种尝试将配置~/.asoundrc设置plughw:0,0为默认值,但没有成功。

如何-D plughw:0,0将默认设置应用于所有声音播放?

alsa audio usb-audio

5
推荐指数
1
解决办法
8529
查看次数

每当 alsa/pulseaudio 闲置 5 秒时,总是有流行音乐?

aplay每当用户与界面交互时,我都会播放简短的音效。

我注意到的是,我可以按任何顺序播放任何声音,只要两个声音在 5 秒内播放,过渡就很清晰,但如果间隔超过 5 秒,就会出现可怕的爆裂声!

请注意,我所有的声音文件的持续时间都小于 1 秒。

为了解决这个问题,我所做的是创建一个 5 秒长的低采样率 silent.wav 文件,该文件在 .sh 脚本中循环(这绝对不是一个长期解决方案):

无声的蛮力:

#!/bin/bash
while [ 1 ] ; do
 aplay sounds/blank.wav
done
Run Code Online (Sandbox Code Playgroud)

爆裂声现在很少,如果有的话。

所以我想不通的是,为什么在这 5 秒内发生了一些变化以导致爆裂声?如何配置我的音频以保持长时间延迟播放声音时不会弹出的状态?

我已经尝试过 /etc/pulse/default.pa 和 /etc/pulse/daemon.config 但取得了零进展。

请注意,我使用的是单核 raspberry pi,但是如果通过静音进行暴力破解有帮助,那么还有希望吗??

[更新]

我遇到了一种稍微更优雅的方法来持续对设备进行暴力静音:

aplay /dev/zero
    
Playing raw data '/dev/zero' : Unsigned 8 bit, Rate 8000 Hz, Mono
Run Code Online (Sandbox Code Playgroud)

但出于某种原因,它会产生高频音调。是否有类似的方法可以做到这一点?

[更新]

aplay -r 8000 -f S16_LE /dev/zero
Run Code Online (Sandbox Code Playgroud)

这样做可以解决问题,不断运行线程以保持打开状态的一些开销。但是现在非常干净的音频。

[编辑]

此功能与pulseaudio模块module-suspend-on-idle有关。也可以禁用此模块。先尝试临时:

pactl unload-module module-suspend-on-idle
Run Code Online (Sandbox Code Playgroud)

如果您满意,那么您可以在pulseaudio 配置文件中临时设置此设置。

linux audio pulseaudio raspberry-pi usb-audio

5
推荐指数
0
解决办法
1393
查看次数

找出USB设备

我有使用 USB 进行交互的硬件。它是一个USB声卡 配置文件需要这样的:

devstr=1-1.3.1:1.0
Run Code Online (Sandbox Code Playgroud)

lsusb看起来像这样:

Bus 001 Device 004: ID 0d8c:0012 C-Media Electronics, Inc.
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Run Code Online (Sandbox Code Playgroud)

我需要Bus 001 Device 004: ID 0d8c:0012 C-Media Electronics, Inc. to在配置文件中引用此设备。

更新 这里是/var/log/messages(重启后)

Nov 17 12:33:52 44249 kernel: [    3.658983] usb 1-1.2: New USB device found, idVendor=0d8c, idProduct=0012 …
Run Code Online (Sandbox Code Playgroud)

usb usb-audio

4
推荐指数
1
解决办法
5219
查看次数

标签 统计

usb-audio ×4

audio ×2

raspberry-pi ×2

alsa ×1

linux ×1

lock ×1

pulseaudio ×1

usb ×1