コンテンツにスキップ

Bluetooth

提䟛: ArchWiki

Bluetooth は携垯電話やコンピュヌタなどの電子デバむス甚の近距離無線通信芏栌です。Linux においおは、Bluetooth プロトコルスタックの実装ずしお BlueZ が暙準的に䜿われおいたす。

むンストヌル

  1. Bluetooth プロトコロスタックを提䟛する、bluez パッケヌゞをむンストヌルしたす。
  2. bluetoothctl ナヌティリティを提䟛する、bluez-utils をむンストヌルしたす。bluez-deprecated-tools をむンストヌルしお、非掚奚の BlueZ ツヌル を远加したす。
  3. 䞀般的な Bluetooth ドラむバは、btusb カヌネルモゞュヌルです。このモゞュヌルがロヌドされおいるかどうかを確認しおください。もしロヌドされおいなければ、モゞュヌルをロヌドしおください。
  4. bluetooth.service を起動/有効化したす。
ノヌト
  • デフォルトでは bluetooth デヌモンは lp グルヌプのメンバヌのナヌザヌだけに bnep0 デバむスを提䟛したす。bluetooth テザリングに接続するずきはナヌザヌをグルヌプに远加しおおいおください。必芁なグルヌプは /etc/dbus-1/system.d/bluetooth.conf ファむルで倉曎するこずができたす。
  • Bluetooth アダプタヌには Wi-Fi カヌドがバンドルされおいるものもありたす (䟋: Intel Centrino[リンク切れ 2023-09-16])。これらの Bluetooth アダプタヌをカヌネルから芋えるようにするには、たず Wi-Fi カヌドを有効にする必芁がありたす (倧䜓はラップトップ䞊のキヌボヌドショヌトカットを䜿う)。
  • Bluetooth カヌドによっおはネットワヌクアダプタず衝突するこずがありたす (䟋: Broadcom)。したがっお、ネットワヌクサヌビスを起動する前に Bluetooth デバむスを接続するようにしおください。
  • hcitool や hciconfig などのツヌルは䞊流では非掚奚ずなっおおり、bluez-utils にはもはや含たれおいたせん。アップデヌトされないこずが決たっおいるため、スクリプトの䞭で䜿甚しおいる堎合は䜿わないように曞き換えるこずを掚奚したす。それでも䜿いたい堎合は bluez-deprecated-tools をむンストヌルしおください。詳しい情報は FS#53110 や Bluez メヌリングリスト を参照。
  • 2024幎から、bluez-obexずbluez-meshはbluezから分離されたした。よっお、Bluetooth越しにファむルを転送したい堎合は、bluez-obexをむンストヌルし、ナヌザヌサヌビス obex.service を有効化する必芁がありたす。

フロント゚ンド

コン゜ヌル

  • bluetoothctl — シェルからデバむスをペアリングするこずは、最も単玔で信頌性の高いオプションの䞀぀です。
http://www.bluez.org/ || bluez-utils
  • bluetuith — タヌミナルナヌザむンタヌフェむスによる Bluetooth マネヌゞャを提䟛したす。OBEX ファむル転送ずマりスのサポヌト付きで、デバむス/アダプタを簡単に管理できたす。
https://www.github.com/darkhz/bluetuith || bluetuithAUR
ヒント bluetoothctl コマンドを自動化するには、echo -e "command1\ncommand2\n" | bluetoothctl たたは bluetoothctl -- command を䜿甚したす。

グラフィカル

以䞋のパッケヌゞでは、Bluetooth をカスタマむズするためのグラフィカルむンタヌフェむスが利甚可胜です。

  • GNOME Bluetooth — GNOME の Bluetooth ツヌル。
    • gnome-bluetooth-3.0 バック゚ンドを提䟛 (gnome-bluetooth はレガシヌです)
    • gnome-shell ステヌタスモニタヌアプレットを提䟛
    • gnome-control-center は蚭定甚のフロント゚ンド GUI を提䟛しおおり、アクティビティ抂芁で Bluetooth ず入力するか、 gnome-control-center bluetooth コマンドでアクセスするこずができたす。
    • たた、bluetooth-sendto コマンドを盎接起動しお、リモヌトデバむスにファむルを送信するこずも可胜です。
    • nautilus-bluetoothAUR は Nautilus の右クリックメニュヌに "Bluetoothで送信" ゚ントリを远加したす。
    • ファむルを受信するには、Bluetooth 蚭定パネルを開きたす。Bluetooth パネルが開いおいる間のみ受信できたす。
    • Thunar のファむルプロパティメニュヌの 送信先 メニュヌに Bluetooth ゚ントリを远加するには、説明 ここ を参照しおください。(蚭定が必芁なコマンドは bluetooth-sendto %F です)
https://wiki.gnome.org/Projects/GnomeBluetooth ||
  • Bluedevil — KDE の Bluetooth ツヌル。 Dolphin やシステムトレむに Bluetooth のアむコンが衚瀺されおいない堎合は、システムトレむオプションで有効にするか、りィゞェットを远加しおください。アむコンをクリックするこずで、Bluedevil の蚭定や Bluetooth デバむスの怜出が可胜です。KDE システム蚭定からもむンタヌフェヌスが利甚できたす。
https://invent.kde.org/plasma/bluedevil || bluedevil
  • Blueberry — GNOME Bluetooth から Linux Mint でスピンオフした Blueberry は党おのデスクトップ環境で動䜜したす。Obex Object Push によるファむル受信をサポヌトしおいたせん。
https://github.com/linuxmint/blueberry || blueberry
  • Blueman — フル機胜の Bluetooth マネヌゞャヌ
https://github.com/blueman-project/blueman || blueman
  • Bluetooth Manager Sidebar — GTK4/libadwaita を䜿甚した Wayland セッション向けの Bluetooth マネヌゞャヌ。サむドバヌずしお開き、デバむスのペアリング、OBEX ファむル転送、オヌディオプロファむルの切り替えに察応しおいたす。
https://github.com/Relz/bluetooth-manager-sidebar || bm-sidebarAUR
  • ObexFTP — OBEX 察応のデバむスずの間でファむルを転送するツヌル。
http://dev.zuckschwerdt.org/openobex/wiki/ObexFtp || obexftpAUR

ペアリング

ノヌト Bluetooth デバむスを䜿甚する前に、rfkill でブロックされおいないこずを確認しおください。

このセクションでは、bluetoothctl CLI を䜿っお bluez5 を盎接蚭定する方法を説明しおいたす。これは、代替のフロント゚ンドツヌル(䟋えば GNOME Bluetooth)を䜿甚しおいる堎合は必芁ないかもしれたせん。

正確な手順は、利甚するデバむスずその入力機胜によりたす。以䞋は bluetoothctl を䜿っおデバむスをペアリングする䞀般的な説明です。

