首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接usb-c耳机

连接usb-c耳机
EN

Unix & Linux用户
提问于 2019-08-20 13:54:44
回答 3查看 6.7K关注 0票数 5

我有一块带USB-C插孔的耳机。它们是Google Pixel 3附带的,我使用Archlinux,我很乐意在笔记本上使用USB插孔。然而,我不知道我需要采取哪些步骤来使它发挥作用。

这是我迄今为止所做的。

  • lsusb显示了设备:Bus 003 Device 005: ID 18d1:5033 Google Inc.
  • dmesg显示设备连接的时间:
代码语言:javascript
复制
     [ 2520.298434] usb 3-1: new full-speed USB device number 5 using xhci_hcd
     [ 2520.694851] usb 3-1: New USB device found, idVendor=18d1, idProduct=5033, bcdDevice= 0.20
     [ 2520.694857] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
     [ 2520.694861] usb 3-1: Product: Pixel USB-C earbuds
     [ 2520.694864] usb 3-1: Manufacturer: Google
     [ 2520.694867] usb 3-1: SerialNumber: 00000089MAJ24397

然而,aplay -l没有显示任何反射我的耳机的设备。由此,我认为问题在于ALSA不承认新的USB设备是一对耳机。我假设我现在必须编辑一些ALSA配置文件来教ALSA这个设备。

我怎样才能知道我到底需要在哪个文件中编辑什么,才能让ALSA发现我的耳机?

编辑

这似乎是一个完整的系统更新已经神奇地解决了这个问题,现在萌芽工作走出了盒子。所有的帮助张贴在这里是高度赞赏,但作为今后的参考。

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2019-08-20 15:12:51

请将耳机连接到计算机并运行以下命令:

代码语言:javascript
复制
lsusb -d 18d1:5033 -v | grep Class

如果输出中包含单词AudioStreaming,那么就有希望:耳塞有内置的DAC,并且可以识别为标准的USB音频设备。

但是如果这个词是看不见的,那可能是耳塞里唯一的数字电子产品是一个小芯片,它基本上告诉我们“我是一组USB被动耳塞,可以自由地将特定的USB-C引脚直接连接到模拟音频输出。”而且,当USB耳机投放市场时,标准还没有完成,似乎有一些相互竞争的解决方案。

基本上,耳机可以直接连接到USB连接器中的特定引脚,并且控制设备需要能够将这些引脚切换到模拟音频输出模式。您的智能手机的USB-C控制器显然可以做到这一点;但我非常怀疑许多笔记本在音频芯片和USB-C控制器之间是否有必要的连接,以便将模拟音频信号从USB-C传送出去。

另见:https://www.reviewgeek.com/11101/dont-bother-with-usb-c-headphones-for-now/

如果USB设备信息确实包括Audio类和Streaming子类,那么snd-usb-audio模块应该会被加载。如果它工作正常,那么音频设备应该在/proc/asound/cards中列出;在此之后,唯一剩下的问题可能是获得分配给设备的正确的PulseAudio配置文件(如果您使用的是PulseAudio )。

但是,如果snd-usb-audio模块不能使用该设备,那么它可能有一些硬件怪癖需要考虑;该模块已经有许多您可以尝试的古怪选项。在这种情况下,特别是如果您发现添加一个特殊的选项可以使设备工作,您还应该将设备的lsusb -v输出和发现的描述发送给Linux音频驱动程序开发人员,以便在未来的内核版本中将正确的怪癖(S)自动应用到设备模型中。

如果您的发行版使用PulseAudio,并且在所有这些检查之后没有看到您的设备,那么还有一件事可能是错误的:为设备分配正确的PulseAudio配置文件。配置文件位于/usr/share/pulseaudio/alsa-mixer/profile-sets/目录(至少在Debian/Ubuntu上),default.conf配置文件中有非常描述性的注释。您可能会发现其中一个非默认配置文件适用于您的设备,或者您可能需要编写一个新的配置文件。

要将特定的PulseAudio配置文件分配给音频设备,可以使用udev规则。应该是这样的:

代码语言:javascript
复制
SUBSYSTEM=="sound", <conditions to match only your device>, ENV{PULSE_PROFILE_SET}="profilename.conf"
票数 5
EN

Unix & Linux用户

发布于 2019-12-31 07:48:33

感谢telcoM关于snd-usb-audio的贴士。原来我的内核已经禁用了SND_USB_AUDIO。我用:

代码语言:javascript
复制
make menuconfig

SND_USB_AUDIO设置为m (内核模块)。然后,我基于/proc/version签出了内核版本。然后,我只通过以下方法重新编译内核模块:

代码语言:javascript
复制
make modules

然后,我插入了这些模块,以便:

代码语言:javascript
复制
sudo insmod sound/core/snd-rawmidi.ko
sudo insmod sound/usb/snd-usbmidi-lib.ko
sudo insmod sound/usb/snd-usb-audio.ko

当然,只是将我的内核和模块重新构建在一起是一个更好的主意,因为这些模块不会在重新启动时自动加载,但是上面的方法对我来说是有效的。

票数 2
EN

Unix & Linux用户

发布于 2021-02-17 14:44:20

对我来说,这件事现在已成定局。

代码语言:javascript
复制
Linux ux370a 5.10.16-arch1-1 #1 SMP PREEMPT Sat, 13 Feb 2021 20:50:18 +0000 x86_64 GNU/Linux
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/536472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档