헤드폰을 뽑지 않고 헤드폰과 스피커 간을 전환하는 방법


23

헤드폰을 연결하면 오디오 출력 장치가 스피커의 헤드폰으로 전환됩니다.

헤드폰을 항상 꽂거나 뽑지 말고 결국 코드 / 잭이 마모되므로 소프트웨어 스위치 만 사용하고 싶습니다.

사운드 설정을 열고 "헤드폰-> 내장 오디오"에서 "라인 출력-> 내장 오디오"로 전환하면 스피커 나 헤드폰에서 소리가 나지 않습니다.

헤드폰을 꽂거나 뽑을 때 어떻게되는지 알기 위해 alsamixer를 열었습니다.

헤드폰 : 헤드폰

헤드폰 출력 : 헤드폰 아웃

헤드폰을 연결 한 상태에서 헤드폰이 꺼져 있고 여전히 스피커를 통해 소리가 나지 않을 때 설정과 일치하도록 모든 설정을 수동으로 변경했습니다.

참고로 "사운드 설정"을 통해 오디오 출력 장치를 변경하면 alsamixer도 동일하게 변경됩니다.


1
내가 아는 한, 헤드폰 잭 내부의 하드웨어 스위치는 전환을 허용하지 않습니다. 스위치가 작동되면 스피커가 비활성화됩니다. 블루투스 헤드폰 사용에 대해 생각해 보셨습니까?
Terrance

@Terrance에게 감사드립니다. 그런 느낌이 들었습니다. 심지어 BIOS가 있는지 확인하기도했습니다. 소프트웨어 문제에 대한 하드웨어 솔루션이 있다는 것에 약간 놀랐습니다.
user276318

1
사운드 카드가 여러 장치 출력을 지원하지 않을 수 있음을 명심하십시오. 일부 사운드 카드는 하드웨어 수준에서 하드 코딩되어 헤드폰 연결시 스피커 출력을 끌 수 있으며 무시할 수 없습니다.
Thomas Ward

@Terrance 나는 현상금을 시작했습니다. 더 자세히 파고 답을 원하십니까?
디저트

@dessert는 아래의 GoodGuyNick의 답변을 참조하십시오 -모든 하드웨어에서 작동하지 않을 수 있으며 내 경험상 출력을 분리하지 않습니다 (프로그램 A의 오디오를 스피커로 보내고 프로그램 B를 동시에 헤드폰으로 보낼 수 있음). 자동 스위치를 비활성화하는 것만으로도 가장 먼저 시도해야합니다.
quixotic

답변:


9

스피커와 헤드폰을 모두 연결하고 소프트웨어를 즉석에서 전환

설계 상, Pulseaudio는 헤드폰을 연결하면 대신 헤드폰 슬라이더를 사용하여 라인 출력을 자동으로 끕니다. alsamixer에서이 동작을 관찰 할 수 있습니다. 우리가 원하는 것은 헤드폰과 라인 출력 슬라이더를 동시에 그리고 동시에 작동시키는 것입니다. Realtek의 잭을 헤드폰의 경우 후면 녹색, 스피커의 경우 파란색 (알사 도구의 hdajackretask를 사용하여)으로 다시 매핑하려는 경우 매우 유용합니다.

이를 위해서는 Pulseaudio 믹서의 구성을 직접 편집해야합니다.

1. 우리는 pulseaudio에게 헤드폰이 항상 연결되어 있다고 말합니다.

편집하다:

/usr/share/pulseaudio/alsa-mixer/paths/analog-output-lineout.conf

발견:

[Jack Headphone]
state.plugged = no
state.unplugged = unknown

변경 noyes.

컴퓨터 케이스 앞면의 잭을 사용하는 경우 [Jack Front Headphone]대신 변경하십시오 .

2. 기본적으로 라인 출력 볼륨은 라인 출력 슬라이더 자체가 아니라 마스터 만 제어합니다.

Line Out을 Master와 병합하고 싶습니다. 이 스 니펫을 파일 끝에 추가하십시오.

[Element Line Out]
switch = mute
volume = merge

3. 헤드폰을 사용할 때 라인 출력을 완전히 차단해야합니다.

편집하다:

/usr/share/pulseaudio/alsa-mixer/paths/analog-output-headphones.conf