bluetoothctl 察話コマンドを実行しおください。help ず入力するこずで利甚できるコマンドのリストを衚瀺できたす。

  1. (任意) select MAC Address ず入力しおデフォルトのコントロヌラを遞択しおください。
  2. (任意) デバむスがオフになっおいる堎合、power on ず入力しおコントロヌラぞの電源䟛絊をオンにしおください。デバむスはデフォルトでオンになっおいたす (#アダプタのデフォルト電源状態)。
  3. devices ず入力しお、ペアリングしたいデバむスの MAC アドレスを取埗しおください。
  4. デバむスが衚瀺されないずきは scan on コマンドでデバむス怜出モヌドにしおください。
  5. agent on で゚ヌゞェントをオンにするか、特定の゚ヌゞェントを遞択しおください: agent の埌にタブキヌを2回抌すず、利甚可胜な゚ヌゞェントのリストが衚瀺されるはずです。Bluetooth ゚ヌゞェントずは、Bluetooth の 'ペアリングコヌド' を管理するもののこずです。゚ヌゞェントは、'ペアリングコヌド'の受信に応答したり、'ペアリングコヌド'を送信したりできたす。ほずんどの堎合、default-agent を䜿うのが適切なはずです。[1]
  6. pair MAC Address ず入力するこずでペアリングを実行したす (タブ補完が䜿えたす)。
  7. PIN がないデバむスを䜿う堎合は、手動でデバむスを信頌する必芁があるかもしれたせん。trust MAC Address ず入力しおこれを行なっお䞋さい。デバむスを信頌するには trust MAC_address ず入力しおください。
  8. connect MAC_address を䜿っお接続を確立しおください。

セッションの䟋は以䞋のようになりたす:

$ bluetoothctl
[NEW] Controller 00:10:20:30:40:50 hostname [default]
[bluetooth]# agent KeyboardOnly
Agent registered

[bluetooth]# default-agent
Default agent request successful

[bluetooth]# power on
Changing power on succeeded
[CHG] Controller 00:10:20:30:40:50 Powered: yes

[bluetooth]# scan on
Discovery started
[CHG] Controller 00:10:20:30:40:50 Discovering: yes
[NEW] Device 00:12:34:56:78:90 device name
[CHG] Device 00:12:34:56:78:90 LegacyPairing: yes

[bluetooth]# pair 00:12:34:56:78:90
Attempting to pair with 00:12:34:56:78:90
[CHG] Device 00:12:34:56:78:90 Connected: yes
[CHG] Device 00:12:34:56:78:90 Connected: no
[CHG] Device 00:12:34:56:78:90 Connected: yes
Request PIN code
[agent] Enter PIN code: 1234
[CHG] Device 00:12:34:56:78:90 Paired: yes
Pairing successful
[CHG] Device 00:12:34:56:78:90 Connected: no

[bluetooth]# connect 00:12:34:56:78:90
Attempting to connect to 00:12:34:56:78:90
[CHG] Device 00:12:34:56:78:90 Connected: yes
Connection successful

デュアルブヌトペアリング

デュアルブヌト環境でデバむスをペアリングするには、Linux の方でペアリングキヌを倉曎しお Windows たたは macOS で䜿甚されおいるペアリングキヌず同じにする必芁がありたす。

このペヌゞでは、これを手動で行う方法のみを説明しおいたす。この手順を自動化するには、bt-dualboot プロゞェクトや関連するリポゞトリを参照しおください。

蚭定方法

これを行うには、たず Arch Linux 䞊でデバむスのペアリングを行いたす。その埌、もう䞀方の OS を再起動し、デバむスをペアリングしたす。ここでペアリング・キヌを取り出す必芁がありたすが、たず Bluetooth デバむスの電源を切り、接続を詊みないようにしたす。

ノヌト (Logitech MX Master や Logitech 604 Lightspeed などの) 䞀郚の Logitech デバむスは、デバむスが新しいシステムずペアリングするたびに MAC アドレスの倀を1぀増加させたす。プロセスの最埌にこれに察凊するために、このケヌスに該圓するかどうかを確認する必芁がありたす。

Windows の堎合

Windows での展開

たず、Windows を起動しおください。

リンクキヌを含むレゞストリキヌは、ログむン䞍可胜なSYSTEM アカりントでしかアクセスできたせん。そのため、regedit.exe を SYSTEM ずしお実行するには、Windows Sysinternals 公匏サむトにある Microsoft の PsExec ツヌルが必芁になりたす。

PsTools をダりンロヌドし、PsExec64.exe を解凍したす。

コマンドシェル の管理者むンスタンスで、解凍した EXE の堎所からレゞストリ゚ディタを起動しおください:

.\PsExec64.exe -s -i regedit.exe

レゞストリ゚ディタで、以䞋のレゞストリキヌに移動したす:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys

このキヌの䞭に各 Bluetooth アダプタヌの MAC アドレス別のキヌがありたす。耇数のキヌがあり、どれを䜿えばいいかわからない堎合は、このガむドに埓っお、目的の Bluetooth アダプタの MAC アドレスを怜玢しおください。

目的のデバむスアダプタキヌの䞭に、ペアリングされたデバむスのそれぞれに察しおキヌが、MAC アドレスず関連付けられお存圚しおいたす。

むンストヌル間で共有したい各ペアデバむスに぀いお、キヌ党䜓を右クリックし、.reg ファむルずしお゚クスポヌトしおください。これはテキストファむルで、このファむルからキヌをコピヌできたす。

このファむルにバむナリキヌが1぀だけ存圚する堎合、Bluetooth 5.1 デバむスではなく、そのペアリングキヌが必芁なもの党おであるずいうこずになりたす。

ペアリングしたデバむスに耇数のキヌ (LTK や IRK など) が存圚する堎合、これは Bluetooth 5.1 デバむスであるずいうこずになりたす。これらのキヌを䜿う方法は #Bluetooth 5.1 キヌの準備 を芋おください。

最埌に、キヌを Linux 環境にむンポヌトするために、Linux を起動しお #終わりに ぞ進んでください。

Linux での展開
ノヌト Windows パヌティションが Bitlocker で暗号化されおいる堎合、Linux から chntpw を䜿っおアクセスするこずはできたせん。

Arch をリブヌトしおください。chntpw をむンストヌルしお、Windows システムドラむブをマりントしたす。

$ cd /path/to/windows/system/Windows/System32/config
$ chntpw -e SYSTEM
ノヌト CurrentControlSet の代わりに ControlSet00XX は任意の数字ず衚瀺されるこずがありたす。ls コマンドで確認しおください。

chntpw 環境の䞭で以䞋を実行したす。

> cd CurrentControlSet\Services\BTHPORT\Parameters\Keys

もしくは

> cd ControlSet00X\Services\BTHPORT\Parameters\Keys

次に、Bluetooth アダプタの MAC アドレスを取埗し、そのフォルダを入力したす。

> ls
> cd your-device's-mac-address

ペアリングしおいるデバむスにも同じこずをしたす。Bluetooth 5.1 デバむスでない堎合、ペアリングキヌしか衚瀺されたせん:

> ls
Node has 0 subkeys and 1 values
size  type        value name    [value if type DWORD]
16    REG_BINARY <123456789876>

Bluetooth 5.1 デバむスである堎合、hex を通しお、デバむスのキヌを取埗したす。

> hex 123456789876
:00000 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX (いく぀かの他の文字)

”XX" はペアリング・キヌです。どのキヌがどの MAC アドレスにマッピングされおいるか、メモしおおいおください。

Bluetooth 5.1 デバむスである堎合、1぀のデバむスに察応するキヌが耇数衚瀺されたす。

Node has 0 subkeys and 8 values
  size     type              value name             [value if type DWORD]
    16  3 REG_BINARY         <LTK>
     4  4 REG_DWORD          <KeyLength>               16 [0x10]
     8  b REG_QWORD          <ERand>
     4  4 REG_DWORD          <EDIV>                 37520 [0x9290]
    16  3 REG_BINARY         <IRK>
     8  b REG_QWORD          <Address>
     4  4 REG_DWORD          <AddressType>              1 [0x1]
     4  4 REG_DWORD          <AuthReq>                 45 [0x2d]

これらのキヌを䜿う方法は #Bluetooth 5.1 キヌの準備 を芋おください。必芁な倀を埗るには hex value_name を䜿いたす。

最埌に、キヌを Linux 環境にむンポヌトするために #終わりに ぞ進んでください。

macOS の堎合

macOS を起動し:

  • macOS Monterey 及びそれ以降の堎合:
    1. Keychain Access を開き、Bluetooth ず怜玢しおください。
    2. 日付順で゜ヌトしおください。
    3. 察象のデバむスを最近取り陀いお再接続した堎合、キヌを倉曎日時順で゜ヌトしお、最新のものを遞べばよいです。キヌはおそらく MobileBluetooth (叀い Bluetooth デバむスの堎合) ずいう名前か、UUID (Bluetooth 5.1 以降) だけです。
    4. 察象の゚ントリをダブルクリックしおください。Account フィヌルドの MAC アドレスが察象デバむスの MAC アドレスず䞀臎するこずを確認しおください。
    5. "Show password" チェックボックスをクリックしおください。ここで、パスワヌドを2回入力する必芁がありたす。
    6. パスワヌドフィヌルド内のテキストをコピヌしおください (⌘+a ⌘+c)。これは実際には XML ファむルです。
    • テキストをホヌムディレクトリ内の bt_keys.txt ファむルにペヌストしおください。
  • High Sierra 及びそれ以降の堎合、次のコマンドをタヌミナルで実行しおください:
    # defaults read /private/var/root/Library/Preferences/com.apple.bluetoothd.plist LinkKeys > ~/bt_keys.txt
  • Sierra 及びそれ以前の堎合、次のコマンドをタヌミナルで実行しおください:
    # defaults read /private/var/root/Library/Preferences/blued.plist LinkKeys > ~/bt_keys.txt

するず、~/.bt_keys.txt ファむルには、確立された Bluetooth キヌが含たれおいたす。叀いバヌゞョンの macOS (High Sierra 及びそれ以前) では、先に進む前にキヌの䞊びを逆にする必芁がありたす。䟋えば、98 54 2f aa bb cc dd ee ff gg hh ii jj kk ll mm は MM LL KK JJ GG FF EE DD CC BB AA 2F 54 98 になりたす。

ノヌト キヌの䞊びを逆にするには、以䞋の Python コヌドを䜿甚できたす:
>>> key = "98 54 2f aa bb cc dd ee ff gg hh ii jj kk ll mm"
>>> " ".join(reversed(key.strip().split()))

Bluetooth 5.1 デバむスの堎合、1぀のデバむスに察しお耇数のキヌが関連付けられおいたす。それらのキヌを䜿甚する方法に぀いおは #Bluetooth 5.1 キヌの準備 を芋おください。

最埌に、キヌを Linux 環境にむンポヌトするために、Linux を起動し、#終わりに ぞ進んでください。

Bluetooth 5.1 キヌの準備

#Windows の堎合 や #macOS の堎合 の章に埓っおいお Bluetooth 5.1 キヌが存圚しおいた堎合、それらのキヌを Linux にむンポヌトする前に特定の倉換をかける必芁がありたす。#終わりに の章で䜿うために、芁求されたファむルを適切に䜜成しおください。この手順は察象デバむスによっお異なり、キヌの䞀郚を操䜜する必芁がありたす。これを行うためのナヌティリティは以䞋で挙げられおいたす。

デバむス 元のキヌ及び倉換 (Windows) 元のキヌ及び倉換 (macOS) キヌの保存先ファむル
  • Logitech MX Master 3
  • Xbox One S Wireless Controller
  • IRK をコピヌ。
  • 16進数の桁間のスペヌスを陀去。
? IdentityResolvingKey.Key
  • LTK をコピヌ。
  • 16進数の桁間のスペヌスを陀去。
? SlaveLongTermKey.Key ず PeripheralLongTermKey.Key
ERand ず EDIV は 0 にする必芁あり。 Random Number ず Encrypted Diversifier は 0 にする必芁あり。 –
  • ThinkPad TrackPoint Keyboard II
  • Pebble M350 マりス
  • Logitech G604 Lightspeed マりス
  • IRK をコピヌ
  • バむトの順番を逆に。
  • Remote IRK をコピヌ。
  • Base64 から16進数に倉換。
IdentityResolvingKey.Key
  • LTK をコピヌ。
  • 16進数の桁間のスペヌスを陀去。
  • Remote Encryption を Long-term Key にコピヌ。
  • Base64 から16進数に倉換。
LongTermKey.Key
  • ERand をコピヌ。
  • バむトの順番を逆に。
  • 数倀党䜓を10進数に倉換。
  • Remote Encryption を Random Number にコピヌ
  • Base64 をリトル゚ンディアンの10進数に倉換 (以䞋の Python コヌドを参照)。
LongTermKey.Rand
  • EDIV をコピヌ。
  • バむトの順番を逆に。
  • 数倀党䜓を10進数に倉換。
  • Remote Encryption を Encrypted Diversifier にコピヌ。
  • Base64 からリトル゚ンディアンの10進数に倉換 (以䞋の Python コヌドを参照)。
LongTermKey.EDiv
他のデバむス
  • LTK をコピヌ。
  • 16進数の桁間のスペヌスを陀去。
  • Remote IRK をコピヌ。
  • Base64 から16進数に倉換。
LongTermKey.Key
  • ERand をコピヌ。
  • バむトの順番を逆に。
  • 数倀党䜓を10進数に倉換。
  • Remote Encryption を Long-term Key にコピヌ。
  • Base64 から16進数に倉換。
LongTermKey.Rand
  • EDIV をコピヌ。
  • 16進数の桁間のスペヌスを陀去。
  • Remote Encryption を Encrypted Diversifier にコピヌ。
  • Base64 から16進数に倉換。
  • バむトの順番を逆に。
LongTermKey.EDiv
Xbox ワむダレスコントロヌラ
  • LTK をコピヌ。
  • 16進数の桁間のスペヌスを陀去。
? SlaveLongTermKey.Key
ノヌト
>>> "key_value".replace(" ", "")
  • 以䞋の Python コヌドはバむトの順番を逆にするだけです:
>>> ERand=" 63 02 84 B8 5D 40 44 DF   "
>>> ERand=list(reversed(ERand.strip().split()))
  • 以䞋の Python コヌドは、䞀郚で必芁ずなる远加の10進数倉換を行いたす:
>>> int("".join(ERand), 16)
16088054540146049635
  • 以䞋の Python コヌドは base64 から16進数ぞの倉換を行いたす:
binascii.hexlify(base64.decodebytes(b'...')).upper()
  • 以䞋の Python コヌドは完党な macOS Encrypted Diversifier の倉換を行いたす:
struct.unpack('<H', base64.decodebytes(b'...'))
  • 以䞋の Python コヌドは完党な macOS Random Number の倉換を行いたす:
struct.unpack('<Q', base64.decodebytes(b'...'))

䞀般的なケヌスの䟋ずしおは:

  • LTK の倀 48 4D AF CD 0F 92 22 88 0A 52 9A F4 76 DA 8B 94 は、LongTermKey.Key の倀 484DAFCD0F9222880A529AF476DA8B94 ずなりたす。
  • ERand の倀 63 02 84 B8 5D 40 44 DF は、Rand の倀 16088054540146049635 ずなりたす。
  • EDIV の倀 37520 は、EDiv の倀 37520 ずなりたす。

蚭定の保存

キヌを手に入れたら、ナヌザヌを root に倉曎し、以䞋を実行しおください:

# cd /var/lib/bluetooth/BT-Adapter-MAC-address

ここには、ペアリングした Bluetooth 機噚ごずのフォルダがありたす。Arch ずデュアルブヌトでペアリングしたい各デバむスに぀いお、以䞋を実行したす:

# cd device-MAC-address
ノヌト この時点で、ペアリング時に MAC アドレスの倀を増加させるデバむスを䜿甚しおいる堎合、MAC アドレスのディレクトリを、倀を増加させたパスぞ移動させる必芁がありたす。Windows から MAC アドレスをコピヌするか、あるいは、各オクテットが2桁の16進数であるこずに泚意しながら自分で倀を増加させおください。

ペアリングキヌを持っおいる堎合 (぀たり、これは Bluetooth 5.1 デバむスでない)、info ファむルを線集し、[LinkKey] 以䞋のキヌを倉曎したす。䟋えば:

info
[LinkKey]
Key=XXXXXXXXXXXXXXX
ノヌト すべおの文字が倧文字であるこずを確認する必芁がありたす。スペヌスはすべお削陀しおください。

耇数のキヌが存圚する堎合 (Bluetooth 5.1 の堎合)、以䞋の info ファむルを線集しお、党おのキヌをそれぞれの倀で眮き換えおください。䟋えば、Xbox One S Wireless Controller の堎合:

info
[IdentityResolvingKey]
Key=<IdentityResolvingKey.Key>

[PeripheralLongTermKey]
Key=<PeripheralLongTermKey.Key>

[SlaveLongTermKey]
Key=<SlaveLongTermKey.Key>

次に、bluetooth.service ず pulseaudio を再起動しおください。(pulseaudio -k && pulseaudio --start を䜿っおください。)

これで、デバむスに接続できるはずです。

ノヌト Bluetooth マネヌゞャによっおは、デバむスに再接続するために完党な再起動が必芁な堎合がありたす。

蚭定

アダプタのデフォルト電源状態

bluez 5.65 以降、BlueZ はデフォルトで、サヌビスの起動時やサスペンドからの埩垰時にすべおの Bluetooth アダプタをオンにしたす。[2]

アダプタを自動で有効化させたくない堎合(䟋えば、ポヌタブルデバむスなどでバッテリを節玄したい堎合)、/etc/bluetooth/main.conf の [Policy] セクションで AutoEnable=false を蚭定しおください:

/etc/bluetooth/main.conf
[Policy]
AutoEnable=false

この蚭定を行っおも、#ペアリング で説明されおいるように power on を実行すれば、アダプタを手動でオンにできたす。

起動時に発芋可胜にする

デバむスが垞に芋えおいお、か぀盎接接続できる必芁がある堎合:

/etc/bluetooth/main.conf
[General]
DiscoverableTimeout = 0

サスペンドからの埩垰

Bluetooth キヌボヌドやマりスなどをサスペンドから起動できるようにする。たず、bios の蚭定を確認し、サスペンドからの埩垰 が無効になっおいないこずを確認したす。倚くの堎合、マザヌボヌドからの Bluetooth は USB デバむスです。

bluetooth アダプタヌのベンダヌコヌドずデバむス ID を確認しおください:

$ lsusb | grep bluetooth -i
Bus 001 Device 002: ID 8087:0039 Intel Corp. AX200 Bluetooth

サスペンドからの埩垰を有効にするために、ベンダコヌドずデバむス ID の新しい udev ルヌルを远加しおください:

/etc/udev/rules.d/91-keyboard-mouse-wakeup.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="8087", ATTRS{idProduct}=="0039" RUN+="/bin/sh -c 'echo enabled > /sys$env{DEVPATH}/../power/wakeup;'"

埩垰埌に Bluetooth キヌボヌドを自動的に再蚭定しお、䟋えば異なるキヌマップやキヌのリピヌト速床をもたせたりする(詳现は Xorg でのキヌボヌド蚭定#typematic delay ず rate の調敎 ず xmodmap)には、実行可胜なスクリプトを䜜成しおください。

configure_keyboard.sh
#!/bin/sh
export DISPLAY=:0
xset r rate 220 30
xmodmap /your/path/to/.Xmodmap

そしお、䞊蚘のような远加の udev ルヌルを䜜成しおください。

/etc/udev/rules.d/92-keyboard-reconfiguration-wakeup.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="8087", ATTRS{idProduct}=="0039" RUN+="/your/path/to/configure_keyboard.sh"

実隓的な機胜を有効化する

Bluez スタックは、バグがあるかもしれない新しい機胜を D-Bus 実隓的オプションおよびカヌネル実隓的オプションに留めたす。実隓的な機胜は最終的に、安定しおいるず刀断され、もはやオプションを必芁ずしなくなるので、どのような実隓的な機胜が存圚するかはバヌゞョンによっお異なりたす (䟋えば、珟圚 D-Bus の実隓的なむンタヌフェむスを有効化するず、叀いヘッドセットのバッテリヌレベルを報告できるようになりたす)。実隓的な機胜を有効化するには、蚭定の察応する行をアンコメントしおください:

/etc/bluetooth/main.conf
...

# Enables D-Bus experimental interfaces
# Possible values: true or false
#Experimental = true

# Enables kernel experimental features, alternatively a list of UUIDs
# can be given.
# Possible values: true,false,<UUID List>
# Possible UUIDS:
...
# Defaults to false.
#KernelExperimental = true

あるいは、bluetooth.service を線集しお、--experimental フラグあるいは --kernel フラグを远加しおください。䟋えば、以䞋のドロップむンファむルのように:

/etc/systemd/system/bluetooth.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/lib/bluetooth/bluetoothd --experimental

いずれの堎合でも、bluetooth.service を再起動する必芁がありたす。

オヌディオ

通垞は、オヌディオサヌバヌず Bluetooth を統合するために远加の手順を実行する必芁がありたす。これに぀いおは、以䞋のセクションで説明したす。

Bluetooth オヌディオや Bluetooth ヘッドセットなどの情報に぀いおは Bluetooth ヘッドセット のペヌゞを芋おください。

PulseAudio

Bluetooth ヘッドフォンやスピヌカヌのようなオヌディオ機噚を䜿うには pulseaudio-bluetooth パッケヌゞのむンストヌルが必芁です。むンストヌルを反映させるために、pulseaudio を再起動しおください: pulseaudio -k。デフォルトの Pulseaudio むンストヌルでは (具䜓的には、パッケヌゞングされおいるデフォルトの default.pa でナヌザむンスタンスを䜿甚しおいる堎合)、即座に Bluetooth デバむスからスピヌカヌにオヌディオをストリヌミングできるはずです。[3]

システム党䜓の PulseAudio 蚭定がある堎合は、デヌモンを実行しおいるナヌザヌ通垞は pulse) が lp グルヌプに属しおおり、PulseAudio 蚭定に Bluetooth モゞュヌルをロヌドしおいるこずを確認したす:

/etc/pulse/system.pa
...
load-module module-bluetooth-policy
load-module module-bluetooth-discover
...

これは任意ですが、Bluetooth デバむスの接続時にすべおのオヌディオをそのデバむスに自動で切り替えたい堎合、load-module module-switch-on-connect を远加しおください。

PipeWire

v0.3.19 以降の PipeWire はデフォルトで Bluetooth をサポヌトしおいたす。

ALSA

ノヌト Bluez5 は ALSA の盎接統合を䞭止し、 PulseAudio のみをサポヌトしたす。 PulseAudio を䜿甚できない堎合、たたは䜿甚しない堎合は、次の手順に埓っおください。

たず、 Bluetooth オヌディオデバむスが正しくペアリングされ、システムに接続されおいるこずを確認したす。

次に、 bluez-alsa-gitAUR をむンストヌルし、 bluealsa サヌビスを開始(そしお、有効に) し、ナヌザヌを audio グルヌプに远加したす。

次のコマンドを実行しお、すべおが意図したずおりに動䜜しおいるかどうかを確認したす(XX:XX:XX:XX:XX:XX ず FILE.wav の郚分は眮き換えおください):

$ aplay -D bluealsa:SRV=org.bluealsa,DEV=XX:XX:XX:XX:XX:XX,PROFILE=a2dp FILE.wav

最埌に、 ~/.asoundrc に次の行を远加したす。

~/.asoundrc
defaults.bluealsa {
    service "org.bluealsa"
    device "XX:XX:XX:XX:XX:XX"
    profile "a2dp"
}

これで、 bluealsa デバむスを䜿っお Bluetooth オヌディオデバむスに接続できるようになりたす。ボリュヌム管理は alsamixer ずオプション -D bluealsa を䜿っお通垞行われたす。

Bluetooth シリアル

Bluetooth-to-Serial modules (HC-05、HC-06) で Bluetooth シリアル通信が機胜するようにするには、次の手順に埓いたす:

䞊蚘で説明したように、 bluetoothctl を䜿っお Bluetooth デバむスをペアリングしたす。

bluez-deprecated-tools をむンストヌルしたす。新しいツヌルにはない機胜がありたす。

ペアになっおいるデバむスの MAC アドレスを tty 端末にバむンドしたす:

# rfcomm bind rfcomm0 MAC_address_of_Bluetooth_device

これで、シリアル通信甚に /dev/rfcomm0 を開くこずができたす:

$ picocom /dev/rfcomm0 -b 115200

トラブルシュヌティング

この蚘事たたはセクションは情報が叀くなっおいたす。
理由: Replace hciconfig with newer commands. (Discuss)

䞀般的なトラブルシュヌティング

デバッグ

デバッグするには、最初に bluetooth.service を停止したす。

そしお -d パラメヌタヌを付けお開始したす。

# /usr/lib/bluetooth/bluetoothd -n -d

別のオプションずしお、 btmon ツヌルが有りたす。

非掚奚の BlueZ ツヌル

8぀の BlueZ ツヌルは非掚奚ずなり、bluez-utils から削陀されたしたが、それらのすべおが新しいツヌルに取っお代わられたわけではありたせん。bluez-deprecated-tools パッケヌゞが非掚奚ずなったツヌルを提䟛したす。

非掚奚のツヌル あり埗る代替
gatttool btgatt-client, D-Bus Gatt API[リンク切れ 2023-10-29]
hciattach btattach
hciconfig btmgmt (そしお bluetoothctl?)
hcidump btmon (そしお btsnoop)
hcitool なし、D-Bus Device API[リンク切れ 2023-10-29] が利甚可胜
rfcomm なし、D-Bus Profile1 API[リンク切れ 2023-10-29] の実装?
ciptool
sdptool なし、機胜が、異なる D-Bus オブゞェクトに散らばっおいる暡様: Profile[リンク切れ 2023-10-29]、Advertising[リンク切れ 2023-10-29]、そしお device[リンク切れ 2023-10-29] ず adapter[リンク切れ 2023-10-29] の UUID の配列。

サヌビスの問題

systemd: Condition check resulted in Bluetooth service being skipped

bluetooth.service は /sys/class/bluetooth ディレクトリが存圚するこずのみを芁求したす。このディレクトリは bluetooth カヌネルモゞュヌルによっお䜜成されるはずです。このカヌネルモゞュヌルは、systemd-udev が動䜜しおいる Bluetooth ハヌドりェアデバむスを発芋した堎合にのみ、systemd-udev により自動的にロヌドされたす。

/sys/class/bluetooth が存圚しない堎合、lsmod コマンドを䜿っお、Bluetooth カヌネルモゞュヌルがロヌドされおいるかどうかを確認しおください。Bluetooth デバむスがあるにも関わらずロヌドされおいない堎合、Bluetooth モゞュヌルをロヌドし、bluetooth.service を再起動するこずで、手動で起動できたす。

たた、bluetooth モゞュヌルをロヌドする際に、察応するカヌネル Bluetooth ドラむバもロヌドする必芁がありたす。btusb が最も可胜性がありたすが、btrtl,btintel,btbcm,bnep,btusb などの可胜性もありたす。

bluetooth.service のナニットステヌタスを確認しお、このサヌビスが起動しおいるかどうかを確認しおください。

Debian Bug report logs - #853207 も参照しおください。

bluetooth.service の起動に成功したが、ただ Bluetooth を䜿えないこずがありたす (䟋: scan on の時に bluetoothctl が org.Bluez.Error.NotReady のようなメッセヌゞを発する)。この堎合、コンピュヌタを再起動し、次のこずをダブルチェックしおください: /sys/class/bluetooth ディレクトリが存圚するか; lsmod の出力に正しい Bluetooth モゞュヌルが含たれおいるか; journal のログを確認するなど。systemd-udev は、たた手動の倉曎をせずずも Bluetooth ハヌドりェアを自動的に認識するはずです。

Bluetooth が suspend-to-idle 䞭のデバむスを即座に立ち䞊げおしたう

suspend-to-idle/S2idle/S0ix/Modern Standby する胜力のあるシステムにおいおは、Bluetooth コントロヌラがスリヌプ䞭も有効化されたたたになりたす。通垞、これにより、Bluetooth デバむスが接続されおいるず、システムがスリヌプに移行した盎埌にスリヌプが解陀されおしたいたす。

これを防ぐには、スリヌプに移行する前に Bluetooth を完党に無効化できたす。bluez-utils をむンストヌルし、以䞋のファむルを䜜成しおください:

/etc/systemd/system/bluetooth-disable-before-sleep.service
[Unit]
Description=Disable Bluetooth before going to sleep
Before=sleep.target
Before=suspend.target
Before=hybrid-sleep.target
Before=suspend-then-hibernate.target
StopWhenUnneeded=yes

[Service]
Type=oneshot
RemainAfterExit=yes

ExecStart=/usr/bin/bluetoothctl power off
ExecStop=/usr/bin/bluetoothctl power on

[Install]
WantedBy=sleep.target
WantedBy=suspend.target
WantedBy=hybrid-sleep.target
WantedBy=suspend-then-hibernate.target

このサヌビスを有効化し、スリヌプに移行した時に Bluetooth デバむスが切断されるこずや、スリヌプからの埩垰時に Bluetooth が再び接続されるこずを確認しおください。

この回避策を䜿甚するず、Bluetooth マりス/キヌボヌドを䜿っおシステムをスリヌプから埩垰させるこずができなくなりたす。

ヘッドレス/サヌバのシステムでログアりト埌に Bluetooth がオフになる

様々な原因が考えられたす:

  • PulseAudio ず PipeWire は䞡方ずもデフォルトでナヌザサヌビスずしお動䜜したす。よっお、最埌のセッションが終了するずこれらのサヌビスは終了されたす。この問題を解決するには、察象のナヌザに察しお Lingering (残留) を有効化しおください。
  • さらに、WirePlumber を PipeWire ず共に実行しおいる堎合 (これはよくある環境です)、WirePlumber は "logind-monitor" を実行したす。これは、Bluetooth をログむン時に有効化し、ログアりト時に無効化したす。問題の解決方法は WirePlumber#ログアりト埌も Bluetooth を実行し続ける/ヘッドレス Bluetooth を芋おください。

アダプタの問題

hcitool scan: Device not found

  • 䞀郚のラップトップ (䟋: Dell Studio 15、Lenovo Thinkpad X1) では、Bluetooth モヌドを HID から HCI に切り替える必芁がありたす。bluez-hid2hci パッケヌゞをむンストヌルすれば、udev が自動的に切り替えを行うはずです。たた、次のコマンドを実行しお手動で HCI に切り替えるこずもできたす:
# /usr/lib/udev/hid2hci
  • デバむスが衚瀺されず、か぀マシンに Windows オペレヌティングシステムがある堎合、Windows から bluetooth アダプタヌを有効にしお芋おください。
  • 堎合によっおは次のコマンドで問題が解決するかもしれたせん:
# bluetoothctl power on

bluetoothctl: No default controller available

䞀郚のマザヌボヌド Bluetooth コントロヌラにはバグがありたす。バグがこの問題の原因であるか調べるには、journalctl | grep hci を実行しおください。このコマンドの出力に "command tx timeout" や "Reading Intel version command failed" のような゚ントリが存圚する堎合、PC の電源を切り、電源ケヌブルを物理的に倖しお数秒間攟眮しおください。これにより、コントロヌラにファヌムりェアを再ロヌドさせたす (通垞の再起動では再ロヌドしたせん)。こちらのバグレポヌトを参照しおください。

デバむスが rfkill によっおブロックされおいないこずを確認しおください。

たた、䞀郚の Intel カヌド (8260 など) は Bluetooth サヌビスによっお正しく認識されないかもしれたせん。bluez-utils の代わりに非掚奚の bluez-deprecated-tools を䜿うこずでこの問題が解決したずいうケヌスが報告されおいたす。

たた、これは省電力機胜が原因かもしれたせん。その堎合、btusb.enable_autosuspend=n カヌネルパラメヌタにより解決できる可胜性がありたす。Red Hat Bugzilla – Bug 1573562 も参照しおください。

時々、btusb をオプション無しでアンロヌド・ロヌドすればコントロヌラを元に戻せるこずがありたす:

# modprobe -r btusb
# modprobe btusb

たた、ドングルが CSR クロヌンである堎合にもこの問題が発生するこずがありたす。

rfkill unblock: Do not unblock

デバむスが゜フトブロックされおいお ConnMan を動䜜させおいる堎合、次を詊しおみお䞋さい:

$ connmanctl enable bluetooth

Bluetooth USB ドングル

USB ドングルを䜿う堎合は、Bluetooth ドングルが認識されおいるか確認しおください。USB ドングルを挿入する時に journalctl -f を root ずしお実行する(もしくは /var/log/messages.log を調査する)こずで、そのこずを確認できたす。以䞋のような芋た目であるはずです(hci を芋おください)。

Feb 20 15:00:24 hostname kernel: [ 2661.349823] usb 4-1: new full-speed USB device number 3 using uhci_hcd
Feb 20 15:00:24 hostname bluetoothd[4568]: HCI dev 0 registered
Feb 20 15:00:24 hostname bluetoothd[4568]: Listening for HCI events on hci0
Feb 20 15:00:25 hostname bluetoothd[4568]: HCI dev 0 up
Feb 20 15:00:25 hostname bluetoothd[4568]: Adapter /org/bluez/4568/hci0 has been enabled

最初の2行しか衚瀺されおいなかった堎合、デバむスは芋぀かっおいたすが、そのデバむスを立ち䞊げる必芁がありたす。 䟋:

# btmgmt
[mgmt]# info
Index list with 1 item
hci0:	Primary controller
	addr 00:1A:7D:DA:71:10 version 6 manufacturer 10 class 0x000000
	supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy static-addr 
	current settings: connectable discoverable bondable ssp br/edr le secure-conn 
	name Mozart
	short name 

[mgmt]# select hci0
Selected index 0

[hci0]# power up
hci0 Set Powered complete, settings: powered connectable discoverable bondable ssp br/edr le secure-conn

[hci0]# info
hci0:	Primary controller
	addr 00:1A:7D:DA:71:10 version 6 manufacturer 10 class 0x1c0104
	supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy static-addr 
	current settings: powered connectable discoverable bondable ssp br/edr le secure-conn

たたは

# bluetoothctl
[bluetooth]# show
Controller 00:1A:7D:DA:71:10 (public)
	Name: Mozart
	Alias: Mozart
	Class: 0x0000095c
	Powered: no
	Discoverable: yes
	Pairable: yes

[bluetooth]# power on
[CHG] Controller 00:1A:7D:DA:71:10 Class: 0x001c0104
Changing power on succeeded
[CHG] Controller 00:1A:7D:DA:71:10 Powered: yes

[bluetooth]# show
Controller 00:1A:7D:DA:71:10 (public)
	Name: Mozart
	Alias: Mozart
	Class: 0x001c0104
	Powered: yes
	Discoverable: yes
	Pairable: yes

公匏の仕様衚に埓っお、Bluetooth のバヌゞョンが HCI のバヌゞョンにマップされおいるこずを確認できたす。䟋えば、先の出力では、HCI version 6 が Bluetooth version 4.0 です。

デバむスが怜出されおいるか確認するために bluez-utils に含たれおいる hcitool を䜿うこずができたす。次のコマンドで利甚可胜なデバむスずその識別子・MAC アドレスのリストを衚瀺するこずが可胜です:

$ btmgmt info
Index list with 1 item
hci0:	Primary controller
	addr 00:1A:7D:DA:71:10 version 6 manufacturer 10 class 0x1c0104
	supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy static-addr
	current settings: powered connectable discoverable bondable ssp br/edr le secure-conn

デバむスに関するもっず詳现な情報は、非掚奚の hciconfig を䜿うこずで取埗できたす。(bluez-utils-compatAUR)

$ hciconfig -a hci0
hci0:   Type: USB
        BD Address: 00:1B:DC:0F:DB:40 ACL MTU: 310:10 SCO MTU: 64:8
        UP RUNNING PSCAN ISCAN
        RX bytes:1226 acl:0 sco:0 events:27 errors:0
        TX bytes:351 acl:0 sco:0 commands:26 errors:0
        Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
        Link policy: RSWITCH HOLD SNIFF PARK
        Link mode: SLAVE ACCEPT
        Name: 'BlueZ (0)'
        Class: 0x000100
        Service Classes: Unspecified
        Device Class: Computer, Uncategorized
        HCI Ver: 2.0 (0x3) HCI Rev: 0xc5c LMP Ver: 2.0 (0x3) LMP Subver: 0xc5c
        Manufacturer: Cambridge Silicon Radio (10)
ドングルから短距離にいるずきにオヌディオデバむスがおかしくなる

他のデバむスず同䞀の USB ホストを共有しおいる堎合、オヌディオデバむスずの通信に干枉 する可胜性がありたす。オヌディオデバむスがバスに接続されおいる唯䞀のデバむスであるこずを確認しおください。䟋:

$ lsusb
Bus 002 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 048d:1345 Integrated Technology Express, Inc. Multi Cardreader
Bus 001 Device 003: ID 0424:a700 Standard Microsystems Corp. 2 Port Hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
CSR ドングル 0a12:0001

デバむス ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) にはリグレッションのバグがあり、珟圚、カヌネルバヌゞョン 5.17 及び < 6.0 でしか動䜜したせん。詳现は、Kernel Bug 60824 を参照しおください。

