컴퓨터를 A2DP 수신기 / 블루투스 스피커로 사용할 수 있습니까?


40

우선, 문제 : Cowon MP3 플레이어를 기본 귀마개가있는 메인 뮤직 플레이어로 사용하고 있습니다.

A2DP를 제공하며 UNE 10.04를 실행하는 넷북을 수신기로 사용하고 싶습니다.

a2dp에 관한 웹상의 일부 자료는 있지만 대부분 오래된 자료입니다.

답변:


47

Ubuntu 시스템을 a2dp Bluetooth 장치로 사용하려면 먼저 "a2dp 싱크"엔드 포인트로 등록하도록 구성해야합니다.

Ubuntu (10.04 이상) 의 bluez 패키지에는 Bluetooth 장치가 a2dp 싱크로 구성되어 있는지 여부를 확인하는 데 사용할 수있는 sdptool 이라는 유틸리티가 포함되어 있습니다. 다음은 Bluetooth 헤드셋에 대해 sdptool 실행 결과입니다 (주소는 그놈 제어 센터의 "Bluetooth 설정"대화 상자에서 가져옵니다).

$ sdptool search --bdaddr 00:18:16:3A:3B:D4 a2snk
Searching for a2snk on 00:18:16:3A:3B:D4 ...
Service RecHandle: 0x10002
Service Class ID List:
  "Audio Sink" (0x110b)
Protocol Descriptor List:
  "L2CAP" (0x0100)
    PSM: 25
  "AVDTP" (0x0019)
    uint16: 0x102
Profile Descriptor List:
  "Advanced Audio" (0x110d)
    Version: 0x0102

$

로컬 Ubuntu 시스템에 대해 실행할 때의 출력은 다음과 같습니다.

$ sdptool search --bdaddr local a2snk
Searching for a2snk on FF:FF:FF:00:00:00 ...
$

이것은 Ubuntu 시스템이 자체를 a2dp 싱크로 알리지 않음을 나타냅니다. 그러나 a2dp 소스로 자체 광고됩니다.

$ sdptool search --bdaddr local a2src
Searching for a2src on FF:FF:FF:00:00:00 ...
Service Name: Audio Source
Service RecHandle: 0x10003
Service Class ID List:
  "Audio Source" (0x110a)
Protocol Descriptor List:
  "L2CAP" (0x0100)
    PSM: 25
  "AVDTP" (0x0019)
    uint16: 0x102
Profile Descriptor List:
  "Advanced Audio" (0x110d)
    Version: 0x0102

이를 통해 Ubuntu 시스템은 헤드셋과 오디오 소스로 올바르게 페어링 할 수 있지만 Ubuntu 시스템을 Bluetooth 오디오의 출력 (싱크)으로 사용할 수는 없습니다.

를 편집 /etc/bluetooth/audio.conf하면 [General]섹션 아래에이 줄을 추가하여 a2dp 싱크 지원을 활성화 할 수 있습니다 .

  Enable=Source