이 스 니펫을 파일 끝에 추가하십시오.

[Element Line Out]
switch = off
volume = off

일부 시스템에서는 다음 코드를 추가하여 Front를 비활성화해야 할 수도 있습니다.

[Element Front]
switch = off
volume = off

4. Pulseaudio와 같이 Alsa 자체는 헤드폰이 연결되면 스피커를 차단합니다.

개방형 알사 믹서 : alsamixer -c0또는alsamixer -c1

/ 를 사용 하여 자동 음소거 모드를 설정하십시오. 로 자동 음소거 모드를 비활성화하십시오 . 로 alsamixer를 닫습니다 Esc.

다음을 사용하여 변경 사항을 저장하십시오. alsactl store

5. Pulseaudio를 다시 시작하십시오

$ pulseaudio -k
$ pulseaudio --start

이제 펄스 싱크의 동일한 싱크에 두 개의 별도 포트가 있습니다. 서로 음소거되므로 헤드폰으로 전환하면 라인 출력이 음소거되고 그 반대도 마찬가지입니다. 포트를 전환하려면 Gnome 또는 Plasma 사운드 믹서를 사용하거나 적절한 데스크탑 확장을 설치할 수 있습니다.


출처


2
에서 직접 파일을 편집해서는 안됩니다 /usr/share. pulseaudio가 업데이트를 수신하면 (예 : 버그 수정) 변경 사항이 지워집니다. 일반적으로 오버라이드 파일을 제공하는 메커니즘이 /etc있지만 펄스 오디오에 대해서는 잘 모르겠습니다.
Robie Basak

@RobieBasak이 정보의 출처는 Arch Linux 웹 사이트입니다. 불행히도 나는 아치 리눅스 사용자가 아니므로 귀하의 사이트에 대한 귀하의 의견을 다시 게시 할 수 없습니다. 여기에 떠있는 아치 리눅스 사용자 중 한 명이 귀하의 의견을 읽고 다시 게시하기를 바랍니다.
WinEunuuchs2Unix

1
@RobieBasak은 물론, 하나는 로그인 후있는 invoke 이것을하는 래퍼 스크립트를 작성할 수 있습니다
로버트 RIEDL

1
불행히도 그것은 효과가 없었지만 답장을 보내 주셔서 감사합니다!
디저트

1
@dessert 내 기쁨. 이 분야를 연구하는 것은 흥미로웠다. 당신이 찾고있는 것을 찾길 바랍니다.
WinEunuuchs2Unix

9

스피커와 헤드폰을 전환 할 수있게하려면 다음 단계를 수행하십시오.

  1. 를 실행하십시오 alsamixer.
  2. 필요한 경우로 사운드 카드를 선택하십시오 F6.
  3. 오른쪽 화살표로 "자동 음소거"로 이동하십시오 .
  4. 아래쪽 화살표로 비활성화하십시오 .
  5. Esc종료하려면 누르 십시오.

또는 하나의 명령으로이 모든 단계를 수행 할 수 있습니다.

  1. 터미널 열기
  2. 운영 amixer -c 1 set 'Auto-Mute Mode' Disabled

이제 PulseAudio Volume Control에서 스피커와 헤드폰을 변경할 수 있습니다.

이 지침을 적용한 후에는 사운드 스위처 표시기 를 사용하여 헤드폰과 스피커 사이를 빠르게 전환 하여보다 쉽게 ​​생활 할 수 있습니다 .


2
나는 이것이 모든 하드웨어 조합에 대해 효과가 있다고 생각하지 않습니다-일부 시스템 (내 것과 같은)은 알려지지 않은 다양한 종류의 하드웨어 스위치를 사용하는 것 같습니다. 예를 들어, 기타 앰프에 헤드폰을 연결하면 해당 앰프의 스피커가 일반적으로 꺼지며 해당 장치에 컴퓨터가 없습니다.
Charles Green

이것은 Realtek ALC887-VD에서 나를 위해 일했습니다
Paul Praet

고맙습니다. 그것은 나를 위해 일했다. bash 스크립트를 통해 그것을 달성 할 수있는 방법이 있습니까?
ka3ak

1
@ ka3ak 난 당신을 위해 답변을 업데이트했습니다
GoodGuyNick

4

