我有一块带USB-C插孔的耳机。它们是Google Pixel 3附带的,我使用Archlinux,我很乐意在笔记本上使用USB插孔。然而,我不知道我需要采取哪些步骤来使它发挥作用。
这是我迄今为止所做的。
lsusb显示了设备:Bus 003 Device 005: ID 18d1:5033 Google Inc.dmesg显示设备连接的时间: [ 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发现我的耳机?
这似乎是一个完整的系统更新已经神奇地解决了这个问题,现在萌芽工作走出了盒子。所有的帮助张贴在这里是高度赞赏,但作为今后的参考。
发布于 2019-08-20 15:12:51
请将耳机连接到计算机并运行以下命令:
lsusb -d 18d1:5033 -v | grep Class如果输出中包含单词Audio和Streaming,那么就有希望:耳塞有内置的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规则。应该是这样的:
SUBSYSTEM=="sound", <conditions to match only your device>, ENV{PULSE_PROFILE_SET}="profilename.conf"发布于 2019-12-31 07:48:33
感谢telcoM关于snd-usb-audio的贴士。原来我的内核已经禁用了SND_USB_AUDIO。我用:
make menuconfig将SND_USB_AUDIO设置为m (内核模块)。然后,我基于/proc/version签出了内核版本。然后,我只通过以下方法重新编译内核模块:
make modules然后,我插入了这些模块,以便:
sudo insmod sound/core/snd-rawmidi.ko
sudo insmod sound/usb/snd-usbmidi-lib.ko
sudo insmod sound/usb/snd-usb-audio.ko当然,只是将我的内核和模块重新构建在一起是一个更好的主意,因为这些模块不会在重新启动时自动加载,但是上面的方法对我来说是有效的。
发布于 2021-02-17 14:44:20
对我来说,这件事现在已成定局。
Linux ux370a 5.10.16-arch1-1 #1 SMP PREEMPT Sat, 13 Feb 2021 20:50:18 +0000 x86_64 GNU/Linuxhttps://unix.stackexchange.com/questions/536472
复制相似问题