Previous: , Up: Nastavenie systému   [Contents][Index]


3.13 Hudobný server so zvukom cez Bluetooth

MPD, démon hudobného prehrávača, je pružná serverová aplikácia na prehrávanie hudby. Klientske programy na rôznych strojoch na sieti — mobilný telefón, prenosný počítač, stolný počítač — sa k nej môžu pripojiť a ovládať prehrávanie zvukových súborov z vašej miestnej hudobnej zbierky. MPD číta zvukové súbory a prehráva ich na jednom alebo viacerých výstupoch.

Ak nie je nastavené inak, MPD prehráva na predvolenom zvukovom zariadení. V nižšie uvedenom príklade to spravíme trochu zaujímavejšie a nastavíme si bezobrazovkový hudobný server. Nepoužijeme grafické používateľské rozhranie, démona Pulseaudio ani miestny zvukový výstup. Namiesto toho nastavíme MPD s dvomi výstupmi: s bluetooth reproduktorom a webovým serverom poskytujúcim zvukové toky ľubovoľnému prehrávaču hudby.

Nastavenie Bluetooth býva otravné. Budete musieť spárovať vaše Bluetooth zariadenie a zabezpečiť, aby sa po zapnutí samo pripájalo. Systémová Bluetooth služba vrátená funkciou bluetooth-service poskytuje podklady potrebné pre toto nastavenie.

Znovunastavte váš systém s aspoň týmito službami a balíkmi:

