Навсегда отключить встроенный Bluetooth и использовать USB

Навсегда отключить встроенный Bluetooth и использовать USB

Спустя 5 лет мой ноутбук (до сих пор) в идеальном состоянии.

Но мой встроенный bluetooth уже не тот, что был раньше (благодаря его интенсивному использованию) и не загружается при загрузке. Из-за интенсивного использования я решил купить 10-долларовый bluetooth-брелок, который взял на себя работу встроенного.

Однако встроенный в основном не включен, но иногда он все равно дает искру. В такие моменты это иногда действительно раздражает, потому что он просто портит мои настройки и перезаписывает несколько вещей.

Мой вопрос: как мне убедиться, что встроенный Bluetooth отключен навсегда, но при этом USB-устройство по-прежнему может передавать мой звук/указывающие устройства/...?

Система: Linux Mint 18 (база: Ubuntu 16.04)

lsusb-вывод:

jeroen@laptop ~ $ lsusb
Bus 002 Device 002: ID 5986:02ac Acer, Inc 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 138a:0018 Validity Sensors, Inc. Fingerprint scanner
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
(Built-in BT) Bus 003 Device 004: ID 0a5c:21b4 Broadcom Corp. BCM2070 Bluetooth 2.1 + EDR
(USB-BT) Bus 003 Device 006: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Обновление: тестовый вывод

(по просьбе Дирка)

jeroen@laptop ~ $ sudo hcitool dev
Devices:
    hci0    00:1B:DC:0F:73:5D
    hci1    CC:52:AF:A8:71:B5
## Plugged out the USB-BT dongle
jeroen@laptop ~ $ sudo hcitool dev
Devices:
    hci1    CC:52:AF:A8:71:B5
## Plugged in the USB-BT dongle
jeroen@laptop ~ $ sudo rfkill list
0: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
1: brcmwl-0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
4: hp-wifi: Wireless LAN
    Soft blocked: no
    Hard blocked: no
5: hp-bluetooth: Bluetooth
    Soft blocked: no
    Hard blocked: no
6: hci1: Bluetooth
    Soft blocked: no
    Hard blocked: no
8: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no
jeroen@laptop ~ $ sudo rfkill block 5
jeroen@laptop ~ $ sudo rfkill list
0: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
1: brcmwl-0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
4: hp-wifi: Wireless LAN
    Soft blocked: no
    Hard blocked: no
5: hp-bluetooth: Bluetooth
    Soft blocked: no
    Hard blocked: no
6: hci1: Bluetooth
    Soft blocked: no
    Hard blocked: no
8: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no
jeroen@laptop ~ $ sudo rfkill block 6
jeroen@laptop ~ $ sudo rfkill list
0: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
1: brcmwl-0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
4: hp-wifi: Wireless LAN
    Soft blocked: no
    Hard blocked: no
5: hp-bluetooth: Bluetooth
    Soft blocked: no
    Hard blocked: no
6: hci1: Bluetooth
    Soft blocked: yes
    Hard blocked: no
8: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no
jeroen@laptop ~ $ sudo rfkill block 8
jeroen@laptop ~ $ sudo rfkill list
0: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
1: brcmwl-0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
4: hp-wifi: Wireless LAN
    Soft blocked: no
    Hard blocked: no
5: hp-bluetooth: Bluetooth
    Soft blocked: no
    Hard blocked: no
6: hci1: Bluetooth
    Soft blocked: yes
    Hard blocked: no
8: hci0: Bluetooth
    Soft blocked: yes
    Hard blocked: no
jeroen@laptop ~ $ sudo rfkill unblock 8
jeroen@laptop ~ $ sudo rfkill list
0: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
1: brcmwl-0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
4: hp-wifi: Wireless LAN
    Soft blocked: no
    Hard blocked: no
5: hp-bluetooth: Bluetooth
    Soft blocked: no
    Hard blocked: no
6: hci1: Bluetooth
    Soft blocked: no
    Hard blocked: no
8: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no
jeroen@laptop ~ $ sudo rfkill unblock 6
jeroen@laptop ~ $ sudo rfkill list
0: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
1: brcmwl-0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
4: hp-wifi: Wireless LAN
    Soft blocked: no
    Hard blocked: no