hdajackretask는 다른 입력, 출력 또는 비활성화를 위해 잭의 기능을 재 할당하는 도구입니다. 예를 들어 마이크 잭을 여분의 헤드폰으로 바꾸거나 두 라인 출력을 만들어 서라운드 수신기에 연결하지 않는 이유는 무엇입니까?

alsa-tools-gui 설치

sudo apt-get update
sudo apt-get install alsa-tools-gui

hdajackretask그런 다음 잭 중 하나를 무시하려면 다음을 실행하십시오 .

  1. 코덱을 선택하십시오
  2. 해당 핀의 "Override"체크 상자를 클릭하고 원하는 새로운 기능을 선택하십시오
  3. "지금 적용"을 클릭하십시오.

    참고 : 헤드폰 잭에 오디오를 다시 라우팅하는 하드웨어 스위치가 내장되어 있으면 SOL (죄송합니다)입니다. 그러나 라인이 헤드폰 잭에 꽂혀있을 때 OS가 감지하면 오디오가 기계적으로 전환되지 않을 가능성이 높습니다.

헤드폰과 스피커를 동시에 재정의하는 것이 가장 효과적이라는 것을 알았습니다.


hdajackretask 헤드폰을 스피커로 전환하는 스크린 샷 :

여기에 이미지 설명을 입력하십시오


"지금 적용"을 클릭하면 셸 스크립트가 생성되어 수퍼 유저 비밀번호를 실행하도록 변경하고 프롬프트합니다. 스크립트는 또한 명령 줄에서 sudo 를 사용하여 /tmp복사하고 나중에 실행할 수 있도록 저장됩니다 .

여기에 이미지 설명을 입력하십시오

명령 줄 실행

앞서 언급 한 바와 같이, hdajackretask스크립트를 생성 script.sh/tmp유사 /tmp/hda-jack-retask-QW1EEZ/당신이 원하는 잭 기능 :

#!/bin/sh
echo "0x12 0x90a60140" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x14 0x90170150" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x17 0x40000000" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x18 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x19 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1a 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1b 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1d 0x40700001" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1e 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x21 0x40f000f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo 1 | tee /sys/class/sound/hwC0D0/reconfig 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log


이 스크립트를 시스템의 다른 위치 (/ tmp 이외)에 복사하십시오.

cd /tmp/hda-jack-retask-QW1EEZ
cp script.sh ~username/speaker.sh

그런 다음 speaker.sh를 편집하십시오.

cd ~username
nano speaker.sh

killall pulseaudio &파일 맨 위에 줄 을 추가 하십시오. 이것은 작동하는 동안 잭 기능을 변경할 수 없기 때문에 필요 pulseaudio합니다. 기본적으로 pulseaudio다시 생성됩니다. 또한 errors.log파일 경로를 /tmp원하는 위치 또는 원하는 위치로 변경하십시오 .

#!/bin/sh
killall pulseaudio &
echo "0x12 0x90a60140" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x14 0x90170150" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x17 0x40000000" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x18 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x19 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1a 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1b 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1d 0x40700001" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1e 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x21 0x40f000f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo 1 | tee /sys/class/sound/hwC0D0/reconfig 2>>/tmp/errors.log


스크립트를 실행하려면

sudo ./speaker.sh



로부터 ALSA-도구-1.1.5 / hdajackretask / README의 문서 :

hdajackretask에 대한 설명서

대부분의 HDA 인텔 사운드 카드는 어느 정도 재 작업이 가능합니다. 즉, 여러 가지 용도로 사용할 수 있습니다. 이 도구는 잭을 쉽게 재 작업 할 수있는 GUI입니다. 예를 들어 마이크 잭을 여분의 헤드폰으로 바꾸거나 두 라인 출력을 만들어 서라운드 수신기에 연결하지 않겠습니까?

빠른 시작

명령 행에서 "hdajackretask"응용 프로그램을 시작하십시오. 상단 막대에서 코덱을 선택하십시오. 어떤 사람들은 하나만 가지고 있습니다 – 둘 이상을 가지고 있다면, 하나는 "메인"이고 나머지는 아마도 HDMI 코덱 일 것입니다.

