Alsa에서 선호하는 사운드 장치를 자동으로 선택하는 방법은 무엇입니까?


36

USB 사운드 카드를 구입했습니다. USB 장치가 연결되어 있고 장치가 연결되어 있지 않은 경우 자동으로 전환되는 경우 USB 장치를 선호하도록 Linux 데스크톱을 설정하고 싶습니다. 가능하고 어떻게?


데비안은 대신 pulseaudio를 사용합니다.
Braiam

답변:


36

카드 찾기

$ cat /proc/asound/cards

유효한 ALSA 카드 이름을 얻으려면 다음을 사용하십시오 aplay.

$ aplay -l

그런 다음 다음을 사용 /etc/asound.conf하여 만듭니다 .

pcm.!default {
    type hw
    card 1
}

ctl.!default {
    type hw           
    card 1
}

"카드 1"을 위에서 결정한 카드 번호 또는 이름으로 바꾸십시오.

또는 카드 순서를 변경 하여 USB 카드가 카드 0이되고 편집하지 않고 작동 할 수 있습니다 asound.conf.


2
귀하의 제안을 시도했지만 USB 카드가 분리되면 내장 카드로 전환하는 대신 오디오가 완전히 작동하지 않습니다.
Petr Pudlák

2
RPI2를 사용하면이 솔루션이 효과적이었습니다. 나머지는 모두 시도했지만이 작업을 수행 할 때까지 아무런 효과가 없었습니다. (내 "카드 0"을 사용했습니다).
Rob Gibbons

2
나를 위해 palemoon에 유튜브에서 작업을 위의 구성, 소리를하지 않은 사용이 설정은 일 : defaults.pcm.card 1 defaults.ctl.card 1 forum.palemoon.org/viewtopic.php?t=9661#p66016을
aaditya1234

이 하루에 붙어! 그리고 당신은 내 엉덩이를 구 했어요!
alamin

2
평범한 사람들에 대한 응답으로 난해한 일괄 처리 해커를 사용하지 마십시오. 출력에서 열을 추출하는 단일 라이너를 작성하는 대신 전체 출력에서 ​​원하는 정보를 찾는 방법을 단어로 설명하십시오.
Szczepan Hołyszewski

16

Alsa에서 기본 사운드 카드를 선택하는 방법입니다. Pulse Audio를 사용하는 경우이 방법이 작동하도록 Alsa를 설치할 수 있습니다.

고양이 / proc / asound / modules

사운드 모듈을 나열합니다. 명령 출력은 다음과 같습니다 (예 :).

0 snd_hda_intel

1 snd_usb_intel

USB 사운드 카드가 무엇인지 쉽게 이해할 수 있습니다.

나노 /etc/modprobe.d/alsa-base.conf

이 alsa-base.conf를 편집하여 선호하는 카드의 색인이 -2 / 0이고 다른 카드의 색인이 -1 / 1이되도록하십시오 (-2 및 -1에 고정)

옵션 snd_hda_intel index = -1

옵션 snd_usb_intel index = -2

이 경우 USB 장치가 선호되는 장치입니다.

다음과 같이 출력에서 ​​이름이 같은 두 개의 다른 카드가있는 경우 :

옵션 snd_hda_intel

옵션 snd_hda_intel

이 명령을 실행하여 어떤 것을 찾으십시오.

고양이 / proc / asound / cards

그런 다음 이런 방식으로 모듈을 편집하십시오.

옵션 snd_hda_intel enable = 1 index = 0

옵션 snd_hda_intel enable = 0 index = 1

재부팅이 필요할 수 있으므로 사운드 카드를 수동으로 전환해야 할 수도 있습니다.


"출력 수정"은 무슨 뜻입니까? 출력을 어떻게 수정합니까?
Petr Pudlák

나는 answer.try 에서이 버전을 필요로 변경했다.
Ashildr

고맙습니다. 설정을 어떻게 확인할 수 있습니까? 카드를 식별하고 적절한 옵션을 추가 한 후 재부팅했지만 변경 사항이 표시되지 않습니다. 여전히 내부 (인텔) 카드가 선호됩니다.
Petr Pudlák