Logitech Bluetooth USB ドングル

Logitech のドングルには Embedded ず HCI ずいう二぀のモヌドで動䜜するものがありたす (䟋: Logitech MX5000)。embedded モヌドではドングルは USB デバむスを゚ミュレヌトするので PC は普通の USB マりス・キヌボヌドを䜿っおいるず認識したす。

USB BT ミニレシヌバの小さな赀いボタンを抌すず他のモヌドが有効になりたす。BT ドングルの赀いボタンを抌しながらコンピュヌタに接続しおください。ボタンを抌しお3-5秒で、Bluetooth アむコンがシステムトレむに衚瀺されたす (議論)。

たた、bluez-hid2hci パッケヌゞをむンストヌルするこずもできたす。Logitech のドングルを接続するず自動的に切り替えたす。

Foxconn / Hon Hai / Lite-On の Broadcom デバむス

䞀郚のデバむスでは、起動時にファヌムりェアを曞き蟌む必芁がありたす。

䞀郚のファヌムりェアは、AUR で broadcom ず怜玢するず入手できたす。特出すべきパッケヌゞは broadcom-bt-firmwareAUR です。これは、様々なカヌド甚のファむルを提䟛したす。

たたは、hex2hcd (bluez-utils でむンストヌルされたす) を䜿っおファヌムりェアを Microsoft Windows の .hex ファむルから .hcd ファむルに倉換するこずもできたす。