모든 잭 (및 기타 입력 / 출력)은 "핀 구성"에 표시됩니다. 잭 중 하나를 재정의하려면 해당 핀의 "재정의"확인란을 클릭하고 원하는 기능을 선택하십시오. 참고 : "Line out (back)"재정의를 선택하면 "Line out (front)"재정의도 있어야합니다. "라인 출력 (중앙 / LFE)"재 지정은 이전 두 재 지정에만 적용됩니다.

"지금 적용"을 클릭하여 새 구성을 시도 할 수 있습니다. 새 구성을 부팅 기본값으로 설정하려면 "부팅 무시 설치"를 클릭하십시오. 이 작업을 수행하려면 루트 권한이 필요하므로 암호를 묻는 메시지가 표시 될 수 있습니다.

퀵 엔드

망했어? "부팅 재정의 제거"단추를 클릭하고 프로세스가 완료되면 컴퓨터를 종료하고 잠시 기다렸다가 다시 켜십시오. 이제 시작한 곳으로 돌아와야합니다.

작동 했습니까?

그것이 행복하다면, 기쁨을 나누고, 좋은 일을하십시오!

그렇지 않은 경우 다음을 시도해보십시오.

  • alsamixer로 가서 새로운 볼륨 컨트롤이 있는지 확인하고, 음소거가 해제되어 있고 합리적인 값으로 설정되어 있는지 확인하십시오.

  • 때로는 드라이버가 연결되지 않은 핀을 차단하지 않습니다 (연결되지 않은 경우 왜 걱정합니까?). 잠시 동안 컴퓨터를 완전히 꺼서이 문제를 해결할 수도 있습니다.

  • 아래의 "model = auto"옵션을 참조하십시오

그래도 도움이되지 않으면 드라이버 나 하드웨어 제한이있을 가능성이 높습니다. 드라이버 버그가 발생할 수 있습니다 (아무도 전에 4 개의 헤드폰을 테스트 한 적이 없습니다!). 그렇다면 alsa-devel 메일 링리스트에 자유롭게보고하십시오. 그러나 인력 부족으로 인해 우선 순위가 매우 낮은 경우가있을 가능성이 높습니다 (표준 구성의 경우 상자에서 소리가 나게합니다). 이상한 구성을 지원하는 것보다 더 중요합니다). 그러나 커널 해커이고 다른 것을 망치지 않고 문제를 해결하는 패치를 생각해 내면, 합병 될 가능성이 매우 높습니다.

커널 드라이버가 아닌이 GUI 응용 프로그램에 문제가 있다고 생각되면 언제든지 전자 메일을 작성해주십시오 (필요한 경우 패치를 포함하십시오). 그렇다면 diwic@ubuntu.com에 문의하십시오.

