Digital Nomad2016.07.31 00:55

지난 번에 라즈베리파이 개봉기에서 OS 설치/한글 자판 인식 까지 썼었는데, 그때 블루투스가 안돼서 일단 때려치자..하고 묵혀 뒀었는데 오늘 추가로 세팅한 걸 쓰려고 한다. 블루투스 인식하는 법을 겨우 알았네.. 메모 겸 해서 끄적


업데이트/업그레이드


sudo apt-get update

sudo apt-get upgrade


위 두개는 가끔 생각날 때마다 치자. 설치된 모듈을 업데이트해 주는 명령어다. 안되던 게 업데이트해서 되기도 한다.


블루투스 연결


라즈베리파이 3은 블루투스를 지원한다. 이전 버전까진 안됐다고 함. 일단 사용하기 위해 아래 패키지들을 설치..해야 하는 것으로 알고 있는데, 일단 아래꺼 설치 안하고 그냥 시도해보고 안되면 설치하길 권장... 뭔가 꼬인 거 같아. # 추가: 아래 모듈들은 설치하지 말자. 이미 설치되어 있다. 위의 업데이트 및 업그레이드만 해 주면 됨.


sudo apt-get install bluetooth bluez blueman pulseaudio


설치한 후에, 나같은 경우는 그냥 pair/connect를 시도해서는 절대 연결이 안됐다. 그래서 구글 뒤지다가 발견한 게 우측의 링크: 클릭


pulseaudio --start


pulseaudio를 명시적으로 시작해 주고서, 명령창에 bluetoothctl 쳐서 블루투스 모드로 진입


[bluetooth] scan on

[bluetooth] pair xx:xx:xx:xx:xx:xx

[bluetooth] trust xx:xx:xx:xx:xx:xx

[bluetooth] connect xx:xx:xx:xx:xx:xx


scan on 이라는 명령어로 블루투스 기기를 쭉 검색한다. 그다음  차례대로 pair/trust/connect 하니까 연결된다. 음악 재생도 잘 되고... 휴대폰도 똑같이 연결하면 된다. 그러면 휴대폰에서 블루투스로 재생한 음악을 3.5 stereo jack이나 hdmi로 출력할 수 있다.


블루투스로 음악을 내보내기 위해서는 omxplayer 외에 mplayer가 필요하다. 아래와 같이 입력해서 설치.


sudo apt-get install mplayer


의문점

더보기


사운드 출력 설정


블루투스 스피커를 연결했으면, 이제 블투 스피커로도 출력은 가능한 상태가 되었다. 하지만 이렇게만 한다고 블투 스피커로 음악이 나오지는 않는다. 출력 채널을 설정해 줘야 함. 콘솔 창에 아래와 같이 입력


pacmd list-sinks


pacmd는 pulseaudio command의 약자인 것 같다. pulseaudio가 실행되고 있을 때 음악/동영상 재생을 위해 어떤 장치들이 잡혀 있는지, 아이디는 뭔지, 지금 설정된 아웃풋은 뭔지 등등을 볼 수 있고 설정할 수 있다. 전체 명령어를 보고 싶으면 pacmd help 라고 치면 된다. 


블루투스 스피커가 제대로 잡혔다면 sink list에 다음과 같이 두개가 뜬다. (블루투스 스피커가 연결(connect)이 됐는데도 list에 안 뜰 경우도 있다. 일단 되는 경우를 보고 진행하고, 안되는 경우는 아래에 따로 적어뒀다.)



보면 index 0/1 로 두개가 뜬다. (빨간색으로 임의로 표시해 뒀다.) index 0은 로컬 출력 (3.5 jack), index 1 은 블루투스 스피커다. index 0 앞에 별표 ( * ) 가 쳐져 있는데, 이게 활성화되어 있다는 뜻이다. 즉, 현재 음악을 재생한다든지 하면 로컬 출력으로 내보낸다는 뜻이다. 이제 출력할 수 있는 장치가 뭐뭐 있는지 알았으니까, 블루투스로 전환하고 싶으면 아래와 같이 입력.