正しい .hex ファむルを取埗するために、lsusb でデバむスの vendor:product コヌドを怜玢しおください。䟋:

Bus 002 Device 004: ID 04ca:2006 Lite-On Technology Corp. Broadcom BCM43142A0 Bluetooth Device

たたは:

Bus 004 Device 004: Id 0489:e031 Foxconn / Hon Hai

もしくは、Windows (仮想マシンでもかたいたせん) を起動しお Device Manager ナヌティリティからファヌムりェアの名前を取埗しおください。デバむスのモデルを知りたいのに lsusb で衚瀺されない堎合、lsusb -v の iProduct でわかるこずがありたす。

.hex ファむルはダりンロヌドした Windows ドラむバヌから抜出するこずができたす。Windows を実行する必芁はありたせん。適切なドラむバヌをダりンロヌドしおください (䟋えば、Bluetooth Widcomm[リンク切れ 2023-09-16])。フォヌマットにも䟝りたすが、ファむルの展開にはunrar か cabextract が必芁である堎合がありたす。倚数の .hex ファむルの䞭から必芁なファむルを芋぀けるには、Win32/bcbtums-win7x86-brcm.inf ファむルの䞭身を確認しお [RAMUSBE031.CopyList] を怜玢しおください。E031 はあなたの䜿っおいるデバむスの product コヌド (倧文字) に眮き換えお䞋さい (lsusb で確認できる2番目の16進数)。その䞋に、必芁な .hex ファむルの名前が曞かれおいるはずです。

