Установка и настройка AirPlay-приемника на Raspberry Pi 3

Raspberry Pi 3. Установка и настройка AirPlay-приемника

Дата Автор 23 комментария 27 413 просмотров

В прошлом году я обозревал сетевую колонку Xiaomi Mi Smart Network Speaker, умеющую проигрывать музыку как по кабелю и Bluetooth, так и по DLNA и AirPlay протоколам, будучи подключенной к Wi-Fi сети. А в этой статье хочу рассказать как при помощи одноплатного компьютера можно сделать любую колонку или акустическую систему сетевой, добавив в нее поддержку протокола AirPlay.

Данный протокол используется в устройствах компании Apple и позволяет буквально парой прикосновений к экрану смартфона или планшета переключать воспроизведение со встроенного динамика на внешнюю акустику. При этом саму акустическую систему не нужно как-то настраивать — достаточно, чтобы она была подключена к той же локальной сети, а дальше iPhone сделает все сам.

Что нам понадобится

Для осуществления описываемых в этой статье действий понадобится:

  • Raspberry Pi 3 Model B
  • Локальная сеть
  • iPhone, iPad или iTunes на компьютере
  • Наушники или колонки, подключаемые к 3.5мм аудиоразъему
  • Звуковая карта для Raspberry Pi (опционально)
  • Дисплей для Raspberry Pi (опционально)

Удаленно управлять «малиной» удобнее всего по SSH или через Webmin.

Установка и настройка Shairport Sync

Для поднятия на Linux-системах AirPlay-приемника используется приложение Shairport Sync, в свою очередь являющееся форком уже заброшенного и не обновляющегося Shairport.

Перед началом установки традиционно обновим уже установленные в системе пакеты:

sudo apt-get update
sudo apt-get dist-upgrade

Теперь установим все необходимое для работы Shairport Sync:

sudo apt-get install build-essential git autoconf automake libtool libdaemon-dev libasound2-dev libpopt-dev libconfig-dev avahi-daemon libavahi-client-dev libssl-dev

Скопируем с гитхаба репозиторий с исходным кодом:

git clone https://github.com/mikebrady/shairport-sync.git

Перейдем в папку с исходниками, сконфигурируем и соберем приложение:

cd shairport-sync
autoreconf -i -f
 ./configure --sysconfdir=/etc --with-alsa --with-avahi --with-ssl=openssl --with-metadata --with-systemd
make

Создадим отдельную группу и отдельного пользователя специально для Shairport:

getent group shairport-sync &>/dev/null || sudo groupadd -r shairport-sync >/dev/null
getent passwd shairport-sync &> /dev/null || sudo useradd -r -M -g shairport-sync -s /usr/bin/nologin -G audio shairport-sync >/dev/null

Установим приложение и запустим в качестве системного сервиса:

sudo make install
sudo systemctl enable shairport-sync

Теперь осталось только перезагрузить Raspberry Pi и все готово:

sudo reboot

Если установка пакета прошла успешна, то после перезагрузки в списке доступных AirPlay-устройств на iPhone/iPad или в iTunes появится новая колонка с именем Raspberrypi.

Установка и настройка AirPlay-приемника на Raspberry Pi 3

И если подключить к «малине» акустику, то можно воспроизводить через нее музыку с любых девайсов от Apple.

Но для более комфортного пользования нужно произвести некоторые настройки.

Отключение энергосбережения Wi-Fi

Если Raspberry Pi 3 подключена к локальной сети по Wi-Fi (к слову, при возможности лучше подключать кабелем по Ethernet — стабильнее будет работать), то нужно отключить энергосбережение Wi-Fi адаптера. Иначе при отсутствии сетевой активности адаптер будет пытаться уйти в режим сна и в это время «малинка» будет пропадать из списка AirPlay-устройств.

Поэтому отредактируем файл конфигурации:

sudo nano /etc/network/interfaces

Найдем в нем строку «iface wlan0 inet manual» и добавим сразу же после нее следующую строку:

wireless-power off

На этом данная часть настройки завершена.

Улучшение качества звука

Встроенная звуковая карта в Raspberry Pi 3 оставляет желать лучшего, а установленный по умолчанию драйвер и вовсе ужасен. Если планируется использовать «малину» в качестве AirPlay-ресивера для действительно хорошей акустики, то есть смысл докупить к ней хорошую звуковую карту (такие производит, например, Suptronics).

Во всех остальных случаях нужно хотя бы сменить стандартный драйвер на более свежий, который уже входит в дистрибутив Raspbian, но выключен по умолчанию.

Для этого открываем файл config.txt:

sudo nano /boot/config.txt

И дописываем в конец следующую строку:

audio_pwm_mode=2

