저는 스피커로 노래 듣는 것을 좋아합니다.
지금까지는 스피커의 오디오 라인을 빼서 라이트닝 변환 잭을 사용해서 아이폰에 끼워서 노래를 들었습니다.
왜냐하면 제 스피커는 블루투스나 airplay 따위는 되지 않기 때문이죠!
근데, 문득 생각하다가 집에서 놀고 있는 라즈베리파이를 이용하면 스피커에 airplay를 달아줄 수도 있겠다는 생각이 들었습니다.
그래서 구글에 쳐보니까, 역시나 방법은 있었습니다..!
https://appcodelabs.com/7-easy-steps-to-apple-airplay-on-raspberry-pi
원문은 영어고, 한글로 된 가이드도 조금 있었지만 다소 예전 버전이기도 하고 이 방법이 가장 편한 방법인 거 같아서 이 방법대로 진행했고, 한글로 옮겨서 적어보려고 합니다!
원문을 그대로 옮기지는 않고, 필요한 부분만 가져오고 보충이 필요하다고 생각하는 부분을 추가해서 적는 방식으로 진행하겠습니다 :)
1. Raspberry Pi 고르기
Pi Zero는 네트워크를 설정하는 게 어려울 수 있으니 Pi Zero W를 추천한다. 다른 무거운 작업을 돌리지 않는다면 Pi Zero W의 싱글코어로도 충분할 것이다. 하지만 새로운 걸 산다면 Model 3을 추천한다...(?)
저는 3B+ 모델을 가지고 있어서 그냥 썼습니다.
2. 운영체제 고르기
(이러저러한 이유에 의해서) Airplay를 처음 설치해보는 거라면, Raspbian Lite를 추천한다. 왜냐하면 리소스를 아끼기 위해서 GUI를 없앴지만, 오리지널 Raspbian OS에서 파생된 성숙한 OS이기 때문이다. 완전히 command-line 기반이고, 키보드나 모니터 없이도 네트워크를 통해 완전히 원격으로 접속하는 것처럼, headless 모드로 쉽게 설정할 수 있다.
저는 그냥 Raspbian이 깔려있어서 그냥 썼습니다.
3. Raspbian Lite 설치와 SSH 켜기
이미 설치했거나, 자신 있으면 그냥 해보랍니다. 그런 게 아니라면 다음의 가이드를 참고하랍니다. (SSH 키는 거까지 포함!)
https://appcodelabs.com/build-a-minimal-raspberry-pi-installation-for-headless-mode-operation
Raspbian 설치 가이드는 아니므로 패스하겠습니다.
참고로 네트워크는 연결이 되어 있어야 하며, 사용할 아이폰? 아이패드? 맥북 등등과 같은 네트워크로 잡으셔야 합니다!
4. Airplay 서버 설정하기
의존 패키지 설치
sudo apt-get update
sudo apt-get install autoconf automake avahi-daemon build-essential
sudo apt-get install git libasound2-dev libavahi-client-dev libconfig-dev
sudo apt-get install libdaemon-dev libpopt-dev libssl-dev libtool xmltoman
shairport-sync 빌드하고 설치하기
git clone https://github.com/mikebrady/shairport-sync.git
cd shairport-sync
autoreconf -i -f
./configure --with-alsa --with-avahi --with-ssl=openssl --with-systemd --with-metadata
make
sudo make install
오디오 출력 설정하기
sudo raspi-config
설정에 들어가서 7. Advanced Options - A4. Audio - Force 3.5mm ('headphone') jack을 선택한다. 이것은 오디오 출력을 3.5mm 헤드폰 잭으로 가도록 강제한다.
이 부분은 나중에 USB DAC로도 잘 작동이 되는지 테스트해보겠습니다!
볼륨 설정하기
amixer sset PCM,0 100%
이런 식으로 퍼센트로 지정하면 볼륨이 설정된다. 처음에 크게 나올 수도 있으니까 스피커 볼륨을 줄이거나, 위의 명령어처럼 시스템 볼륨을 줄이고 적절하게 올려보자.
Airplay 테스트
sudo service shairport-sync start
이제 shairport-sync를 시작했고 아이폰에 들어가 보면,
이런 식으로 Airplay가 정상적으로 동작하는 것을 볼 수 있습니다.
이미 라즈베리파이에 헤드폰이나 스피커가 연결되어 있었다면 위의 사진처럼 연결하면 스피커에서 노래가 나오는..! 놀라운 일을 경험하실 수 있습니다.
시스템이 켜지면 자동 시작되게 설정하기
우리가 이걸 전원을 새로 킬 때마다 ssh로 접속해서 서비스를 켜주는 불상사가 없어야 하기 때문에 새로 전원이 들어와서 켜지면 자동으로 시작되게 해 줍시다. 이미 systemd를 위한 설정을 해놔서 쉽게 설정할 수 있다네요.
sudo systemctl enable shairport-sync
이 명령어를 입력하면,
Created symlink /etc/systemd/system/multi-user.target.wants/shairport-sync.service → /lib/systemd/system/shairport-sync.service.
이런 메시지가 나옵니다.
이제 reboot을 해서 정상적으로 등록이 됐나 확인해봅시다.
sudo reboot
나는 아무것도 하지 않았는데 아이폰에서 Airplay 스피커로 위의 사진처럼 Raspberrypi가 나온다면 성공!
Wifi dropout 막기
Raspberry Pi는 주기적으로 저전력 모드로 들어가려고 하고, 이것은 Airplay를 사용할 때 심각한 오디오 오류를 일으킬 수 있다. 이것은 /etc/network/interface에 한 줄을 추가해서 막을 수 있다.
sudo nano /etc/network/interfaces
로 들어가서 마지막 줄에,
wireless-power off
요렇게 한 줄을 추가해주고 저장하고 재부팅하면 됩니다!
sudo reboot
Audio Quality
많은 사람들이 라즈베리파이의 기본 3.5mm 잭의 오디오 품질에 대해서 불만이 많았다고 합니다.
그래서 DAC 보드를 추가로 사용한다고 합니다.
필자는 두 개의 DAC 보드를 써봤는데,
IQAudIO PiDAC+가 Raspberry Pi 3A+랑 잘 맞았고,
HiFiBerry DAC+ Zero는 Pi Zero W랑 잘 맞았는데,
두 개 다 설정이 간단했고 소리도 좋았다고 합니다.
(IQ AudIO PiDAC+에 대한 링크는 원문에도 없었고, HiFiBerrry에 대한 아마존 링크를 첨부합니다!)
그리고 필자가 써보지 않은 보드 중에 유명한 건 Pimoroni pHAT DAC가 있다고 합니다.
하지만 저는 쓰면서 사운드 면에서 그렇게 못 들어줄 만큼 사운드 퀄리티가 문제가 있다고 생각한 적은 없어서(3B+ 기준)... 일단은 쓰고 있지만 위에 언급한 것처럼 라즈베리파이 전용 DAC가 아니라 USB로 사용할 수 있는 DAC를 설치해보려고 합니다!
아마 비교군이 없어서 들어줄 만하다고 생각했을 수도 있는데, stand-by 상태에서 따로 잡음이 나거나 이런 부분은 없어서 그 정도면 거슬릴 정도는 아니라고 생각했습니다.
DAC를 달아보고 다시 소리의 차이에 대한 글을 남기겠습니다!
다만, 설치하면서 한 가지 생각나는 점은 3B+에 내장되어 있는 무선랜이 이상해서 따로 랜카드를 달았었는데 이 랜카드의 종류에 따라 아무런 입력 신호가 없을 때 거슬릴만한 노이즈가 있기는 했었습니다.
하지만 이 부분은 라즈베리파이 자체에 문제가 있는 부분은 아니고, 3B+까지 가면서 오디오 부분에서 개선이 된 건지 아니면 제가 막귀인 건지는 잘 모르겠습니다 :)
아티스트, 곡 정보를 디스플레이에 표시하기
shairport-sync의 --with-metadata 옵션을 사용하면 현재 플레이 중인 트랙에 대해서 아티스트, 앨범, 곡 정보 같은 메타데이터를 가져올 수 있습니다.
이 부분은 필자가 따로 포스팅을 했는데, 괜찮은 글인 거 같아서 따로 링크를 남깁니다.
https://appcodelabs.com/show-artist-song-metadata-using-airplay-on-raspberry-pi
사용기
이제 정확히 하루를 사용해봤는데, wifi 기반이라 기본적으로 망을 많이 탑니다.
wifi 품질이 좋다면(폰도, 라즈베리파이도) 끊김 없이 들리고 딜레이는 조금 특이합니다.
노래를 일시 정지할 때는 바로 꺼지는데, 다시 플레이하면 속으로 셋 세야 켜집니다. (wifi가 안 좋아서일지도..)
그래도 이 정도면 집에서 놀고 있는 라즈베리파이 치고는 괜찮은 성능인 거 같습니다!
무엇보다 선 없이 책상에 있는 스피커로 음악을 들을 수 있다는 게 제일 좋은 점인 거 같네요 :)