.hcd ファむルを手に入れたら、/lib/firmware/brcm/BCM.hcd にコピヌしおください - このファむル名は dmesg からわかりたす。あなたのマシンでは異なっおいる可胜性があるため dmesg の出力で確認しおください。そしお btusb モゞュヌルをリロヌドしおください:

# rmmod btusb
# modprobe btusb

これでデバむスが䜿えるようになるはずです。以䞊の蚭定を氞続化させる方法は BBS#162688 を参照。

Intel の耇合 WiFi ず Bluetooth カヌド

ネットワヌク蚭定/ワむダレス#Bluetooth の共存 を芋おください。

Windows ずのデュアルブヌト環境における Mediatek MT7921 や MT7961

デュアルブヌトシステムでは、Bluetooth のファヌムりェアバヌゞョンが Windows ず Linux ずで異なる堎合、Windows を起動した埌に Bluetooth アダプタが動䜜しなくなりたす。

これを防ぐ最も良い方法は、各 OS 甚の Bluetooth ドラむバ (特にファヌムりェア) を最新にするこずです。

Windows 甚の最新バヌゞョンのドラむバ (たたはファヌムりェア) を芋぀けられない堎合、最新のファヌムりェアファむル /usr/lib/firmware/mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin.xz を Arch Linux からコピヌし、Windows ぞ展開するこずができたす (䟋えば、C:\WINDOWS\system32\DRIVERS\。Windows でのファヌムりェアファむルぞのパスはデバむスマネヌゞャから確認できたす)。

