Здравствуйте. Имею в наличии shanling up2 (блютуз ресивер с ldac и полным фаршем, у которого есть поддержка USB DAC). По паспорту он умеет выводить аудио через USB с частотой дискретизации 44.1кгц и 48кгц, чем успешно и занимается в винде (wasapi). Но на линуксе что-то идёт не так.
Линукс определяет сабж, предлагает выводить на него звук и у него это даже получается, если исходная частота дискретизации трека 48кгц. Резюмируя — подаём 48кгц и звук есть. Pulseeffects показывает, что выводится без ресемпла (resampler — copy).
Но если пустить в систему звук с частотой дискретизации 44.1кгц — всё ломается. Pulseeffects (причина не в нём, пробовал удалять) показывает аналогичную картину, как в случае с 48кгц, т.е. resampler — copy. Система пытается выводить 44кгц нативно, в итоге не играет совсем (звука нет). В наушниках на старте воспроизведения происходит легкий щелчок, на up2 что-то приходит, но играть не начинает.
Операционная система: Manjaro Linux
Версия KDE Plasma: 5.18.3
Версия KDE Frameworks: 5.68.0
Версия Qt: 5.14.1
Версия ядра: 5.5.13-1-MANJARO
Архитектура: 64-битная
Процессоры: 4 × AMD A10-5750M APU with Radeon(tm) HD Graphics
Память: 5,0 ГиБ ОЗУ
5.4 lts ставить пробовал, проблема не пропадает. На mint cinnanomon 19.3 из коробки ровно такая же проблема.
Производитель: Shanling Digital Technology Development Co., Ltd.
Серийный номер: ABCDEF0123456789
Класс 0 ((Defined at Interface level))
Подкласс 0
Протокол 0
Версия USB 2.00
ID производителя 0xa12 (Cambridge Silicon Radio, Ltd)
ID продукта 0x1244
Версия 0.00
Скорость 12 Mбит/с
Каналы 0
Макс. размер пакета 64
$ cat /proc/asound/card2/stream0
Shanling Digital Technology Development Co., Ltd. Shanling UP4 at usb-0000:00:1 : USB Audio
Playback:
Status: Stop
Interface 1
Altset 1
Format: S16_LE
Channels: 2
Endpoint: 3 OUT (NONE)
Rates: 48000, 44100
Bits: 16
Забавный момент: устройство определяется как up4. Недавно китайцы выпустили прошивку и забыли поменять название для младшей модели (на рынке есть так же и up4, но по части usb возможностей между ними разницы нет. На прошлой версии прошивки было всё ок с неймингом, однако звук через линух не выводился). Ну и серийник стал царским.
Лог pulseaudio меня настрожил:
06.04.2020 22:25 plasma_session org.kde.plasma.session: Starting autostart service "/etc/xdg/autostart/pulseaudio.desktop" ("/usr/bin/start-pulseaudio-x11")
06.04.2020 22:25 dbus-daemon [system] Activating via systemd: service name='org.bluez' unit='dbus-org.bluez.service' requested by ':1.734' (uid=1000 pid=4116 comm="/usr/bin/pulseaudio --daemonize=no ")
06.04.2020 22:25 systemd pulseaudio.socket: Succeeded.
06.04.2020 22:25 pulseaudio E: [pulseaudio] bluez5-util.c: GetManagedObjects() failed: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
06.04.2020 22:41 pulseaudio E: [alsa-sink-USB Audio] alsa-sink.c: ALSA сообщила о возможности записи новых данных в устройство, но на самом
06.04.2020 22:41 pulseaudio E: [alsa-sink-USB Audio] alsa-sink.c: деле писать было нечего. Скорее всего, это ошибка в драйвере ALSA «snd_usb_audio».
06.04.2020 22:41 pulseaudio E: [alsa-sink-USB Audio] alsa-sink.c: Пожалуйста, сообщите об этой проблеме разработчикам ALSA. Процесс разбужен
06.04.2020 22:41 pulseaudio E: [alsa-sink-USB Audio] alsa-sink.c: с установленным POLLOUT, однако последующий вызов snd_pcm_avail() вернул 0
06.04.2020 22:41 pulseaudio E: [alsa-sink-USB Audio] alsa-sink.c: или другое значение, меньшее чем min_avail.
06.04.2020 22:47 pulseaudio W: [alsa-sink-USB Audio] alsa-util.c: Got POLLNVAL from ALSA
06.04.2020 22:47 pulseaudio E: [alsa-sink-USB Audio] alsa-sink.c: Error opening PCM device front:2: Нет такого файла или каталога
06.04.2020 22:47 kdeconnectd org.kde.pulseaudio: No object for name "alsa_output.usb-Shanling_Digital_Technology_Development_Co.__Ltd._Shanling_UP4_ABCDEF0123456789-00.analog-stereo"
06.04.2020 22:47 plasmashell org.kde.plasma.pulseaudio: No object for name "alsa_output.usb-Shanling_Digital_Technology_Development_Co.__Ltd._Shanling_UP4_ABCDEF0123456789-00.analog-stereo"
Надо бы связаться с разработчиками альсы, но я не очень представляю как это сделать да и не понимаю что им слать.
Самое обидное, что под виндой работает исправно во всех режимах.
UPD: нашёл ветку сабжа на head-fi, я не одинок с такой проблемой. Видимо, ошибка массовая. Вот бы ещё понять, где ошибка, в коде ядра или в прошивке девайса...
UPD2: как временное решение закостылил 48кгц на постоянку и включил хороший ресемплер:
/etc/pulse/daemon.conf
resample-method = soxr-hq
default-sample-rate = 48000