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

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

МодельАрхитектура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/deployment/raspberry-pi/install.sh | bash

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

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

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

    • установите актуальную Raspberry Pi OS

    • установите Docker

    • установите BlueZ-стек и разблокируйте радио (на свежих образах Raspberry Pi OS Lite, особенно Trixie, Bluetooth часто soft-blocked или bluetoothd отключён):

      Окно терминала
      sudo apt update && sudo apt install -y bluez bluez-tools rfkill
      sudo rfkill unblock bluetooth
      sudo systemctl enable --now bluetooth
    • выполните pairing колонки на хосте через bluetoothctl

  2. Запустите pre-flight check

    Окно терминала
    curl -sSL https://raw.githubusercontent.com/trudenboy/sendspin-bt-bridge/main/deployment/raspberry-pi/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

Предпочитайте 5 GHz WiFi при использовании USB BT-донгла

Заголовок раздела «Предпочитайте 5 GHz WiFi при использовании USB BT-донгла»

Если вы запускаете несколько колонок с Pi 4 / Pi 5 через USB Bluetooth-донгл, подключайте хост к 5 GHz WiFi-сети, а не к 2.4 GHz. Встроенный WiFi Pi делит ISM-диапазон 2.4 GHz с Bluetooth, и на 2.4 GHz-линке оба радио конкурируют за один и тот же эфир — это проявляется как растущий счётчик Tx excessive retries в iwconfig, провалы звука и зависания D-Bus, вызванные блокировкой BlueZ. Переключение соединения на 5 GHz, как правило, снимает конкуренцию:

Окно терминала
nmcli connection modify "<имя-вашей-wifi>" wifi.band a
nmcli connection up "<имя-вашей-wifi>"

Если хост обязан оставаться на 2.4 GHz (старый роутер, ограничения по дальности), рассмотрите подключение через Ethernet. Источник этой рекомендации — отчёт сообщества #212; полная диагностика — в разделе Troubleshooting → Звук рассыпается и D-Bus подвисает на Raspberry Pi.

  • network_mode: host обязателен для управления Bluetooth и автообнаружения Music Assistant.
  • Raspberry Pi OS Bookworm по умолчанию использует PipeWire с PulseAudio-совместимостью; bridge работает и с PipeWire, и с PulseAudio.
  • Изменения устройств, адаптеров, WEB_PORT, BASE_LISTEN_PORT и настроек подключения к Music Assistant требуют перезапуска контейнера.