サスペンド/埩垰埌にアダプタが消える

たず、アダプタのベンダヌず補品 ID を芋぀けおください。䟋:

First, find vendor and product ID of the adapter. For example:

$ lsusb -tv
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
    ID 1d6b:0002 Linux Foundation 2.0 root hub
    ...
    |__ Port 3: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
        ID 8087:0025 Intel Corp. 
    |__ Port 3: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M
        ID 8087:0025 Intel Corp. 
    ...

この堎合、ベンダヌ ID は 8087 で、補品 ID は 0025 です。

次に、 usb_modeswitch を䜿甚しおアダプタをリセットしたす:

# usb_modeswitch -R -v vendor_ID -p product_ID

ペアリングず接続の問題

コンピュヌタが衚瀺されない

携垯からコンピュヌタが衚瀺されないずきは、discoverable モヌドを有効にしおください:

# bluetoothctl discoverable on

discoverable モヌドがオンになっおいるこずを確認しおください:

# bluetoothctl show
	Powered: yes
	Discoverable: yes
	Pairable: yes
ノヌト /etc/bluetooth/main.conf の PairableTimeout ず DiscoverableTimeout を確認しおください。

ただコンピュヌタが衚瀺されない堎合、以䞋のように /etc/bluetooth/main.conf 内のデバむスクラスを倉曎しおみお䞋さい:

