我正在运行 Ubuntu 12.04 并且有一个原生乐器音频 2 dj 声卡。
当我听音乐或看视频时,声音消失(视频也停止),我必须拔出并插入声卡才能再次听到声音。
我设法找到的消息是 snd-usb-caiaq 日志:无法找到要使用的输出 urb
答案1
查看最新内核的源代码声音/usb/caiaq/audio.c在 read_completed 函数中,我们可以看到 caiaq usb 内核模块发出的消息。在模块顶部,我们可以看到定义了 32 个 urb 缓冲区。
如果所有这些缓冲区都标记为正在使用,则会发送此消息。我认为重新插入设备会重新创建这些缓冲区是有道理的。
这表明该代码或该 Linux 驱动程序模块内的相关代码存在内存泄漏类型的错误。
两个建议:
将此报告为 Linux 内核的错误。请参阅我如何报告错误?。
使用更新的主线内核尝试此操作。请参阅这以获取更新的说明。您需要最新的 Linus 树。我会提到专有驱动程序会使此过程复杂化。在上述错误报告中报告使用更新主线内核的结果。
URB 是 USB 请求块,它类似于 IP 数据包。缓冲区保存这些数据包以供发送和接收。一些相当技术性的信息是这里. 声音样本帧是这些请求块的典型有效负载。