Затем нужно будет перезагрузиться. После перезагрузки «малина» заработает уже с другим драйвером и звук на 3.5мм аудиовыходе станет более-менее приличным.

Для еще одного улучшения качества звука нужно исправить файл конфигурации самого Shairport Sync:

sudo nano /etc/shairport-sync.conf

В котором нужно найти строку:

// volume_range_db = 60 ;

И заменить ее на строку:

volume_range_db = 30 ;

Обратите внимание, что нужно не только поменять значение с 60 на 30, но и удалить два слеша в самом начале строки, т.е. раскомментировать этот параметр.

Изменение названия AirPlay-ресивера

Изначально наша AirPlay-колонка будет носить сетевое имя устройства, на котором развернут Shairport (в случае с «малиной» это имя по умолчанию Raspberrypi).

Если хочется дать ей более звучное название, то нужно отредактировать файл конфигурации:

sudo nano /etc/shairport-sync.conf

Найти в нем строку:

// name = "%H"

Раскомментировать эту строку и ввести вместо %H свое название:

name = "My AirPlay Speaker"

Установка графического интерфейса для Shairport Sync

Если к «малине» подключен мини-дисплей, то можно приспособить его для вывода метаданных о транслируемых треках.

Для этого нужно загрузить еще один репозиторий:

git clone https://github.com/tchapi/shairport-sync-ui

Установить фреймворк Qt:

sudo apt-get install qt4-default

И скомпилировать его из исходников:

cd shairport-sync-ui
./compile.sh && ./run-gui.sh

А затем добавить в автозагрузку, отредактировав файл конфигурации:

sudo nano ~/.config/lxsession/LXDE-pi/autostart

И внеся в него следующую строку перед строкой @screensaver:

@/home/pi/shairport-sync-ui/build/release/shairport-sync-ui

А затем отредактировать конфигурацию shairport:

sudo nano /etc/shairport-sync.conf

Найдя в файле строки:

metadata =
{
// enabled = "no";
// include_cover_art = "no";
}

И заменив их на:

metadata =
{
 enabled = "yes";
 include_cover_art = "yes";
}

Установка и настройка AirPlay-приемника на Raspberry Pi 3

Вот так выглядит графический интерфейс. Если запустить воспроизведение, то в нем должны появиться названия композиции и альбома, имя исполнителя и обложка. Но у меня что-то пошло не так, и при старте воспроизведения интерфейс вылетает (на само воспроизведение это не влияет).

Возможно нужно еще покопаться в конфигурации, дополню статью если найду рабочее решение.

Заключение

Использование Shairport Sync позволяет превратить любую колонку в сетевую, поддерживающую протокол AirPlay. Особенно полезным это окажется если в наличии имеется качественная, но старая акустика без смарт-функций, которую хочется подружить с современной техникой.

В статье приведен пример установки Shairport Sync на Raspberry Pi 3, но аналогичным способом программу можно установить и на любой другой одноплатный компьютер, например, на более дешевый и компактный Orange Pi Zero.

Raspberry Pi 3B (английская сборка)в интернет-магазине GearBest Raspberry Pi 3B (китайская сборка)в интернет-магазине GearBest

Автор статьи:
Дмитрий
Руководитель отдела в IT-компании. Веду этот блог с 2013 года, пишу о гаджетах и домашней автоматизации, обозреваю одноплатные компьютеры, неспешно собираю «умный дом».

