Делаем AirPlay-станцию из старых колонок

Рассказываем, как мы в CodeX слушаем музыку с телефонов или ноутбуков, не подключая к ним никаких проводов.

Конечно, можно просто купить колонку с Bluetooth или AirPlay, но, если у вас есть обычные старые колонки и Raspberry, то можно создать станцию самим. Мы сделали из Raspberry Pi аудио-ресивер и подключили его к локальной сети по Ethernet-кабелю, а колонки к ней — через обычный AUX.

Для настройки станции будем использовать AirPlay-аудиоплеер Shairport Sync.

Подготовка

Самая важная часть системы — одноплатный компьютер Raspberry Pi. В нашем случае Raspberry Pi 2 Model B. Подойдёт и любая другая версия, к которой при необходимости можно будет подключить 3,5 мм разъём, например, с помощью платы расширения.

Raspberry Pi 2 Model B

Для работы самого микрокомпьютера потребуется microSD-карта объемом от 4 ГБ, на которую необходимо установить операционную систему.

Установка ОС

Процесс установки осуществляется с помощью вашего рабочего компьютера — вставляем карту памяти, скачиваем одну из предложенных систем и с помощью программы Etcher загружаем её образ на карту памяти.

Более подробная инструкция по установке ОС на Raspberry — на официальном сайте.

Подключение по SSH

Чтобы иметь возможность подключаться к Raspberry с рабочего компьютера через терминал, после установки системы вам потребуется создать пустой текстовый файл с названием ssh (иногда ssh.txt) в корневой директории карты памяти.

Теперь подключаем Raspberry к локальной сети (вставляем Ethernet-провод) и включаем питание.

Давайте попробуем подключиться к Raspberry через терминал с другого компьютера. Для начала нужно узнать IP-адрес Raspberry, например, в панели администратора роутера — в разделе подключенных к сети устройств (Devices).

Обычно панель администратора роутера доступна по адресу http://192.168.1.1 или http://192.168.0.1, дефолтные логин и пароль указаны на роутере. Спросите параметры подключения к роутеру у вашего системного администратора.

Устройство Raspberry доступно по адресу 192.168.1.100

Для установки SSH-подключения потребуется найти в интернете стандартные логин и пароль для пользователя системы, которую вы установите на Raspberry.

Пусть IP-адрес — 192.168.1.100, а логин и пароль от ОС — pi / raspberry. Тогда подключиться к станции можно с помощью команды

Установка

Первым делом рекомендуется обновить список репозиториев пакетов и установить все обновления.

sudo apt-get update sudo apt-get upgrade -y

Теперь активируем обновлённый аудио-драйвер.

printf "\n# Set audio output to headphone jack\naudio_pwm_mode=2\n" | sudo tee -a /boot/config.txt

Устанавливаем зависимости для сборки и установки Shairport Sync.

sudo apt install -y \ build-essential \ git \ xmltoman \ autoconf \ automake \ libtool \ libdaemon-dev \ libpopt-dev \ libconfig-dev \ libasound2-dev \ libpulse-dev \ avahi-daemon \ libavahi-client-dev \ libssl-dev \ libsoxr-dev

Загружаем исходные файлы пакета.

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

Настраиваем и подготавливаем пакет к сборке.

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

Теперь приступим к компиляции и установке пакета.

make sudo make install

Остается только активировать автозагрузку и запустить сервис.

sudo systemctl enable shairport-sync.service sudo service shairport-sync start

Настройки Shairport Sync хранятся в файле /etc/shairport-sync.conf.

// Sample Configuration File for Shairport Sync // Commented out settings are generally the defaults, except where noted. // General Settings general = { // name = "%h"; // This means "Hostname" -- see below. This is the name the service will advertise to iTunes. // The default is "Hostname" -- i.e. the machine's hostname with the first letter capitalised (ASCII only.) // You can use the following substitutions: // %h for the hostname, // %H for the Hostname (i.e. with first letter capitalised (ASCII only)), // %v for the version number, e.g. 3.0 and // %V for the full version string, e.g. 3.0-OpenSSL-Avahi-ALSA-soxr-metadata-sysconfdir:/etc // Overall length can not exceed 50 characters. Example: "Shairport Sync %v on %H". ...

Например, можно задать имя, которое поможет идентифицировать этот ресивер. Для этого нужно раскомментировать строку и заполнить параметр name:

name = "CodeX Speaker";

После внесения правок в конфигурационный файл потребуется перезагрузить сервис Shairport Sync.

sudo service shairport-sync restart

Теперь устройства на iOS или macOS могут увидеть колонку в списке доступных аудиовыходов.

Остаётся подключить к Raspberry колонки и наслаждаться беспроводной трансляцией музыки.

Настройка громкости

Изначально громкость звука на Raspberry установлена не на самый максимум. Кому-то этого может не хватать. Давайте установим громкость ОС на 100%, чтобы управлять громкостью воспроизведения можно было только на телефоне или ноутбуке.

Список интерфейсов можно увидеть, выполнив команду amixer controls:

pi@raspberrypi:~ $ amixer controls numid=3,iface=MIXER,name='PCM Playback Route' numid=2,iface=MIXER,name='PCM Playback Switch' numid=1,iface=MIXER,name='PCM Playback Volume' numid=5,iface=PCM,name='IEC958 Playback Con Mask' numid=4,iface=PCM,name='IEC958 Playback Default'

Нас интересует интерфейс PCM Playback Volume. Задаём ему максимальное значение: amixer cset numid=1 100%

pi@raspberrypi:~ $ amixer cset numid=1 100% numid=1,iface=MIXER,name='PCM Playback Volume' ; type=INTEGER,access=rw---R--,values=1,min=-10239,max=400,step=0 : values=400 | dBscale-min=-102.39dB,step=0.01dB,mute=1

Теперь максимальная громкость музыки увеличится.

Надеемся, статья будет полезной. Подписаться на нас можно во «ВКонтакте» или Telegram — там мы делимся опытом и пишем небольшие заметки о веб-разработке.

0
12 комментариев
Написать комментарий...
Nik Luchnikov

vc мимикрирует в habr. Ностальжи..

Ответить
Развернуть ветку
NOXIKI _

Проще Apple TV 3 купить

Ответить
Развернуть ветку
Nik Luchnikov

Вы не поняли, тут удовольствие от процесса. Купить можно все что угодно как вы помните из одного рекламного лозунга.

Ответить
Развернуть ветку
Юрий Б.

Вот именно! Можно взять старую советскую колонку и сделать эйр плей) вот бы ещё время свободное было на это...

Ответить
Развернуть ветку
Nik Luchnikov

DIY для тех у кого много свободного времени :)

Ответить
Развернуть ветку
Роман Вишняков

Ребят, а Spotify Connect ещё как-то таким способом можно подвязать?

Ответить
Развернуть ветку
JÄÄKAAPPI

не пользуюсь spotify, поэтому не могу проверить, но, кажется, это то, что нужно

Ответить
Развернуть ветку
Роман Вишняков

Сделал наконец-то, проверил - работает на ура!

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Nikita Kudryavtsev

sudo amixer cset numid=3 1

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Сергей Чирков

Класс! Времени бы еще побольше или прокрастинации поменьше)

Ответить
Развернуть ветку
PihTa

цап встроенный в пи только говно и звук такой же

Ответить
Развернуть ветку
Dmitry Vyacheslavovich

Приколько получилось) Спасибо!

А можно сделать как на яблочной колонке, чтобы аудиопоток не переключался, а параллельно играл на ноуте и на малинке ?

Ответить
Развернуть ветку
9 комментариев
Раскрывать всегда