Table of Contents

Raspberry Pi définir la classe du bluetooth

Les instructions ci dessous sont valides et testés pour différentes version de Rasbian (notamment avant et après la sortie du Raspberry Pi 3 avec le Bluetooth intégré). Il et possibles que certaines soit superflues dans certaines configurations mais en tout cas, elles ne sont pas gênantes. Cette manipulation permet notamment de forcer le Raspberry Pi à ce comporter comme un périphérique A2DP afin par exemple de se fabrique une enceinte bluetooth portable ou un système pour ajouter une connectivité Bluetooth à un vieil autoradio FM. 8-) (voir article sur le site du GNU)

A la main

En utilisant hciconfig (présent sur toutes les version de Raspbian) :

Pour avoir le nom de l'interface bluetooth (en général hci0)

hciconfig status

Pour connaître la classe actuelle :

hciconfig hci0 class

Pour fixer une classe :

sudo hciconfig hci0 class 0x20041C

Par exemple pour imiter un casque audio bluetooth. Le 41C indique que le système est un récepteur bluetooth (commun à tout les appareils possédant cette fonctionnalités) Le préfixe 200 permet de faire correspondre la classe à une classe reconnue par android celle des casques audio bluetooth (sinon android reconnaîtra votre raspberry pi comme un périphérique android quelconque). Voir http://bluetooth-pentest.narod.ru/software/bluetooth_class_of_device-service_generator.html pour générer les classes Bluetooth en fonction de ce que vous voulez faire.

Automatiquement

Il existe quatre endroits ou la classe du bluetooth est définie. Je n'ai d’ailleurs pas trouvé d'explication satisfaisante à cette multiplicité 8-O. Le fichier le plus important à mon sens (surtout pour les distrib avant 2016)

/etc/bluetooth/audio.conf

[General]
Class = 0x20041C
Enable = Source,Sink,Media,Socket



/etc/bluetooth/main.conf

[General]
Name = PIduGNU
Class = 0x20041C



Et pour finir, /var/lib/bluetooth/<bluetooth mac address>/config

name PIduGNU
class 0x20041C

et, /var/lib/bluetooth/<bluetooth mac address>/settings

[General]
Class=0x20041C

En cas de problème

Sur certaines versions de Raspbian, la spécification de la classe Bluetooth dans les fichiers précédents ne marche pas bien à cause d'une erreur dans le script de démarrage start-pulseaudio-x11. Je ne sais pas comment corriger ce problème mais une solution de contournement consiste à ajouter dans le /etc/rc.local :

sudo hciconfig hci0 class 0x20041C

Sinon peut aussi passer sous ARMbian ou Arch.