사용자 도구

사이트 도구


miniserver:bluetooth_sound

우분투 14.04.2 LTS 서버에서 블루투스 스피커 연결

사운드 설정

우선 기본적으로 스피커로 소리가 나야 되지 않을까 생각하였다. pulseaudio 패키지를 설치하였다.

$ sudo apt-get install pulseaudio bluez-alsa bluez bluez-tools python-gobject python-dbus alsa-base

사운드가 영 설정이 꼬여 있으면 다음처럼 실행해 완전 초기화

$ sudo apt-get remove --purge alsa-base pulseaudio
$ sudo apt-get install alsa-base alsa-utils pulseaudio
$ sudo alsa force-reload

pulseaudio, bluetooth 자동 시작하도록 변경.

$ sudo update-rc.d pulseaudio defaults
$ sudo update-rc.d bluetooth defaults

alsamixer 에서 MUTED 해제. 'MM'이라고 써져 있음 안됨.

샘플 WAV 파일을 가져 와서 한 번 재생이 되는지 살펴 보자. mplayer 가 없다면 aplay 명령을 써도 된다. 그치만 나중에 mplayer를 쓸 거니 미리 설치해도 된다.

$ cp /usr/share/sounds/alsa/Front_Left.wav ~
$ mplayer ~/Front_Left.wav

블루투스 설정

미니서버는 다행히 한성 노트북처럼 블루투스 모듈 드라이버로 트러블을 일으키지는 않았다. 다행히 모듈은 잘 잡히고 페어링까지 문제 없이 실행된다.

# hcitool dev         # 블루투스 장치 검색
Devices:
	hci0	30:3A:64:4F:B9:3C

스피커 부분을 페어링 모드로 변경하고

$ hcitool scan
Scanning ...
	40:EF:4C:15:DF:B2	IA160
	28:E3:47:83:C2:0A	laptop

40:EF:4C:15:DF:B2 주소의 'IA160'이 내가 연결하고 싶은 블루투스 스피커이다.

# bt-device -c 40:EF:4C:15:DF:B2  # 페어링
Connecting to: 40:EF:4C:15:DF:B2
Agent registered
Agent released
Done
# bt-device -l   # 페어링된 목록 확인
Added devices:
IA160 (40:EF:4C:15:DF:B2)
 
# bt-device --set IA160 Trusted 1  # 스피커는 신뢰할 수 있는 연결이므로 인증시킴
Trusted: 0 -> 1
 
# bt-device -i IA160  # 디바이스 정보
[40:EF:4C:15:DF:B2]
  Name: IA160
  Alias: IA160 [rw]
  Address: 40:EF:4C:15:DF:B2
  Icon: audio-card
  Class: 0x240404
  Paired: 1
  Trusted: 1 [rw]
  Blocked: 0 [rw]
  Connected: 1
  UUIDs: [AudioSink, AVRemoteControl]

그 담 매우 중요한 설정으로 /etc/bluetooth/audio.conf 파일의 [General] 부분에서

Enable=Source,Sink,Headset,Gateway,Control,Socket,Media

위 부분이 없다면 꼭 넣어주어야 한다. 그렇지 않으면 “org.bluez.Error.Failed: Connect Failed” 메시지를 띄우며 연결이 되지 않는다.

블루투스 스피커 연결과 해제

# bt-audio -c IA160             # 혹은
Connecting to an audio service
Audio service is connected

# bt-audio -c 40:EF:4C:15:DF:B2 # MAC 주소로 가능
Connecting to an audio service
Audio service is connected

# bt-audio -d IA160             # 연결 해제. 물론 MAC 주소로도 가능

asound.conf 작성

#/etc/asound.conf

pcm.bluetooth {
   type plug
   slave {
       pcm {
           type bluetooth
           device 40:EF:4C:15:DF:B2
           profile "auto"
       }   
   }   
   hint {
       show on
       description "IA160"
   }   
}
ctl.bluetooth {
  type bluetooth
}
$ aplay -L

결과에서

bluetooth
    IA160

이 부분을 발견해야 한다.

그러면 aplay와 mplayer로 재생 테스트

$mplayer -ao alsa:device=bluetooth /usr/share/sounds/alsa/Front_Center.wav 
$aplay -D bluetooth /usr/share/sounds/alsa/Front_Center.wav 

mplayer 에서 블루투스로 소리 재생

# mplayer -ao alsa:device=bluetooth [file]

참조 자료

일반사용자 권한 주기

일반 사용자가 특정 명령만을 쓸 수 있어야 하니까 /etc/sudoers.d/changwoo_bluetooth

changwoo ALL=(ALL) NOPASSWD: /usr/bin/bt-device -l, /usr/bin/bt-device -i *, /usr/bin/bt-audio -c *, /usr/bin/bt-audio -d * 

이제 alias도 추가해 준다. ~/.bash_aliases

alias bt_mplayer='mplayer -ao alsa:device=bluetooth'        # 블루투스로 mplayer 재생
alias ia160_info='sudo bt-device -i IA160'                  # ia160 정보
alias bt_list='sudo bt-device -l'                           # 블루투스 오디오 연결 정보
alias ia160_connect='sudo bt-audio -c IA160'                # IA160에 연결
alias ia160_disconnect='sudo bt-audio -d IA160'             # IA160에 연결 해제
alias ia160_check_connection="ia160_info | sed -rn 's/ *Connected: ([[:digit:]])/\1/p'"
miniserver/bluetooth_sound.txt · 마지막으로 수정됨: 2015/11/25 14:41 저자 changwoo

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki