Skip to content

Désactiver la carte bluetooth interne d'un ordinateur portable sous Ubuntu 16.04

Linux ne reconnaît pas correctement toutes les cartes Bluetooth des ordinateurs portable. C'est le cas de la carte native de l'ordinateur Asus N750-JV qui présente de nombreuses instabilités sous Ubuntu.

On peut bien entendu, ouvrir la machine et remplacer la carte par une carte compatible. Une solution moins intrusive consiste à utiliser une clé USB Bluetooth comme la König Micro Bluetooth Dongle v4.0. Dans ces conditions, il peut être utile de désactiver la carte d'origine pur être sûr d'utiliser la clé USB.

Voici comme procéder...
D'abord, il faut identifier correctement la carte grâce à la commande : udevadm info -a -p /sys/class/bluetooth/hci0

Sur le N750-JV, on obtient la hiérarchie suivante :

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0/bluetooth/hci0':
KERNEL=="hci0"
SUBSYSTEM=="bluetooth"
DRIVER==""
ATTR{address}=="54:27:1e:18:14:57"
ATTR{name}=="ChromeLinux_24E7"
ATTR{type}=="BR/EDR"

looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0':
KERNELS=="1-5:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="btusb"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bInterfaceClass}=="e0"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bInterfaceProtocol}=="01"
ATTRS{bInterfaceSubClass}=="01"
ATTRS{bNumEndpoints}=="03"
ATTRS{supports_autosuspend}=="1"

looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-5':
KERNELS=="1-5"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="e0"
ATTRS{bDeviceProtocol}=="01"
ATTRS{bDeviceSubClass}=="01"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{bMaxPower}=="100mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 2"
ATTRS{bcdDevice}=="0002"
ATTRS{bmAttributes}=="e0"
ATTRS{busnum}=="1"
ATTRS{configuration}=="BT HCI"
ATTRS{devnum}=="5"
ATTRS{devpath}=="5"
ATTRS{idProduct}=="3402"
ATTRS{idVendor}=="13d3"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="Atheros Communications"
ATTRS{maxchild}=="0"
ATTRS{product}=="Bluetooth USB Host Controller"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="fixed"
ATTRS{serial}=="Alaska Day 2006"
ATTRS{speed}=="12"
ATTRS{urbnum}=="138"
ATTRS{version}==" 1.10"

looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1':
KERNELS=="usb1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{authorized_default}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceProtocol}=="01"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{bMaxPower}=="0mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bcdDevice}=="0402"
ATTRS{bmAttributes}=="e0"
ATTRS{busnum}=="1"
ATTRS{configuration}==""
ATTRS{devnum}=="1"
ATTRS{devpath}=="0"
ATTRS{idProduct}=="0002"
ATTRS{idVendor}=="1d6b"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="Linux 4.2.0-36-generic xhci-hcd"
ATTRS{maxchild}=="14"
ATTRS{product}=="xHCI Host Controller"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="unknown"
ATTRS{serial}=="0000:00:14.0"
ATTRS{speed}=="480"
ATTRS{urbnum}=="88"
ATTRS{version}==" 2.00"

looking at parent device '/devices/pci0000:00/0000:00:14.0':
KERNELS=="0000:00:14.0"
SUBSYSTEMS=="pci"
DRIVERS=="xhci_hcd"
ATTRS{broken_parity_status}=="0"
ATTRS{class}=="0x0c0330"
ATTRS{consistent_dma_mask_bits}=="64"
ATTRS{d3cold_allowed}=="1"
ATTRS{device}=="0x8c31"
ATTRS{dma_mask_bits}=="64"
ATTRS{driver_override}=="(null)"
ATTRS{enable}=="1"
ATTRS{irq}=="27"
ATTRS{local_cpulist}=="0-7"
ATTRS{local_cpus}=="ff"
ATTRS{msi_bus}=="1"
ATTRS{numa_node}=="-1"
ATTRS{subsystem_device}=="0x129d"
ATTRS{subsystem_vendor}=="0x1043"
ATTRS{vendor}=="0x8086"

looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""


Il s'agit ensuite de créer un fichier "blacklistant" le matériel en choisissant les attributs significatifs du bon niveau. Pour cela on peut créer le fichier /etc/udev/rules.d/81-bluetooth-hci.rules avec le contenu (qui dépend du matériel à blacklister) :

#builtin Bluetooth car disabled
SUBSYSTEM=="usb", ATTRS{idVendor}=="13d3", ATTRS{idProduct}=="3402", ATTR{authorized}="0"


Un reboot...

Il suffit ensuite de lancer bluetoothctl et de vérifier que le contrôleur d'origine (repérable ici par l'adresse MAC 54:27:1e:18:14:57) n'apparaît plus.

(source : https://projectgus.com/2014/09/blacklisting-a-single-usb-device-from-linux/

Rétroliens

Pas de rétroliens

Commentaires

Afficher les commentaires en Vue non groupée | Vue groupée

Pas de commentaires

Ajouter un commentaire

Marquer un texte en gras: *mot*, souligner un texte: _mot_.
Les smilies standard comme :-) et ;-) sont convertis en images.
:'(  :-)  :-|  :-O  :-(  8-)  :-D  :-P  ;-) 
Les adresses Email ne sont pas affichées, et sont seulement utilisées pour la communication.
Form options