[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)
  • เท่านี้ก็ได้สตรีมเพลงได้แล้วครับ
Phoo-AirPlay ด้านขวามือ
ใส่ Password สำหรับ Phoo-AirPlay

iTunes บน Windows

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

สรุป

  • ถือว่าเป็นโปรเจ็คดีๆ สนุกๆ ทำได้ง่าย ไม่เสียเวลามาก ไม่วุ่นวายนักครับ
  • เสียงที่ผ่านการ Streaming อาจจะไม่ดีเท่าต่อสายนะครับ แต่ก็สะดวกดี
  • รองรับการต่อกับ Audio DAC ทำให้เสียงดีขึ้นได้อีกด้วยนะครับ

อ้างอิง