
Спустя 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 загружается во включенном состоянии, занесение драйвера в черный список не позволит вам использовать его, но если оно сломано, оно все равно может передавать данные.