Cette page propose de vous aider à utiliser le système d'exploitation Ubuntu pour communiquer avec un appareil bluetooth . Vous pouvez aussi lire la documentation officielle disponible dans le centre d'aide.
Voir la page Bluetooth : matériel pris en charge.
Les paquets nécessaires au fonctionnement du Bluetooth sont installés par défaut dans Ubuntu. Mais certains appareils peuvent avoir besoin de paquets spécifiques pour être reconnus. En cas de difficulté, voir le chapitre Problèmes connus ou poster sur le forum.
Vous pouvez le faire soit depuis l'ordinateur soit depuis le périphérique. Mais avant de commencer les manipulations, vérifier que le Bluetooth soit bien activé sur le périphérique à appairer.
Une fois le périphérique appairé, Ubuntu gardera en mémoire les informations d'appairage même si le périphérique est déconnecté.
Vous pouvez aussi faire l'appairage depuis "Paramètres systèmes → Matériel → Bluetooth" . Il suffit d'appuyer sur le "+" en bas à gauche
Vous souhaitez envoyer de l'audio sur un périphérique Bluetooth (Casques, enceintes,…) : Rien de plus simple.
Dès que le périphérique audio ainsi appairé sera en service et "visible", la connexion audio basculera automatiquement.
Pour une oreillette Bluetooth voir cette page dédiée.
Pour appairer et utiliser une imprimante via le bluetooth, voir cette page dédiée.
Si votre appareil peut recevoir des fichiers, vous avez plusieurs possibilités:
Les fichiers reçus se placeront automatiquement dans votre dossier "Téléchargements".
Si le périphérique peut être parcouru,
Voir la page sur la gestion du mobile ou encore celle sur Gammu et Wammu.
Voir cette page.
Voir cette page.
Pour jouer par exemple le son de votre mobile sur les hauts parleurs de votre ordinateur, Appairez votre mobile à votre ordinateur (sous Android, vous apercevrez peut-être "Connecté au paramètre audio du média"),
Testé sur Samsung Galaxy Ace (Rom cyanogenmod 7), et Kubuntu 12.10, Samsung S5. Ubuntu 16.04 LTS.
~$ sudo modprobe hid-wiimote ~$ sudo modprobe uinput
bluetoothctl
[bluetooth]# scan on [NEW] Device XX:XX:XX:XX:XX:XX Nintendo RVL-CNT-01-TR
Appuie sur le bouton 1 et 2 simultanément
[bluetooth]# connect XX:XX:XX:XX:XX:XX [CHG] Device XX:XX:XX:XX:XX:XX Connected: yes Connection successful [Nintendo RVL-CNT-01-TR]#
Pour désactiver en permanence le Bluetooth de votre PC:
rfkill block bluetooth
avant la ligne
exit 0
(Si ce fichier n'existait pas déjà, le créer avec les 2 lignes
rfkill block bluetooth exit 0
puis l'enregistrer et le rendre exécutable).
Lors des prochains démarrages, le module Bluetooth ne sera plus chargé (en restant activable à tout moment).
Sous systemd, au lieu d'éditer le fichier /etc/rc.local, vous pouvez utiliser la commande :
sudo systemctl disable bluetooth.service
…pour empêcher le lancement du service Bluetooth au démarrage.
Il sera alors toujours possible de relancer ce service en faisant :
sudo systemctl start bluetooth.service
Pour que le service Bluetooth se lance de nouveau au démarrage, faire :
sudo systemctl enable bluetooth.service
…suivi d'un redémarrage.
Pour désactiver Bluetooth au démarrage (icône grisée) sans arrêter le deamon :
Éditer avec les droits d'administration le fichier /etc/bluetooth/main.conf
tout en bas, changer la ligne :
AutoEnable=true
en
AutoEnable=false
Au prochain démarrage, l'icône blueman sera grisé, il suffit de cliquer dessus pour activer le bluetooth.
Sous Ubuntu Mate, allez dans Centre de contrôle → Personnel → Application au démarrage et décochez la case Applet blueman. Par ailleurs, l'icône du bluetooth a tendance à s'afficher en permanence, même quand il n'y a pas d'adaptateur bluetooth ! La solution précédente ne fonctionne pas, celle-ci supprime l'icône en plus de désactiver le bluetooth au démarrage s'il est disponible.
rfkill permet de connaître les infos sur son périphérique:
rfkill list 1: phy0: Wireless LAN Soft blocked: yes Hard blocked: no 2: hci0: Bluetooth Soft blocked: no Hard blocked: no
Dans l'exemple ci-dessus rfkill détecte une carte wifi désactivée par logiciel (au cas d'espèces car l'utilisateur utilise un accès Ethernet mais c'est un choix de l'utilisateur, rien d'automatique) et un dispositif Blueetooth, hci0. Utilisé avec block ou unblock, rfkill permet d'activer ou désactiver un mode de connexion dès lors qu'il est installé (options possibles : "all", "wifi", "wlan", "bluetooth", "uwb", "ultrawideband", "wimax", "wwan", "gps", "fm" ou "nfc").
La liste des périphériques peut aussi être connue grâce à hcitools. L'option dev permet d'afficher la liste, les informations de configuration sont affichées par hcitools:
hcitool dev Devices: hci0 AA:BB:C1:D2:E3:F4:00 hciconfig -a hci0: Type: BR/EDR Bus: USB BD Address: AA:BB:C1:D2:E3:F4:00 ACL MTU: 2011:4 SCO MTU: 82:4 UP RUNNING PSCAN ISCAN RX bytes:257618 acl:47 sco:0 events:34313 errors:0 TX bytes:31428890 acl:31820 sco:0 commands:2393 errors:0 Features: 0xff 0xfe 0x0f 0xfe 0xdb 0xff 0x7b 0x87 Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 Link policy: RSWITCH HOLD SNIFF Link mode: SLAVE ACCEPT Name: 'Computer' Class: 0x0c0104 Service Classes: Rendering, Capturing Device Class: Computer, Desktop workstation HCI Version: 4.1 (0x7) Revision: 0x100 LMP Version: 4.1 (0x7) Subversion: 0x100 Manufacturer: Intel Corp. (2)
La ligne "UP RUNNING PSCAN ISCAN" indique que le périphérique fonctionne. Si elle est passée à "DOWN", il convient de réactiver le périphérique avec hciconfig (voir ci-dessous).
Les commandes inq et scan de hcitool, ainsi que sdptool et bluetoothctl du paquet Bluez-utils permettent de repérer les informations utiles pour effectuer les actions désirées en ligne de commande.
hcitool inq Inquiring ... AA:B1:C2:D3:E4:F5 clock offset: 0x5c36 class: 0x7a020c 01:B1:C2:45:E4:F5 clock offset: 0x1eb3 class: 0x2a010c 56:B1:AE:45:E4:4B clock offset: 0x7508 class: 0x5a020c 78:1B:00:45:E4:25 clock offset: 0x2d55 class: 0x08043c bluetoothctl [NEW] Controller AA:B1:C2:D3:E4:F5 Computer [default] [NEW] Device 01:B1:C2:45:E4:F5 Téléphone de Caroline [NEW] Device 75:AE:12:CD:F7:E3 Machin Phone [NEW] Device 10:F4:E3:D2:C1:A0 Enceinte active SOUNDBIDULE [NEW] Device 0A:D1:2B:E3:4C:F5 Bluetooth Laser Travel Mouse [bluetooth]# exit [DEL] Controller AA:B1:C2:D3:E4:F5 Computer [default] hcitool scan Scanning ... 14:0C:76:39:20:2B n/a AA:B1:C2:D3:E4:F5 Téléphone de Pierrot 56:B1:AE:45:E4:4B Freebox Player Mini v2 01:B1:C2:45:E4:F5 ANDREA 78:1B:00:45:E4:25 [TV]Samsung LED55 user@computer:~$ sdptool browse 01:B1:C2:45:E4:F5 Browsing 01:B1:C2:45:E4:F5 ... Service Name: Service Discovery Service Description: Publishes services to remote devices Service Provider: Microsoft Service RecHandle: 0x0 Service Class ID List: "SDP Server" (0x1000) Protocol Descriptor List: "L2CAP" (0x0100) PSM: 1 "SDP" (0x0001) Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Browsing 01:B1:C2:45:E4:F5 ... Service Search failed: Invalid argument Service Name: Device ID Service Record Service Description: Device ID Service Record Service RecHandle: 0x10000 Service Class ID List: "PnP Information" (0x1200) Protocol Descriptor List: "L2CAP" (0x0100) PSM: 1 "SDP" (0x0001) Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Browsing 01:B1:C2:45:E4:F5 ... Service Search failed: Invalid argument Service RecHandle: 0x10001 Service Class ID List: "AV Remote Target" (0x110c) Protocol Descriptor List: "L2CAP" (0x0100) PSM: 23 "AVCTP" (0x0017) uint16: 0x0102 Profile Descriptor List: "AV Remote" (0x110e) Version: 0x0103 Service Name: Personal Ad Hoc User Service Service Description: Personal Ad Hoc User Service Service RecHandle: 0x10002 Service Class ID List: "PAN User" (0x1115) Protocol Descriptor List: "L2CAP" (0x0100) PSM: 15 "BNEP" (0x000f) Version: 0x0100 SEQ8: 0 dd 6 Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "PAN User" (0x1115) Version: 0x0100 Service Name: Microsoft Windows Audio Source Service RecHandle: 0x10003 Service Class ID List: "Audio Source" (0x110a) Protocol Descriptor List: "L2CAP" (0x0100) PSM: 25 "AVDTP" (0x0019) uint16: 0x0102 Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "Advanced Audio" (0x110d) Version: 0x0102 Service Name: Voice Gateway Service RecHandle: 0x1001a Service Class ID List: "Handsfree Audio Gateway" (0x111f) "Generic Audio" (0x1203) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 1 Profile Descriptor List: "Handsfree" (0x111e) Version: 0x0105 sdptool browse 56:B1:AE:45:E4:4B Browsing 56:B1:AE:45:E4:4B ... Service Name: Service Discovery Service Description: Publishes services to remote devices Service Provider: Microsoft Service RecHandle: 0x0 Service Class ID List: "SDP Server" (0x1000) Protocol Descriptor List: "L2CAP" (0x0100) PSM: 1 "SDP" (0x0001) Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Browsing 56:B1:AE:45:E4:4B ... Service Search failed: Invalid argument Service Name: Device ID Service Record Service Description: Device ID Service Record Service RecHandle: 0x10000 Service Class ID List: "PnP Information" (0x1200) Protocol Descriptor List: "L2CAP" (0x0100) PSM: 1 "SDP" (0x0001) Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Browsing 56:B1:AE:45:E4:4B ... Service Search failed: Invalid argument Service RecHandle: 0x10001 Service Class ID List: "AV Remote Target" (0x110c) Protocol Descriptor List: "L2CAP" (0x0100) PSM: 23 "AVCTP" (0x0017) uint16: 0x0102 Profile Descriptor List: "AV Remote" (0x110e) Version: 0x0103 Service Name: Personal Ad Hoc User Service Service Description: Personal Ad Hoc User Service Service RecHandle: 0x10002 Service Class ID List: "PAN User" (0x1115) Protocol Descriptor List: "L2CAP" (0x0100) PSM: 15 "BNEP" (0x000f) Version: 0x0100 SEQ8: 0 dd 6 Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "PAN User" (0x1115) Version: 0x0100 Service Name: Microsoft Windows Audio Source Service RecHandle: 0x10003 Service Class ID List: "Audio Source" (0x110a) Protocol Descriptor List: "L2CAP" (0x0100) PSM: 25 "AVDTP" (0x0019) uint16: 0x0102 Language Base Attr List: code_ISO639: 0x656e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "Advanced Audio" (0x110d) Version: 0x0102 Service Name: Voice Gateway Service RecHandle: 0x1001a Service Class ID List: "Handsfree Audio Gateway" (0x111f) "Generic Audio" (0x1203) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 1 Profile Descriptor List: "Handsfree" (0x111e) Version: 0x0105
"help" permet de lister les opérations disponibles:
bluetoothctl [NEW] Controller AA:B1:C2:D3:E4:F5 Computer [default] [NEW] Device 01:B1:C2:45:E4:F5 Téléphone de Caroline [NEW] Device 75:AE:12:CD:F7:E3 Machin Phone [NEW] Device 10:F4:E3:D2:C1:A0 Enceinte active SOUNDBIDULE [NEW] Device 0A:D1:2B:E3:4C:F5 Bluetooth Laser Travel Mouse [bluetooth]# help Available commands: list List available controllers show [ctrl] Controller information select <ctrl> Select default controller devices List available devices paired-devices List paired devices power <on/off> Set controller power pairable <on/off> Set controller pairable mode discoverable <on/off> Set controller discoverable mode agent <on/off/capability> Enable/disable agent with given capability default-agent Set agent as the default one set-scan-filter-uuids [uuid1 uuid2 ...] Set scan filter uuids set-scan-filter-rssi [rssi] Set scan filter rssi, and clears pathloss set-scan-filter-pathloss [pathloss] Set scan filter pathloss, and clears rssi set-scan-filter-transport [transport] Set scan filter transport set-scan-filter-clear Clears discovery filter. scan <on/off> Scan for devices info [dev] Device information pair [dev] Pair with device trust [dev] Trust device untrust [dev] Untrust device block [dev] Block device unblock [dev] Unblock device remove <dev> Remove device connect <dev> Connect device disconnect [dev] Disconnect device list-attributes [dev] List attributes select-attribute <attribute> Select attribute attribute-info [attribute] Select attribute read Read attribute value write <data=[xx xx ...]> Write attribute value notify <on/off> Notify attribute value register-profile <UUID ...> Register profile to connect unregister-profile Unregister profile version Display version quit Quit program [bluetooth]# quit [DEL] Controller AA:B1:C2:D3:E4:F5 Computer [default]
sudo rfkill unblock bluetooth && rfkill list bluetooth
sudo rfkill block all && rfkill list bluetooth
hciconfig hci0 up
hcitool dev
hciconfig
hcitool scan
sudo hcitool info <AdresseMacPériphérique>
hcitool scan Scanning ... 0F:E1:2D:C3:4B:A5 Bluetooth Keyboard
sudo hciconfig hci0 piscan
sudo bluez-simple-agent hci0 0F:E1:2D:C3:4B:A5
RequestPinCode (/org/bluez/14688/hci0/dev_0F_E1_2D_C3_4B_A5) Enter PIN Code: Release New device (/org/bluez/14688/hci0/dev_0F_E1_2D_C3_4B_A5)
sudo bluez-test-device trusted 0F:E1:2D:C3:4B:A5 yes
sudo bluez-test-input connect 0F:E1:2D:C3:4B:A5
[bluetooth]# agent on Agent registered
[bluetooth]# power on Changing power on succeeded
[bluetooth]# scan on Discovery started [CHG] Controller 00:AA:22:BB:33:CC Discovering: yes [NEW] Device 00:AA:22:BB:33:CC unAppareil [CHG] Device 00:AA:22:BB:33:CC LegacyPairing: yes
[bluetooth]# pair 00:AA:22:BB:33:CC Attempting to pair with 00:AA:22:BB:33:CC [CHG] Device 00:AA:22:BB:33:CC Connected: yes [CHG] Device 00:AA:22:BB:33:CC Connected: no [CHG] Device 00:AA:22:BB:33:CC Connected: yes Request PIN code [agent] Enter PIN code: 1111 [CHG] Device 00:AA:22:BB:33:CC Paired: yes Pairing successful [CHG] Device 00:AA:22:BB:33:CCConnected: no [bluetooth]# connect 00:AA:22:BB:33:CC [CHG] Device 00:AA:22:BB:33:CC Connected: yes [bluetooth]# quit
gnome-obex-send -d <AdresseMacpériphérique> <fichier>
bluetooth-sendto --device=<AdresseMacpériphérique> <fichier>
disponible dans le paquet bluez-gnome.
obex_test -b xx:xx:xx:xx:xx:xx 5 Using Bluetooth RFCOMM transport OBEX Interactive test client/server. > c Connect OK! Version: 0x10. Flags: 0x00 > p PUT file (local, remote)> qqpart/repertoire/fichier.jpg unfichier.jpg name=qqpart/repertoire/fichier.jpg, size=31254 Going to send 31254bytes Made some progress... Made some progress... Made some progress... Made some progress... PUT successful! > q
obexftp -b AA:BB:00:11:CC:22 -p fichier.jpg Browsing AA:BB:00:11:CC:22 ... Channel: 5 Connecting...done Sending "fichier.jpg"...\done Disconnecting...done
Après avoir installé les paquets obexftp et openobex :
obexftp -b -l / obexftp -b -l /Photos # lister les fichiers du répertoire /Photos du téléphone
obexftp -b -c /Photos -g file.jpg # télécharger file.jpg qui se trouve dans le répertoire /Photos
obexftp -b -p file.jpg
-b
(bluetooth) peut être suivi de l'adresse mac du périphérique xx:xx:xx:xx:xx:xx
-c <le_chemin_du_dossier>
ex : -c /Photos
-g <le_nom_du_fichier>
le fichier à télécharger
-p <le-nom_du_fichier>
le fichier à uploader
Le montage se fait dans le répertoire de montage <Repertoire>
obexfs -b AA:BB:00:11:CC:22 Répertoire
Lorsque vous affichez la liste des périphériques dans Gnome, le nom qui s'affiche est déterminé par le constructeur. Celui-ci n'est pas forcément parlant (ex : BT4963B). Une simple modification du fichier de configuration du périphérique permet de substituer à ce nom une dénomination plus parlante pour l'utilisateur.
usr@pc:~$ sudo -H gedit /var/lib/bluetooth/XX:XX:XX:XX:XX:XX/YY:YY:YY:YY:YY:YY/info
À l'intérieur du fichier correspondant au périphérique concerné, dans la balise Name, remplacer le nom par défaut par le nom que souhaité (par exemple Name=BT4863B remplacé par Name=CasqueNoir), sauvegarder et quitter. À la prochaine ouverture d'Ubuntu le nouveau nom sera utilisé.
Avant se commencer :
Si l'utilitaire Bluetooth vous indique que le Bluetooth n'est pas activé, dans un terminal saisir la commande suivante :
sudo /etc/init.d/networking restart
ou
sudo service network-manager restart
(Pour plus de détail sur la différence entre ces deux commandes, voir : https://askubuntu.com/questions/230698/how-to-restart-the-networking-service
Puis redémarrez l'ordinateur.
Si votre bluetooth réagit de manière étrange, (par exemple l'erreur : Aucun adaptateur Bluetooth n'a été trouvé. Veuillez en connecter un, sous Kubuntu, en allant dans Configuration système → bluetooth), ou encore si vous n'arrivez plus à désactiver le bluetooth et que votre ordinateur n'est pas détecté :
Pour résoudre ce problème il suffit de lancer
sudo rfkill unblock all sudo hciconfig hci0 up
car l'utilitaire rfkill peut gêner l'utilisation du bluetooth.
Parfois certaines cartes/clés buguent. Pour refaire fonctionner le bluetooth sans redémarrer, il suffit d'ouvrir un terminal et de taper ceci:
sudo /etc/init.d/bluetooth restart
Lorsque le périphérique se déconnecte et se reconnecte à répétition, alors suivez cette procédure.
Déconnectez le périphérique
Éditez ce fichier :
sudo nano /etc/bluetooth/input.conf
Retirez le commentaire de la ligne :
#UserspaceHID=true
afin d'avoir :
UserspaceHID=true
Enregistrez les changements avec Ctrl+O, puis quittez avec Ctrl+X
Redémarrez la machine, puis connectez le périphérique bluetooth.
Il se peut que vous ayez un problème pour scanner les périphériques à proximité, si ce cas se présente, dans un terminal saisir la commande suivante :
sudo hciconfig hci0 reset
Il faudra le faire à chaque branchement de votre clé bluetooth Vous pouvez faire en sorte que cette commande soit exécutée automatiquement au démarrage, mais il faudra démarrer avec la clé insérée et ne pas la brancher à chaud pour que ça serve à quelque chose.
hciconfig hci0 reset
avant la ligne finale
exit 0
Pour pouvoir explorer les fichiers d'un téléphone sous Android, il faut :
Si le volume n'est pas automatiquement basculé, vous avez donc votre dispositif Bluetooth qui joue la musique et vos touches multimédias contrôlent le volume des haut-parleurs de votre ordinateur. Vous pouvez le changer à chaque fois à la main dans les options du son Ubuntu ou alors faire cette petite manipulation qui va basculer automatiquement le contrôle du volume.
load-module module-switch-on-connect
Lorsque vous essayez de changer le mode de votre casque/micro de HSP/HFP (basse qualité mais permet l'enregistrement micro) vers A2DP (haute qualité mais pas d'enregistrement possible) rien ne se passe. Ce bug est recensé ici.
En attendant que ce bug soit réparé vous pouvez le résoudre comme suit :
Par sécurité, commencer par faire une copie des fichiers de configuration modifiés :
sudo cp /etc/bluetooth/audio.conf /etc/bluetooth/audio.conf.bak sudo cp /etc/pulse/default.pa /etc/pulse/default.pa.bak sudo cp /usr/bin/start-pulseaudio-x11 /usr/bin/start-pulseaudio-x11.bak
Ouvrez le fichier /etc/bluetooth/audio.conf avec les droits d'administration, et ajoutez en-dessous de la ligne [General]
les lignes :
Enable=Gateway,Source Master=true Disable=Socket AutoConnect=true [Headset] HFP=true MaxConnected=2 FastConnectable=true
Ouvrez le fichier /etc/pulse/default.pa avec les droits d'administration et commentez la ligne (ajoutez le caractère # au début de la ligne) :
load-module module-bluetooth-discover
Ouvrez le fichier /usr/bin/start-pulseaudio-x11 avec les droits d'administration et à la fin du fichier ajoutez la ligne suivante :
/usr/bin/pactl load-module module-bluetooth-discover
Redémarrez alors l'ordinateur et vous pourrez basculer du mode HSP/HFP au mode A2DP.
Un bug de la version 5.36 (et plus ?) de bluez fait qu'il est impossible d'activer le mode HSP/HFP via pavucontrol (l'interface graphique de configuration de pulseaudio). En regardant dans les logs (cat /var/log/syslog) vous trouvez un message d'erreur au moment où vous activez le bluetooth :
[pulseaudio] module-bluez5-device.c: Refused to switch profile to headset_head_unit: Not connected
Pour résoudre ce problème, il faut : ou bien passer à la version précédente de bluez (la 5.35 fonctionne), ou bien passer à la version suivante ! La version 5.40 présente dans le dépôt expérimental de debian fonctionne.
Il s'agit d'un bug. Une solution est de lancer bluez-simple-agent avant le transfert, par exemple dans le terminal :
bluez-simple-agent
puis de relancer l'envoi du fichier normalement.
Il faut déjà voir les messages d'erreurs via la commande :
sudo systemctl status bluetooth
- si a2dp-sink profile connect failed
apparait,
installer pulseaudio-module-bluetooth, comme indiqué ici : https://askubuntu.com/questions/1172000/a2dp-sink-profile-connect-failed
Dans le terminal taper les commandes :
sudo apt-get install pulseaudio-module-bluetooth sudo killall pulseaudio pulseaudio --start sudo systemctl restart bluetooth
- si Failed to set mode: Blocked through rfkill
apparaît comme ici : https://askubuntu.com/questions/1340713/bluetooth-service-failed-to-set-mode
Dans le terminal taper les commandes :
sudo rfkill unblock bluetooth sudo systemctl stop bluetooth sudo systemctl status bluetooth sudo systemctl restart bluetooth