꽃삽질 : Pulseaudio 기본 출력기기 정하기. (특히 멀티 모니터 상황!)

주말에 꽃삽질을 할 계획은 전혀 없었는데.. 하다보니 이렇게 됐다.

자.. 여기서 할 얘기는 뭘까?

현재 모니터가 2개인 상황이고, (당연히) 메인 보드에도 기본 사운드 출력이 있으며, USB DAC 까지 달려있다.
이 와중에, ‘기본 출력을 모니터#1 로 고정하고 싶다‘면, 과연 어떻게 해야 하려나??

늘 그렇듯, 삽질에 삽질을 거듭했다.


정규 방식

이를 위해서는 사운드 카드 상황을 알아내고, 기본 프로파일을 정한다음, /etc/pulse/default.pa 에 추가해줘야 한다.

기본 정보는 pacmd list-cards 명령으로 알아낼 수 있다.

pacmd list-cards
3 card(s) available.
    index: 0
	name: <alsa_card.pci-0000_01_00.1>
	driver: <module-alsa-card.c>
	owner module: 7
	properties:
		alsa.card = "2"
		alsa.card_name = "HDA NVidia"
		alsa.long_card_name = "HDA NVidia at 0x91080000 irq 17"
		alsa.driver_name = "snd_hda_intel"
		device.bus_path = "pci-0000:01:00.1"
		sysfs.path = "/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card2"
		device.bus = "pci"
		device.vendor.id = "10de"
		device.vendor.name = "NVIDIA Corporation"
		device.product.id = "0fb9"
		device.product.name = "GP107GL High Definition Audio Controller"
		device.string = "2"
		device.description = "GP107GL High Definition Audio Controller"
		module-udev-detect.discovered = "1"
		device.icon_name = "audio-card-pci"
	profiles:
		output:hdmi-stereo: Digital Stereo (HDMI) 출력 (priority 5900, available: unknown)
		output:hdmi-stereo-extra1: Digital Stereo (HDMI 2) 출력 (priority 5700, available: unknown)
		output:hdmi-stereo-extra2: Digital Stereo (HDMI 3) 출력 (priority 5700, available: no)
		output:hdmi-surround-extra2: Digital Surround 5.1 (HDMI 3) 출력 (priority 600, available: no)
		output:hdmi-surround71-extra2: Digital Surround 7.1 (HDMI 3) 출력 (priority 600, available: no)
		output:hdmi-stereo-extra3: Digital Stereo (HDMI 4) 출력 (priority 5700, available: no)
		output:hdmi-surround-extra3: Digital Surround 5.1 (HDMI 4) 출력 (priority 600, available: no)
		output:hdmi-surround71-extra3: Digital Surround 7.1 (HDMI 4) 출력 (priority 600, available: no)
		output:hdmi-stereo-extra4: Digital Stereo (HDMI 5) 출력 (priority 5700, available: no)
		output:hdmi-surround-extra4: Digital Surround 5.1 (HDMI 5) 출력 (priority 600, available: no)
		output:hdmi-surround71-extra4: Digital Surround 7.1 (HDMI 5) 출력 (priority 600, available: no)
		output:hdmi-stereo-extra5: Digital Stereo (HDMI 6) 출력 (priority 5700, available: no)
		output:hdmi-surround-extra5: Digital Surround 5.1 (HDMI 6) 출력 (priority 600, available: no)
		output:hdmi-surround71-extra5: Digital Surround 7.1 (HDMI 6) 출력 (priority 600, available: no)
		off: 끄기 (priority 0, available: unknown)
	active profile: <output:hdmi-stereo>
	sinks:
		alsa_output.pci-0000_01_00.1.hdmi-stereo/#4: BenQ
	sources:
		alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor/#4: Monitor of BenQ

....

현재 active profile 은 output:hdmi-stereo 로 되어 있다. pavucontrol 에서 이게 아닌 다른 출력을 fallback 으로 설정해놓아도 전원을 껐다가 다시 켜면 자꾸 얘가 기본값이 되어 버린다.

내가 원하는 건 이게 아니고, output:hdmi-stereo-extra1 인데..

Archi 에 따르면, ~/.config/pulse/default.pa 에 다음과 같이 설정을 추가하면 된다고 한다.

.include /etc/pulse/default.pa

set-card-profile alsa_card.pci-0000_01_00.1 output:hdmi-stereo-extra1
set-default-sink alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1

흠..?
‘흠’이 들어간 이유는, 잘 안됐기 때문이다.

확실하진 않은데, 이게 잘 되지 않으면, ~/.config/pulse/ 안의 cookie 와 db* 파일을 지워보자.
그리고 나서 재시동하니 된다. (이게 이거 저거 하다 얻어 걸린 거라 확신은 없다.)
헌데, 이게 매번 성공하지는 않는다. 때에 따라 안될 때가 있다.

왜 잘 안될까? 설정 자체엔 문제가 없었다. ~/.config/pulse/default.pa 에 넣어놓은 다른 옵션은 내가 원하는대로 실행되었다. 물론, /etc/pulse/defualt.pa 에 넣어도 안되긴 마찬가지.

** .include /etc/pulse/default.pa 행이 없으면, pulseaudio 가 실행되지 않는다. 아니면, /etc/pulse/default.pa 를 ~/.config/pulse/ 에 복사해서 넣고, 명령을 추가해야한다.

만약, 이 방식이 도무지 작동하지 않는다면, 아래 편법(?)을 써본다.

꽃삽질 방식

default.pa 에 넣는 set-card-profile 는, 일반 명령으로도 사용 가능하다.

pacmd set-card-profile alsa_card.pci-0000_01_00.1 output:hdmi-stereo-extra1
pacmd set-default-sink alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1

해서, 그냥 저 명령을 시스템 시작 시에 시작하도록 해줬다.

~/.config/autostart-scripts/pulse-profile 라는 파일을 만들고, 실행권한을 준다음, 위 명령을 넣어줬다.

끝! 내가 원하는대로 잘 작동한다.

왜 default.pa 에선 안됐는지 알 수가 없네..
그냥 양쪽에 다 넣는 방법이 지금으로선 제일 확실하다.

Author: 아무도안

안녕하세요. 글 남겨주셔서 고맙습니다.