内蔵Bluetoothを永久に無効にしてUSBを使用する

内蔵Bluetoothを永久に無効にしてUSBを使用する

5年経っても私のラップトップは完璧な状態を保っています(まだ)。

しかし、私の内蔵 Bluetooth は以前ほど良くなく (頻繁に使用したため)、起動時に読み込まれないことがほとんどです。頻繁に使用したため、内蔵 Bluetooth の代わりとなる 10 ドルの Bluetooth スティックを購入することにしました。

ただし、内蔵のものはほとんどオンになっていませんが、それでも時々火花が散ります。その場合、設定が台無しになり、いくつかのものが上書きされるため、非常に迷惑です。

質問:USB デバイスがオーディオ/ポインティング デバイスなどを送信できる状態で、内蔵 Bluetooth が永続的に無効になっていることを確認するにはどうすればよいでしょうか。

システム: 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

更新: テスト出力

(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

答え1

udev内部 Bluetooth を無効にするルールを作成できます。

まず、を実行して、無効にする USB デバイスの と をidVendor見つけて、適切な行を見つけます。たとえば、私のシステムでは、無効にするアダプタに一致する行は次のとおりです。idProductlsusb

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

次に、次の値を に代入します。上記のと の値を/etc/udev/rules.d/81-bluetooth-hci.rules書き留めます。0b05179c

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

この時点で再起動すると、デバイスは の出力に表示されなくなりhciconfig -a、接続する他の Bluetooth デバイス (同じベンダー + 製品 ID ではないと仮定) は として表示されますhci0

再起動したくない場合は、まず他の Bluetooth アダプタを外し、ルートとして次のコマンドを実行して、デバイスの再初期化を試みることができます。

udevadm trigger
rmmod btusb

新しい Bluetooth アダプターを接続して、維持された稼働時間をお楽しみください (動作しなかった場合はとにかく再起動してください)。

解決策はUbuntuに質問する

答え2

オプション 1: を使用しますrfkill

これにより、ブロックされているデバイスでの送信が無効になり、通常はドライバーも「ダウン」状態になります。rfkill helpコマンドの場合、ブロックするためにrfkill listrfkill できるデバイスをリストしますrfkill block <index>|<type>。 インデックスが必要になる可能性がありますが、インデックスがブート間で一貫しているかどうかはわかりません。そのため、安全のためにgrepcutなどを使用して小さなスクリプトを作成する必要がある可能性があります。 コマンドのパッケージをインストールする必要がある可能性がありますrfkill

編集: インデックスの変更が心配な場合は、次のようにします。

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

(もちろん、内部 Bluetooth アダプタの MAC アドレスも含みます)、$INDEXそのインデックスも含まれているはずです。複数の Bluetooth アダプタを備えたハードウェアを持っていないため、これをテストすることはできません。

もう一つの方法はユーデブ既知のアダプタに特別な名前を付けるルールもありますが、上記の 2 行を使用するよりも理解するのが難しいでしょう。

結局、rfkillカーネル機能には Bluetooth 無線を完全に無効にする機能がありますが、私が知らない他のコマンドライン インターフェイスが存在する可能性があります。

オプション2: カーネルモジュールをブラックリストに登録する

起動後に内蔵 Bluetooth デバイスが無効状態にあり、カーネル ドライバーがモジュールとしてコンパイルされている場合、ドライバーをブラックリストに登録することで、ドライバーがデバイスをロードして有効化するのを防ぐことができます。 を使用してlsmod現在ロードされているモジュールを一覧表示し、起動後に または syslog を見てdmesg、内蔵 Bluetooth デバイスのドライバーを特定します。ブラックリストへの登録は、使用しているディストリビューションによって異なります。たとえば、Debian (おそらく Ubuntu も) では、 の/etc/modprobe.d/行を含むファイルを作成しますblacklist <modulname>man modprobe.d詳細については、 を参照してください。

内蔵 Bluetooth デバイスが有効な状態で起動した場合、ドライバーをブラックリストに登録すると使用できなくなりますが、ドライバーが壊れていると、引き続きデータが送信される可能性があります。

関連情報