23 комментария на «Raspberry Pi 3. Установка и настройка AirPlay-приемника»

  1. Привет.
    А проблем с «заиканиями» и «исчезновением» малинки из сети нет?
    Настраивал данную связку пару лет назад, но нормально слушать не получалось.
    Грешил на сеть, но потом пробовал транслировать на устройство, которое из коробки поддерживает AirPlay и таких проблем не фиксировал. Сейчас сижу на ChromeCast Audio — по началу тоже были непонятные проблемы, но решились заменой маршрутизатора в сети.

    • Привет, заиканий при Ethernet-подключении вроде не замечал. А по Wi-Fi иногда даже SSH-соединение притормаживает, встроенный адаптер не очень хороший.

      По поводу «исчезновений» — чтобы малина прям пропадала и не появлялась такого не было. Но бывает, что айфон ищет ее 2-3 секунды. На колонке Xiaomi с поддержкой AirPlay из коробки так же бывает, судя по всему это вариант нормы.

  2. Всё очень подробно и предельно понятно, спасибо большое!
    Одно замечание: файл /etc/network/interfaces изменён в версии прошивки 4.14.39-v7+ #1112
    Там нет строки «iface wlan0 inet manual»

  3. Спасибо! Делал это упражнение, но тогда меня не устроила рассинхронизация воспроизведения на источнике и на колонке. Для музыки это неважно, а вот для фильмов — очень. И в тот раз я не смог корректно скомпенсировать эту задержку на уровне настроек delay. Сейчас разработчик пишет про некое улучшение синхронизации. Так ли это?

    • Я пробовал воспроизводить только музыку, звуковую дорожку фильмов по AirPlay транслировать не пробовал.

      Посмотрю в свободное время и отпишусь в комментариях как обстоит дело с синхронизацией.

  4. Приветствую!
    Посоветуйте как грамотно оставить подключение pi3 к интернету по кабелю, отключить wi-fi на ней, но чтоб Air-play продолжал работать? (по совету из статьи «(к слову, при возможности лучше подключать кабелем по Ethernet – стабильнее будет работать)»). Почему-то был уверен, что для эир-плея необходим активный вай-фай на устройстве??)
    Заранее спасибо!

    • Добрый день. Так а в чем трудности? Можно просто отключить Wi-Fi адаптер в настройках Raspbian, тогда при подсоединении Ethernet-кабеля микрокомпьтер сразу подключится по нему к локальной сети.

  5. Здравствуйте! Это по первой версии AirPlay работает или по второй?!
    Если по первой, о не актуально. Так, как во второй, устройства интегрируются в приложение дом и имеют возможность голосового управления. При наличии подписки музыки, можно просто голосом ставить любую музыку или ту, которая в библиотеке. Что несравненно удобнее, поиска и тыкания пальцем.

    • Здравствуйте, тут про первую версию AirPlay.

      Поддержку AirPlay 2 можно сделать при помощи Logitech Media Server и плагина ShairTunes2, но сам я еще не пробовал.

  6. подойдет rpi zero w ?
    есть у нее вывод звука аналогового?
    там нет lan, как настраивать подключение к wifi? т.е. как подключиться первый раз по ssh??

    • как подключиться первый раз по ssh??

      Кинуть в корневой каталог microSD-карточки с системой пустой файл ssh (без расширения) и файл wpa_supplicant.conf с таким содержанием:

      network={
      ssid=»НАЗВАНИЕ ТОЧКИ ДОСТУПА»
      psk=»ПАРОЛЬ»
      }

      Если сразу не подключится к Wi-Fi, то добавить еще строчку country=RU внутри фигурных скобок

    • есть у нее вывод звука аналогового?

      На этот пункт сразу забыл ответить. Аналогового выхода у Zero W нет, только HDMI. Любо подключение внешней звуковой карты (USB, GPIO).

  7. Спасибо за статью! Получилось! А можно ли нагрузить устройство air play на raspberry 3b еще и функцией Time Capsule совместно с воспроизведением?

      • Спасибо за ответ! Понимаю, что не быстро. С другой стороны никуда не спешу, и Time Capsule с AirPlay было очень удобным устройством) Не сложно дописать Вашу полезную статью? Уверен, людям будет полезно!

  8. Здравствйте, как удалить графическую орболочку, она увела в бл.к-аут мою систему, я юзаю Пи для множества задач и просто хотел сервер поднять, но не знал, что UI полностью заполнить мне скрин черным, я могу вызвать только терминал по хоткею, что написать, что бы полностью вернуть все как было?

    Спасибо.

    • Добрый день. Нужно отключить автозапуск, отредактировав конфиг:

      sudo nano ~/.config/lxsession/LXDE-pi/autostart

      И удалив из него добавленную строку:

      @/home/pi/shairport-sync-ui/build/release/shairport-sync-ui

      Т.е. выполнить обратное действие тому, что было описано в статье.

      • Я удалял, не помогло, кстати, в этом файле было вообще пусто и никакой строки @screensaver не было, как по инструкции. Еще есть варианты, почему у меня в Распбиан пропала оболочка рабочего стола?

  9. Добрый день. Попробовал, и все получилось. Спасибо за интересный и подробный рассказ. Но у меня тоже малинка заикается.
    Подскажите, пожалуйста, какими командами все то, что я установил, теперь снести, чтобы следов не осталось?

    • При сборке приложения из исходников чтобы следов гарантированно не осталось надо делать бэкап перед установкой и откатываться на него. Прямо все вычистить не всегда может получиться.

      Но чтобы просто удалить установленное нужно выполнить команды:

      sudo apt-get remove build-essential git autoconf automake libtool libdaemon-dev libasound2-dev libpopt-dev libconfig-dev avahi-daemon libavahi-client-dev libssl-dev
      
      sudo systemctl stop shairport-sync
      sudo systemctl disable shairport-sync
      cd shairport-sync && sudo make uninstall
  10. Как не крутил. на голой системе не смог добиться громкости. Еле слышно. При этом плагин Spotyfy для НА прекрасно громко отдает звук. Нет ли идей? Весь конфигурации перелопатил.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

[Хамство, оскорбления и попытки крауд-маркетинга будут удалены]