5: hp-bluetooth: Bluetooth
    Soft blocked: no
    Hard blocked: no
6: hci1: Bluetooth
    Soft blocked: no
    Hard blocked: no
8: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no
jeroen@laptop ~ $ sudo rfkill unblock 5
jeroen@laptop ~ $ sudo rfkill list
0: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
1: brcmwl-0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
4: hp-wifi: Wireless LAN
    Soft blocked: no
    Hard blocked: no
5: hp-bluetooth: Bluetooth
    Soft blocked: no
    Hard blocked: no
6: hci1: Bluetooth
    Soft blocked: no
    Hard blocked: no
8: hci0: Bluetooth
    Soft blocked: no
    Hard blocked: no

решение1

Вы можете создать udevправило для отключения внутреннего Bluetooth.

Сначала найдите idVendorи idProductдля USB-устройства, которое вы хотите отключить, запустив lsusbи найдя нужную строку. Например, в моей системе это соответствующая строка для адаптера, который я хотел отключить:

Bus 004 Device 006: ID 0b05:179c ASUSTek Computer, Inc. Bluetooth Adapter

Итак, поместите следующее в /etc/udev/rules.d/81-bluetooth-hci.rules, обратите внимание на значения 0b05и , 179cуказанные выше:

SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="179c", ATTR{authorized}="0"

На этом этапе вы можете просто перезагрузить устройство, и оно больше не должно отображаться в выводе hciconfig -a, а любое другое подключаемое вами устройство Bluetooth (при условии, что оно не того же поставщика и не имеет того же идентификатора продукта!) будет отображаться как hci0.

Если вы не хотите перезагружать устройство, попробуйте повторно инициализировать устройства, сначала отключив все остальные адаптеры Bluetooth, а затем, как root, выполните:

udevadm trigger
rmmod btusb

Теперь подключите новый адаптер Bluetooth и наслаждайтесь сохранённым временем безотказной работы (или перезагрузите устройство, если оно не сработало!).

Решение найдено наAskUbuntu.

решение2

Вариант 1: использовать rfkill.

Это отключит передачу на заблокированном устройстве, а также обычно переведет драйверы в состояние «down». rfkill helpдля команд, rfkill listчтобы составить список устройств, которые можно заблокировать с помощью rfkill rfkill block <index>|<type>. Вам может понадобиться индекс, и я не знаю, остаются ли индексы неизменными между загрузками, поэтому вам, вероятно, придется написать небольшой скрипт с и т. д. grep, cutчтобы обезопасить себя. Вам может потребоваться установить пакет для rfkillкоманды.

Редактировать: Если вы беспокоитесь об изменении индексов, сделайте что-то вроде

HCI=`hcitool dev | grep '00:11:22:33:44:55' | cut -f2`
INDEX=`rfkill list | grep $HCI | cut -d: -f1`

(но, конечно, с MAC-адресом вашего внутреннего адаптера bluetooth), и $INDEXдолжен содержать его индекс. Я не могу это проверить, так как у меня нет оборудования с более чем одним адаптером bluetooth.

Другой способ — использоватьудевправила создания специальных имен для известных адаптеров, но это, вероятно, сложнее понять, чем использовать две приведенные выше строки.

В конце концов, нет альтернативы использованиюrfkillфункции ядра для полного отключения Bluetooth-радио, хотя могут быть и другие интерфейсы командной строки для этого, о которых я не знаю.

Вариант 2: Внести в черный список модуль ядра

Если после загрузки встроенное устройство Bluetooth находится в отключенном состоянии, а драйвер ядра скомпилирован как модуль, вы можете запретить драйверу загружать и включать устройство, внеся его в черный список. Используйте lsmodдля отображения загруженных в данный момент модулей и просмотрите dmesgили ваш syslog после загрузки, чтобы определить драйвер для встроенного устройства Bluetooth. Внесение его в черный список зависит от используемого вами дистрибутива, например, в Debian (и, вероятно, в Ubuntu тоже), создайте файл, /etc/modprobe.d/содержащий строку blacklist <modulname>. man modprobe.dПодробности см.

Если встроенное устройство Bluetooth загружается во включенном состоянии, занесение драйвера в черный список не позволит вам использовать его, но если оно сломано, оно все равно может передавать данные.

Связанный контент