(operating-system
  ;; …
  (packages (cons* bluez bluez-alsa
                   %base-packages))
  (services
   ;; …
   (dbus-service #:services (list bluez-alsa))
   (bluetooth-service #:auto-enable? #t)))

Spustite službu bluetooth a zistite Bluetooth zariadenia pomocou bluetoothctl. Pokúste sa stotožniť váš Bluetooth reproduktor a vyberte jeho označenie z výsledného zoznamu zariadení, ktorý je nepochybne plný rôznych hračičiek vašich susedov. Toto je potrebné urobiť iba raz:

$ bluetoothctl 
[NEW] Controller 00:11:22:33:95:7F BlueZ 5.40 [default]

[bluetooth]# power on
[bluetooth]# Changing power on succeeded

[bluetooth]# agent on
[bluetooth]# Agent registered

[bluetooth]# default-agent
[bluetooth]# Default agent request successful

[bluetooth]# scan on
[bluetooth]# Discovery started
[CHG] Controller 00:11:22:33:95:7F Discovering: yes
[NEW] Device AA:BB:CC:A4:AA:CD Môj Bluetooth reproduktor
[NEW] Device 44:44:FF:2A:20:DC TV môjho suseda
…

[bluetooth]# pair AA:BB:CC:A4:AA:CD
Attempting to pair with AA:BB:CC:A4:AA:CD
[CHG] Device AA:BB:CC:A4:AA:CD Connected: yes

[My Bluetooth Speaker]# [CHG] Device AA:BB:CC:A4:AA:CD UUIDs: 0000110b-0000-1000-8000-00xxxxxxxxxx
[CHG] Device AA:BB:CC:A4:AA:CD UUIDs: 0000110c-0000-1000-8000-00xxxxxxxxxx
[CHG] Device AA:BB:CC:A4:AA:CD UUIDs: 0000110e-0000-1000-8000-00xxxxxxxxxx
[CHG] Device AA:BB:CC:A4:AA:CD Paired: yes
Pairing successful

[CHG] Device AA:BB:CC:A4:AA:CD Connected: no

[bluetooth]# 
[bluetooth]# trust AA:BB:CC:A4:AA:CD
[bluetooth]# [CHG] Device AA:BB:CC:A4:AA:CD Trusted: yes
Changing AA:BB:CC:A4:AA:CD trust succeeded

[bluetooth]# 
[bluetooth]# connect AA:BB:CC:A4:AA:CD
Attempting to connect to AA:BB:CC:A4:AA:CD
[bluetooth]# [CHG] Device AA:BB:CC:A4:AA:CD RSSI: -63
[CHG] Device AA:BB:CC:A4:AA:CD Connected: yes
Connection successful

[My Bluetooth Speaker]# scan off
[CHG] Device AA:BB:CC:A4:AA:CD RSSI is nil
Discovery stopped
[CHG] Controller 00:11:22:33:95:7F Discovering: no

Blahoželáme, už sa môžete samočinne pripojiť k vášmu Bluetooth reproduktoru!

Teraz je čas nastaviť ALSA na používanie Bluetooth modulu bluealsa, aby ste mohli určiť ALSA pcm zariadenie zodpovedajúce vášmu Bluetooth reproduktoru. Pre bezobrazovkový server je použitie bluealsa s pevne určeným Bluetooth zariadením pravdepodobne jednoduchšie ako nastavenie Pulseaudia a prepínania tokov. ALSA nastavíme vytvorením vlastného nastavenia alsa-configuration pre druh alsa-service-type. Nastavenie zadá bluealsa pcm druhu z modulu bluealsa poskytovaného balíkom bluez-alsa a potom určí pcm zariadenie daného druhu pre váš Bluetooth reproduktor.

Už zostáva len nastaviť MPD tak, aby odosielal zvukové údaje na toto ALSA zariadenie. Pridáme tiež podvojný MPD výstup, ktorý sprístupní práve prehrávané zvukové súbory ako tok cez webový server na koncovom bode 8080. Ak je zvukový tok dostupný, zariadenia na sieti ho môžu počúvať pripojením ľubovoľného hudobného prehrávača ku koncovému bodu 8080 HTTP servera nezávisle od stavu Bluetooth reproduktora.

Nasleduje náčrt zadania operating-system, ktoré by malo umožniť vyššie uvedené úlohy:

(use-modules (gnu))
(use-service-modules audio dbus sound #;… etc)
(use-package-modules audio linux #;… etc)
(operating-system
  ;; …
  (packages (cons* bluez bluez-alsa
                   %base-packages))
  (services
   ;; …
   (service mpd-service-type
            (mpd-configuration
             (user "vase-pouzivatelske-meno")
             (music-dir "/cesta/k/vašej/hudbe")
             (address "192.168.178.20")
             (outputs (list (mpd-output
                             (type "alsa")
                             (name "MPD")
                             (extra-options
                              ;; Použite rovnaký názov ako
                              ;; v nižšie uvedenom nastavení ALSA.
                              '((device . "pcm.btspeaker"))))
                            (mpd-output
                             (type "httpd")
                             (name "streaming")
                             (enabled? #false)
                             (always-on? #true)
                             (tags? #true)
                             (mixer-type 'null)
                             (extra-options
                              '((encoder . "vorbis")
                                (port    . "8080")
                                (bind-to-address . "192.168.178.20")
                                (max-clients . "0") ; bez obmedzení
                                (quality . "5.0")
                                (format  . "44100:16:1"))))))))
   (dbus-service #:services (list bluez-alsa))
   (bluetooth-service #:auto-enable? #t)
   (service alsa-service-type
            (alsa-configuration
             (pulseaudio? #false) ; nepotrebujeme ho!
             (extra-options
              #~(string-append "\
# Zadáva zvukové Bluetooth zariadenie druhu \"bluealsa\" z modulu bluealsa
pcm_type.bluealsa {
    lib \"" #$(file-append bluez-alsa "/lib/alsa-lib/libasound_module_pcm_bluealsa.so") "\"
}

# Zadáva overovacie zariadenie druhu \"bluealsa\" z rovnakého modulu
ctl_type.bluealsa {
    lib \"" #$(file-append bluez-alsa "/lib/alsa-lib/libasound_module_ctl_bluealsa.so") "\"
}

# Určuje zvukové Bluetooth zariadenie.
pcm.btspeaker {
    type bluealsa
    device \"AA:BB:CC:A4:AA:CD\" # jedinečné označenie zariadenia
    profile \"a2dp\"
}

# Určuje súvisiaci overovač.
ctl.btspeaker {
    type bluealsa
}
"))))))

Užite si hudbu s MPD klientom podľa vlastného výberu alebo s hudobným prehrávačom schopným prijímať zvukové toky cez HTTP!


Previous: Nastavenia NGINX a Lua, Up: Nastavenie systému   [Contents][Index]