Desativar permanentemente o Bluetooth integrado e usar USB

2

Após 5 anos, meu laptop está em perfeitas condições (ainda).

Mas meu bluetooth embutido não é o que costumava ser (graças ao uso extensivo dele) e não consegue carregar na inicialização praticamente. Por causa do uso extensivo, optei por comprar um stick bluetooth de 10 dólares que assumiu o trabalho do built-in.

No entanto, o built-in não é na maioria das vezes, mas às vezes ainda dá uma faísca. Naquela época, às vezes, é muito chato, porque apenas aperta minhas configurações e sobrescreve várias coisas.

Minha pergunta: como posso ter certeza de que o bluetooth embutido está permanentemente desativado enquanto o dispositivo USB ainda é capaz de enviar meus dispositivos de áudio / apontadores / ... através de.

Sistema: Linux Mint 18 (Base: Ubuntu 16.04)

lsusb-output:

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

Atualização: saída de teste

(conforme solicitado por Dirkt)

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
    
por Jeroen De Meerleer 04.10.2016 / 22:19

1 resposta

1

Opção 1: use rfkill .

Isso desabilitará a transmissão no dispositivo bloqueado e, geralmente, também colocará os drivers em um estado "inativo". rfkill help para comandos, rfkill list para listar dispositivos que podem ser rfkill, rfkill block <index>|<type> para bloqueá-lo. Você pode precisar de um índice, e eu não sei se os índices permanecem consistentes nas inicializações, então você provavelmente precisará escrever um pequeno script com grep , cut etc para estar no lado seguro. Você pode precisar instalar o pacote para o comando rfkill .

Editar : Se você está preocupado em alterar os índices, faça algo como

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

(mas, é claro, com o endereço MAC do seu adaptador bluetooth interno), e $INDEX deve conter o índice dele. Não posso testar isso, pois não tenho hardware com mais de um adaptador bluetooth.

Outra maneira seria usar as regras udev para criar nomes especiais para os adaptadores conhecidos, mas isso é provavelmente mais difícil de descobrir do que usar as duas linhas acima.

No final, não há alternativa para usar os recursos do kernel rfkill para desativar completamente um rádio bluetooth, embora possa haver outras interfaces de linha de comando para ele que eu não conheça.

Opção 2: módulo do kernel da lista negra

Se, após a inicialização, o dispositivo Bluetooth integrado estiver em um estado desativado e o driver do kernel estiver compilado como um módulo, você poderá impedir que o driver carregue e ative o dispositivo, colocando-o na lista negra. Use lsmod para listar os módulos atualmente carregados e dê uma olhada em dmesg ou seu syslog após a inicialização para identificar o driver para seu dispositivo Bluetooth integrado. A lista negra depende da distribuição que você usa, por exemplo no Debian (e provavelmente no Ubuntu também), faça um arquivo em /etc/modprobe.d/ que contenha a linha blacklist <modulname> . Veja man modprobe.d para detalhes.

Se o dispositivo bluetooth integrado inicializar no estado ativado, a lista negra do driver impedirá que você o use, mas se ele estiver quebrado, ele ainda poderá transmitir informações.

    
por 05.10.2016 / 09:26