pacmd set-default-sink [index or name]


블루투스의 index number는 1이고, name은 bluez_sink.xx_xx_xx_xx_xx_xx 이다. (xx 부분은 MAC 주소) 둘 중 아무거나 쳐서 입력하면 된다. 즉, 다음과 같다.


pacmd set-default-sink 1

pacmd set-default-sink bluez_sink.xx_xx_xx_xx_xx_xx


이렇게 하면 사운드 출력이 블루투스 스피커로 전환된다.


블루투스 스피커가 연결되었는데도 list-sinks 목록에 안 뜨는 경우


참나 진짜 별 경우가 다 있다. 왠지는 잘 모른다. 이럴 때는 일단 실행 중인 pulseaudio 를 모두 죽인다.


sudo killall pulseaudio


그러면 블루투스 스피커도 자동으로 연결이 끊어진다. 이 때 다시 pulseaudio 실행


pulseaudio --start


bluetoothctl 명령어로 블루투스 모드 진입한 다음 connect 명령어로 연결해 준다. 이미 pair/trust는 완료된 상태이므로 다시 할 필요 없다. connect가 안될 경우는 pulseaudio가 아직 제대로 실행되지 않은 것이므로 조금 기다렸다가 다시 connect 시도. 라즈베리파이가 생각보다 느리다.


그렇게 연결이 되면, pacmd list-sinks 명령어를 다시 쳐 보자. 십중팔구는 아마 잡혀 있을 꺼야, 아마... 


이제까지 삽질로 얻은 대략의 감은... pulseaudio가 먼저 완전히 실행이 되고 나서, 그 다음에 블루투스 스피커를 연결해야 제대로 잡히는 것 같다. 거참...



원격 접속 셋업


원격 접속은 라즈베리파이를 NAS로 쓰기 위한 전단계로 한 것이다. 외부에서도 접속하기 위해서 고정 내부IP 할당/공유기 포트포워딩/PuTTY로 접속/원격 어플리케이션 설치 이렇게 진행했다. 일단 뭐든 진행하기 전에 원격 접속 가능하게 해 주는 프로그램을 하나 깔자..


sudo apt-get install xrdp


아래로 궈궈


고정 내부 IP 할당


유선 LAN으로 해서 할당하라고 하는데.. 일단 무선랜으로 시도해 봤다. 되는 거 같다.

1. 공유기에 따라 다르겠지만, 공유기 내부 ip로 공유기에 접속한다. 대체로 192.168.0.1 임. 그러면 아래와 같은 화면이 나타난다. 빨간색 네모는 내 외부 ip로 모자이크 처리함.



2. 관리도구를 클릭해서 로그인하고 나면 아래와 같은 화면이 나타난다.



3. 여기서 고급 설정 > 네트워크 관리 > 내부 네트워크 정보 로 들어가면 아래와 같이 현재 연결된 장비와 할당된 내부 ip가 나온다. raspberripi의 ip를 확인하고 내부 네트워크 설정 클릭.



4. 그러면 메뉴 맨 아래에 수동 IP 할당 설정 메뉴가 있다. 여기에서 원래 오른쪽 부분(검색된 IP/MAC 주소) 에 있었던 raspberrypi를 체크해서 추가 버튼을 눌러주면 왼쪽으로 이동함. 이렇게 내부 IP가 고정되었다고 일단 생각하는데... 아니면 나중에 글 수정. 일단 라즈베리파이 몇 번 재부팅 해 봤는데 괜찮았다.



공유기 포트포워딩


포트포워딩이란 건 외부에서 내부 네트워크로 접속하려고 할 때 특정 포트를 지정하면 미리 지정한 내부 ip로 포워딩해주는 걸 말한다. 그러니까...


