web-dev-qa-db-fra.com

Comment changer de classe de périphérique Bluetooth

J'essaie de changer ma classe d'appareils Bluetooth annoncée d'ordinateur à téléphone, exécutant Ubuntu 12.04. J'ai téléchargé les sources bluez et modifié le fichier main.conf pour changer de ligne.

Class = 0x000100 

à quelque chose d'autre. j'ai utilisé

Class = 0x0c025a 

Ensuite, j'ai exécuté make && make install. Je pense que cela fonctionne bien parce que le fichier /etc/bluetooth/main.conf a été mis à jour avec mes modifications.

Maintenant, le problème est que lorsque j'essaie de me connecter à un périphérique

hcitool cc <bdaddr>

Je vois que je continue de faire de la publicité en utilisant la classe 0x000100 et non 0x0c025a.

Qu'est-ce qui me manque ici pour que ces changements prennent effet?

3
twinPrimesAreEz

Tout d'abord, trouvez le nom de votre interface:

hciconfig

Il devrait vous donner le nom de l'interface, par exemple, hci0.

Étant donné que l'affichage de votre classe d'interface:

hciconfig hci0 class

Cela devrait afficher votre classe d'appareil.

Enfin, avec les privilèges de super utilisateur:

Sudo hciconfig hci0 class 000408

devrait mettre en place une nouvelle classe de votre appareil.

Une référence utile des classes Bluetooth avec des représentations hexadécimales et binaires peut être trouvée ici: http://www.question-defense.com/tools/class-of-device-bluetooth-cod-list-in-binary- and-hex

8
JJW

Vous devez changer le nom de la classe dans le fichier /etc/bluetooth/main.conf.

Class = 0x00041C

Puis redémarrez le service Bluetooth

Sudo service bluetooth restart

Ensuite, éteignez votre bluetooth depuis l’icône du panneau supérieur et allumez-le.

1
Durgesh

Le plugin BlueZ hostname annule les réglages Name et Class dans /etc/bluetooth/main.conf. Suivez ces étapes pour spécifier la classe de périphérique Bluetooth (CoD):

  1. Ignorez le chargement du plug-in hostname lors du démarrage du démon bluetooth en modifiant /lib/systemd/system/bluetooth.service. Exemple:

    Sudo sed -i 's/bluetoothd/bluetoothd \-\-noplugin=hostname/g' /lib/systemd/system/bluetooth.service
    

Vous pouvez également spécifier une liste d'inclusion à l'aide de --plugin=<plugins>. Voir bluetoothd(8) et https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/plugins

  1. Éditez /etc/bluetooth/main.conf et spécifiez Class dans la section Général. Spécifiez également Name si vous voulez autre chose que BlueZ X.YZ:

    [General]
    Class = 0x1c0420
    Name = UbuntuCarAudio
    
  2. Redémarrez ou redémarrez le service Bluetooth pour que les modifications prennent effet:

    Sudo systemctl daemon-reload
    Sudo service bluetooth restart
    
  3. Vérifiez les modifications en exécutant hciconfig -a ou echo 'show' | bluetoothctl. hciconfig -a vous montrera les informations de classe de périphérique (CoD) décodées:

    Name: 'UbuntuCarAudio'
    Class: 0x1c0420
    Service Classes: Rendering, Capturing, Object Transfer
    Device Class: Audio/Video, Car Audio
    
1
Chris Sidi