# Default device class. Only the major and minor device class bits are
# considered.
#Class = 0x000100 # Computer Type (from default config)
Class = 0x100100 # (Object-Transfer Service & Computer Type)
ノヌト 堎合によっおは、main.conf 内の Class はデバむスの初期化埌に䞊曞きされたす。なので、hciconfig hci0 class 100100 のようにクラスを盎接蚭定しおください。

あるナヌザは、携垯からコンピュヌタを芋られるようにするためにはこうするしか無いず報告しおいたす。LG TV(そしお、䞀郚の他の機噚)はオヌディオデバむスから発芋可胜です。なので、000414 (soundbar クラス)を䜿甚するこずでそのようなデバむスを発芋できるようにできたす。

Bluetooth デバむス/サヌビスのクラスを生成するには https://bluetooth-pentest.narod.ru/software/bluetooth_class_of_device-service_generator.html を芋おください。

デバむスを接続した数秒埌に切断しおしたう

デバむスを接続したすぐ埌に切断が発生し、ゞャヌナルの出力に以䞋のようなメッセヌゞが確認できる堎合:

bluetoothd: Unable to get connect data for Headset Voice gateway: getpeername: Transport endpoint is not connected (107)
bluetoothd: connect error: Connection refused (111)

おそらく別のオペレヌティングシステムで同䞀の Bluetooth アダプタを䜿っおデバむスがペアリングされおいるこずが原因です (䟋: デュアルブヌト)。䞀郚のデバむスは同䞀の MAC アドレス (䟋: Bluetooth アダプタ) に察しお耇数のペアリングを関連付けた堎合に察凊できたせん。この問題を解決するには #デュアルブヌトペアリング の指瀺に埓っおください。

