Bonjour, j'ai acheté un dongle bluetooth qui est censé fonctionner sous linux. Pourtant celui ci ne fonctionne pas.
Voici quelques commandes:
install:/home/florian # lsusb
Bus 001 Device 023: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
install:/home/florian # service bluetooth status
* bluetooth.service - Bluetooth service
Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: disable>
Active: active (running) since Tue 2019-12-17 18:23:38 CET; 3 days ago
Docs: man:bluetoothd(8)
Main PID: 1404 (bluetoothd)
Tasks: 1 (limit: 4915)
Memory: 2.2M
CGroup: /system.slice/bluetooth.service
`-1404 /usr/lib/bluetooth/bluetoothd
install:/home/florian # rfkill
ID TYPE DEVICE SOFT HARD
0 wlan phy0 bloqué débloqué
1 bluetooth hci0 débloqué débloqué
3 bluetooth hci1 débloqué débloqué
install:/home/florian # hciconfig hci1 reset
Can't init device hci1: Operation not supported (95)
install:/home/florian # hcidump -i hci1
< HCI Command: Delete Stored Link Key (0x03|0x0012) plen 7
bdaddr 00:00:00:00:00:00 all 1
> HCI Event: Command Complete (0x0e) plen 6
Delete Stored Link Key (0x03|0x0012) ncmd 1
status 0x11 deleted 0
Error: Unsupported Feature or Parameter Value
Bref le problème viendrait du dongle qui informe le noyaux de sa compatibilité avec la fonction Delete Stored Link Key alors qu'il ne l'est pas.
Pourtant dans le fichier btusb.c on trouve bien un mode de compatibilité pour ce genre de dongles:
if (!rp->status) {
if (le16_to_cpu(rp->manufacturer) != 10) {
/* Clear the reset quirk since this is not an actual
* early Bluetooth 1.1 device from CSR.
*/
clear_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);
/* These fake CSR controllers have all a broken
* stored link key handling and so just disable it.
*/
set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY,
&hdev->quirks);
if (id->driver_info & BTUSB_CSR) {
struct usb_device *udev = data->udev;
u16 bcdDevice = le16_to_cpu(udev->descriptor.bcdDevice);
/* Old firmware would otherwise execute USB reset */
if (bcdDevice < 0x117)
set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);
/* Fake CSR devices with broken commands */
if (bcdDevice <= 0x100)
hdev->setup = btusb_setup_csr;
}
J'ai essayé de modifier btusb, et de recompiler ça ne semble pas fonctionner. En fait il semblerait que le mode de compatibilité n'est pas pris en compte sur tumbleweed. Vous avez une idée sur comment faire fonctionner la chose, c'est à dire comment désactiver la commande "Delete Stored Link Key" ?
Merci