Делаем 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
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
Устройство Raspberry доступно по адресу 192.168.1.100

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

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

ssh pi@192.168.1.100

Установка

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

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 могут увидеть колонку в списке доступных аудиовыходов.

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

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

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

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

Изначально громкость звука на 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 — там мы делимся опытом и пишем небольшие заметки о веб-разработке.

3333
12 комментариев

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

11
Ответить

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

2
Ответить

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

3
Ответить

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

Ответить

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

3
Ответить

sudo amixer cset numid=3 1

1
Ответить