Как изменить тип устройства по умолчанию в PulseAudio?

У меня микрофон включен в такой USB адаптер (при подключении напрямую в мат. плату ModMic плохо работает, слишком тихий или слишком много помех):

PulseAudio на PopOS/Ubuntu 19.10 определяет его как Analog Stereo Output + Analog Mono Input, что по идее правда (там есть порт и для наушников), но почему-то например в Skype при таких настройках микрофон не работает (в других программах работает, похоже Скайп делает что-то не так), после смены профиля в PulseAudio Volume Control на Analog Mono Input работает, но эти настройки сбрасываются после перезагрузки.

Как установить это по умолчанию?

https://unix.stackexchange.com/questions/462670/set-default-profile-for-pulseaudio

В /etc/pulse/default.pa (открыть например через sudo gedit /etc/pulse/default.pa в Gnome) добавить в конце

set-card-profile <устройство> <профиль>

Имена устройств и профилей можно посмотреть в pacmd list-cards. В данном случае:

    ...
    index: 3
	name: <alsa_card.usb-FongLun_USB_Microphone-00>
	driver: <module-alsa-card.c>
	owner module: 10
	properties:
		alsa.card = "3"
		alsa.card_name = "USB Microphone"
		alsa.long_card_name = "FongLun USB Microphone at usb-0000:00:14.0-7.4, full speed"
		alsa.driver_name = "snd_usb_audio"
		...
	profiles:
		input:analog-mono: Analog Mono Input (priority 7, available: unknown)
		output:analog-stereo: Analog Stereo Output (priority 6500, available: unknown)
		output:analog-stereo+input:analog-mono: Analog Stereo Output + Analog Mono Input (priority 6507, available: unknown)
		output:iec958-stereo: Digital Stereo (IEC958) Output (priority 5500, available: unknown)
		output:iec958-stereo+input:analog-mono: Digital Stereo (IEC958) Output + Analog Mono Input (priority 5507, available: unknown)
		off: Off (priority 0, available: unknown)
	active profile: <input:analog-mono>
	sources:
		alsa_input.usb-FongLun_USB_Microphone-00.analog-mono/#4: USB Microphone Analog Mono
set-card-profile alsa_card.usb-FongLun_USB_Microphone-00 input:analog-mono

В некоторых туториалах вместо имени устройства почему-то используют индекс. Обычно так не стоит делать, он может меняться при подключении/отключении устройств.


В /etc/pulse/default.pa еще можно указать микрофон и наушники/колонки по умолчанию.

У меня так:

set-default-sink alsa_output.usb-Creative_Technology_Ltd_Sound_BlasterX_G6_020046474D1-00.analog-stereo
set-default-source alsa_input.usb-FongLun_USB_Microphone-00.analog-mono
set-card-profile alsa_card.usb-FongLun_USB_Microphone-00 input:analog-mono

Имена устройств либо тоже из pacmd list-cards (разделы sources, sinks), либо pacmd list-sources | grep -e 'name:' -e 'index:' и pacmd list-sinks | grep -e 'name:' -e 'index:'.

$ pacmd list-sources | grep -e 'name:' -e 'index:'
    index: 0
	name: <alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor>
    index: 1
	name: <alsa_output.usb-Creative_Technology_Ltd_Sound_BlasterX_G6_020046474D1-00.analog-stereo.monitor>
    index: 2
	name: <alsa_input.usb-Creative_Technology_Ltd_Sound_BlasterX_G6_020046474D1-00.analog-stereo>
    index: 3
	name: <alsa_input.usb-046d_Logitech_Webcam_C925e_8833159F-02.analog-stereo>
  * index: 4
	name: <alsa_input.usb-FongLun_USB_Microphone-00.analog-mono>
    index: 5
	name: <alsa_output.pci-0000_00_1f.3.iec958-stereo.monitor>

$ pacmd list-sinks | grep -e 'name:' -e 'index:'
    index: 0
	name: <alsa_output.pci-0000_01_00.1.hdmi-stereo>
  * index: 1
	name: <alsa_output.usb-Creative_Technology_Ltd_Sound_BlasterX_G6_020046474D1-00.analog-stereo>
    index: 2
	name: <alsa_output.pci-0000_00_1f.3.iec958-stereo>

Обновил PopOS/Ubuntu до 20.04 и пропал звук. Оказалось, что имя типа устройства поменялось (на input:mono-fallback) и из-за этого PulseAudio не запускался с такой ошибкой в логе:

pulseaudio[5231]: Source alsa_input.usb-FongLun_USB_Microphone-00.analog-mono does not exist.
pulseaudio[5231]: No such profile: input:analog-mono
pulseaudio[5231]: Failed to initialize daemon due to errors while executing startup commands. Source of commands: /home/alex/.pulse//default.pa

Поменял на

set-default-source alsa_input.usb-FongLun_USB_Microphone-00.mono-fallback
set-card-profile alsa_card.usb-FongLun_USB_Microphone-00 input:mono-fallback

и заработало.


Еще заметил в логе

pulseaudio[5231]: module-rescue-stream is obsolete and should no longer be loaded. Please remove it from your configuration.

Оказалось, что теперь эта функциональность реализована в ядре PulseAudio, так что из default.pa можно убрать

load-module module-rescue-streams

Чтобы посмотреть логи ошибок PulseAudio как советовалось тут создал client.conf с autospawn = no, и запускал pulseaudio в терминале после pulseaudio -k.

Потом узнал, что он и так по умолчанию пишет в системный лог и там можно найти например так:

cat /var/log/syslog* | grep -i pulse