공유기가 110.21.1.245 라는 외부 ip를 가지고 있고 여기에 세 기기가 접속되어 있어 내부 ip로 192.168.0.12 / 192.168.0.162 / 192.168.0.201 이렇게 세 개를 쓴다고 해 보자. 그러면 외부에서 110.21.1.245 로 접속을 했을 때 셋 중에 뭐에 접속을 해야 할 지 모르게 된다. 그래서 만약에 192.168.0.162 의 포트는 8089야! 라고 지정해 주면, 110.21.1.245:8089 라고 포트를 지정해서 접속하면 192.168.0.162 의 기기로 연결된다. 이걸 지정해 줘야 외부 네트워크에서 내부 네트워크로 접속하는 게 가능해진다. 이것도 마찬가지로 공유기 설정에서 진행한다. 


아래와 같이 고급 설정 > NAT/라우터 관리 > 포트포워드 설정 으로 들어가서, 포워딩할 내부 ip (방금 고정한 ip) 를 적고, 프로토콜은 TCP/UDP, 외부 포트 22, 내부 포트 22 로 지정해서 추가한다. 마찬가지로 포트 21에 대해서도 추가함. 22는 ssh 접속을 위해서, 21은 ftp 접속을 위해서. 원격데스크톱은 원격데탑 접속을 위해서인데, ssh로 접속하면 콘솔 창으로 봐야 하지만 원격데스크톱으로 접속하면 윈도우처럼 GUI 화면으로 볼 수 있다. 포트는 아무거나 맘대로 써도 된다. 하지만 80/25 같이 표준으로 사용되는 포트는 쓰면 안된다.



이렇게 하고 나서 저장.


PuTTY로 ssh 접속


PuTTY는 제일 유명한 ssh 접속 툴이다. 이제 외부에서도 접속 가능한 지 이걸로 해보자. 링크 클릭해서 다운.

아... 더 이상은 적기가 귀찮다... PuTTY 사용법은 온 사방에 널려 있으니까 아무거나 참조하고, 아까 포트포워딩이 잘 됐는지 보기 위해서 IP address 적는 곳에다가 외부ip:포트 형식으로 적자. 예를 들면 110.21.1.245:22 이런 식으로...


접속이 잘 되면 성공! 잘 되겠지 뭐 -  _-


원격 접속


원격 접속을 하기 위해서는 공유기에서 설정을 하나 더 해줘야 한다. 포트포워딩을 해 줘서 지금 이대로도 외부 ip를 쳐서 들어갈 수 있기는 한데... 외부 ip 자체가 유동 ip이므로 이것과 관계없이 도메인을 (xxx.yyy.com) 쳐서 접속할 수 있도록 공유기에서 설정할 수가 있다. 엄청 유용함...


아래 그림처럼 고급 설정 > 특수기능 > DDNS 설정 으로 들어간다. 호스트 이름에 ***.iptime.org 라고 치고.. 기타 등등 화면에서 가이드해 주는 것처럼 적은 다음 추가해 주면 도메인이 등록된다. 


등록이 끝나면, 인터넷 창에서 ***.iptime.org 라고 치면 자신의 공유기 설정 화면으로 들어갈 수가 있고, ssh에서 ***.iptime.org:22 로 접속하면 콘솔 창으로 접속 가능하며, 원격데스크톱 어플 (mstsc) 에서 ***.iptime.org:포트 (포트에는 자신이 등록한 포트) 라고 치면 원격데스크탑 접속이 가능하다.


대충 네트워크 설정이랑 블루투스 설정 마쳤고... 이제 다음에는 GPIO 이용한 집안의 물건 제어라든지 파이썬 이용한 코딩이라든지 이런 걸 해 봐야겠다. 이제야 겨우 기초셋업 마친 거 같은 느낌이 드네...;; 갈 길 참 멀다 ㅠㅠ

저작자 표시 비영리 변경 금지
신고
Posted by 에일라거