이것은 우리가 여기에 추가하는 것은 소스 지원이 아닌 블루투스 싱크 지원이기 때문에 반 직관적으로 명명되며 모든 구현 된 서비스가 기본적으로 활성화되어 있다고 주장하는이 파일의 의견과 모순됩니다. :(

이 변경을 수행 한 후을 실행하여 bluetoothd를 다시 시작해야합니다 sudo service bluetooth restart.

이 작업을 수행하는 동안 이전에 Android 장치와 Ubuntu 컴퓨터를 페어링 한 경우 Android에서 Ubuntu를 사용 가능한 오디오 장치로 인식하도록하려면 양쪽에서 페어링을 삭제하고 다시 페어링해야합니다.

이 작업을 완료하면 Android 기기가 PulseAudio에서 입력 기기로 표시됩니다. PulseAudio가 새 Bluetooth 오디오 소스를 감지하지 못하면 명령 행에서 Bluetooth 모듈을 설치하고로드해야합니다.

 sudo apt-get install pulseaudio-module-bluetooth
 pactl load-module module-bluetooth-discover

그런 다음 루프백 연결 (소스에서 싱크로 직선)을 사용하여이 오디오 입력을 출력 / 싱크 (예 : 스피커 또는 Bluetooth 헤드셋)로 라우팅하도록 PulseAudio에 지시해야합니다.

최신 버전의 PulseAudio에는 모듈 블루투스 정책이 포함되어있을 수 있으며 이미 루프백 장치를 설정했을 수도 있지만 가장 일반적인 경우는 아닙니다.

루프백 연결을 설정 하는 반자동 방법 ( pauvcontrol GUI 프로그램도 설치되어있는 경우)은 PulseAudio가 설정을 기억하기 때문에 단순히 루프백 모듈을로드하고 pavucontrol을 사용하여 구성하는 것입니다. pactl을 사용하여 명령에서 모듈을로드합니다.

 pactl load-module module-loopback

아직 아무것도 듣지 못하거나 이상한 피드백 효과가 발생하더라도 걱정하지 마십시오. 새로 만든 장치에 입력 할 소스와 출력을 보낼 싱크를 알려야합니다.

pavucontrol을 열고 구성 탭을여십시오. Bluetooth 장치가 여기에 표시되는지 (blueman-manager 또는 다른 Bluetooth 도구를 사용하여 페어링 한 후) 프로파일이 A2DP로 설정되어 있는지 확인하십시오. 입력 장치 탭으로 전환하여 장치가 여기에 표시되고 음소거되지 않았는지 확인하십시오. 이제 레코딩 탭으로 전환하고 새로 생성 된 루프백 연결이 음소거 버튼 옆에있는 선택 상자를 사용하여 디바이스를 소스로 사용하도록하십시오. 루프백 연결이 동일한 방식으로 사용해야하는 싱크를 선택하려면 재생 탭으로 전환하십시오. 루프백 장치가 탭에 표시되지 않으면 각 탭 하단의 선택 상자를 사용하여 모든 스트림이 표시되는지 확인하십시오.

이제 장치에서 재생 중이거나 스피커 또는 선택한 출력 싱크 중 하나에서 오디오를들을 수 있습니다. 장치 연결이 끊어지면 루프백 장치가 사용 가능한 싱크 및 소스로 폴백되므로 바람직하지 않을 수 있으므로 필요할 때까지 루프백 장치를 음소거하십시오. 다음 번에 모듈-*-복원 모듈 덕분에 동일한 Bluetooth 장치가 연결될 때 루프백 연결이 동일한 싱크 / 소스를 복원합니다.

그래도 작동 하지 않거나 pavucontrol이 설치되어 있지 않으면 다음 방법을 사용하여 루프백을 설정할 수 있습니다.

 pactl load-module module-loopback source_dont_move=yes source=$BTSOURCE sink=$SINK

( $BTSOURCE예 : PulseAudio에 표시된대로 Bluetooth 장치의 소스 이름으로 bluez_source.14_DA_E9_2A_D7_57바꾸고 $SINK, 오디오 스트림을 보내려는 PulseAudio 출력의 이름으로 바꾸십시오 alsa_output.pci-0000_00_1b.0.analog-stereo. 활성 싱크로 설정하고 나중에 pavucontrol을 통해 변경하십시오.)

  • 당신은 찾을 수 $SINKpactl list sinks이 후 표시된 것,Name:
  • 마찬가지로 당신 $BTSOURCE과 함께 볼 수 있습니다pactl list sources
  • source_dont_move인수는 Bluetooth 장치의 연결이 끊어졌을 때 루프백 연결이 다른 오디오 소스로 다시 떨어지는 것을 방지합니다. 대신 제거되어 다음에 다시 설정해야합니다.

다음은 하나의 예입니다 ( Bluetooth 주소에서 :with 를 대체하십시오 _!).

pactl load-module module-loopback source_dont_move=yes source=bluez_source.14_DA_E9_2A_D7_57 sink=alsa_output.pci-0000_00_14.2.analog-stereo

폴백 모듈로드에 실패하면 source_dont_move=yes인수를 제거해보십시오 . 버전 1.0에서 처음 사용 가능했습니다. 그러나이 오디오를 삭제하기 전에이 루프백 연결을 제거하십시오. 예를 들어 랩탑 마이크가 음소거 해제되어 있으면 피드백이 매우 나빠질 수 있습니다. 완료되면이 루프백 연결을 수동으로 삭제하려면 다음을 실행하십시오.

pactl unload-module $(pactl list short modules | grep "loopback.*$BTSOURCE" | cut -f1)

다시, $BTSOURCEBluetooth 장치를 나타내는 PulseAudio 소스의 이름으로 바꾸 십시오. load-module 명령에서 반환 한 id를 사용하여 모듈을 언로드 할 수도 있습니다.

$ pactl load-module module-loopback source_dont_move=yes source=bluez_source.14_DA_E9_2A_D7_57 sink=alsa_output.pci-0000_00_14.2.analog-stereo
15
$ pactl unload-module 15

참고 문헌 :

  • 우분투 에서이 문제가 어떻게 해결되는지에 대한 세부 사항을 개괄 한 블로그 게시물 .

특정 장치 싱크에 대한 채널 맵을 변경할 수
있습니까

안녕하세요 Theree 및 자세한 가이드 주셔서 감사합니다. pactl load-module module-bluethooth-discover우분투 스튜디오 14.04에서 명령 이 실패합니다. 따라서 휴대폰에서 PC를 오디오 싱크로 올바르게 인식하더라도에 bluez소스 가 표시되지 않습니다 pulseaudio. 어떤 아이디어?
nass

경우에 pactl list sources short당신을위한 bluez 소스를 표시하지 않습니다, 나는 두 가지 해결책을 발견했습니다 : 전화 gdbus call --system --dest org.bluez --object-path /org/bluez/XXX/hci0/dev_XX_XX_XX_XX_XX_XX --method org.bluez.AudioSource.Connect(경로 장치 BD 주소와 당신이 얻을 수있는 느릅 나무 어댑터 경로를 포함 gdbus call --system --dest org.bluez --object-path / --method org.bluez.Manager.DefaultAdapter). 또는 여기 설명 된 대로 d- 피트를 사용 하십시오 . 그렇지 않으면 전화쪽에 연결하고 무언가를 시작하십시오.
Treviño

여전히 bluez의 소스가 표시되지 않습니다. 리눅스 민트 17.3 "로사"여기.
donquixote

1
와! 최소한의 변경 (audio.conf 대신 /etc/bluetooth/main.conf)으로 Rasbian에서 작동합니다. 감사합니다! (해당 OS에서 루프백 구성이 필요하지 않음)
jamie

13

우분투 소프트웨어 센터에서 설치된 블루 맨을 사용합니다. 블루 맨 아이콘 *-> "로컬 서비스"-> 오디오-> "고급 오디오 수신"확인을 마우스 오른쪽 버튼으로 클릭하십시오. Btw 나는 그것을 Ubuntu 11.10 랩톱에서 안드로이드 폰에서 재생하는 것을 듣는 데 사용합니다.

* 블루 맨 아이콘은 gnome shell + ubuntu 11.10의 오른쪽 하단 모서리에 표시됩니다. 나는 이것이 당신에게 어떤 식으로 유용하기를 바랍니다.


오디오에 대한 블루 맨 구성 인터페이스는 /etc/bluetooth/audio.conf에서 Enable = Source 값만 설정하므로 안드로이드가 컴퓨터를 오디오 출력으로 사용하는 방법을 알 수 없습니다.
slangasek

좋아, 그래서 audio.conf에서 설정 한 다음 연결의 양쪽 에서 페어링을 해제 하면 안드로이드가 컴퓨터를 오디오 싱크로 인식하게 할 정도로 충분 해 보인다.
slangasek

나는 그것을 시도했고 그것을 오디오 싱크로 인식하지 못했습니다. :-/
Jorge Castro

blueman은 12.04에서 지표 애플릿에 두 개의 블루투스 아이콘이 생겼다는 것 외에는 제로 문제로 나를 위해 일했습니다.
HDave

7

우분투 12.04에서는 정말 간단합니다.

블루투스 기기 연결

블루투스 기기를 검색하고 소스 번호를 기록해 둡니다.

pactl list sources 

블루투스 장치의 루프백을 만드십시오 :

pactl load-module module-loopback source=$SOURCE_NUMBER  

여기서 $ SOURCE_NUMBER는 이전에 메모 한 번호입니다.

예를 들어, 오디오를 재생하려면 다음을 입력하십시오.

$ pactl load-module module-loopback source=3  

그게 다야! 상단 답변의 솔루션이 약간 복잡하다는 것을 알았 으므로이 방법을 단순화했습니다 (입력 및 복사 / 붙여 넣기가 훨씬 적음). 로 블루투스 장치 앞에 나열된 오디오 장치를 제거하면 솔루션이 손상 될 수 있습니다 pactl list sources.

또한 블루투스 장치를 분리하기 전에 루프백 모듈을 제거하는 것을 잊지 마십시오 :

생성 한 루프백 장치의 모듈 번호를 기록해 두십시오.

pactl list short modules

루프백 장치를 제거하십시오.

pactl unload-module $MODULE_NUMBER

이전 답변은 12.04 릴리스 이전에 작성되었으므로 약간의 변경 사항이 있다고 확신합니다. 예를 들어, 블루투스 장치를 오디오 소스로 사용하여 수동으로 활성화 할 필요가 없었습니다 (기본적으로 활성화되어 있음). 그러나 때때로 휴대 전화의 Bluetooth 설정 (CyanogenMod 9.1.0을 실행하는 Samsung Captivate)에서 "미디어 오디오"프로필을 전환해야하는 경우가 있습니다.

쉘 스크립트를 사용하여 블루투스 A2DP 장치 연결을 감시하고 자동으로 루프백 모듈을로드하여 dbus-monitor를 활용하는 방법이있을 것입니다.

우분투 12.10에서 더 이상 수동 으로이 작업을 수행 할 필요가 없기를 바랍니다.


특정 싱크에 대한 모듈 루프백을로드 한 후 특정 장치의 모듈 루프백의 채널 맵을 왼쪽 또는 오른쪽으로 변경할 수 있습니다
Prakash V Holkar

3

13.04의 경우 소스 장치를 우분투 랩톱과 페어링하면 작동합니다! 지금은 그렇게 쉬웠다는 것을 알게되어 매우 시원합니다.



0

답변보다 훨씬 쉬운 솔루션입니다.

당신은 단순히 갈 수 있습니다

sudo apt-get install pulseaudio*

그런 다음 재부팅하십시오. 재부팅 후 블루투스에 연결하고 휴대 전화에서 음악을 재생하기 만하면됩니다. 모든 것이 컴퓨터로 전송되고 컴퓨터의 스피커에서 재생됩니다.

그리고 그렇습니다! 천만에요.


apt-get와일드 카드가 아닌 정규식을 사용합니다. 그래서 당신은 무엇을 사용하여 설치 될지 모릅니다 pulseaudio*(힌트 :로 시작하는 패키지가 아닙니다 pulseaudi). PulseAudio는 이미 기본 우분투 설치의 일부입니다.
muru December

예! 그러나 이것은 일이 즉시 작동하기를 원하는 모든 게으른 사람들에게 효과적입니다.
Adel Abula-MageBinary
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.