Oto bardzo szczegółowe wyjaśnienie:
Den3243
Oto rozwiązanie wiersza poleceń:
Najpierw zeskanujmy, sparujmy, zaufaj swojemu urządzeniu z „bluetoothctl”. Aby to zrobić, uruchom to w wierszu polecenia, terminal:
bluetoothctl -a
Powinieneś otrzymać inny wiersz polecenia, taki jak:
[bluetooth]
Przy włączonym głośniku BT wpisz:
scan on
Za chwilę powinieneś zobaczyć dostępne urządzenia BT. Obok urządzenia będzie jego adres MAC, na przykład: 00: AA: 22: BB: 33. Teraz wpisz to:
info <your mac address>
Wyklucz większe i mniejsze niż znaki. To, czego szukasz, to jakieś wcześniejsze skojarzenie z głośnikiem BT. Dowiesz się, że istniało poprzednie skojarzenie, ponieważ bluetoothctl wyświetli informacje o twoim urządzeniu BT. Niektóre z tych informacji dotyczą sparowania i zaufania urządzenia. To jest dobre.
Jeśli bluetoothctl narzeka, że nie ma urządzenia, musimy to skonfigurować w tym momencie. Aby to zrobić, wpisz:
pair <your mac address>
Powinien zostać wyświetlony komunikat o powodzeniu powiązania urządzenia. Teraz zaufajmy naszemu nowemu urządzeniu BT. Wpisz to:
trust <your mac address>
Ponownie powinieneś zobaczyć komunikat o powodzeniu zaufania. Pozwól, że cię uprzedzę. Twoje urządzenie BT może się połączyć, a następnie może nie. Nie bój się, nie chcemy, żeby się połączyło. Śmiało, wyjdźmy z „bluetoothctl”. Aby to zrobić, wpisz:
quit
Teraz nastąpi powrót do wiersza polecenia. W poprzednim poście zasugerowałem utworzenie katalogu skryptów w katalogu domowym. Jeśli nie, zrób to teraz. Wpisz to w wierszu polecenia:
mkdir -p ~/scripts
Naciśnij Enter, a teraz stwórzmy nasz skrypt bash autopair. Wpisz to:
nano ~/scripts/autopair
Wpisz ten kod do skryptu:
#!/bin/bash
bluetoothctl << EOF
connect [enter your MAC add]
EOF
Wyklucz nawiasy!
Teraz naciśnij jednocześnie klawisze CTRL + x, a następnie naciśnij klawisz Enter, aby zapisać skrypt. Musimy sprawić, by był wykonywalny. Aby to zrobić, wpisz:
chmod +x ~/scripts/autopair
Zakładam, że nie używasz zewnętrznych głośników analogowych do gniazda 3,5 mm. Jeśli to prawda, wyłączmy alsa. Aby to zrobić, edytujmy plik w katalogu / boot o nazwie config.txt. Aby to zrobić, wpisz to w swoim terminalu:
sudo nano /boot/config.txt
Przewiń do dołu pliku i poszukaj dwóch wierszy:
# Enable audio (loads snd_bcm2835)
dtparam=audio=on
Umieść (znak funta #) przed wierszem o treści:
dtparam=audio=on
Wygladać jak:
#dtparam=audio=on
Naciśnij klawisze CTRL + x, a następnie naciśnij klawisz Enter, aby zapisać plik.
Zakładam, że masz zainstalowany pulseaudio? Jeśli nie, śmiało i uruchom to polecenie z wiersza poleceń:
sudo apt-get update && sudo apt-get install pulseaudio -y
Dzięki temu otrzymasz bardzo ważny komponent do działania bluetooth! Teraz edytujmy nasz plik .bashrc w naszym katalogu domowym. Wpisz to:
nano ~/.bashrc
Przewiń w dół i dodaj ten wiersz:
pulseaudio --start
Naciśnij CTRL + x, a teraz naciśnij Enter, aby zapisać plik.
OK! Musimy wejść w świat Pythona. Napisałem program w języku Python, który będzie obserwował urządzenie Bluetooth. Krótko mówiąc, aktywuje połączenie między RPi a głośnikiem bluetooth, gdy głośnik bluetooth zostanie włączony. I wzajemnie. Utwórzmy katalog o nazwie python w katalogu domowym Aby to zrobić, wpisz:
mkdir -p ~/python
Teraz stwórzmy plik programu python. Aby to zrobić, wpisz:
nano ~/python/on.py
Wewnątrz tego pliku musimy skopiować i wkleić następujące elementy:
#!/usr/bin/python
#
# Monitor removal of bluetooth reciever
import os
import sys
import subprocess
import time
def blue_it():
status = subprocess.call('ls /dev/input/event0 2>/dev/null', shell=True)
while status == 0:
print("Bluetooth UP")
print(status)
time.sleep(15)
status = subprocess.call('ls /dev/input/event0 2>/dev/null', shell=True)
else:
waiting()
def waiting():
subprocess.call('killall -9 pulseaudio', shell=True)
time.sleep(3)
subprocess.call('pulseaudio --start', shell=True)
time.sleep(2)
status = subprocess.call('ls /dev/input/event0 2>/dev/null', shell=True)
while status == 2:
print("Bluetooth DOWN")
print(status)
subprocess.call('~/scripts/autopair', shell=True)
time.sleep(15)
status = subprocess.call('ls /dev/input/event0 2>/dev/null', shell=True)
else:
blue_it()
blue_it()
Teraz naciśnij CTRL + x, a następnie naciśnij Enter, aby zapisać plik programu Python. Teraz musimy uczynić ten plik wykonywalnym. Aby to zrobić, wpisz:
chmod +x ~/python/on.py
Na koniec dodajmy to do naszego skryptu .bashrc w naszym katalogu domowym:
nano ~/.bashrc
Przewiń do dołu pliku i dodaj te dwa wiersze:
wait
~/python/on.py
Teraz naciśnij CTRL + x, a następnie naciśnij Enter, aby zapisać. Włącz głośnik bluetooth i uruchom ponownie Raspberry Pi.
Powodzenia!
-nitrolinux
Odkryłem, że istnieją aktualne problemy z pulseaudio5, szczególnie jeśli chodzi o odtwarzanie dźwięku przez bluetooth. Jako taki proponuję, aby zamiast debugować te, kiedy się pojawią, wystarczy użyć PulseAudio6 do tego, czego chcesz.
Stworzyłem repozytorium, które zautomatyzuje wszystko poniżej, więc nie musisz wykonywać całej pracy nóg, ale jeśli nadal chcesz to zrobić sam, kontynuuj poniżej.
Repo: https://github.com/BaReinhard/a2dp_bluetooth
Proces instalacji:
Poczekaj na zakończenie procesu instalacji i uruchom ponownie. Po zakończeniu musisz najpierw sparować, zaufać i podłączyć urządzenie. Po początkowym czasie wystarczy tylko włączyć urządzenie.
Parowanie, zaufanie i łączenie:
-------------------- Pełny przewodnik: --------------------
Kompilowanie PulseAudio 6
Dodaj następujące pliki
/etc/init.d/pulseaudio
/etc/init.d/bluetooth
Włącz nowe usługi init.d i uczyń pliki wykonywalne
Upewnij się, że mamy wszystkie niezbędne moduły
Przejdź do katalogu domowego i zainstaluj json-c ze źródła git (wymagane dla PA6)
Przejdź do katalogu domowego i zainstaluj plik libsndfile ze źródła git
Upewnij się, że wyszukiwarka Bluetooth wyszukuje (
sudo hciconfig hci0 piscan
jest przestarzała)Przejdź do katalogu domowego i zainstaluj PulseAudio 6 ze źródła git
Upewnij się, że puls znajduje się we wszystkich niezbędnych grupach
Zaktualizuj
/etc/pulse/system.pa
i/etc/pulse/daemon.conf
wygląda następująco:/etc/pulse/system.pa
/etc/pulse/daemon.conf
Skonfiguruj regułę udev
Edytuj
/etc/udev/rules.d/99-com.rules
i dodaj następujące dwa wiersze:Stwórz
/usr/local/bin/bluez-udev
/ usr / local / bin / bluez-udev
Upewnij się, że bluez-udev jest wykonywalny
Podsumowanie
Co się tutaj robi?
źródło
Czy próbowałeś utworzyć skrypt Bash, który używa hcitool do łączenia?
Dodaj prawa do pliku wykonywalnego, a następnie dodaj go do crona (możesz wybrać w dowolnym momencie).
Działa to dla mnie, gdy próbowałem połączyć się z klawiaturą Bluetooth. Nie jestem pewien, czy to zadziała dla głośnika (nie jestem pewien, czy to inny protokół). Mam nadzieję że to pomoże!
źródło
znalazłem to jeszcze lepiej
źródło