댓글을 달아 주세요

  1. 질문자

    안녕하세요. 저는 이번에 블루투스 스피커를 제작하려는 학생입니다.
    우연히 서칭을통해 블로그 긁을 읽고 이렇게 질문을드립니다.
    우선 글 내용이 정말 제게 필요한 내용이고 정리가잘되있는거같아요. 감사드립니다.
    제가 여쭤보고싶은거는 블루투스를 음악으로재생하기전에 데이터 전송을 하고싶은데 라즈베리하나로 따로모듈없이 데이터통신과 음악재생까지할수있나요?

    2016.08.05 19:08 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 안녕하세요?

      일단.. 되는 걸로 알고 저도 시도를 했었구요, 제가 지금까지 성공한 건 글에도 써 있지만, 다음과 같습니다.

      1. 라즈베리파이 안에 있는 음악을 블루투스 스피커로 재생하는 것
      2. 휴대폰과 라즈베리파이를 블루투스로 연결한 다음 휴대폰에서 재생한 음악을 라즈베리파이의 analog 3.5 단자로 재생하는 것

      2번이 되니까 일단 데이터 통신은 되는 거 같아요. 근데 이런 걸 하다보니까, 라즈베리파이는 와이파이가 지원이 되는데 굳이 속도가 느린 블루투스를 써서 뭔가를 할 필요가 있는가 싶은 생각이 드네요... 잘 안되기도 하구요. 블루투스를 통해서 파일을 직접 복사하는 건 저도 아직 안해봤고, 시도해 보려고 생각중입니다~~

      2016.08.06 14:19 신고 [ ADDR : EDIT/ DEL ]
    • 질문자

      답변 감사합니다!
      제가 지금 해보려는게 파이에서 블루투스로 음악을재생하기전에 휴대폰 앱에서 블루투스로 파이 안에 있는 영상 제목을 전송하고 파이는 메시지를받은 후 영상과함께 음악을 재생하려고 하는데 혹시 가능 할까요ㅜㅜ

      2016.08.07 17:24 신고 [ ADDR : EDIT/ DEL ]
  2. 라파

    안녕하세요 현재 라즈베리파이3를 블루투스 스피커로 사용하려고하는데요 위에언급하신것처럼 pulse오디오로
    블루투스 페어링후 재생하면 노래가 뚝뚝 끊기는현상을격고있는데 어떻게 해결하셨나요?

    2016.09.02 00:02 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 저도 그런 문제가 있어서... 처음에 그냥 연결만 해 놓고 안 썼는데요, 어느 순간부터는 또 재생이 잘 되더라구요. 일단 sudo apt-get update로 한 번 관련 모듈 모두 업데이트 해보시겠어요? 저도 특별히 해결책을 못 찾았었습니다... 도움이 못 돼서 죄송해요;

      2016.09.03 00:36 신고 [ ADDR : EDIT/ DEL ]
  3. 풀스게임

    안녕하세요.

    저도 에일라거님과 같은 현상을 겪고 있다가 오늘 이 글을 읽고 드뎌 블루투스 페어링과 연결에 성공했습니다. 대단히 감사드립니다. 저도 라즈베리파이3을 구입해서 사용하고 있는데 그동안 UI모드에서는 블루투스 연결이 계속 실패해서 연결을 하지 못하고 포기하고 있다가 얼마전부터 다시 구글등 검색을 통해 해결책을 찾아보려고 했으나 실패해서 라즈베리파이3도 뽑기 운인가? 생각했었는데 말씀하신데로 pulseaudio가 온전히 가동되는데 상당한 시간이 걸리는 것 같네요. 그걸 모르고 계속 이것저것 해보면서 블루투스 모듈(Blueman 등)도 새로 설치하고 그러다 보니까 기존 블루투스 아이콘과 블루맨 아이콘 2개가 UI에 표시되고 아무튼 여기 저기 블로그를 다 찾아봤는데 안됐는데 이제야 연결이 되네요.....ㅎㅎ 암튼 감사드립니다. 라즈베리파이3와 블루투스 이어폰과 연결은 됐는데 아직 소리가 나지 않아서 음악을 내보낼 수 있는 프로그램 mplayer 설치했습니다. 요걸 사용하는 방법은 구글링좀 해봐야 겠네요. 다시한번 포스팅 감사드립니다.

    2016.09.11 10:04 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 일단 축하드려요 ㅋㅋ mplayer 사용법 자체는 간단합니다. 그냥 mplayer -help 치면 나올 거고... 음악 있는 폴더로 가서 mplayer * 이라고 하면 그 폴더 내에 모든 음악이 재생됩니다. 소리 출력 설정은 이 글 내에 있으니까 참고하세요!

      2016.09.15 16:59 신고 [ ADDR : EDIT/ DEL ]
  4. 세이코앱손

    안녕하세요.블루투스 페어링은 정상적으로 완료되었는데 이어폰으로 소리가 안나네요..혹시 음악만 나오고 유튜브같은건 안되는건가요?

    2017.05.20 20:04 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 지금 해보니 모두 되는데, 유투브같은 경우는 라즈베리파이가 느려서 그런지 재생이 뚝뚝 끊기다가 멈춰버리네요... 지금 댓글 쓰신 상황으로 보면 pair/connect까지만 완료하신 상황인 거 같은데요, 실제로 출력을 블루투스 스피커로 지정하는 과정이 추가로 필요합니다. 위 글대로 따라하면 되실 거예요

      2017.05.21 11:26 신고 [ ADDR : EDIT/ DEL ]
  5. 질문있어요

    라즈베리파이3를 사용중이고 블루투스 동글을 따로 장착중입니다.
    블루투스를 스마트폰과 연결해 스피커를 통해 소리를 나오게하고싶은데요 검색과 책을 통해서 어찌나오긴했는데

    제가원하는건 자동으로 페어링이되는거에요

    부팅시 블루투스를 자동으로 검색되게까지는 했는데

    연결을하려면 페어링 확인을 눌러줘야하더라구요
    한번 연결하면 신뢰추가되서 그런지 그다음부터는 따로 확인을 안해줘도되긴하지만 처음부터 그냥 스마트폰에서 연결 시도하면 자동으로 페어링되게 하고싶어서요

    수동으로 일일이 처음에 해주기보다는 자동으로 처음부터 연결까지되게 하고싶은데 방법이 없을까요??

    라즈비안에 마우스를 특정좌표로 이동해서클릭하게 하는 api같은건 없겠죠..?

    2017.05.26 05:14 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 음... 저도 자동으로 페어링을 못해서 이렇게 글을 쓴 거라서요... 죄송합니다;;

      2017.05.29 22:56 신고 [ ADDR : EDIT/ DEL ]
  6. auto_connect

    자동연결에 관한 부분입니다.
    시도는 안해봤지만 대부분의 사용자 쉘 실행방법인 /etc/rc.local 에 스크립트를 넣어놓는 방법을
    사용하는 것 같네요.

    https://raspberrypi.stackexchange.com/questions/47200/automatically-accepting-bluetooth-connections-on-a-pi-3

    2017.06.27 10:20 신고 [ ADDR : EDIT/ DEL : REPLY ]
  7. 질문있어요

    설명해주신대로 덕분에 연결까지 잘됐어요
    근데 음악플레이는 어떻게 되는건가요? x윈도우는 아예 안뜨게해두고
    KODI만 실행되게해둔상태거든요. KODI안에서 영화나 음악파일을 플레이해도
    블루투스로는 안나오네요.

    2017.07.01 17:04 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 전 mplayer로 음악 플레이해봤었는데 그걸로는 잘 됩니다. 아마 그 KODI? 거기 내에서 또 설정이 필요할지도 모르겠네요...

      2017.07.03 13:15 신고 [ ADDR : EDIT/ DEL ]