시도> 옵션 snd-usb-intel enable = 1 index = 0 (활성화)> 옵션 snd-hda-intel enable = 0 index = 1 (비활성화) 또는> ss-hda-intel enable = 0 index = 0> 옵션 옵션 snd-usb-intel enable = 1 index = 1 및 재부팅
Ashildr

즉, 유을 yor 문제 해결도 마찬가지 also.i'm하지 않도록 you.reboot 위해 작동하는이 부사장을가 필요한 일 소원, 0 또는 1 = 수 사용하지 않도록 다른 하나는 USB를 사용
Ashildr

4

또한 USB 장치에서 출력을 얻을 수 없었습니다. 내 cat /proc/asound/modules결과는 다음과 같습니다

0 snd_hda_intel

1 snd_hda_intel

2 snd_usb_audio

나는 여기에 설명 된 두 가지 답변을 시도했지만 (많은 색인 조합과 많은 재시작으로) 도움이되지 않았습니다. 부팅 후 USB 장치가 초기화 된 것이 문제라고 생각합니다. 어쨌든 내 작업 솔루션은 /etc/modprobe.d/blacklist.conf다음과 같이 업데이트 하여 다른 2 개의 사운드 장치를 블랙리스트에 추가합니다 .

blacklist snd_hda_intel

3

Matija Nalis의 답변은 절반 만 나에게 도움이되었습니다 (alsamixer는 기본값을 변경했지만 aplay 및 firefox와 같은 다른 것들은 완고하게 잘못된 기본값으로 고착되었습니다). 데비안 위키의이 예제는 CentOS-6 랩톱에서 저에게 효과적이었습니다.

defaults.pcm.!card Generic_1
defaults.ctl.!card Generic_1
defaults.pcm.!device 0
defaults.ctl.!device 0

기록을 위해 : ALSA는 잘 문서화되어 있지 않으며, 특히 사용할 카드를 선택하는 것과 같은 매우 간단한 것들이 너무 어렵다. 더 나쁜 것은 시스템간에 변화하는 것 같습니다. 또한 aplay -l에서 "Generic_1"태그를 가져 와서 목록에서 "card 1"로 나타납니다. 다른 사람들이 그것을 사용하는 것처럼 보였으므로 나는 똑같이했습니다 ... 말할 수 없다는 것을 의미합니다.


1

.asoundrc 또는 시스템 asound.conf를 편집하여 기본 alsa 카드를 변경할 수 있지만이 방법에는 몇 가지 중요한 문제가 있습니다.

깨지기 쉽고 응용 프로그램을 다시 시작해야합니다.

카드를 즉석에서 전환하려면 펄스 오디오와 같이 사운드 카드에서 응용 프로그램을 올바르게 추상화하는 사운드 서버를 사용해야합니다.


Skype 베타와 같은 일부 응용 프로그램은이를 무시하고 기본 ALSA 카드에 연결합니다. HDMI가 HDA 대신 첫 번째 장치 인 경우 Skype 용 오디오가 생성되지 않습니다.
Max N

-1

Matija Nalis와 Tel의 답변은 다음과 같습니다. 이것이 나를 위해 일한 것입니다.

~ / .asoundrc

defaults.pcm.!card 1
defaults.ctl.!card 1

(Odroid C0, Debian Jessie, 카드 0은 HDMI 오디오, aplay -l에 따라 카드 1은 USB 사운드 카드)

참고 : / proc / asound / modules가 존재하지 않고 블랙리스트에 올리거나 우선 순위가 낮은 hdmi 오디오 모듈이 없으므로 다른 방법이 작동하지 않았습니다. 커널에 포함되어 있습니다. hdmi 오디오를 지원하지 않고 커널을 완전히 다시 컴파일해야 할 것 같습니다.


sudo modprobe $ soundcard_driver는 / proc / asound / modules에서 원하는 것을 할 것입니다
linuxdev2013

@ linuxdev2013 어떻게 modprobe가 불가능한 드라이버를 modprobe 할 수 있습니까? 위에서 설명한 것처럼 모듈이 아니며 커널에 내장되어 있습니다.
astooooooo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.