Перейти к содержимому

Установка — Raspberry Pi

import { Aside, Steps } from ‘@astrojs/starlight/components’;

МодельАрхитектураDocker-платформаСтатус
Raspberry Pi 5aarch64linux/arm64✅ Рекомендуется
Raspberry Pi 4aarch64linux/arm64✅ Рекомендуется
Raspberry Pi 3 B+armv7llinux/arm/v7⚠️ Лучше для 1–2 колонок
Raspberry Pi Zero 2 Waarch64linux/arm64⚠️ Ограниченная RAM

Самый быстрый путь — one-liner installer:

Окно терминала
curl -sSL https://raw.githubusercontent.com/trudenboy/sendspin-bt-bridge/main/scripts/rpi-install.sh | bash

Он проверяет хост, при необходимости ставит Docker, записывает рабочий Compose-набор и может помочь с Bluetooth-парингом.

После установки веб-интерфейс будет доступен по адресу http://<ip-raspberry-pi>:8080, если вы не меняли WEB_PORT.

  1. Подготовьте хост

    • установите актуальную Raspberry Pi OS
    • установите Docker
    • выполните pairing колонки на хосте через bluetoothctl
  2. Запустите pre-flight check

    Окно терминала
    curl -sSL https://raw.githubusercontent.com/trudenboy/sendspin-bt-bridge/main/scripts/rpi-check.sh | bash
  3. Создайте директорию проекта

    Окно терминала
    mkdir -p ~/sendspin-bt-bridge && cd ~/sendspin-bt-bridge
  4. Создайте .env

    AUDIO_UID=1000
    TZ=Europe/Moscow
    WEB_PORT=8080
    BASE_LISTEN_PORT=8928
  5. Скачайте актуальный Compose-файл

    Окно терминала
    curl -sSL https://raw.githubusercontent.com/trudenboy/sendspin-bt-bridge/main/docker-compose.yml -o docker-compose.yml
    mkdir -p config
    docker compose up -d
  6. Откройте веб-интерфейс

    http://<ip-raspberry-pi>:<WEB_PORT>
  • WEB_PORT меняет прямой listener веб-интерфейса/API на Pi.
  • BASE_LISTEN_PORT меняет базовый блок Sendspin-портов для колонок.
  • Устройства без явного listen_port получают BASE_LISTEN_PORT + индекс_устройства.
  • Для одного устройства можно отдельно задать listen_port и listen_host через веб-интерфейс или /config/config.json.

Пример расширенной записи устройства:

{
"mac": "AA:BB:CC:DD:EE:FF",
"player_name": "Колонка на кухне",
"listen_port": 8935,
"listen_host": "192.168.1.50"
}

listen_host меняет только рекламируемый host/IP плеера и не влияет на bind-адрес внутри контейнера.

Если bridge’ей несколько на одной Pi или в одной сети

Заголовок раздела «Если bridge’ей несколько на одной Pi или в одной сети»

Если вы запускаете несколько bridge-контейнеров или совмещаете Raspberry Pi bridge с другим bridge на том же хосте/в том же network namespace:

  • назначьте каждому bridge свой WEB_PORT
  • назначьте каждому bridge свой BASE_LISTEN_PORT
  • не назначайте одну и ту же Bluetooth-колонку двум работающим bridge
Окно терминала
docker logs -f sendspin-client
curl -s http://localhost:${WEB_PORT:-8080}/api/preflight | python3 -m json.tool
Окно терминала
cd ~/sendspin-bt-bridge
docker compose pull
docker compose up -d
  • network_mode: host обязателен для управления Bluetooth и автообнаружения Music Assistant.
  • Raspberry Pi OS Bookworm по умолчанию использует PipeWire с PulseAudio-совместимостью; bridge работает и с PipeWire, и с PulseAudio.
  • Изменения устройств, адаптеров, WEB_PORT, BASE_LISTEN_PORT и настроек подключения к Music Assistant требуют перезапуска контейнера.