Contexte: j'utilise mon casque Bluetooth comme sortie audio. J'ai réussi à le faire fonctionner grâce à la longue liste d'instructions sur la documentation de la communauté BluetoothHeadset , et j'ai automatisé le processus d'activation du casque comme sortie audio par défaut dans un script, grâce à une autre question .
Cependant, étant donné que j'utilise le casque Bluetooth avec mon téléphone et mon ordinateur (et que le casque ne prend pas en charge deux connexions d'entrée) afin que le téléphone ne "vole" pas la connexion lorsque le combiné est allumé, je force le casque à mode découverte lors de la connexion à l'ordinateur (le téléphone peut s'y connecter automatiquement).
Donc, même si le casque est appairé correctement et se connecterait automatiquement dans un scénario "normal", je dois toujours utiliser la petite icône Bluetooth dans la zone de notification pour me connecter réellement à mon appareil (voir capture d'écran).
Ce que je veux éviter: Cette interface graphique pour la connexion à un appareil Bluetooth connu et couplé :
Ce que je veux à la place: je voudrais que le bluetooth fasse exactement ce que fait le clic sur l'élément de connexion dans l'interface graphique, uniquement en utilisant la ligne de commande. Je souhaite utiliser la ligne de commande pour pouvoir créer un seul raccourci clavier pour l'action et je n'aurais pas besoin de naviguer dans l'interface graphique à chaque fois que je souhaite établir une connexion avec l'appareil.
La question: comment puis-je tenter de me connecter à un périphérique Bluetooth spécifique, connu et couplé à partir de la ligne de commande?
Autre question: comment savoir si la connexion a réussi ou non?
la source
Réponses:
Démon Bluetooth
Dans l'installation par défaut, un démon ( bluetoothd ) s'exécute en arrière-plan (exécuté à partir du fichier
/etc/init.d/bluetooth
). Ce démon prend soin de reconnaître et de se connecter aux périphériques Bluetooth connus et peut être configuré avec les fichiers de configuration dans/etc/bluetooth
. Pour la connexion automatique d'un casque, la ligne suivanteaudio.conf
doit être décommentée (supprimer#
):Pour redémarrer le type de démon
sudo /etc/init.d/bluetooth restart
.Remarque: L' utilisation de l'outil de ligne de commande
sudo hcitool cc <MAC-Adress>
n'a pas conduit à une connexion stable à un périphérique connu dans l'environnement de test ici lorsque le démon était en cours d'exécution.DBus
Afin de connecter un casque déconnecté mais physiquement présent et couplé, nous pouvons utiliser D-Bus à partir d'un script. Voici un exemple en python:
Dans le cas où nous avons plus d'un appareil Bluetooth, nous devrons
devicePath
bien sûr l'adapter de manière appropriée. L'exemple ci-dessus connectera aHeadset
. Modifiez l'interface avec un protocole différent pour tout autre service (par exempleAudioSink
).Pulseaudio
Si vous connaissez l'adresse MAC de votre appareil Bluetooth, vous pouvez le connecter en tant que récepteur de sortie pour pulseaudio en:
Où xx_xx_xx_xx_xx_xx est l'adresse MAC (remplacez ':' par '_' pour que pulseaudio le reconnaisse).
Voir aussi cette réponse pour plus de détails.
la source
Sink bluez_sink.xx_xx_xx_xx_xx_xx does not exist.
essayé qu'en majuscules et en minuscules.bt
oublue
n'est répertorié danspacmd list-sinks
. (Il ne rapporte qu'un seul évier disponible.)J'utilise ce script pour connecter mon périphérique audio Bluetooth. Si votre casque est déjà couplé, vous devriez pouvoir connecter votre casque de la même manière en utilisant org.bluez.Headset.Connect / Disconnect à la place de org.bluez.Audiosink.Connect / Disconnect .
HTH!
la source
16.04
, merci! d'autres, n'oubliez pas de passer l'on
option au script!J'utilise i3 comme gestionnaire de fenêtres, je n'ai donc pas l'icône de plateau Bluetooth disponible. Pour une raison quelconque, le bouton de vérification dans les paramètres d'unité n'est pas sensible et j'ai donc besoin d'un moyen de le faire de temps en temps lorsque mes écouteurs ne se connectent pas.
Il semble que cela
bluez
ait changé leur API dbus . La réponse utilisantorg.bluez.Manager
ne semble plus fonctionner. Au lieu de cela, il est recommandé d'utiliserObjectManager
.Voici un script python mis à jour qui connectera le premier casque Bluetooth non connecté qu'il trouve (probablement la liste comprend tous les appareils couplés?):
cet exemple, comme l'autre exemple sur ce fil, utilise le
dbus
package python. Sur Ubuntu 16.04, j'ai installé ceci viaapt-get install python-dbus
.Si vous souhaitez correspondre à d'autres critères, ce document apparaît pour afficher une liste de propriétés pouvant être interrogées via dbus.
J'ai ce script enregistré dans
~/.local/bin/bt-connect-headset
lequel est sur monPATH
afin que je puisse l'exécuter à partir du lanceur i3. Rendez-le exécutable (chmod +x bt-connect-headset
) si vous prévoyez de l'utiliser comme commande.Ce script n'a été testé que sur un Ubuntu 16.04 à jour au 28/09/2018.
la source
2360344
au lieu de0x240404
.Disconnect()
méthode. Je ne l'ai pas essayé, mais c'est probablement une valeur sûre;).first unconnected bluetooth headset
: utilisera-t-il toujours le casque (s'il est alimenté) avant un autre appareil comme les haut-parleurs Bluetooth (peu importe la position dans la liste)? C'est ce qui se passe dans mon cas. - De plus, pour me déconnecter, je ne peux pas le faire en changeant simplement la dernière ligne enadapter.Disconnect()
.)Après avoir essayé certains des éléments ci-dessus (les scripts ne fonctionnaient pas pour moi), j'ai trouvé la solution suivante.
Découvrez d'abord l'adresse MAC de l'appareil auquel vous souhaitez vous connecter
ceci entrera dans un shell et listera tous les appareils disponibles avec leur adresse. ("quitter" pour quitter le shell et revenir à l'invite)
Connectez-vous ensuite au périphérique Bluetooth XX: XX: XX: XX: XX: XX:
Déconnecter
cherchait depuis un bon moment - rien ne semblait fonctionner, je me sentais tellement soulagé quand je l'ai découvert. Je pensais que d'autres voudraient aussi le savoir. :))
la source
~$ bluetoothctl Agent registered [UE BOOM 2]#
. Alorsdisconnect "UE BOOM 2" Device UE BOOM 2 not available
.bluetoothctl
? Vous devez alimenter les commandes avec l'adresse MAC de l'appareil - qui est la combinaison de valeurs HEX au format XX: XX: XX: XX: XX: XX, où X est soit une lettre soit un chiffre.echo -e 'connect CC:AF:78:AF:59:03' | bluetoothctl
j'obtiens:Agent registered [bluetooth]# connect CC:AF:78:AF:59:03 Device CC:AF:78:AF:59:03 not available