[RPi] Stream เพลงด้วย Airplay ผ่าน Raspberry Pi

AirPlay คืออะไร ?
ถ้าเป็นสาวกของ Apple คงไม่ต้องพูดอะไรกันมาก…คงจะทราบกันดีครับ แต่จะขออธิบายสักนิด เผื่อสาวก Windows จะอยากทำความรู้จัก และลองเล่นกันบ้างครับ
AirPlay มันคือการ Steam เพลง รูป หรือ วีดีโอ ไปยัง Apple TV หรือ เพลงไปยัง AirPort Express หรือ ลำโพงที่ซัพพอร์ต AirPlay โดยผ่านระบบเครือข่าย ใช้ได้กับอุปกรณ์ดังต่อไปนี้ครับ
- iPhone 4 ขึ้นไป
- iPad, iPad mini. iPad 2 ขึ้นไป
- iPod touch 4th generation ขึ้นไป
- iTune (รุ่นล่าสุด) บน Mac หรือ PC ก็ได้เช่นกันครับ
วันนี้เราจะทำ Raspberry Pi เป็นลำโพง AirPlay เพื่อเป็นเครื่องรับการ Stream เพลงผ่าน iTunes ทั้งใน iPhone, iPod และ PC/Mac โดยใช้ซอฟแวร์ที่ชื่อว่า Shairport-Sync
สิ่งที่ต้องมีในการทำโปรเจ็คนี้
- Raspberry Pi 3 Model B (ถ้าใช้ RPi 2B หรือ B+ ต้องเสียสาย Lan หรือ มี WiFi-dongle)
- MicroSD card (แนะนำ 8 Gb class 10 ขึ้นไป)
- USB Power Adapter (แนะนำ 1A ขึ้นไป)
- WiFi Router หรือเครือข่ายอินเตอร์เน็ต
- USB Mouse/Keyboard (option)
- หน้าจอที่มีพอร์ต HDMI (option)
- USB WiFi dongle (option)
- Ethernet cable (option)
- ลำโพง แบบแจ็ค 3.5 มม.
- iPhone/iPad/iPod/Mac/หรือ PC ที่ติดตั้ง iTunes รุ่นล่าสุด
- เพลงที่ต้องการจะเล่นใน iTunes
ติดตั้ง Shairport-Sync บน Raspberry Pi
- ก่อนอื่นเราต้องติดตั้ง OS ลงบน MicroSD card ก่อนนะครับ ในที่นี้เราจะใช้ Raspbian Jessie ล่าสุดนะครับ ใครเพิ่งเริ่มต้นให้ทำตามได้จากบทความนี้ >>[RPi] เริ่มต้นกับ Raspberry Pi ตอนที่ 2 : การเริ่มต้นใช้งาน Raspberry Pi<<ครับ
- ต่อ Raspberry Pi เข้ากับเครือข่าย
- จากนั้นก็เปิด Raspberry Pi และเข้าไปที่ Terminal ครับ ทำการติดตั้ง library ดังขั้นตอนต่อไปนี้
ติดตั้ง dependency (library ที่เกี่ยวข้อง)
ทั้งหมดนี้ ส่วนใหญ่ต้องลงหมดหล่ะครับ อันไหนเป็น Option เราก็เลือกเอาครับว่าจะใช้ไหม? ส่วนใครไม่แน่ใจว่าต้องใช้อันไหน ลองทำตามขั้นตอนไปก่อนนะครับ
Libraries ที่จำเป็นต้องลง :
- OpenSSL หรือ PolarSSL
- Avahi
- ALSA
- libdaemon
- autoconf
- automake
- libtool
- libpopt
- libconfig
Optional:
- libsoxr
Step 1 : ติดตั้ง apt-get install build-essential git ซึ่งส่วนใหญ่น่าจะมีกันแล้ว
sudo apt-get install build-essential git
- กด y แล้ว enter ครับ

Step 2 : apt-get install autoconf automake libtool libdaemon-dev libasound2-dev libpopt-dev libconfig-dev
sudo apt-get install autoconf automake libtool libdaemon-dev libasound2-dev libpopt-dev libconfig-dev
- กด y แล้ว enter ครับ

Step 3 : apt-get install avahi-daemon libavahi-client-dev
sudo apt-get install avahi-daemon libavahi-client-dev
- กด y แล้ว enter ครับ

Step 4: apt-get install libssl-dev ถ้าต้องการใช้ OpenSSL และ libcrypto หรือไปใช้ PolarSSL (Step5) แทน [มือใหม่ลงไปก่อนก็ได้ครับ ไม่เสียหาย]
apt-get install libssl-dev
- กด y แล้ว enter ครับ

Step 5: apt-get install libpolarssl-dev ถ้าต้องการใช้ PolarSSL หรือไปใช้ OpenSSL และ libcrypto (Step4) แทน [มือใหม่ลงไปก่อนก็ได้ครับ ไม่เสียหาย]
apt-get install libpolarssl-dev
- กด y แล้ว enter ครับ

Step 6: apt-get install libsoxr-dev ถ้าอยากใช้ libsoxr-based resampling [มือใหม่ลงไปก่อนก็ได้ครับ ไม่เสียหาย]
apt-get install libsoxr-dev
- กด y แล้ว enter ครับ