옵션

  • 연결되지 않은 핀 표시 BIOS는 실제로 코덱에 어떤 핀이 연결되어 있고 어떤 핀이 연결되어 있지 않은지 설정하는 일을 담당합니다. 때때로 BIOS는 버그가 있으며 모든 잭을 표시하지는 않습니다. BIOS에 아직 잭이없는 잭이 있으면 임의의 핀을 활성화하여 작동하는지 확인할 수 있습니다.

  • Set Model = auto 일부 코덱, 특히 오래된 코덱과 커널 3.8 이하에서는 특정 모델을 사용하도록 하드 코딩되어 있으므로 재정의에 신경 쓰지 않습니다. 많은 경우에 합리적으로 새로운 커널을 사용하면 자동 파서가 이러한 코덱에서도 잘 작동합니다. 이 상자를 선택하여 자동 파서를 사용하도록 할 수 있습니다. 그러나 어떤 경우에는 명시 적 모델이있는 이유가있을 수 있습니다.

  • 고급 재정의 이것은 전문가에게만 해당됩니다. 이해하기 쉬운 몇 가지 사전 정의 된 값 대신 각 구성 필드를 개별적으로 선택할 수 있습니다. 여기에있는 대부분의 조합은 어떤 방식 으로든 유효하지 않으므로 HD 오디오 사양의 "구성 기본값"섹션을 읽고 이해하지 않은 이상이 방법을 사용해서는 안됩니다. (이 문서를 작성할 당시 http://www.intel.com/content/dam/www/public/us/en/documents/product-specifications/high-definition-audio-specification에서 확인할 수 있습니다 . pdf )

  • 파서 힌트이를 통해 드라이버에 특수한 "힌트"를 보내 파싱이 다르게 작동하게 할 수 있습니다. 드라이버 설명서를 읽지 않은 경우 "기본"설정으로 두십시오. (이 글을 쓰는 시점에 여기 ( https://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio.txt) 가 있습니다. "힌트 문자열"섹션을 참조하십시오.)


1
불행히도 그것은 효과가 없었지만 답장을 보내 주셔서 감사합니다! 당신이 내가 기대했던 것에 매우 가까이 다가 가서 목표를 달성 할 수있는 가장 좋은 방법을 제공하는 것 같습니다 (가능한 경우). :)
디저트

3

KDE에서는 다음을 수행 할 수 있습니다.

시스템 설정-> 멀티미디어-> 오디오 및 비디오 설정-> 오디오 하드웨어 설정 탭> 적절한 사운드 카드 선택> 커넥터 아래에 헤드폰 및 스피커 옵션이 표시됩니다.

환경 설정


3
kde를 사용하지 않지만 Unity에는 비슷한 "사운드 설정"이 있습니다. 오디오 출력 장치를 헤드폰에서 스피커로 변경하면 헤드폰이 음소거됩니다. 헤드폰이 연결되면 하드웨어 스위치 인 것 같습니다.
user276318

1

그놈 쉘 확장 오디오 출력 스위처

가장 간단한 방법은 오디오 출력 스위처 확장을 설치하는 것입니다.

또는 git으로 직접 복제 할 수 있습니다.

git clone https://github.com/adaxi/audio-output-switcher.git ~/.local/share/gnome-shell/extensions/audio-output-switcher@anduchs

스크린 샷

이 확장은 현재 선택된 펄스 오디오 출력 장치를 보여주는 상태 메뉴에 작은 항목을 추가합니다. 이를 클릭하면 사용 가능한 모든 출력 장치가있는 하위 메뉴가 열리고 사용할 장치를 선택할 수 있습니다.


불행히도 그것은 효과가 없었지만 답장을 보내 주셔서 감사합니다!
디저트

0

PPA를 추가하지 않아도 Sound Switcher Indicator를 사용할 수 있습니다 .

입력 또는 출력 오디오 소스를 변경하기 위해 클릭 할 수있는 표시등이 시스템 트레이에 표시됩니다. http://yktoo.com/en/software/indicator-sound-switcher 에서 자세한 내용을 읽을 수 있습니다 .

터미널 방법

터미널을 사용하여 설치하려면 다음을 입력하십시오.

sudo add-apt-repository ppa:yktooo/ppa
sudo apt-get update
sudo apt-get install indicator-sound-switcher

GUI 방법

GUI를 사용하여 설치하려면 다음 단계를 수행하십시오.

  1. Unity Dash에서 소프트웨어 및 업데이트 앱을 시작하십시오 .

  2. "기타 소프트웨어"탭을 클릭하십시오. 그런 다음 다음 새 소스를 추가하십시오.

    deb http://ppa.launchpad.net/yktooo/ppa/ubuntu vivid main
    

    ( "vivid"는 Ubuntu 릴리스로 교체해야합니다. 지원되는 릴리스는 http://ppa.launchpad.net/yktooo/ppa/ubuntu/dists/에 나와 있습니다 .)

  3. Unity Dash에서 Ubuntu Software Center 를 시작 하십시오.

  4. "사운드 입력 / 출력 선택기 표시기"를 검색하여 설치하십시오.

참고 : 위에서 제안한 Terrance와 같이 시스템에 헤드폰 잭 안에 하드웨어 스위치가 있으면이 솔루션이 작동하지 않습니다.


나는 실제로 이것을 이미 설치했다. 참고로 하드웨어 스위치가있는 것으로 보입니다.
user276318

0

이 문제에 대해이 스크립트를 만들었습니다.

https://github.com/biplobsd/Fixing-front-panel-audio

터미널에서 리포지토리의 README 파일에 제공된 명령을 실행하십시오. 스크립트를 다운로드하여 실행합니다.

이러한 명령은 다음과 같습니다.

git clone https://github.com/biplobsd/Fixing-front-panel-audio.git
cd Fixing-front-panel-audio
chmod +x Fixing-front-panel-audio.sh
./Fixing-front-panel-audio.sh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.