1. Установи PipeWire и WirePlumber:
sudo apt install pipewire pipewire-audio-client-libraries wireplumber libspa-0.2-bluetooth
sudo apt install wireplumber pipewire-audio pipewire-pulse bluez
2. Отключи PulseAudio:
systemctl --user --now disable pulseaudio.service pulseaudio.socket
3. Запусти PipeWire вручную:
systemctl --user daemon-reexec systemctl --user start pipewire pipewire-pulse wireplumber
Если всё ок:
pactl info
→ Должно отразиться Server Name: PulseAudio (on PipeWire ...)
4. Подключи колонку:
bluetoothctl power on connect D4:35:38:33:0D:B9 trust D4:35:38:33:0D:B9
Через 5 секунд:
pactl list short sinks
Должен появиться bluez_output... — и TTS из Home Assistant будет работать.
2. Проверь, что WirePlumber грузит bluetooth-политику
ls /usr/share/wireplumber/bluetooth.lua.d/
→ должен быть файл 50-bluez-config.lua или подобный.
3. Проверь поддержку Bluetooth в PipeWire
Создай (или обнови) файл:
mkdir -p ~/.config/wireplumber/main.lua.d/
nano ~/.config/wireplumber/main.lua.d/bluez-monitor-enable.lua
Вставь:
bluez_monitor = {}
bluez_monitor.properties = {
["bluez5.enable-sbc-xq"] = true,
["bluez5.enable-msbc"] = true,
["bluez5.enable-hw-volume"] = true,
["bluez5.roles"] = "[ a2dp_sink ]"
}
Сохрани и выйди.
Открой (или создай) файл:
sudo nano /etc/systemd/system/bluetooth.service.d/override.conf
И вставь:
[Service]
ExecStart=
ExecStart=/usr/sbin/bluetoothd --noplugin=sap
После этого:
sudo systemctl daemon-reexec
sudo systemctl restart bluetooth
4. Перезапусти WirePlumber
systemctl --user restart wireplumber
5. Переподключи колонку
bluetoothctl disconnect D4:35:38:33:0D:B9
bluetoothctl connect D4:35:38:33:0D:B9
6. Проверь карты и sink'и
pactl list short cards
pactl list short sinks
Ожидаем bluez_output....
2. 🔧 Сделать колонку устройством по умолчанию
Дальнейшие шаги
Установи A2DP-профиль (если не установлен):
bluetoothctl connect D4:35:38:33:0D:B9
pactl set-card-profile bluez_card.D4_35_38_33_0D_B9 a2dp-sink
Это нужно для качественного звука. Без этого может быть headset-head-unit, который даёт только низкокачественный звук.
- Сделай колонку выходом по умолчанию:
pactl set-default-sink bluez_output.D4_35_38_33_0D_B9.1
- Проверь, работает ли воспроизведение:
paplay /usr/share/sounds/alsa/Front_Center.wav
Если звук воспроизводится через колонку — всё работает.
- Создай systemd unit для автоподключения:
nano ~/.config/systemd/user/bt-autoconnect.service
Вставь следующее:
[Unit]
Description=Автоподключение Bluetooth-колонки
After=bluetooth.target
[Service]
ExecStart=/usr/bin/bluetoothctl connect D4:35:38:33:0D:B9
Restart=on-failure
[Install]
WantedBy=default.target
- Включи сервис:
systemctl --user daemon-reexec
systemctl --user daemon-reload
systemctl --user enable --now bt-autoconnect.service
✅ 2. Установка Bluetooth-колонки как основного sink после подключения
Создаём PipeWire hook:
- Создай скрипт:
mkdir -p ~/.config/pipewire/default-sink
nano ~/.config/pipewire/default-sink/bluetooth-default.sh
- Вставь:
#!/bin/bash
sleep 10 # Подождать, пока колонка появится
pactl set-card-profile bluez_card.D4_35_38_33_0D_B9 a2dp-sink
pactl set-default-sink bluez_output.D4_35_38_33_0D_B9.1
- Сделай исполняемым:
chmod +x ~/.config/pipewire/default-sink/bluetooth-default.sh
- Создай user unit:
nano ~/.config/systemd/user/bluetooth-default-sink.service
[Unit]
Description=Назначить Bluetooth-колонку устройством по умолчанию
After=bt-autoconnect.service
[Service]
Type=oneshot
ExecStart=%h/.config/pipewire/default-sink/bluetooth-default.sh
[Install]
В итоге нормально не работает: перед каким нибудь действием нужно разбудить колонку несколькими командами, пока колонка занята одним, другое неработает. ОТКАЗАЛСЯ.
WantedBy=default.target
- Активируй:
systemctl --user daemon-reload systemctl --user enable --now bluetooth-default-sink.service
Comments powered by CComment