ติดตั้ง Shairport-Sync
Step 7 : ดาวโหลด Shairport-Sync
git clone https://github.com/mikebrady/shairport-sync.git

Step 8: ย้ายไปตำแหน่งของ shairport-sync
cd shairport-sync
Step 9: พิมพ์คำสั่ง
autoreconf -i -f

Step 10 : พิมพ์คำสั่ง
./configure — with-alsa — with-avahi — with-ssl=openssl — with-metadata — with-soxr — with-systemd

Step 11 : Build Application พิมพ์คำสั่ง
make

Step 12 : กำหนดสิทธิและกรุ๊ปให้กับ shairport-sync
$sudo getent group shairport-sync &>/dev/null || sudo groupadd -r shairport-sync >/dev/null
$sudo getent passwd shairport-sync &> /dev/null || sudo useradd -r -M -g shairport-sync -s /usr/bin/nologin -G audio shairport-sync >/dev/null

Step 13 : พิมพ์คำสั่ง
sudo make install

Step 14 : ตั้งค่าให้ Shairport Sync เริ่มอัตโนมัติที่เปิดเครื่อง ด้วยพิมพ์คำสั่ง
sudo systemctl enable shairport-sync

ตั้งค่า Shairport-Sync เบื้องต้น
Step 15: แก้ไขไฟล์ shairport-sync.conf ด้วย nano
sudo nano /etc/shairport-sync.conf

Step 16 : เบื้องต้นให้ทำการ uncomment ในส่วนของ general และ alsa ดังต่อไปนี้ครับ
general = {
name = “Phoo-AirPlay”;
password = “secret”;
interpolation = “basic”;
};alsa = {
output_device = “default”; //hw:0
mixer_control_name = “PCM”;};


- เสร็จแล้วกด Ctrl+x กด y แล้วกด enter เพื่อทำการออกและเซฟไฟล์ครับ
Step 17: เสร็จแล้วให้ทำการรีสตาร์ทระบบ 1 ทีครับ
- sudo reboot

การตั้งค่าเสียง
หากใครลองเล่นแล้ว เสียงไม่ออก ! อย่าเพิ่งตกใจ… มันอาจจะไปออกที่ HDMI อยู่นะครับ ให้ทำการเลือกไปออกที่ช่อง Audio ด้วยคำสั่ง
amixer cset numid=3 1
- 0 คือ ค่าเริ่มต้น โดยจะเลือกให้อัตโนมัติ
- 1 คือ เสียงออกทางแจ๊คหูฟัง 3.5
- 2 คือ เสียงออกทาง HDMI

ทดลองเล่นเพลงผ่าน Network กัน

- ต่อลำโพงของเราเข้ากับ Raspberry Pi 3 ที่ช่อง Audio 3.5 มม. นะครับ
- อุปกรณ์ที่เราจะสตรีมเพลงได้นั้น เราต้องเชื่อมต่ออยู่ในเครือข่ายเดียวกันก่อนนะครับ ถึงจะมีไอคอน AirPlay ขึ้นมาให้เลือกครับ
iPhone
- เปิดเพลงใน iPhone แล้วใช้ Control Center (เลื่อนขึ้นจากด้านล่างขึ้นบน)
- ด้านขวาจะมี AirPlay เราก็เข้าไปกดเลือก สตรีมเพลงเราไปยังอุปกรณ์ของเราได้เลยครับ
- เลือก Phoo-AirPlay
- ใส่พาสเวิร์ด (ในที่นี้เราตั้งไว้คือ secret)
- เท่านี้ก็ได้สตรีมเพลงได้แล้วครับ


iTunes บน Windows
- ลง iTunes เวอร์ชั่นล่าสุด จาก https://support.apple.com/en-us/HT201352
- เชื่อต่อคอมพิวเตอร์ของเรากับเครือข่ายเดียวกัน ที่ใกล้กับ Volumn จะมีไอคอน AirPlay ขึ้นมาให้เลือกครับ
- เลือก Phoo-AirPlay
- ใส่พาสเวิร์ด (ในที่นี้เราตั้งไว้คือ secret)
- เท่านี้ก็ได้สตรีมเพลงได้แล้วครับ

- หากไม่ขึ้น AirPlay
- ไปที่ Wi-Fi Properties แล้ว uncheck IPv6 (เอาเครื่องหมายถูกออก)
- ปิด/เปิด iTunes ใหม่ ก็จะขึ้นแล้วครับ

สรุป
- ถือว่าเป็นโปรเจ็คดีๆ สนุกๆ ทำได้ง่าย ไม่เสียเวลามาก ไม่วุ่นวายนักครับ
- เสียงที่ผ่านการ Streaming อาจจะไม่ดีเท่าต่อสายนะครับ แต่ก็สะดวกดี
- รองรับการต่อกับ Audio DAC ทำให้เสียงดีขึ้นได้อีกด้วยนะครับ
อ้างอิง
- https://github.com/mikebrady/shairport-sync/blob/master/README.md
- http://htmlpreview.github.io/?https://github.com/mikebrady/shairport-sync/blob/master/man/shairport-sync.html
- http://www.redsilico.com/multiroom-audio-raspberry-pi
- http://forums.slimdevices.com/showthread.php?103999-Raspberry-Pi-with-Squeezelite-and-Shairport_Sync
- https://www.raspberrypi.org/documentation/configuration/audio-config.md