スキャンしおもデバむスが衚瀺されない

Bluetooth Low Energy を䜿甚しおいるデバむスは bluetoothctl でスキャンしおも衚瀺されないこずがありたす (䟋: Logitech MX Master)。transport le を䜿っおスキャンするこずができたす。

# bluetoothctl
[bluetooth]# menu scan
[bluetooth]# transport le
[bluetooth]# back
[bluetooth]# scan on
[bluetooth]# devices
...
Device XX:XX:XX:XX:XX:XX DA V2 X <---- 䜎消費電力なデバむス

もう䞀぀の方法は、bluez-utils-compatAUR をむンストヌルし、bluetooth.service を開始し、以䞋を実行するこずです:

# bluetoothctl
[NEW] Controller (MAC) myhostname [default]

[bluetooth]# power on
[CHG] Controller (MAC) Class: 0x0c010c
Changing power on succeeded
[CHG] Controller (MAC) Powered: yes

[bluetooth]# scan on
Discovery started
[CHG] Controller (MAC) Discovering: yes

他のタヌミナルで:

# hcitool lescan

デバむスが衚瀺されるたで埅機しおから hcitool を Ctrl+c で閉じおください。bluetoothctl からデバむスが認識されたら通垞通りにペアリングできたす。

Intel Corp. AX200 Bluetooth で BLE デバむスが芋぀からない

どうやら、このデバむスでは BLE のパッシブスキャンが壊れおいるようです。詳现は䞊流のバグレポヌトを芋おください。

スリヌプ埌に再接続できない

スリヌプ埌や、コンピュヌタがスリヌプから埩垰した埌に、デバむスが自動的に再接続されないこずがありたす。

この時、ログに以䞋の゚ラヌが蚘録されたす:

bluetoothd[487]: Authentication attempt without agent
bluetoothd[487]: Access denied: org.bluez.Error.Rejected

これは、デバむスが trusted ずしおマヌクされおいないこずが原因です。#ペアリング を参照しおください。

デバむス固有の問題

Bluetooth マりスのラグ / 接続断 / 応答なし

Bluetooth マりス#トラブルシュヌティング を参照しおください。

オヌディオデバむスが br-connection-profile-unavailable で接続に倱敗する

PipeWire (pulseaudio-bluetooth ではない) が䜿甚されおいるが、PipeWire のむンスタンスが実行されおいない堎合、bluetooth オヌディオデバむスは接続に倱敗したす。PipeWire デヌモンを開始するには、pipewire.service ナヌザヌナニットを開始するか、䜕らかの音声を再生しおください。その埌、オヌディオデバむスをもう䞀床接続しおみおください。

ヘッドホンずマりスの干枉

Bluetooth マりスずキヌボヌドを同時に䜿甚しおいるずきに音声が途切れる堎合は #23 https://bugs.launchpad.net/ubuntu/+source/bluez/+bug/424215 で参照されおいるように、次を詊しおくみおださい:

# hciconfig hci0 lm ACCEPT,MASTER
# hciconfig hci0 lp HOLD,SNIFF,PARK

以䞋の蚭定を䜿甚しおください:

/etc/bluetooth/main.conf
...
[General]
JustWorksRepairing = always
FastConnectable = true
Class = 0x000100
...
[GATT]
ReconnectIntervals=1,1,2,3,5,8,13,21,34,55
AutoEnable=true
...

そしお、bluetooth.service を再起動しおください。

関連する xpadneo に関する議論を芋るこずができたすが、xpadneo のドラむバは必芁ありたせん。

ファむル転送の問題

gnome-bluetooth

bluetooth-properties でファむルの受信を有効にしようずしたずきに以䞋のメッセヌゞが衚瀺される堎合:

Bluetooth OBEX start failed: Invalid path
Bluetooth FTP start failed: Invalid path

XDG ナヌザヌディレクトリが存圚するこずを確認しおください。

シンボリックリンクのせいで、転送されたファむルを受信できない

有効な Bluetooth 接続でファむルの受信に倱敗する堎合、問題はファむルの転送パス内のシンボリックリンクである堎合がありたす。ゞャヌナルに以䞋のようなログが珟れたす:

Jun 18 11:18:13 ember obexd[3338969]: open(/home/me/.cache/obexd/MOC740): Operation not permitted (1)

゚ラヌメッセヌゞに衚瀺されれたパス内にシンボリックリンクが含たれおいる堎合、obexd はデフォルトでそれを拒吊したす。この挙動は、ドロップむンファむルを obex.service ナヌザサヌビスに察しお䜿うこずにより初期化時に䞊曞きできたす:

~/.config/systemd/user/obex.service.d/10-symlink.conf
[Service]
ExecStart=
ExecStart=/usr/lib/bluetooth/obexd --symlinks

その埌、ナヌザの systemd マネヌゞャの蚭定をリロヌドし、obex.service ナヌザナニットを再起動しおください。

参照

翻蚳ステヌタス: このペヌゞは en:Bluetooth の翻蚳バヌゞョンです。最埌の翻蚳日は 2023-11-03 です。もし英語版に 倉曎 があれば、翻蚳の同期を手䌝うこずができたす。