<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Relz</id>
	<title>ArchWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Relz"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/Relz"/>
	<updated>2026-08-13T02:00:06Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Bluetooth&amp;diff=41637</id>
		<title>Bluetooth</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Bluetooth&amp;diff=41637"/>
		<updated>2026-06-27T13:42:41Z</updated>

		<summary type="html">&lt;p&gt;Relz: 説明文が修正されました。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Bluetooth]]&lt;br /&gt;
[[de:Bluetooth]]&lt;br /&gt;
[[en:Bluetooth]]&lt;br /&gt;
[[es:Bluetooth]]&lt;br /&gt;
[[ru:Bluetooth]]&lt;br /&gt;
[[zh-hans:Bluetooth]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Bluetooth マウス}}&lt;br /&gt;
{{Related|Bluetooth キーボード}}&lt;br /&gt;
{{Related|Bluetooth ヘッドセット}}&lt;br /&gt;
{{Related|Blueman}}&lt;br /&gt;
{{Related|ObexFTP}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[[Wikipedia:ja:Bluetooth|Bluetooth]] は携帯電話やコンピュータなどの電子デバイス用の近距離無線通信規格です。Linux においては、Bluetooth プロトコルスタックの実装として [http://www.bluez.org/ BlueZ] が標準的に使われています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
# Bluetooth プロトコロスタックを提供する、{{Pkg|bluez}} パッケージを[[インストール]]します。&lt;br /&gt;
# {{ic|bluetoothctl}} ユーティリティを提供する、{{Pkg|bluez-utils}} を[[インストール]]します。{{Pkg|bluez-deprecated-tools}} を[[インストール]]して、[[#非推奨の BlueZ ツール|非推奨の BlueZ ツール]] を追加します。&lt;br /&gt;
# 一般的な Bluetooth ドライバは、{{ic|btusb}} カーネルモジュールです。このモジュールがロードされているかどうかを[[カーネルモジュール#情報を取得|確認]]してください。もしロードされていなければ、[[カーネルモジュール#手動でモジュールを扱う|モジュールをロード]]してください。&lt;br /&gt;
# {{ic|bluetooth.service}} を[[起動/有効化]]します。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* デフォルトでは bluetooth デーモンは {{ic|lp}} [[ユーザーとグループ#システムグループ|グループ]]のメンバーのユーザーだけに bnep0 デバイスを提供します。bluetooth テザリングに接続するときはユーザーをグループに追加しておいてください。必要なグループは {{ic|/etc/dbus-1/system.d/bluetooth.conf}} ファイルで変更することができます。&lt;br /&gt;
* Bluetooth アダプターには Wi-Fi カードがバンドルされているものもあります (例: [https://www.intel.com/content/www/us/en/wireless-products/centrino-advanced-n-6235.html Intel Centrino]{{Dead link|2023|09|16|status=404}})。これらの Bluetooth アダプターをカーネルから見えるようにするには、まず Wi-Fi カードを有効にする必要があります (大体はラップトップ上のキーボードショートカットを使う)。&lt;br /&gt;
* Bluetooth カードによってはネットワークアダプタと衝突することがあります (例: Broadcom)。したがって、ネットワークサービスを起動する前に Bluetooth デバイスを接続するようにしてください。&lt;br /&gt;
* hcitool や hciconfig などのツールは上流では非推奨となっており、{{Pkg|bluez-utils}} にはもはや含まれていません。アップデートされないことが決まっているため、スクリプトの中で使用している場合は使わないように書き換えることを推奨します。それでも使いたい場合は {{Pkg|bluez-deprecated-tools}} をインストールしてください。詳しい情報は {{Bug|53110}} や [https://lore.kernel.org/linux-bluetooth/20170104133401.3636-1-luiz.dentz@gmail.com/ Bluez メーリングリスト] を参照。&lt;br /&gt;
* 2024年から、{{Pkg|bluez-obex}}と{{Pkg|bluez-mesh}}は{{Pkg|bluez}}から分離されました。よって、Bluetooth越しにファイルを転送したい場合は、{{Pkg|bluez-obex}}をインストールし、ユーザーサービス {{ic|obex.service}} を有効化する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
=== フロントエンド ===&lt;br /&gt;
&lt;br /&gt;
==== コンソール ====&lt;br /&gt;
&lt;br /&gt;
* {{App|bluetoothctl|シェルからデバイスをペアリングすることは、最も単純で信頼性の高いオプションの一つです。|http://www.bluez.org/|{{Pkg|bluez-utils}}}}&lt;br /&gt;
* {{App|bluetuith|ターミナルユーザインターフェイスによる Bluetooth マネージャを提供します。OBEX ファイル転送とマウスのサポート付きで、デバイス/アダプタを簡単に管理できます。|https://www.github.com/darkhz/bluetuith|{{AUR|bluetuith}}}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|bluetoothctl コマンドを自動化するには、{{ic|echo -e &amp;quot;&#039;&#039;command1&#039;&#039;\n&#039;&#039;command2&#039;&#039;\n&amp;quot; {{!}} bluetoothctl}} または {{ic|bluetoothctl -- &#039;&#039;command&#039;&#039;}} を使用します。}}&lt;br /&gt;
&lt;br /&gt;
==== グラフィカル ====&lt;br /&gt;
&lt;br /&gt;
以下のパッケージでは、Bluetooth をカスタマイズするためのグラフィカルインターフェイスが利用可能です。&lt;br /&gt;
&lt;br /&gt;
* {{App|GNOME Bluetooth|[[GNOME]] の Bluetooth ツール。&lt;br /&gt;
** {{Pkg|gnome-bluetooth-3.0}} バックエンドを提供 ({{Pkg|gnome-bluetooth}} はレガシーです)&lt;br /&gt;
** {{Pkg|gnome-shell}} ステータスモニターアプレットを提供&lt;br /&gt;
** {{Pkg|gnome-control-center}} は設定用のフロントエンド GUI を提供しており、アクティビティ概要で  Bluetooth と入力するか、 {{ic|gnome-control-center bluetooth}} コマンドでアクセスすることができます。&lt;br /&gt;
** また、{{ic|bluetooth-sendto}} コマンドを直接起動して、リモートデバイスにファイルを送信することも可能です。&lt;br /&gt;
** {{AUR|nautilus-bluetooth}} は Nautilus の右クリックメニューに &amp;quot;Bluetoothで送信&amp;quot; エントリを追加します。&lt;br /&gt;
** ファイルを受信するには、Bluetooth 設定パネルを開きます。Bluetooth パネルが開いている間のみ受信できます。&lt;br /&gt;
** Thunar のファイルプロパティメニューの &#039;&#039;送信先&#039;&#039; メニューに Bluetooth エントリを追加するには、説明 [https://docs.xfce.org/xfce/thunar/send-to ここ] を参照してください。(設定が必要なコマンドは {{ic|bluetooth-sendto %F}} です)&lt;br /&gt;
|https://wiki.gnome.org/Projects/GnomeBluetooth|}}&lt;br /&gt;
* {{App|Bluedevil|[[KDE]] の Bluetooth ツール。 Dolphin やシステムトレイに Bluetooth のアイコンが表示されていない場合は、システムトレイオプションで有効にするか、ウィジェットを追加してください。アイコンをクリックすることで、Bluedevil の設定や Bluetooth デバイスの検出が可能です。KDE システム設定からもインターフェースが利用できます。|https://invent.kde.org/plasma/bluedevil|{{Pkg|bluedevil}}}}&lt;br /&gt;
* {{App|Blueberry|GNOME Bluetooth から Linux Mint でスピンオフした &#039;&#039;Blueberry&#039;&#039; は全てのデスクトップ環境で動作します。Obex Object Push によるファイル受信をサポートしていません。|https://github.com/linuxmint/blueberry|{{Pkg|blueberry}}}}&lt;br /&gt;
* {{App|[[Blueman]]|フル機能の Bluetooth マネージャー|https://github.com/blueman-project/blueman|{{Pkg|blueman}}}}&lt;br /&gt;
* {{App|Bluetooth Manager Sidebar|GTK4/libadwaita を使用した Wayland セッション向けの Bluetooth マネージャー。サイドバーとして開き、デバイスのペアリング、OBEX ファイル転送、オーディオプロファイルの切り替えに対応しています。|https://github.com/Relz/bluetooth-manager-sidebar|{{AUR|bm-sidebar}}}}&lt;br /&gt;
* {{App|[[ObexFTP]]|OBEX 対応のデバイスとの間でファイルを転送するツール。|http://dev.zuckschwerdt.org/openobex/wiki/ObexFtp|{{AUR|obexftp}}}}&lt;br /&gt;
&lt;br /&gt;
== ペアリング ==&lt;br /&gt;
&lt;br /&gt;
{{Note|Bluetooth デバイスを使用する前に、[[rfkill]] でブロックされていないことを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
このセクションでは、&#039;&#039;bluetoothctl&#039;&#039; CLI を使って &#039;&#039;bluez5&#039;&#039; を直接設定する方法を説明しています。これは、代替のフロントエンドツール(例えば GNOME Bluetooth)を使用している場合は必要ないかもしれません。&lt;br /&gt;
&lt;br /&gt;
正確な手順は、利用するデバイスとその入力機能によります。以下は {{ic|bluetoothctl}} を使ってデバイスをペアリングする一般的な説明です。&lt;br /&gt;
&lt;br /&gt;
{{ic|bluetoothctl}} 対話コマンドを実行してください。{{ic|help}} と入力することで利用できるコマンドのリストを表示できます。&lt;br /&gt;
&lt;br /&gt;
# (任意) {{ic|select &#039;&#039;MAC Address&#039;&#039;}} と入力してデフォルトのコントローラを選択してください。&lt;br /&gt;
# (任意) デバイスがオフになっている場合、{{ic|power on}} と入力してコントローラへの電源供給をオンにしてください。デバイスはデフォルトでオンになっています ([[#アダプタのデフォルト電源状態]])。&lt;br /&gt;
# {{ic|devices}} と入力して、ペアリングしたいデバイスの MAC アドレスを取得してください。&lt;br /&gt;
# デバイスが表示されないときは {{ic|scan on}} コマンドでデバイス検出モードにしてください。&lt;br /&gt;
# {{ic|agent on}} でエージェントをオンにするか、特定のエージェントを選択してください: {{ic|agent}} の後にタブキーを2回押すと、利用可能なエージェントのリストが表示されるはずです。Bluetooth エージェントとは、Bluetooth の &#039;ペアリングコード&#039; を管理するもののことです。エージェントは、&#039;ペアリングコード&#039;の受信に応答したり、&#039;ペアリングコード&#039;を送信したりできます。ほとんどの場合、{{ic|default-agent}} を使うのが適切なはずです。[https://askubuntu.com/questions/763939/bluetoothctl-what-is-a-bluetooth-agent]&lt;br /&gt;
# {{ic|pair &#039;&#039;MAC Address&#039;&#039;}} と入力することでペアリングを実行します (タブ補完が使えます)。&lt;br /&gt;
# PIN がないデバイスを使う場合は、手動でデバイスを信頼する必要があるかもしれません。{{ic|trust &#039;&#039;MAC Address&#039;&#039;}} と入力してこれを行なって下さい。デバイスを信頼するには {{ic|trust &#039;&#039;MAC_address&#039;&#039;}} と入力してください。&lt;br /&gt;
# {{ic|connect &#039;&#039;MAC_address&#039;&#039;}} を使って接続を確立してください。&lt;br /&gt;
&lt;br /&gt;
セッションの例は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ bluetoothctl|&lt;br /&gt;
[NEW] Controller 00:10:20:30:40:50 &#039;&#039;hostname&#039;&#039; [default]&lt;br /&gt;
[bluetooth]# agent KeyboardOnly&lt;br /&gt;
Agent registered&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# default-agent&lt;br /&gt;
Default agent request successful&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# power on&lt;br /&gt;
Changing power on succeeded&lt;br /&gt;
[CHG] Controller 00:10:20:30:40:50 Powered: yes&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# scan on&lt;br /&gt;
Discovery started&lt;br /&gt;
[CHG] Controller 00:10:20:30:40:50 Discovering: yes&lt;br /&gt;
[NEW] Device 00:12:34:56:78:90 &#039;&#039;device name&#039;&#039;&lt;br /&gt;
[CHG] Device 00:12:34:56:78:90 LegacyPairing: yes&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# pair 00:12:34:56:78:90&lt;br /&gt;
Attempting to pair with 00:12:34:56:78:90&lt;br /&gt;
[CHG] Device 00:12:34:56:78:90 Connected: yes&lt;br /&gt;
[CHG] Device 00:12:34:56:78:90 Connected: no&lt;br /&gt;
[CHG] Device 00:12:34:56:78:90 Connected: yes&lt;br /&gt;
Request PIN code&lt;br /&gt;
[agent] Enter PIN code: 1234&lt;br /&gt;
[CHG] Device 00:12:34:56:78:90 Paired: yes&lt;br /&gt;
Pairing successful&lt;br /&gt;
[CHG] Device 00:12:34:56:78:90 Connected: no&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# connect 00:12:34:56:78:90&lt;br /&gt;
Attempting to connect to 00:12:34:56:78:90&lt;br /&gt;
[CHG] Device 00:12:34:56:78:90 Connected: yes&lt;br /&gt;
Connection successful&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== デュアルブートペアリング ===&lt;br /&gt;
&lt;br /&gt;
デュアルブート環境でデバイスをペアリングするには、Linux の方でペアリングキーを変更して Windows または macOS で使用されているペアリングキーと同じにする必要があります。&lt;br /&gt;
&lt;br /&gt;
このページでは、これを手動で行う方法のみを説明しています。この手順を自動化するには、[https://github.com/x2es/bt-dualboot bt-dualboot プロジェクト]や関連するリポジトリを参照してください。&lt;br /&gt;
&lt;br /&gt;
==== 設定方法 ====&lt;br /&gt;
&lt;br /&gt;
これを行うには、まず Arch Linux 上でデバイスのペアリングを行います。その後、もう一方の OS を再起動し、デバイスをペアリングします。ここでペアリング・キーを取り出す必要がありますが、まず Bluetooth デバイスの電源を切り、接続を試みないようにします。&lt;br /&gt;
&lt;br /&gt;
{{Note|([[Logitech MX Master]] や Logitech 604 Lightspeed などの) 一部の Logitech デバイスは、デバイスが新しいシステムとペアリングするたびに MAC アドレスの値を1つ増加させます。プロセスの最後にこれに対処するために、このケースに該当するかどうかを確認する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
==== Windows の場合 ====&lt;br /&gt;
&lt;br /&gt;
===== Windows での展開 =====&lt;br /&gt;
&lt;br /&gt;
まず、Windows を起動してください。&lt;br /&gt;
&lt;br /&gt;
リンクキーを含むレジストリキーは、ログイン不可能な[https://docs.microsoft.com/en-us/windows/security/identity-protection/access-control/local-accounts#system SYSTEM アカウント]でしかアクセスできません。そのため、{{ic|regedit.exe}} を {{ic|SYSTEM}} として実行するには、Windows Sysinternals 公式サイトにある Microsoft の [https://docs.microsoft.com/en-us/sysinternals/downloads/psexec PsExec] ツールが必要になります。&lt;br /&gt;
&lt;br /&gt;
[https://download.sysinternals.com/files/PSTools.zip PsTools] をダウンロードし、{{ic|PsExec64.exe}} を解凍します。&lt;br /&gt;
&lt;br /&gt;
[https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands#command-shell-overview コマンドシェル] の管理者インスタンスで、解凍した EXE の場所からレジストリエディタを起動してください:&lt;br /&gt;
&lt;br /&gt;
 .\PsExec64.exe -s -i regedit.exe&lt;br /&gt;
&lt;br /&gt;
レジストリエディタで、以下のレジストリキーに移動します:&lt;br /&gt;
&lt;br /&gt;
 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys&lt;br /&gt;
&lt;br /&gt;
このキーの中に各 Bluetooth アダプターの MAC アドレス別のキーがあります。複数のキーがあり、どれを使えばいいかわからない場合は、[https://www.addictivetips.com/windows-tips/find-bluetooth-mac-address-windows-10/ このガイド]に従って、目的の Bluetooth アダプタの MAC アドレスを検索してください。&lt;br /&gt;
&lt;br /&gt;
目的のデバイスアダプタキーの中に、ペアリングされたデバイスのそれぞれに対してキーが、MAC アドレスと関連付けられて存在しています。&lt;br /&gt;
&lt;br /&gt;
インストール間で共有したい各ペアデバイスについて、キー全体を右クリックし、&#039;&#039;.reg&#039;&#039; ファイルとしてエクスポートしてください。これはテキストファイルで、このファイルからキーをコピーできます。&lt;br /&gt;
&lt;br /&gt;
このファイルにバイナリキーが1つだけ存在する場合、Bluetooth 5.1 デバイスではなく、そのペアリングキーが必要なもの全てであるということになります。&lt;br /&gt;
&lt;br /&gt;
ペアリングしたデバイスに複数のキー ({{ic|LTK}} や {{ic|IRK}} など) が存在する場合、これは Bluetooth 5.1 デバイスで&#039;&#039;ある&#039;&#039;ということになります。これらのキーを使う方法は [[#Bluetooth 5.1 キーの準備]] を見てください。&lt;br /&gt;
&lt;br /&gt;
最後に、キーを Linux 環境にインポートするために、Linux を起動して [[#終わりに]] へ進んでください。&lt;br /&gt;
&lt;br /&gt;
===== Linux での展開 =====&lt;br /&gt;
&lt;br /&gt;
{{Note|Windows パーティションが Bitlocker で暗号化されている場合、Linux から chntpw を使ってアクセスすることはできません。}}&lt;br /&gt;
&lt;br /&gt;
Arch をリブートしてください。{{Pkg|chntpw}} をインストールして、Windows システムドライブをマウントします。&lt;br /&gt;
&lt;br /&gt;
 $ cd &#039;&#039;/path/to/windows/system&#039;&#039;/Windows/System32/config&lt;br /&gt;
 $ chntpw -e SYSTEM&lt;br /&gt;
{{Note|CurrentControlSet の代わりに ControlSet00X（X は任意の数字）と表示されることがあります。ls コマンドで確認してください。}}&lt;br /&gt;
{{ic|chntpw}} 環境の中で以下を実行します。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; cd CurrentControlSet\Services\BTHPORT\Parameters\Keys&lt;br /&gt;
もしくは&lt;br /&gt;
 &amp;gt; cd ControlSet00X\Services\BTHPORT\Parameters\Keys&lt;br /&gt;
&lt;br /&gt;
次に、Bluetooth アダプタの MAC アドレスを取得し、そのフォルダを入力します。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; ls&lt;br /&gt;
 &amp;gt; cd &#039;&#039;your-device&#039;s-mac-address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ペアリングしているデバイスにも同じことをします。Bluetooth 5.1 デバイスで&#039;&#039;ない&#039;&#039;場合、ペアリングキーしか表示されません:&lt;br /&gt;
&lt;br /&gt;
{{hc|&amp;gt; ls|&lt;br /&gt;
Node has 0 subkeys and 1 values&lt;br /&gt;
size  type        value name    [value if type DWORD]&lt;br /&gt;
16    REG_BINARY &amp;lt;123456789876&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Bluetooth 5.1 デバイスである場合、{{ic|hex}} を通して、デバイスのキーを取得します。&lt;br /&gt;
&lt;br /&gt;
{{hc|&amp;gt; hex 123456789876|&lt;br /&gt;
:00000 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX (いくつかの他の文字)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
”XX&amp;quot; はペアリング・キーです。どのキーがどの MAC アドレスにマッピングされているか、メモしておいてください。&lt;br /&gt;
&lt;br /&gt;
Bluetooth 5.1 デバイスで&#039;&#039;ある&#039;&#039;場合、1つのデバイスに対応するキーが複数表示されます。&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
Node has 0 subkeys and 8 values&lt;br /&gt;
  size     type              value name             [value if type DWORD]&lt;br /&gt;
    16  3 REG_BINARY         &amp;lt;LTK&amp;gt;&lt;br /&gt;
     4  4 REG_DWORD          &amp;lt;KeyLength&amp;gt;               16 [0x10]&lt;br /&gt;
     8  b REG_QWORD          &amp;lt;ERand&amp;gt;&lt;br /&gt;
     4  4 REG_DWORD          &amp;lt;EDIV&amp;gt;                 37520 [0x9290]&lt;br /&gt;
    16  3 REG_BINARY         &amp;lt;IRK&amp;gt;&lt;br /&gt;
     8  b REG_QWORD          &amp;lt;Address&amp;gt;&lt;br /&gt;
     4  4 REG_DWORD          &amp;lt;AddressType&amp;gt;              1 [0x1]&lt;br /&gt;
     4  4 REG_DWORD          &amp;lt;AuthReq&amp;gt;                 45 [0x2d]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これらのキーを使う方法は [[#Bluetooth 5.1 キーの準備]] を見てください。必要な値を得るには {{ic|hex &#039;&#039;value_name&#039;&#039;}} を使います。&lt;br /&gt;
&lt;br /&gt;
最後に、キーを Linux 環境にインポートするために [[#終わりに]] へ進んでください。&lt;br /&gt;
&lt;br /&gt;
==== macOS の場合 ====&lt;br /&gt;
&lt;br /&gt;
macOS を起動し:&lt;br /&gt;
&lt;br /&gt;
* macOS Monterey 及びそれ以降の場合:&lt;br /&gt;
*# Keychain Access を開き、Bluetooth と検索してください。&lt;br /&gt;
*# 日付順でソートしてください。&lt;br /&gt;
*# 対象のデバイスを最近取り除いて再接続した場合、キーを変更日時順でソートして、最新のものを選べばよいです。キーはおそらく MobileBluetooth (古い Bluetooth デバイスの場合) という名前か、UUID (Bluetooth 5.1 以降) だけです。&lt;br /&gt;
*# 対象のエントリをダブルクリックしてください。Account フィールドの MAC アドレスが対象デバイスの MAC アドレスと一致することを確認してください。&lt;br /&gt;
*# &amp;quot;Show password&amp;quot; チェックボックスをクリックしてください。ここで、パスワードを2回入力する必要があります。&lt;br /&gt;
*# パスワードフィールド内のテキストをコピーしてください ({{ic|⌘+a}} {{ic|⌘+c}})。これは実際には XML ファイルです。&lt;br /&gt;
#* テキストをホームディレクトリ内の {{ic|bt_keys.txt}} ファイルにペーストしてください。&lt;br /&gt;
* High Sierra 及びそれ以降の場合、次のコマンドをターミナルで実行してください: {{bc|# defaults read /private/var/root/Library/Preferences/com.apple.bluetoothd.plist LinkKeys &amp;gt; ~/bt_keys.txt}}&lt;br /&gt;
* Sierra 及びそれ以前の場合、次のコマンドをターミナルで実行してください: {{bc|# defaults read /private/var/root/Library/Preferences/blued.plist LinkKeys &amp;gt; ~/bt_keys.txt}}&lt;br /&gt;
&lt;br /&gt;
すると、{{ic|~/.bt_keys.txt}} ファイルには、確立された Bluetooth キーが含まれています。古いバージョンの macOS (High Sierra 及びそれ以前) では、先に進む前にキーの並びを逆にする必要があります。例えば、{{ic|98 54 2f aa bb cc dd ee ff gg hh ii jj kk ll mm}} は {{ic|MM LL KK JJ GG FF EE DD CC BB AA 2F 54 98}} になります。&lt;br /&gt;
&lt;br /&gt;
{{Note|キーの並びを逆にするには、以下の [[Python]] コードを使用できます:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; key = &amp;quot;98 54 2f aa bb cc dd ee ff gg hh ii jj kk ll mm&amp;quot;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &amp;quot; &amp;quot;.join(reversed(key.strip().split()))&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Bluetooth 5.1 デバイスの場合、1つのデバイスに対して複数のキーが関連付けられています。それらのキーを使用する方法については [[#Bluetooth 5.1 キーの準備]] を見てください。&lt;br /&gt;
&lt;br /&gt;
最後に、キーを Linux 環境にインポートするために、Linux を起動し、[[#終わりに]] へ進んでください。&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth 5.1 キーの準備 ====&lt;br /&gt;
&lt;br /&gt;
[[#Windows の場合]] や [[#macOS の場合]] の章に従っていて Bluetooth 5.1 キーが存在していた場合、それらのキーを Linux にインポートする前に特定の変換をかける必要があります。[[#終わりに]] の章で使うために、要求されたファイルを適切に作成してください。この手順は対象デバイスによって異なり、キーの一部を操作する必要があります。これを行うためのユーティリティは以下で挙げられています。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! デバイス !! 元のキー及び変換 (Windows) !! 元のキー及び変換 (macOS) || キーの保存先ファイル&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|&lt;br /&gt;
* Logitech MX Master 3&lt;br /&gt;
* Xbox One S Wireless Controller&lt;br /&gt;
|&lt;br /&gt;
* {{ic|IRK}} をコピー。&lt;br /&gt;
* 16進数の桁間のスペースを除去。&lt;br /&gt;
| {{Grey|?}}&lt;br /&gt;
| {{ic|IdentityResolvingKey.Key}}&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
* {{ic|LTK}} をコピー。&lt;br /&gt;
* 16進数の桁間のスペースを除去。&lt;br /&gt;
| {{Grey|?}}&lt;br /&gt;
| {{ic|SlaveLongTermKey.Key}} と {{ic|PeripheralLongTermKey.Key}}&lt;br /&gt;
|-&lt;br /&gt;
|{{ic|ERand}} と {{ic|EDIV}} は {{ic|0}} にする必要あり。&lt;br /&gt;
|&#039;&#039;Random Number&#039;&#039; と &#039;&#039;Encrypted Diversifier&#039;&#039; は {{ic|0}} にする必要あり。&lt;br /&gt;
| {{-}}&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot;|&lt;br /&gt;
* ThinkPad TrackPoint Keyboard II&lt;br /&gt;
* Pebble M350 マウス&lt;br /&gt;
* Logitech G604 Lightspeed マウス&lt;br /&gt;
|&lt;br /&gt;
* {{ic|IRK}} をコピー&lt;br /&gt;
* バイトの順番を逆に。&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;Remote IRK&#039;&#039; をコピー。&lt;br /&gt;
* Base64 から16進数に変換。&lt;br /&gt;
| {{ic|IdentityResolvingKey.Key}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* {{ic|LTK}} をコピー。&lt;br /&gt;
* 16進数の桁間のスペースを除去。&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;Remote Encryption&#039;&#039; を &#039;&#039;Long-term Key&#039;&#039; にコピー。&lt;br /&gt;
* Base64 から16進数に変換。&lt;br /&gt;
| {{ic|LongTermKey.Key}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* {{ic|ERand}} をコピー。&lt;br /&gt;
* バイトの順番を逆に。&lt;br /&gt;
* 数値全体を10進数に変換。&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;Remote Encryption&#039;&#039; を &#039;&#039;Random Number&#039;&#039; にコピー&lt;br /&gt;
* Base64 をリトルエンディアンの10進数に変換 (以下の Python コードを参照)。&lt;br /&gt;
| {{ic|LongTermKey.Rand}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* {{ic|EDIV}} をコピー。&lt;br /&gt;
* バイトの順番を逆に。&lt;br /&gt;
* 数値全体を10進数に変換。&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;Remote Encryption&#039;&#039; を &#039;&#039;Encrypted Diversifier&#039;&#039; にコピー。&lt;br /&gt;
* Base64 からリトルエンディアンの10進数に変換 (以下の Python コードを参照)。&lt;br /&gt;
| {{ic|LongTermKey.EDiv}}&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|他のデバイス&lt;br /&gt;
|&lt;br /&gt;
* {{ic|LTK}} をコピー。&lt;br /&gt;
* 16進数の桁間のスペースを除去。&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;Remote IRK&#039;&#039; をコピー。&lt;br /&gt;
* Base64 から16進数に変換。&lt;br /&gt;
| {{ic|LongTermKey.Key}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* {{ic|ERand}} をコピー。&lt;br /&gt;
* バイトの順番を逆に。&lt;br /&gt;
* 数値全体を10進数に変換。&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;Remote Encryption&#039;&#039; を &#039;&#039;Long-term Key&#039;&#039; にコピー。&lt;br /&gt;
* Base64 から16進数に変換。&lt;br /&gt;
| {{ic|LongTermKey.Rand}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* {{ic|EDIV}} をコピー。&lt;br /&gt;
* 16進数の桁間のスペースを除去。&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;Remote Encryption&#039;&#039; を &#039;&#039;Encrypted Diversifier&#039;&#039; にコピー。&lt;br /&gt;
* Base64 から16進数に変換。&lt;br /&gt;
* バイトの順番を逆に。&lt;br /&gt;
| {{ic|LongTermKey.EDiv}}&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot;|Xbox ワイヤレスコントローラ&lt;br /&gt;
|&lt;br /&gt;
* {{ic|LTK}} をコピー。&lt;br /&gt;
* 16進数の桁間のスペースを除去。&lt;br /&gt;
| {{Grey|?}}&lt;br /&gt;
| {{ic|SlaveLongTermKey.Key}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 値からスペースを取り除くには、[https://www.browserling.com/tools/remove-all-whitespace このオンラインツール]や以下の [[Python]] コードを使用できます:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &amp;quot;&#039;&#039;key_value&#039;&#039;&amp;quot;.replace(&amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
* 以下の Python コードはバイトの順番を逆にするだけです:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; ERand=&amp;quot; 63 02 84 B8 5D 40 44 DF   &amp;quot;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; ERand=list(reversed(ERand.strip().split()))&lt;br /&gt;
}}&lt;br /&gt;
* 以下の Python コードは、一部で必要となる追加の10進数変換を行います:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; int(&amp;quot;&amp;quot;.join(ERand), 16)&lt;br /&gt;
16088054540146049635&lt;br /&gt;
}}&lt;br /&gt;
* 以下の Python コードは base64 から16進数への変換を行います:&lt;br /&gt;
 binascii.hexlify(base64.decodebytes(b&#039;...&#039;)).upper()&lt;br /&gt;
* 以下の Python コードは完全な macOS Encrypted Diversifier の変換を行います:&lt;br /&gt;
 struct.unpack(&#039;&amp;lt;H&#039;, base64.decodebytes(b&#039;...&#039;))&lt;br /&gt;
* 以下の Python コードは完全な macOS Random Number の変換を行います:&lt;br /&gt;
 struct.unpack(&#039;&amp;amp;lt;Q&#039;, base64.decodebytes(b&#039;...&#039;))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
一般的なケースの例としては:&lt;br /&gt;
* {{ic|LTK}} の値 {{ic|48 4D AF CD 0F 92 22 88 0A 52 9A F4 76 DA 8B 94}} は、{{ic|LongTermKey.Key}} の値 {{ic|484DAFCD0F9222880A529AF476DA8B94}} となります。&lt;br /&gt;
* {{ic|ERand}} の値 {{ic|63 02 84 B8 5D 40 44 DF}} は、{{ic|Rand}} の値 {{ic|16088054540146049635}} となります。&lt;br /&gt;
* {{ic|EDIV}} の値 {{ic|37520}} は、{{ic|EDiv}} の値 {{ic|37520}} となります。&lt;br /&gt;
&lt;br /&gt;
==== 設定の保存  ====&lt;br /&gt;
&lt;br /&gt;
キーを手に入れたら、ユーザーを root に変更し、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|# cd /var/lib/bluetooth/&#039;&#039;BT-Adapter-MAC-address&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
ここには、ペアリングした Bluetooth 機器ごとのフォルダがあります。Arch とデュアルブートでペアリングしたい各デバイスについて、以下を実行します:&lt;br /&gt;
&lt;br /&gt;
{{bc|# cd &#039;&#039;device-MAC-address&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|この時点で、ペアリング時に MAC アドレスの値を増加させるデバイスを使用している場合、MAC アドレスのディレクトリを、値を増加させたパスへ移動させる必要があります。Windows から MAC アドレスをコピーするか、あるいは、各オクテットが2桁の[[Wikipedia:Hexadecimal|16進数]]であることに注意しながら自分で値を増加させてください。}}&lt;br /&gt;
&lt;br /&gt;
ペアリングキーを持っている場合 (つまり、これは Bluetooth 5.1 デバイスでない)、{{ic|info}} ファイルを編集し、{{ic|[LinkKey]}} 以下のキーを変更します。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=info|2=&lt;br /&gt;
[LinkKey]&lt;br /&gt;
Key=XXXXXXXXXXXXXXX&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|すべての文字が大文字であることを確認する必要があります。スペースはすべて削除してください。}}&lt;br /&gt;
&lt;br /&gt;
複数のキーが存在する場合 (Bluetooth 5.1 の場合)、以下の {{ic|info}} ファイルを編集して、全てのキーをそれぞれの値で置き換えてください。例えば、Xbox One S Wireless Controller の場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=info|2=&lt;br /&gt;
[IdentityResolvingKey]&lt;br /&gt;
Key=&amp;lt;IdentityResolvingKey.Key&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[PeripheralLongTermKey]&lt;br /&gt;
Key=&amp;lt;PeripheralLongTermKey.Key&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[SlaveLongTermKey]&lt;br /&gt;
Key=&amp;lt;SlaveLongTermKey.Key&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、{{ic|bluetooth.service}} と {{ic|pulseaudio}} を[[再起動]]してください。({{ic|pulseaudio -k &amp;amp;&amp;amp; pulseaudio --start}} を使ってください。)&lt;br /&gt;
&lt;br /&gt;
これで、デバイスに接続できるはずです。&lt;br /&gt;
&lt;br /&gt;
{{Note|Bluetooth マネージャによっては、デバイスに再接続するために完全な再起動が必要な場合があります。}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
=== アダプタのデフォルト電源状態 ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|bluez}} 5.65 以降、BlueZ はデフォルトで、サービスの起動時やサスペンドからの復帰時にすべての Bluetooth アダプタをオンにします。[https://github.com/bluez/bluez/commit/180cf09933b2d8eb03972c8638063429fe5fece5]&lt;br /&gt;
&lt;br /&gt;
アダプタを自動で有効化させたくない場合(例えば、ポータブルデバイスなどでバッテリを節約したい場合)、{{ic|/etc/bluetooth/main.conf}} の {{ic|[Policy]}} セクションで {{ic|1=AutoEnable=false}} を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=/etc/bluetooth/main.conf|2=&lt;br /&gt;
[Policy]&lt;br /&gt;
AutoEnable=false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この設定を行っても、[[#ペアリング]] で説明されているように {{ic|power on}} を実行すれば、アダプタを手動でオンにできます。&lt;br /&gt;
&lt;br /&gt;
=== 起動時に発見可能にする ===&lt;br /&gt;
&lt;br /&gt;
デバイスが常に見えていて、かつ直接接続できる必要がある場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=/etc/bluetooth/main.conf|2=&lt;br /&gt;
[General]&lt;br /&gt;
DiscoverableTimeout = 0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== サスペンドからの復帰 ===&lt;br /&gt;
&lt;br /&gt;
Bluetooth キーボードやマウスなどをサスペンドから起動できるようにする。まず、bios の設定を確認し、サスペンドからの復帰 が無効になっていないことを確認します。多くの場合、マザーボードからの Bluetooth は USB デバイスです。&lt;br /&gt;
&lt;br /&gt;
bluetooth アダプターのベンダーコードとデバイス ID を確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lsusb {{!}} grep bluetooth -i|&lt;br /&gt;
Bus 001 Device 002: ID 8087:0039 Intel Corp. AX200 Bluetooth&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
サスペンドからの復帰を有効にするために、ベンダコードとデバイス ID の新しい udev ルールを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/91-keyboard-mouse-wakeup.rules|2=&lt;br /&gt;
SUBSYSTEM==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;8087&amp;quot;, ATTRS{idProduct}==&amp;quot;0039&amp;quot; RUN+=&amp;quot;/bin/sh -c &#039;echo enabled &amp;gt; /sys$env{DEVPATH}/../power/wakeup;&#039;&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
復帰後に Bluetooth キーボードを自動的に再設定して、例えば異なるキーマップやキーのリピート速度をもたせたりする(詳細は [[Xorg でのキーボード設定#typematic delay と rate の調整]] と [[xmodmap]])には、[[実行可能属性|実行可能]]なスクリプトを作成してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|configure_keyboard.sh|2=&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
export DISPLAY=:0&lt;br /&gt;
xset r rate 220 30&lt;br /&gt;
xmodmap /&#039;&#039;your&#039;&#039;/&#039;&#039;path&#039;&#039;/&#039;&#039;to&#039;&#039;/.Xmodmap&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、上記のような追加の udev ルールを作成してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/92-keyboard-reconfiguration-wakeup.rules|2=&lt;br /&gt;
SUBSYSTEM==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;8087&amp;quot;, ATTRS{idProduct}==&amp;quot;0039&amp;quot; RUN+=&amp;quot;/&#039;&#039;your&#039;&#039;/&#039;&#039;path&#039;&#039;/&#039;&#039;to&#039;&#039;/configure_keyboard.sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 実験的な機能を有効化する ===&lt;br /&gt;
&lt;br /&gt;
Bluez スタックは、バグがあるかもしれない新しい機能を D-Bus 実験的オプションおよびカーネル実験的オプションに留めます。実験的な機能は最終的に、安定していると判断され、もはやオプションを必要としなくなるので、どのような実験的な機能が存在するかはバージョンによって異なります (例えば、現在 D-Bus の実験的なインターフェイスを有効化すると、古いヘッドセットのバッテリーレベルを報告できるようになります)。実験的な機能を有効化するには、設定の対応する行をアンコメントしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/bluetooth/main.conf|2=&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
# Enables D-Bus experimental interfaces&lt;br /&gt;
# Possible values: true or false&lt;br /&gt;
&#039;&#039;&#039;#Experimental = true&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Enables kernel experimental features, alternatively a list of UUIDs&lt;br /&gt;
# can be given.&lt;br /&gt;
# Possible values: true,false,&amp;lt;UUID List&amp;gt;&lt;br /&gt;
# Possible UUIDS:&lt;br /&gt;
...&lt;br /&gt;
# Defaults to false.&lt;br /&gt;
&#039;&#039;&#039;#KernelExperimental = true&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
あるいは、{{ic|bluetooth.service}} を[[編集]]して、{{ic|--experimental}} フラグあるいは {{ic|--kernel}} フラグを追加してください。例えば、以下の[[ドロップインファイル]]のように:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/bluetooth.service.d/override.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=&lt;br /&gt;
ExecStart=/usr/lib/bluetooth/bluetoothd --experimental&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
いずれの場合でも、{{ic|bluetooth.service}} を[[再起動]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
== オーディオ ==&lt;br /&gt;
&lt;br /&gt;
通常は、オーディオサーバーと Bluetooth を統合するために追加の手順を実行する必要があります。これについては、以下のセクションで説明します。&lt;br /&gt;
&lt;br /&gt;
Bluetooth オーディオや Bluetooth ヘッドセットなどの情報については [[Bluetooth ヘッドセット]] のページを見てください。&lt;br /&gt;
&lt;br /&gt;
=== PulseAudio ===&lt;br /&gt;
&lt;br /&gt;
Bluetooth ヘッドフォンやスピーカーのようなオーディオ機器を使うには {{Pkg|pulseaudio-bluetooth}} パッケージのインストールが必要です。インストールを反映させるために、pulseaudio を再起動してください: {{ic|pulseaudio -k}}。デフォルトの Pulseaudio インストールでは (具体的には、パッケージングされているデフォルトの {{ic|default.pa}} でユーザインスタンスを使用している場合)、即座に Bluetooth デバイスからスピーカーにオーディオをストリーミングできるはずです。[https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/blob/stable-16.x/src/daemon/default.pa.in#L84-93]&lt;br /&gt;
&lt;br /&gt;
システム全体の PulseAudio 設定がある場合は、デーモンを実行しているユーザー（通常は {{ic|pulse}}) が {{ic|lp}} グループに属しており、PulseAudio 設定に Bluetooth モジュールをロードしていることを確認します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pulse/system.pa|2=&lt;br /&gt;
...&lt;br /&gt;
load-module module-bluetooth-policy&lt;br /&gt;
load-module module-bluetooth-discover&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これは任意ですが、Bluetooth デバイスの接続時にすべてのオーディオをそのデバイスに自動で切り替えたい場合、{{ic|load-module module-switch-on-connect}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== PipeWire ===&lt;br /&gt;
&lt;br /&gt;
v0.3.19 以降の PipeWire はデフォルトで Bluetooth をサポートしています。&lt;br /&gt;
&lt;br /&gt;
=== ALSA ===&lt;br /&gt;
&lt;br /&gt;
{{Note|Bluez5 は [[ALSA]] の直接統合を中止し、 [[PulseAudio]] のみをサポートします。 PulseAudio を使用できない場合、または使用しない場合は、次の手順に従ってください。}}&lt;br /&gt;
&lt;br /&gt;
まず、 Bluetooth オーディオデバイスが正しくペアリングされ、システムに接続されていることを確認します。&lt;br /&gt;
&lt;br /&gt;
次に、 {{AUR|bluez-alsa-git}} をインストールし、 {{ic|bluealsa}} サービスを開始(そして、有効に) し、ユーザーを {{ic|audio}} グループに追加します。&lt;br /&gt;
&lt;br /&gt;
次のコマンドを実行して、すべてが意図したとおりに動作しているかどうかを確認します({{ic|&#039;&#039;XX:XX:XX:XX:XX:XX&#039;&#039;}} と {{ic|&#039;&#039;FILE.wav&#039;&#039;}} の部分は置き換えてください):&lt;br /&gt;
&lt;br /&gt;
 $ aplay -D bluealsa:SRV=org.bluealsa,DEV=&#039;&#039;XX:XX:XX:XX:XX:XX&#039;&#039;,PROFILE=a2dp &#039;&#039;FILE.wav&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
最後に、 {{ic|~/.asoundrc}} に次の行を追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.asoundrc|&lt;br /&gt;
defaults.bluealsa {&lt;br /&gt;
    service &amp;quot;org.bluealsa&amp;quot;&lt;br /&gt;
    device &amp;quot;XX:XX:XX:XX:XX:XX&amp;quot;&lt;br /&gt;
    profile &amp;quot;a2dp&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これで、 {{ic|bluealsa}} デバイスを使って Bluetooth オーディオデバイスに接続できるようになります。ボリューム管理は {{ic|alsamixer}} とオプション {{ic|-D bluealsa}} を使って通常行われます。&lt;br /&gt;
&lt;br /&gt;
== Bluetooth シリアル ==&lt;br /&gt;
&lt;br /&gt;
Bluetooth-to-Serial modules (HC-05、HC-06) で Bluetooth シリアル通信が機能するようにするには、次の手順に従います:&lt;br /&gt;
&lt;br /&gt;
[[#ペアリング|上記]]で説明したように、 {{ic|bluetoothctl}} を使って Bluetooth デバイスを&#039;&#039;&#039;ペアリング&#039;&#039;&#039;します。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|bluez-deprecated-tools}} をインストールします。新しいツールにはない機能があります。&lt;br /&gt;
&lt;br /&gt;
ペアになっているデバイスの MAC アドレスを tty 端末にバインドします:&lt;br /&gt;
&lt;br /&gt;
 # rfcomm bind rfcomm0 &#039;&#039;MAC_address_of_Bluetooth_device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
これで、シリアル通信用に {{ic|/dev/rfcomm0}} を開くことができます:&lt;br /&gt;
&lt;br /&gt;
 $ picocom /dev/rfcomm0 -b 115200&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
{{Out of date|Replace hciconfig with newer commands.}}&lt;br /&gt;
&lt;br /&gt;
=== 一般的なトラブルシューティング ===&lt;br /&gt;
&lt;br /&gt;
==== デバッグ ====&lt;br /&gt;
&lt;br /&gt;
デバッグするには、最初に {{ic|bluetooth.service}} を[[停止]]します。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|-d}} パラメーターを付けて開始します。&lt;br /&gt;
&lt;br /&gt;
 # /usr/lib/bluetooth/bluetoothd -n -d&lt;br /&gt;
&lt;br /&gt;
別のオプションとして、 {{ic|btmon}} ツールが有ります。&lt;br /&gt;
&lt;br /&gt;
==== 非推奨の BlueZ ツール ====&lt;br /&gt;
&lt;br /&gt;
8つの BlueZ ツールは[https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/?id=b1eb2c4cd057624312e0412f6c4be000f7fc3617 非推奨となり]、{{Pkg|bluez-utils}} から削除されましたが、それらのすべてが新しいツールに取って代わられたわけではありません。{{Pkg|bluez-deprecated-tools}} パッケージが非推奨となったツールを提供します。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 非推奨のツール&lt;br /&gt;
! あり得る代替&lt;br /&gt;
|-&lt;br /&gt;
| [https://manpages.debian.org/latest/bluez/gatttool.1.en.html gatttool] || btgatt-client, [https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/gatt-api.txt D-Bus Gatt API]{{Dead link|2023|10|29|status=404}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://manpages.debian.org/latest/bluez/hciattach.1.en.html hciattach] || btattach&lt;br /&gt;
|-&lt;br /&gt;
| [https://manpages.debian.org/latest/bluez/hciconfig.1.en.html hciconfig] || btmgmt (そして bluetoothctl?)&lt;br /&gt;
|-&lt;br /&gt;
| [https://manpages.debian.org/latest/bluez-hcidump/hcidump.1.en.html hcidump] || btmon (そして btsnoop)&lt;br /&gt;
|-&lt;br /&gt;
| [https://manpages.debian.org/latest/bluez/hcitool.1.en.html hcitool] || なし、[https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/device-api.txt D-Bus Device API]{{Dead link|2023|10|29|status=404}} が利用可能&lt;br /&gt;
|-&lt;br /&gt;
| [https://manpages.debian.org/latest/bluez/rfcomm.1.en.html rfcomm]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | なし、[https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/profile-api.txt D-Bus Profile1 API]{{Dead link|2023|10|29|status=404}} の実装?&lt;br /&gt;
|-&lt;br /&gt;
| [https://manpages.debian.org/latest/bluez/ciptool.1.en.html ciptool]&lt;br /&gt;
|-&lt;br /&gt;
|[https://manpages.debian.org/latest/bluez/sdptool.1.en.html sdptool]&lt;br /&gt;
| なし、機能が、異なる D-Bus オブジェクトに散らばっている模様: [https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/profile-api.txt Profile]{{Dead link|2023|10|29|status=404}}、[https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/advertising-api.txt Advertising]{{Dead link|2023|10|29|status=404}}、そして [https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/device-api.txt device]{{Dead link|2023|10|29|status=404}} と [https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/adapter-api.txt adapter]{{Dead link|2023|10|29|status=404}} の UUID の配列。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== サービスの問題 ===&lt;br /&gt;
&lt;br /&gt;
==== systemd: Condition check resulted in Bluetooth service being skipped ====&lt;br /&gt;
&lt;br /&gt;
{{ic|bluetooth.service}} は {{ic|/sys/class/bluetooth}} ディレクトリが存在することのみを要求します。このディレクトリは {{ic|bluetooth}} カーネルモジュールによって作成されるはずです。このカーネルモジュールは、{{ic|systemd-udev}} が動作している Bluetooth ハードウェアデバイスを発見した場合にのみ、{{ic|systemd-udev}} により自動的にロードされます。&lt;br /&gt;
&lt;br /&gt;
{{ic|/sys/class/bluetooth}} が存在しない場合、{{ic|lsmod}} コマンドを使って、Bluetooth カーネルモジュールがロードされているかどうかを確認してください。Bluetooth デバイスがあるにも関わらずロードされていない場合、[[カーネルモジュール#手動でモジュールを扱う|Bluetooth モジュールをロード]]し、{{ic|bluetooth.service}} を[[再起動]]することで、手動で起動できます。&lt;br /&gt;
&lt;br /&gt;
また、{{ic|bluetooth}} モジュールをロードする際に、対応するカーネル Bluetooth ドライバもロードする必要があります。{{ic|btusb}} が最も可能性がありますが、{{ic|btrtl,btintel,btbcm,bnep,btusb}} などの可能性もあります。&lt;br /&gt;
&lt;br /&gt;
{{ic|bluetooth.service}} の[[ユニットステータス]]を確認して、このサービスが起動しているかどうかを確認してください。&lt;br /&gt;
&lt;br /&gt;
[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=853207 Debian Bug report logs - #853207] も参照してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|bluetooth.service}} の起動に成功したが、まだ Bluetooth を使えないことがあります (例: {{ic|scan on}} の時に {{ic|bluetoothctl}} が {{ic|org.Bluez.Error.NotReady}} のようなメッセージを発する)。この場合、コンピュータを再起動し、次のことをダブルチェックしてください: {{ic|/sys/class/bluetooth}} ディレクトリが存在するか; {{ic|lsmod}} の出力に正しい Bluetooth モジュールが含まれているか; [[journal]] のログを確認するなど。{{ic|systemd-udev}} は、また手動の変更をせずとも Bluetooth ハードウェアを自動的に認識するはずです。&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth が suspend-to-idle 中のデバイスを即座に立ち上げてしまう ====&lt;br /&gt;
&lt;br /&gt;
[[サスペンドとハイバネート|suspend-to-idle/S2idle/S0ix/Modern Standby]] する能力のあるシステムにおいては、Bluetooth コントローラがスリープ中も有効化されたままになります。通常、これにより、Bluetooth デバイスが接続されていると、システムが[https://bugzilla.kernel.org/show_bug.cgi?id=200039 スリープに移行した直後にスリープが解除されてしまいます]。&lt;br /&gt;
&lt;br /&gt;
これを防ぐには、スリープに移行する前に Bluetooth を完全に無効化できます。{{Pkg|bluez-utils}} をインストールし、以下のファイルを作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/bluetooth-disable-before-sleep.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Disable Bluetooth before going to sleep&lt;br /&gt;
Before=sleep.target&lt;br /&gt;
Before=suspend.target&lt;br /&gt;
Before=hybrid-sleep.target&lt;br /&gt;
Before=suspend-then-hibernate.target&lt;br /&gt;
StopWhenUnneeded=yes&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
&lt;br /&gt;
ExecStart=/usr/bin/bluetoothctl power off&lt;br /&gt;
ExecStop=/usr/bin/bluetoothctl power on&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=sleep.target&lt;br /&gt;
WantedBy=suspend.target&lt;br /&gt;
WantedBy=hybrid-sleep.target&lt;br /&gt;
WantedBy=suspend-then-hibernate.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このサービスを[[有効化]]し、スリープに移行した時に Bluetooth デバイスが切断されることや、スリープからの復帰時に Bluetooth が再び接続されることを確認してください。&lt;br /&gt;
&lt;br /&gt;
この回避策を使用すると、[[#サスペンドからの復帰|Bluetooth マウス/キーボードを使ってシステムをスリープから復帰させること]]ができなくなります。&lt;br /&gt;
&lt;br /&gt;
==== ヘッドレス/サーバのシステムでログアウト後に Bluetooth がオフになる ====&lt;br /&gt;
&lt;br /&gt;
様々な原因が考えられます:&lt;br /&gt;
&lt;br /&gt;
* [[PulseAudio]] と [[PipeWire]] は両方ともデフォルトでユーザサービスとして動作します。よって、最後のセッションが終了するとこれらのサービスは終了されます。この問題を解決するには、対象のユーザに対して [[systemd/ユーザー#systemd のユーザーインスタンスを自動起動|Lingering (残留)]] を有効化してください。&lt;br /&gt;
* さらに、[[WirePlumber]] を [[PipeWire]] と共に実行している場合 (これはよくある環境です)、WirePlumber は &amp;quot;logind-monitor&amp;quot; を実行します。これは、Bluetooth をログイン時に有効化し、ログアウト時に無効化します。問題の解決方法は [[WirePlumber#ログアウト後も Bluetooth を実行し続ける/ヘッドレス Bluetooth]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== アダプタの問題 ===&lt;br /&gt;
&lt;br /&gt;
==== hcitool scan: Device not found ====&lt;br /&gt;
&lt;br /&gt;
* 一部のラップトップ (例: Dell Studio 15、Lenovo Thinkpad X1) では、Bluetooth モードを HID から HCI に切り替える必要があります。{{Pkg|bluez-hid2hci}} パッケージをインストールすれば、[[udev]] が自動的に切り替えを行うはずです。また、次のコマンドを実行して手動で HCI に切り替えることもできます:&lt;br /&gt;
&lt;br /&gt;
 # /usr/lib/udev/hid2hci&lt;br /&gt;
&lt;br /&gt;
* デバイスが表示されず、かつマシンに Windows オペレーティングシステムがある場合、Windows から bluetooth アダプターを有効にして見てください。&lt;br /&gt;
&lt;br /&gt;
* 場合によっては次のコマンドで問題が解決するかもしれません:&lt;br /&gt;
&lt;br /&gt;
 # bluetoothctl power on&lt;br /&gt;
&lt;br /&gt;
==== bluetoothctl: No default controller available ====&lt;br /&gt;
&lt;br /&gt;
一部のマザーボード Bluetooth コントローラにはバグがあります。バグがこの問題の原因であるか調べるには、{{ic|journalctl {{!}} grep hci}} を実行してください。このコマンドの出力に &amp;quot;command tx timeout&amp;quot; や &amp;quot;Reading Intel version command failed&amp;quot; のようなエントリが存在する場合、PC の電源を切り、電源ケーブルを物理的に外して数秒間放置してください。これにより、コントローラにファームウェアを再ロードさせます (通常の再起動では再ロードしません)。[https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1859592 こちら]のバグレポートを参照してください。&lt;br /&gt;
&lt;br /&gt;
デバイスが [[rfkill]] によってブロックされていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
また、一部の Intel カード (8260 など) は Bluetooth サービスによって正しく認識されないかもしれません。{{Pkg|bluez-utils}} の代わりに非推奨の {{Pkg|bluez-deprecated-tools}} を使うことでこの問題が解決したというケースが報告されています。&lt;br /&gt;
&lt;br /&gt;
また、これは省電力機能が原因かもしれません。その場合、{{ic|1=btusb.enable_autosuspend=n}} [[カーネルパラメータ#設定|カーネルパラメータ]]により解決できる可能性があります。[https://bugzilla.redhat.com/show_bug.cgi?id=1573562 Red Hat Bugzilla – Bug 1573562] も参照してください。&lt;br /&gt;
&lt;br /&gt;
時々、{{ic|btusb}} をオプション無しでアンロード・ロードすればコントローラを元に戻せることがあります:&lt;br /&gt;
&lt;br /&gt;
 # modprobe -r btusb&lt;br /&gt;
 # modprobe btusb&lt;br /&gt;
&lt;br /&gt;
また、ドングルが [[#CSR ドングル 0a12:0001|CSR クローン]]である場合にもこの問題が発生することがあります。&lt;br /&gt;
&lt;br /&gt;
==== rfkill unblock: Do not unblock ====&lt;br /&gt;
&lt;br /&gt;
デバイスがソフトブロックされていて [[ConnMan]] を動作させている場合、次を試してみて下さい:&lt;br /&gt;
&lt;br /&gt;
 $ connmanctl enable bluetooth&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth USB ドングル ====&lt;br /&gt;
&lt;br /&gt;
USB ドングルを使う場合は、Bluetooth ドングルが認識されているか確認してください。USB ドングルを挿入する時に {{ic|journalctl -f}} を root として実行する(もしくは {{ic|/var/log/messages.log}} を調査する)ことで、そのことを確認できます。以下のような見た目であるはずです(hci を見てください)。&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
Feb 20 15:00:24 hostname kernel: [ 2661.349823] usb 4-1: new full-speed USB device number 3 using uhci_hcd&lt;br /&gt;
Feb 20 15:00:24 hostname bluetoothd[4568]: HCI dev 0 registered&lt;br /&gt;
Feb 20 15:00:24 hostname bluetoothd[4568]: Listening for HCI events on hci0&lt;br /&gt;
Feb 20 15:00:25 hostname bluetoothd[4568]: HCI dev 0 up&lt;br /&gt;
Feb 20 15:00:25 hostname bluetoothd[4568]: Adapter /org/bluez/4568/hci0 has been enabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
最初の2行しか表示されていなかった場合、デバイスは見つかっていますが、そのデバイスを立ち上げる必要があります。&lt;br /&gt;
例:&lt;br /&gt;
&lt;br /&gt;
{{hc|# btmgmt|&lt;br /&gt;
[mgmt]# info&lt;br /&gt;
Index list with 1 item&lt;br /&gt;
hci0:	Primary controller&lt;br /&gt;
	addr 00:1A:7D:DA:71:10 version 6 manufacturer 10 class 0x000000&lt;br /&gt;
	supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy static-addr &lt;br /&gt;
	&#039;&#039;&#039;current settings:&#039;&#039;&#039; connectable discoverable bondable ssp br/edr le secure-conn &lt;br /&gt;
	name Mozart&lt;br /&gt;
	short name &lt;br /&gt;
&lt;br /&gt;
[mgmt]# select hci0&lt;br /&gt;
Selected index 0&lt;br /&gt;
&lt;br /&gt;
[hci0]# power up&lt;br /&gt;
hci0 Set Powered complete, settings: &#039;&#039;&#039;powered&#039;&#039;&#039; connectable discoverable bondable ssp br/edr le secure-conn&lt;br /&gt;
&lt;br /&gt;
[hci0]# info&lt;br /&gt;
hci0:	Primary controller&lt;br /&gt;
	addr 00:1A:7D:DA:71:10 version 6 manufacturer 10 class 0x1c0104&lt;br /&gt;
	supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy static-addr &lt;br /&gt;
	&#039;&#039;&#039;current settings: powered&#039;&#039;&#039; connectable discoverable bondable ssp br/edr le secure-conn&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
または&lt;br /&gt;
&lt;br /&gt;
{{hc|# bluetoothctl|&lt;br /&gt;
[bluetooth]# show&lt;br /&gt;
Controller 00:1A:7D:DA:71:10 (public)&lt;br /&gt;
	Name: Mozart&lt;br /&gt;
	Alias: Mozart&lt;br /&gt;
	Class: 0x0000095c&lt;br /&gt;
	&#039;&#039;&#039;Powered: no&#039;&#039;&#039;&lt;br /&gt;
	Discoverable: yes&lt;br /&gt;
	Pairable: yes&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# power on&lt;br /&gt;
[CHG] Controller 00:1A:7D:DA:71:10 Class: 0x001c0104&lt;br /&gt;
Changing power on succeeded&lt;br /&gt;
[CHG] Controller 00:1A:7D:DA:71:10 &#039;&#039;&#039;Powered: yes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# show&lt;br /&gt;
Controller 00:1A:7D:DA:71:10 (public)&lt;br /&gt;
	Name: Mozart&lt;br /&gt;
	Alias: Mozart&lt;br /&gt;
	Class: 0x001c0104&lt;br /&gt;
	&#039;&#039;&#039;Powered: yes&#039;&#039;&#039;&lt;br /&gt;
	Discoverable: yes&lt;br /&gt;
	Pairable: yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[https://www.bluetooth.com/specifications/assigned-numbers/host-controller-interface/ 公式の仕様表]に従って、Bluetooth のバージョンが HCI のバージョンにマップされていることを確認できます。例えば、先の出力では、HCI &#039;&#039;&#039;version 6&#039;&#039;&#039; が Bluetooth version 4.0 です。&lt;br /&gt;
&lt;br /&gt;
デバイスが検出されているか確認するために {{ic|bluez-utils}} に含まれている {{ic|hcitool}} を使うことができます。次のコマンドで利用可能なデバイスとその識別子・MAC アドレスのリストを表示することが可能です:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ btmgmt info|&lt;br /&gt;
Index list with 1 item&lt;br /&gt;
hci0:	Primary controller&lt;br /&gt;
	addr 00:1A:7D:DA:71:10 &#039;&#039;&#039;version 6&#039;&#039;&#039; manufacturer 10 class 0x1c0104&lt;br /&gt;
	supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy static-addr&lt;br /&gt;
	current settings: powered connectable discoverable bondable ssp br/edr le secure-conn&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
デバイスに関するもっと詳細な情報は、非推奨の {{ic|hciconfig}} を使うことで取得できます。({{AUR|bluez-utils-compat}})&lt;br /&gt;
&lt;br /&gt;
{{hc|$ hciconfig -a hci0|&lt;br /&gt;
hci0:   Type: USB&lt;br /&gt;
        BD Address: 00:1B:DC:0F:DB:40 ACL MTU: 310:10 SCO MTU: 64:8&lt;br /&gt;
        UP RUNNING PSCAN ISCAN&lt;br /&gt;
        RX bytes:1226 acl:0 sco:0 events:27 errors:0&lt;br /&gt;
        TX bytes:351 acl:0 sco:0 commands:26 errors:0&lt;br /&gt;
        Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80&lt;br /&gt;
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3&lt;br /&gt;
        Link policy: RSWITCH HOLD SNIFF PARK&lt;br /&gt;
        Link mode: SLAVE ACCEPT&lt;br /&gt;
        Name: &#039;BlueZ (0)&#039;&lt;br /&gt;
        Class: 0x000100&lt;br /&gt;
        Service Classes: Unspecified&lt;br /&gt;
        Device Class: Computer, Uncategorized&lt;br /&gt;
        HCI Ver: 2.0 (0x3) HCI Rev: 0xc5c LMP Ver: 2.0 (0x3) LMP Subver: 0xc5c&lt;br /&gt;
        Manufacturer: Cambridge Silicon Radio (10)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== ドングルから短距離にいるときにオーディオデバイスがおかしくなる =====&lt;br /&gt;
&lt;br /&gt;
他のデバイスと同一の USB ホストを共有している場合、[https://bbs.archlinux.org/viewtopic.php?pid=1440161#p1440161 オーディオデバイスとの通信に干渉] する可能性があります。オーディオデバイスがバスに接続されている唯一のデバイスであることを確認してください。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lsusb|&lt;br /&gt;
Bus 002 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)&lt;br /&gt;
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
Bus 001 Device 004: ID 048d:1345 Integrated Technology Express, Inc. Multi Cardreader&lt;br /&gt;
Bus 001 Device 003: ID 0424:a700 Standard Microsystems Corp. 2 Port Hub&lt;br /&gt;
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub&lt;br /&gt;
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== CSR ドングル 0a12:0001 =====&lt;br /&gt;
&lt;br /&gt;
デバイス {{ic|ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)}} にはリグレッションのバグがあり、現在、カーネルバージョン 5.17 及び &amp;lt; 6.0 でしか動作しません。詳細は、[https://bugzilla.kernel.org/show_bug.cgi?id=60824 Kernel Bug 60824] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== Logitech Bluetooth USB ドングル ====&lt;br /&gt;
&lt;br /&gt;
Logitech のドングルには Embedded と HCI という二つのモードで動作するものがあります (例: Logitech MX5000)。embedded モードではドングルは USB デバイスをエミュレートするので PC は普通の USB マウス・キーボードを使っていると認識します。&lt;br /&gt;
&lt;br /&gt;
USB BT ミニレシーバの小さな赤いボタンを押すと他のモードが有効になります。BT ドングルの赤いボタンを押しながらコンピュータに接続してください。ボタンを押して3-5秒で、Bluetooth アイコンがシステムトレイに表示されます ([https://ubuntuforums.org/showthread.php?t=1332197 議論])。&lt;br /&gt;
&lt;br /&gt;
また、{{Pkg|bluez-hid2hci}} パッケージをインストールすることもできます。Logitech のドングルを接続すると自動的に切り替えます。&lt;br /&gt;
&lt;br /&gt;
==== Foxconn / Hon Hai / Lite-On の Broadcom デバイス ====&lt;br /&gt;
&lt;br /&gt;
一部のデバイスでは、起動時にファームウェアを書き込む必要があります。&lt;br /&gt;
&lt;br /&gt;
一部のファームウェアは、[[AUR]] で [https://aur.archlinux.org/packages?K=broadcom broadcom] と検索すると入手できます。特出すべきパッケージは {{AUR|broadcom-bt-firmware}} です。これは、[https://github.com/winterheart/broadcom-bt-firmware/blob/master/DEVICES.md 様々なカード]用のファイルを提供します。&lt;br /&gt;
&lt;br /&gt;
または、[https://github.com/jessesung/hex2hcd hex2hcd] ({{Pkg|bluez-utils}} でインストールされます) を使ってファームウェアを Microsoft Windows の &#039;&#039;.hex&#039;&#039; ファイルから &#039;&#039;.hcd&#039;&#039; ファイルに変換することもできます。&lt;br /&gt;
&lt;br /&gt;
正しい &#039;&#039;.hex&#039;&#039; ファイルを取得するために、&#039;&#039;lsusb&#039;&#039; でデバイスの vendor:product コードを検索してください。例:&lt;br /&gt;
&lt;br /&gt;
 Bus 002 Device 004: ID &#039;&#039;&#039;04ca:2006&#039;&#039;&#039; Lite-On Technology Corp. Broadcom BCM43142A0 Bluetooth Device&lt;br /&gt;
&lt;br /&gt;
または:&lt;br /&gt;
&lt;br /&gt;
 Bus 004 Device 004: Id &#039;&#039;&#039;0489:e031&#039;&#039;&#039; Foxconn / Hon Hai&lt;br /&gt;
&lt;br /&gt;
もしくは、Windows (仮想マシンでもかまいません) を起動して Device Manager ユーティリティからファームウェアの名前を取得してください。デバイスのモデルを知りたいのに &#039;&#039;lsusb&#039;&#039; で表示されない場合、&#039;&#039;lsusb -v&#039;&#039; の {{ic|iProduct}} でわかることがあります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;.hex&#039;&#039; ファイルはダウンロードした Windows ドライバーから抽出することができます。Windows を実行する必要はありません。適切なドライバーをダウンロードしてください (例えば、[http://www.fujitsupc.com/downloads/mobile/BLUETOOTH_WIDCOMM_V6.5.0.3100_WIN7-32_FPC46-1771-01.EXE Bluetooth Widcomm]{{Dead link|2023|09|16|status=domain name not resolved}})。フォーマットにも依りますが、ファイルの展開には{{Pkg|unrar}} か {{Pkg|cabextract}} が必要である場合があります。多数の &#039;&#039;.hex&#039;&#039; ファイルの中から必要なファイルを見つけるには、{{ic|Win32/bcbtums-win7x86-brcm.inf}} ファイルの中身を確認して {{ic|[RAMUSB&#039;&#039;&#039;E031&#039;&#039;&#039;.CopyList]}} を検索してください。{{ic|E031}} はあなたの使っているデバイスの product コード (大文字) に置き換えて下さい (&#039;&#039;lsusb&#039;&#039; で確認できる2番目の16進数)。その下に、必要な &#039;&#039;.hex&#039;&#039; ファイルの名前が書かれているはずです。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;.hcd&#039;&#039; ファイルを手に入れたら、{{ic|/lib/firmware/brcm/BCM.hcd}} にコピーしてください - このファイル名は [[dmesg]] からわかります。あなたのマシンでは異なっている可能性があるため &#039;&#039;dmesg&#039;&#039; の出力で確認してください。そして &#039;&#039;btusb&#039;&#039; モジュールをリロードしてください:&lt;br /&gt;
&lt;br /&gt;
 # rmmod btusb&lt;br /&gt;
 # modprobe btusb&lt;br /&gt;
&lt;br /&gt;
これでデバイスが使えるようになるはずです。以上の設定を永続化させる方法は [https://bbs.archlinux.org/viewtopic.php?id=162688 BBS#162688] を参照。&lt;br /&gt;
&lt;br /&gt;
==== Intel の複合 WiFi と Bluetooth カード ====&lt;br /&gt;
&lt;br /&gt;
[[ネットワーク設定/ワイヤレス#Bluetooth の共存]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== Windows とのデュアルブート環境における Mediatek MT7921 や MT7961 ====&lt;br /&gt;
&lt;br /&gt;
デュアルブートシステムでは、Bluetooth のファームウェアバージョンが Windows と Linux とで異なる場合、Windows を起動した後に Bluetooth アダプタが動作しなくなります。&lt;br /&gt;
&lt;br /&gt;
これを防ぐ最も良い方法は、各 OS 用の Bluetooth ドライバ (特にファームウェア) を最新にすることです。&lt;br /&gt;
&lt;br /&gt;
Windows 用の最新バージョンのドライバ (またはファームウェア) を見つけられない場合、最新のファームウェアファイル {{ic|/usr/lib/firmware/mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin.xz}} を Arch Linux からコピーし、Windows へ展開することができます (例えば、{{ic|C:\WINDOWS\system32\DRIVERS\}}。Windows でのファームウェアファイルへのパスはデバイスマネージャから確認できます)。&lt;br /&gt;
&lt;br /&gt;
==== サスペンド/復帰後にアダプタが消える ====&lt;br /&gt;
&lt;br /&gt;
まず、アダプタのベンダーと製品 ID を見つけてください。例:&lt;br /&gt;
&lt;br /&gt;
First, find vendor and product ID of the adapter. For example:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lsusb -tv|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M&lt;br /&gt;
    ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
    ...&lt;br /&gt;
    |__ Port 3: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M&lt;br /&gt;
        ID 8087:0025 Intel Corp. &lt;br /&gt;
    |__ Port 3: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M&lt;br /&gt;
        ID 8087:0025 Intel Corp. &lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
この場合、ベンダー ID は 8087 で、製品 ID は 0025 です。&lt;br /&gt;
&lt;br /&gt;
次に、 {{pkg|usb_modeswitch}} を使用してアダプタをリセットします:&lt;br /&gt;
&lt;br /&gt;
 # usb_modeswitch -R -v &#039;&#039;vendor_ID&#039;&#039; -p &#039;&#039;product_ID&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ペアリングと接続の問題 ===&lt;br /&gt;
&lt;br /&gt;
==== コンピュータが表示されない ====&lt;br /&gt;
&lt;br /&gt;
携帯からコンピュータが表示されないときは、discoverable モードを有効にしてください:&lt;br /&gt;
&lt;br /&gt;
 # bluetoothctl discoverable on&lt;br /&gt;
&lt;br /&gt;
discoverable モードがオンになっていることを確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# bluetoothctl show|&lt;br /&gt;
	Powered: yes&lt;br /&gt;
	Discoverable: yes&lt;br /&gt;
	Pairable: yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|/etc/bluetooth/main.conf}} の {{ic|PairableTimeout}} と {{ic|DiscoverableTimeout}} を確認してください。}}&lt;br /&gt;
&lt;br /&gt;
まだコンピュータが表示されない場合、以下のように {{ic|/etc/bluetooth/main.conf}} 内のデバイスクラスを変更してみて下さい:&lt;br /&gt;
&lt;br /&gt;
 # Default device class. Only the major and minor device class bits are&lt;br /&gt;
 # considered.&lt;br /&gt;
 #Class = 0x000100 # Computer Type (from default config)&lt;br /&gt;
 Class = 0x100100 # (Object-Transfer Service &amp;amp; Computer Type)&lt;br /&gt;
&lt;br /&gt;
{{Note|場合によっては、{{ic|main.conf}} 内の {{ic|Class}} はデバイスの初期化後に上書きされます。なので、{{ic|hciconfig hci0 class 100100}} のようにクラスを直接設定してください。}}&lt;br /&gt;
&lt;br /&gt;
あるユーザは、携帯からコンピュータを見られるようにするためにはこうするしか無いと報告しています。LG TV(そして、一部の他の機器)はオーディオデバイスから発見可能です。なので、{{ic|000414}} (soundbar クラス)を使用することでそのようなデバイスを発見できるようにできます。&lt;br /&gt;
&lt;br /&gt;
Bluetooth デバイス/サービスのクラスを生成するには https://bluetooth-pentest.narod.ru/software/bluetooth_class_of_device-service_generator.html を見てください。&lt;br /&gt;
&lt;br /&gt;
==== デバイスを接続した数秒後に切断してしまう ====&lt;br /&gt;
&lt;br /&gt;
デバイスを接続したすぐ後に切断が発生し、ジャーナルの出力に以下のようなメッセージが確認できる場合:&lt;br /&gt;
&lt;br /&gt;
 bluetoothd: Unable to get connect data for Headset Voice gateway: getpeername: Transport endpoint is not connected (107)&lt;br /&gt;
 bluetoothd: connect error: Connection refused (111)&lt;br /&gt;
&lt;br /&gt;
おそらく別のオペレーティングシステムで同一の Bluetooth アダプタを使ってデバイスがペアリングされていることが原因です (例: デュアルブート)。一部のデバイスは同一の MAC アドレス (例: Bluetooth アダプタ) に対して複数のペアリングを関連付けた場合に対処できません。この問題を解決するには [[#デュアルブートペアリング]] の指示に従ってください。&lt;br /&gt;
&lt;br /&gt;
==== スキャンしてもデバイスが表示されない ====&lt;br /&gt;
&lt;br /&gt;
Bluetooth Low Energy を使用しているデバイスは bluetoothctl でスキャンしても表示されないことがあります (例: [[Logitech MX Master]])。{{ic|transport le}} を使ってスキャンすることができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|# bluetoothctl|&lt;br /&gt;
[bluetooth]# menu scan&lt;br /&gt;
[bluetooth]# transport le&lt;br /&gt;
[bluetooth]# back&lt;br /&gt;
[bluetooth]# scan on&lt;br /&gt;
[bluetooth]# devices&lt;br /&gt;
...&lt;br /&gt;
Device XX:XX:XX:XX:XX:XX DA V2 X &amp;lt;---- 低消費電力なデバイス&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
もう一つの方法は、{{aur|bluez-utils-compat}} をインストールし、{{ic|bluetooth.service}} を[[開始]]し、以下を実行することです:&lt;br /&gt;
&lt;br /&gt;
{{hc|# bluetoothctl|&lt;br /&gt;
[NEW] Controller (MAC) myhostname [default]&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# power on&lt;br /&gt;
[CHG] Controller (MAC) Class: 0x0c010c&lt;br /&gt;
Changing power on succeeded&lt;br /&gt;
[CHG] Controller (MAC) Powered: yes&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# scan on&lt;br /&gt;
Discovery started&lt;br /&gt;
[CHG] Controller (MAC) Discovering: yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
他のターミナルで:&lt;br /&gt;
&lt;br /&gt;
 # hcitool lescan&lt;br /&gt;
&lt;br /&gt;
デバイスが表示されるまで待機してから hcitool を {{ic|Ctrl+c}} で閉じてください。bluetoothctl からデバイスが認識されたら通常通りにペアリングできます。&lt;br /&gt;
&lt;br /&gt;
==== Intel Corp. AX200 Bluetooth で BLE デバイスが見つからない ====&lt;br /&gt;
&lt;br /&gt;
どうやら、このデバイスでは BLE のパッシブスキャンが壊れているようです。詳細は[https://community.intel.com/t5/Wireless/AX200-Passive-BLE-scan-linux/m-p/1227456 上流のバグレポート]を見てください。&lt;br /&gt;
&lt;br /&gt;
==== スリープ後に再接続できない ====&lt;br /&gt;
&lt;br /&gt;
スリープ後や、コンピュータがスリープから復帰した後に、デバイスが自動的に再接続されないことがあります。&lt;br /&gt;
&lt;br /&gt;
この時、ログに以下のエラーが記録されます:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
bluetoothd[487]: Authentication attempt without agent&lt;br /&gt;
bluetoothd[487]: Access denied: org.bluez.Error.Rejected&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これは、デバイスが &#039;&#039;trusted&#039;&#039; としてマークされていないことが原因です。[[#ペアリング]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== デバイス固有の問題 ===&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth マウスのラグ / 接続断 / 応答なし ====&lt;br /&gt;
&lt;br /&gt;
[[Bluetooth マウス#トラブルシューティング]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== オーディオデバイスが br-connection-profile-unavailable で接続に失敗する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire (pulseaudio-bluetooth ではない) が使用されているが、PipeWire のインスタンスが実行されていない場合、bluetooth オーディオデバイスは接続に失敗します。PipeWire デーモンを開始するには、{{ic|pipewire.service}} [[ユーザーユニット]]を[[開始]]するか、何らかの音声を再生してください。その後、オーディオデバイスをもう一度接続してみてください。&lt;br /&gt;
&lt;br /&gt;
==== ヘッドホンとマウスの干渉 ====&lt;br /&gt;
&lt;br /&gt;
Bluetooth マウスとキーボードを同時に使用しているときに音声が途切れる場合は #23 https://bugs.launchpad.net/ubuntu/+source/bluez/+bug/424215 で参照されているように、次を試してくみてださい:&lt;br /&gt;
&lt;br /&gt;
 # hciconfig hci0 lm ACCEPT,MASTER&lt;br /&gt;
 # hciconfig hci0 lp HOLD,SNIFF,PARK&lt;br /&gt;
&lt;br /&gt;
==== TP-LINK UB400 と Xbox のコントローラが接続/切断を繰り返す ====&lt;br /&gt;
&lt;br /&gt;
以下の設定を使用してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/bluetooth/main.conf|2=&lt;br /&gt;
...&lt;br /&gt;
[General]&lt;br /&gt;
JustWorksRepairing = always&lt;br /&gt;
FastConnectable = true&lt;br /&gt;
Class = 0x000100&lt;br /&gt;
...&lt;br /&gt;
[GATT]&lt;br /&gt;
ReconnectIntervals=1,1,2,3,5,8,13,21,34,55&lt;br /&gt;
AutoEnable=true&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、{{ic|bluetooth.service}} を[[再起動]]してください。&lt;br /&gt;
&lt;br /&gt;
関連する [https://github.com/atar-axis/xpadneo/issues/166 xpadneo に関する議論]を見ることができますが、xpadneo のドライバは必要ありません。&lt;br /&gt;
&lt;br /&gt;
=== ファイル転送の問題 ===&lt;br /&gt;
&lt;br /&gt;
==== gnome-bluetooth ====&lt;br /&gt;
&lt;br /&gt;
bluetooth-properties でファイルの受信を有効にしようとしたときに以下のメッセージが表示される場合:&lt;br /&gt;
&lt;br /&gt;
 Bluetooth OBEX start failed: Invalid path&lt;br /&gt;
 Bluetooth FTP start failed: Invalid path&lt;br /&gt;
&lt;br /&gt;
[[XDG ユーザーディレクトリ]]が存在することを確認してください。&lt;br /&gt;
&lt;br /&gt;
==== シンボリックリンクのせいで、転送されたファイルを受信できない ====&lt;br /&gt;
&lt;br /&gt;
有効な Bluetooth 接続でファイルの受信に失敗する場合、問題はファイルの転送パス内のシンボリックリンクである場合があります。ジャーナルに以下のようなログが現れます:&lt;br /&gt;
&lt;br /&gt;
 Jun 18 11:18:13 ember obexd[3338969]: open(/home/me/.cache/obexd/MOC740): Operation not permitted (1)&lt;br /&gt;
&lt;br /&gt;
エラーメッセージに表示されれたパス内にシンボリックリンクが含まれている場合、obexd はデフォルトで[https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/obexd/plugins/filesystem.c#n90 それを拒否します]。この挙動は、[[ドロップインファイル]]を {{ic|obex.service}} [[systemd/ユーザー|ユーザサービス]]に対して使うことにより初期化時に上書きできます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/obex.service.d/10-symlink.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=&lt;br /&gt;
ExecStart=/usr/lib/bluetooth/obexd --symlinks&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、ユーザの &#039;&#039;systemd&#039;&#039; マネージャの設定を[[リロード]]し、{{ic|obex.service}} ユーザユニットを[[再起動]]してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://averylarsen.com/2019/12/20/keeping-bluetooth-devices-paired-between-linux-and-windows/ Keeping Bluetooth devices paired between Linux and Windows]&lt;br /&gt;
* [https://nullroute.eu.org/~grawity/bluetooth-key-sharing.html Bluetooth link keys on dual-boot systems]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Bluetooth|2023-11-03|791392}}&lt;/div&gt;</summary>
		<author><name>Relz</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Bluetooth&amp;diff=41636</id>
		<title>Bluetooth</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Bluetooth&amp;diff=41636"/>
		<updated>2026-06-27T13:08:43Z</updated>

		<summary type="html">&lt;p&gt;Relz: グラフィカルな Bluetooth フロントエンドに bm-sidebar を追加。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Bluetooth]]&lt;br /&gt;
[[de:Bluetooth]]&lt;br /&gt;
[[en:Bluetooth]]&lt;br /&gt;
[[es:Bluetooth]]&lt;br /&gt;
[[ru:Bluetooth]]&lt;br /&gt;
[[zh-hans:Bluetooth]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Bluetooth マウス}}&lt;br /&gt;
{{Related|Bluetooth キーボード}}&lt;br /&gt;
{{Related|Bluetooth ヘッドセット}}&lt;br /&gt;
{{Related|Blueman}}&lt;br /&gt;
{{Related|ObexFTP}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[[Wikipedia:ja:Bluetooth|Bluetooth]] は携帯電話やコンピュータなどの電子デバイス用の近距離無線通信規格です。Linux においては、Bluetooth プロトコルスタックの実装として [http://www.bluez.org/ BlueZ] が標準的に使われています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
# Bluetooth プロトコロスタックを提供する、{{Pkg|bluez}} パッケージを[[インストール]]します。&lt;br /&gt;
# {{ic|bluetoothctl}} ユーティリティを提供する、{{Pkg|bluez-utils}} を[[インストール]]します。{{Pkg|bluez-deprecated-tools}} を[[インストール]]して、[[#非推奨の BlueZ ツール|非推奨の BlueZ ツール]] を追加します。&lt;br /&gt;
# 一般的な Bluetooth ドライバは、{{ic|btusb}} カーネルモジュールです。このモジュールがロードされているかどうかを[[カーネルモジュール#情報を取得|確認]]してください。もしロードされていなければ、[[カーネルモジュール#手動でモジュールを扱う|モジュールをロード]]してください。&lt;br /&gt;
# {{ic|bluetooth.service}} を[[起動/有効化]]します。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* デフォルトでは bluetooth デーモンは {{ic|lp}} [[ユーザーとグループ#システムグループ|グループ]]のメンバーのユーザーだけに bnep0 デバイスを提供します。bluetooth テザリングに接続するときはユーザーをグループに追加しておいてください。必要なグループは {{ic|/etc/dbus-1/system.d/bluetooth.conf}} ファイルで変更することができます。&lt;br /&gt;
* Bluetooth アダプターには Wi-Fi カードがバンドルされているものもあります (例: [https://www.intel.com/content/www/us/en/wireless-products/centrino-advanced-n-6235.html Intel Centrino]{{Dead link|2023|09|16|status=404}})。これらの Bluetooth アダプターをカーネルから見えるようにするには、まず Wi-Fi カードを有効にする必要があります (大体はラップトップ上のキーボードショートカットを使う)。&lt;br /&gt;
* Bluetooth カードによってはネットワークアダプタと衝突することがあります (例: Broadcom)。したがって、ネットワークサービスを起動する前に Bluetooth デバイスを接続するようにしてください。&lt;br /&gt;
* hcitool や hciconfig などのツールは上流では非推奨となっており、{{Pkg|bluez-utils}} にはもはや含まれていません。アップデートされないことが決まっているため、スクリプトの中で使用している場合は使わないように書き換えることを推奨します。それでも使いたい場合は {{Pkg|bluez-deprecated-tools}} をインストールしてください。詳しい情報は {{Bug|53110}} や [https://lore.kernel.org/linux-bluetooth/20170104133401.3636-1-luiz.dentz@gmail.com/ Bluez メーリングリスト] を参照。&lt;br /&gt;
* 2024年から、{{Pkg|bluez-obex}}と{{Pkg|bluez-mesh}}は{{Pkg|bluez}}から分離されました。よって、Bluetooth越しにファイルを転送したい場合は、{{Pkg|bluez-obex}}をインストールし、ユーザーサービス {{ic|obex.service}} を有効化する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
=== フロントエンド ===&lt;br /&gt;
&lt;br /&gt;
==== コンソール ====&lt;br /&gt;
&lt;br /&gt;
* {{App|bluetoothctl|シェルからデバイスをペアリングすることは、最も単純で信頼性の高いオプションの一つです。|http://www.bluez.org/|{{Pkg|bluez-utils}}}}&lt;br /&gt;
* {{App|bluetuith|ターミナルユーザインターフェイスによる Bluetooth マネージャを提供します。OBEX ファイル転送とマウスのサポート付きで、デバイス/アダプタを簡単に管理できます。|https://www.github.com/darkhz/bluetuith|{{AUR|bluetuith}}}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|bluetoothctl コマンドを自動化するには、{{ic|echo -e &amp;quot;&#039;&#039;command1&#039;&#039;\n&#039;&#039;command2&#039;&#039;\n&amp;quot; {{!}} bluetoothctl}} または {{ic|bluetoothctl -- &#039;&#039;command&#039;&#039;}} を使用します。}}&lt;br /&gt;
&lt;br /&gt;
==== グラフィカル ====&lt;br /&gt;
&lt;br /&gt;
以下のパッケージでは、Bluetooth をカスタマイズするためのグラフィカルインターフェイスが利用可能です。&lt;br /&gt;
&lt;br /&gt;
* {{App|GNOME Bluetooth|[[GNOME]] の Bluetooth ツール。&lt;br /&gt;
** {{Pkg|gnome-bluetooth-3.0}} バックエンドを提供 ({{Pkg|gnome-bluetooth}} はレガシーです)&lt;br /&gt;
** {{Pkg|gnome-shell}} ステータスモニターアプレットを提供&lt;br /&gt;
** {{Pkg|gnome-control-center}} は設定用のフロントエンド GUI を提供しており、アクティビティ概要で  Bluetooth と入力するか、 {{ic|gnome-control-center bluetooth}} コマンドでアクセスすることができます。&lt;br /&gt;
** また、{{ic|bluetooth-sendto}} コマンドを直接起動して、リモートデバイスにファイルを送信することも可能です。&lt;br /&gt;
** {{AUR|nautilus-bluetooth}} は Nautilus の右クリックメニューに &amp;quot;Bluetoothで送信&amp;quot; エントリを追加します。&lt;br /&gt;
** ファイルを受信するには、Bluetooth 設定パネルを開きます。Bluetooth パネルが開いている間のみ受信できます。&lt;br /&gt;
** Thunar のファイルプロパティメニューの &#039;&#039;送信先&#039;&#039; メニューに Bluetooth エントリを追加するには、説明 [https://docs.xfce.org/xfce/thunar/send-to ここ] を参照してください。(設定が必要なコマンドは {{ic|bluetooth-sendto %F}} です)&lt;br /&gt;
|https://wiki.gnome.org/Projects/GnomeBluetooth|}}&lt;br /&gt;
* {{App|Bluedevil|[[KDE]] の Bluetooth ツール。 Dolphin やシステムトレイに Bluetooth のアイコンが表示されていない場合は、システムトレイオプションで有効にするか、ウィジェットを追加してください。アイコンをクリックすることで、Bluedevil の設定や Bluetooth デバイスの検出が可能です。KDE システム設定からもインターフェースが利用できます。|https://invent.kde.org/plasma/bluedevil|{{Pkg|bluedevil}}}}&lt;br /&gt;
* {{App|Blueberry|GNOME Bluetooth から Linux Mint でスピンオフした &#039;&#039;Blueberry&#039;&#039; は全てのデスクトップ環境で動作します。Obex Object Push によるファイル受信をサポートしていません。|https://github.com/linuxmint/blueberry|{{Pkg|blueberry}}}}&lt;br /&gt;
* {{App|[[Blueman]]|フル機能の Bluetooth マネージャー|https://github.com/blueman-project/blueman|{{Pkg|blueman}}}}&lt;br /&gt;
* {{App|Bluetooth Manager Sidebar|Wayland デスクトップ向けの GTK4/libadwaita layer-shell Bluetooth マネージャー。アダプターとデバイスの操作、ペアリング、OBEX ファイル転送、オーディオプロファイルの切り替えに対応しています。|https://github.com/Relz/bluetooth-manager-sidebar|{{AUR|bm-sidebar}}}}&lt;br /&gt;
* {{App|[[ObexFTP]]|OBEX 対応のデバイスとの間でファイルを転送するツール。|http://dev.zuckschwerdt.org/openobex/wiki/ObexFtp|{{AUR|obexftp}}}}&lt;br /&gt;
&lt;br /&gt;
== ペアリング ==&lt;br /&gt;
&lt;br /&gt;
{{Note|Bluetooth デバイスを使用する前に、[[rfkill]] でブロックされていないことを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
このセクションでは、&#039;&#039;bluetoothctl&#039;&#039; CLI を使って &#039;&#039;bluez5&#039;&#039; を直接設定する方法を説明しています。これは、代替のフロントエンドツール(例えば GNOME Bluetooth)を使用している場合は必要ないかもしれません。&lt;br /&gt;
&lt;br /&gt;
正確な手順は、利用するデバイスとその入力機能によります。以下は {{ic|bluetoothctl}} を使ってデバイスをペアリングする一般的な説明です。&lt;br /&gt;
&lt;br /&gt;
{{ic|bluetoothctl}} 対話コマンドを実行してください。{{ic|help}} と入力することで利用できるコマンドのリストを表示できます。&lt;br /&gt;
&lt;br /&gt;
# (任意) {{ic|select &#039;&#039;MAC Address&#039;&#039;}} と入力してデフォルトのコントローラを選択してください。&lt;br /&gt;
# (任意) デバイスがオフになっている場合、{{ic|power on}} と入力してコントローラへの電源供給をオンにしてください。デバイスはデフォルトでオンになっています ([[#アダプタのデフォルト電源状態]])。&lt;br /&gt;
# {{ic|devices}} と入力して、ペアリングしたいデバイスの MAC アドレスを取得してください。&lt;br /&gt;
# デバイスが表示されないときは {{ic|scan on}} コマンドでデバイス検出モードにしてください。&lt;br /&gt;
# {{ic|agent on}} でエージェントをオンにするか、特定のエージェントを選択してください: {{ic|agent}} の後にタブキーを2回押すと、利用可能なエージェントのリストが表示されるはずです。Bluetooth エージェントとは、Bluetooth の &#039;ペアリングコード&#039; を管理するもののことです。エージェントは、&#039;ペアリングコード&#039;の受信に応答したり、&#039;ペアリングコード&#039;を送信したりできます。ほとんどの場合、{{ic|default-agent}} を使うのが適切なはずです。[https://askubuntu.com/questions/763939/bluetoothctl-what-is-a-bluetooth-agent]&lt;br /&gt;
# {{ic|pair &#039;&#039;MAC Address&#039;&#039;}} と入力することでペアリングを実行します (タブ補完が使えます)。&lt;br /&gt;
# PIN がないデバイスを使う場合は、手動でデバイスを信頼する必要があるかもしれません。{{ic|trust &#039;&#039;MAC Address&#039;&#039;}} と入力してこれを行なって下さい。デバイスを信頼するには {{ic|trust &#039;&#039;MAC_address&#039;&#039;}} と入力してください。&lt;br /&gt;
# {{ic|connect &#039;&#039;MAC_address&#039;&#039;}} を使って接続を確立してください。&lt;br /&gt;
&lt;br /&gt;
セッションの例は以下のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ bluetoothctl|&lt;br /&gt;
[NEW] Controller 00:10:20:30:40:50 &#039;&#039;hostname&#039;&#039; [default]&lt;br /&gt;
[bluetooth]# agent KeyboardOnly&lt;br /&gt;
Agent registered&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# default-agent&lt;br /&gt;
Default agent request successful&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# power on&lt;br /&gt;
Changing power on succeeded&lt;br /&gt;
[CHG] Controller 00:10:20:30:40:50 Powered: yes&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# scan on&lt;br /&gt;
Discovery started&lt;br /&gt;
[CHG] Controller 00:10:20:30:40:50 Discovering: yes&lt;br /&gt;
[NEW] Device 00:12:34:56:78:90 &#039;&#039;device name&#039;&#039;&lt;br /&gt;
[CHG] Device 00:12:34:56:78:90 LegacyPairing: yes&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# pair 00:12:34:56:78:90&lt;br /&gt;
Attempting to pair with 00:12:34:56:78:90&lt;br /&gt;
[CHG] Device 00:12:34:56:78:90 Connected: yes&lt;br /&gt;
[CHG] Device 00:12:34:56:78:90 Connected: no&lt;br /&gt;
[CHG] Device 00:12:34:56:78:90 Connected: yes&lt;br /&gt;
Request PIN code&lt;br /&gt;
[agent] Enter PIN code: 1234&lt;br /&gt;
[CHG] Device 00:12:34:56:78:90 Paired: yes&lt;br /&gt;
Pairing successful&lt;br /&gt;
[CHG] Device 00:12:34:56:78:90 Connected: no&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# connect 00:12:34:56:78:90&lt;br /&gt;
Attempting to connect to 00:12:34:56:78:90&lt;br /&gt;
[CHG] Device 00:12:34:56:78:90 Connected: yes&lt;br /&gt;
Connection successful&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== デュアルブートペアリング ===&lt;br /&gt;
&lt;br /&gt;
デュアルブート環境でデバイスをペアリングするには、Linux の方でペアリングキーを変更して Windows または macOS で使用されているペアリングキーと同じにする必要があります。&lt;br /&gt;
&lt;br /&gt;
このページでは、これを手動で行う方法のみを説明しています。この手順を自動化するには、[https://github.com/x2es/bt-dualboot bt-dualboot プロジェクト]や関連するリポジトリを参照してください。&lt;br /&gt;
&lt;br /&gt;
==== 設定方法 ====&lt;br /&gt;
&lt;br /&gt;
これを行うには、まず Arch Linux 上でデバイスのペアリングを行います。その後、もう一方の OS を再起動し、デバイスをペアリングします。ここでペアリング・キーを取り出す必要がありますが、まず Bluetooth デバイスの電源を切り、接続を試みないようにします。&lt;br /&gt;
&lt;br /&gt;
{{Note|([[Logitech MX Master]] や Logitech 604 Lightspeed などの) 一部の Logitech デバイスは、デバイスが新しいシステムとペアリングするたびに MAC アドレスの値を1つ増加させます。プロセスの最後にこれに対処するために、このケースに該当するかどうかを確認する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
==== Windows の場合 ====&lt;br /&gt;
&lt;br /&gt;
===== Windows での展開 =====&lt;br /&gt;
&lt;br /&gt;
まず、Windows を起動してください。&lt;br /&gt;
&lt;br /&gt;
リンクキーを含むレジストリキーは、ログイン不可能な[https://docs.microsoft.com/en-us/windows/security/identity-protection/access-control/local-accounts#system SYSTEM アカウント]でしかアクセスできません。そのため、{{ic|regedit.exe}} を {{ic|SYSTEM}} として実行するには、Windows Sysinternals 公式サイトにある Microsoft の [https://docs.microsoft.com/en-us/sysinternals/downloads/psexec PsExec] ツールが必要になります。&lt;br /&gt;
&lt;br /&gt;
[https://download.sysinternals.com/files/PSTools.zip PsTools] をダウンロードし、{{ic|PsExec64.exe}} を解凍します。&lt;br /&gt;
&lt;br /&gt;
[https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands#command-shell-overview コマンドシェル] の管理者インスタンスで、解凍した EXE の場所からレジストリエディタを起動してください:&lt;br /&gt;
&lt;br /&gt;
 .\PsExec64.exe -s -i regedit.exe&lt;br /&gt;
&lt;br /&gt;
レジストリエディタで、以下のレジストリキーに移動します:&lt;br /&gt;
&lt;br /&gt;
 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys&lt;br /&gt;
&lt;br /&gt;
このキーの中に各 Bluetooth アダプターの MAC アドレス別のキーがあります。複数のキーがあり、どれを使えばいいかわからない場合は、[https://www.addictivetips.com/windows-tips/find-bluetooth-mac-address-windows-10/ このガイド]に従って、目的の Bluetooth アダプタの MAC アドレスを検索してください。&lt;br /&gt;
&lt;br /&gt;
目的のデバイスアダプタキーの中に、ペアリングされたデバイスのそれぞれに対してキーが、MAC アドレスと関連付けられて存在しています。&lt;br /&gt;
&lt;br /&gt;
インストール間で共有したい各ペアデバイスについて、キー全体を右クリックし、&#039;&#039;.reg&#039;&#039; ファイルとしてエクスポートしてください。これはテキストファイルで、このファイルからキーをコピーできます。&lt;br /&gt;
&lt;br /&gt;
このファイルにバイナリキーが1つだけ存在する場合、Bluetooth 5.1 デバイスではなく、そのペアリングキーが必要なもの全てであるということになります。&lt;br /&gt;
&lt;br /&gt;
ペアリングしたデバイスに複数のキー ({{ic|LTK}} や {{ic|IRK}} など) が存在する場合、これは Bluetooth 5.1 デバイスで&#039;&#039;ある&#039;&#039;ということになります。これらのキーを使う方法は [[#Bluetooth 5.1 キーの準備]] を見てください。&lt;br /&gt;
&lt;br /&gt;
最後に、キーを Linux 環境にインポートするために、Linux を起動して [[#終わりに]] へ進んでください。&lt;br /&gt;
&lt;br /&gt;
===== Linux での展開 =====&lt;br /&gt;
&lt;br /&gt;
{{Note|Windows パーティションが Bitlocker で暗号化されている場合、Linux から chntpw を使ってアクセスすることはできません。}}&lt;br /&gt;
&lt;br /&gt;
Arch をリブートしてください。{{Pkg|chntpw}} をインストールして、Windows システムドライブをマウントします。&lt;br /&gt;
&lt;br /&gt;
 $ cd &#039;&#039;/path/to/windows/system&#039;&#039;/Windows/System32/config&lt;br /&gt;
 $ chntpw -e SYSTEM&lt;br /&gt;
{{Note|CurrentControlSet の代わりに ControlSet00X（X は任意の数字）と表示されることがあります。ls コマンドで確認してください。}}&lt;br /&gt;
{{ic|chntpw}} 環境の中で以下を実行します。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; cd CurrentControlSet\Services\BTHPORT\Parameters\Keys&lt;br /&gt;
もしくは&lt;br /&gt;
 &amp;gt; cd ControlSet00X\Services\BTHPORT\Parameters\Keys&lt;br /&gt;
&lt;br /&gt;
次に、Bluetooth アダプタの MAC アドレスを取得し、そのフォルダを入力します。&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; ls&lt;br /&gt;
 &amp;gt; cd &#039;&#039;your-device&#039;s-mac-address&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ペアリングしているデバイスにも同じことをします。Bluetooth 5.1 デバイスで&#039;&#039;ない&#039;&#039;場合、ペアリングキーしか表示されません:&lt;br /&gt;
&lt;br /&gt;
{{hc|&amp;gt; ls|&lt;br /&gt;
Node has 0 subkeys and 1 values&lt;br /&gt;
size  type        value name    [value if type DWORD]&lt;br /&gt;
16    REG_BINARY &amp;lt;123456789876&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Bluetooth 5.1 デバイスである場合、{{ic|hex}} を通して、デバイスのキーを取得します。&lt;br /&gt;
&lt;br /&gt;
{{hc|&amp;gt; hex 123456789876|&lt;br /&gt;
:00000 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX (いくつかの他の文字)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
”XX&amp;quot; はペアリング・キーです。どのキーがどの MAC アドレスにマッピングされているか、メモしておいてください。&lt;br /&gt;
&lt;br /&gt;
Bluetooth 5.1 デバイスで&#039;&#039;ある&#039;&#039;場合、1つのデバイスに対応するキーが複数表示されます。&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
Node has 0 subkeys and 8 values&lt;br /&gt;
  size     type              value name             [value if type DWORD]&lt;br /&gt;
    16  3 REG_BINARY         &amp;lt;LTK&amp;gt;&lt;br /&gt;
     4  4 REG_DWORD          &amp;lt;KeyLength&amp;gt;               16 [0x10]&lt;br /&gt;
     8  b REG_QWORD          &amp;lt;ERand&amp;gt;&lt;br /&gt;
     4  4 REG_DWORD          &amp;lt;EDIV&amp;gt;                 37520 [0x9290]&lt;br /&gt;
    16  3 REG_BINARY         &amp;lt;IRK&amp;gt;&lt;br /&gt;
     8  b REG_QWORD          &amp;lt;Address&amp;gt;&lt;br /&gt;
     4  4 REG_DWORD          &amp;lt;AddressType&amp;gt;              1 [0x1]&lt;br /&gt;
     4  4 REG_DWORD          &amp;lt;AuthReq&amp;gt;                 45 [0x2d]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これらのキーを使う方法は [[#Bluetooth 5.1 キーの準備]] を見てください。必要な値を得るには {{ic|hex &#039;&#039;value_name&#039;&#039;}} を使います。&lt;br /&gt;
&lt;br /&gt;
最後に、キーを Linux 環境にインポートするために [[#終わりに]] へ進んでください。&lt;br /&gt;
&lt;br /&gt;
==== macOS の場合 ====&lt;br /&gt;
&lt;br /&gt;
macOS を起動し:&lt;br /&gt;
&lt;br /&gt;
* macOS Monterey 及びそれ以降の場合:&lt;br /&gt;
*# Keychain Access を開き、Bluetooth と検索してください。&lt;br /&gt;
*# 日付順でソートしてください。&lt;br /&gt;
*# 対象のデバイスを最近取り除いて再接続した場合、キーを変更日時順でソートして、最新のものを選べばよいです。キーはおそらく MobileBluetooth (古い Bluetooth デバイスの場合) という名前か、UUID (Bluetooth 5.1 以降) だけです。&lt;br /&gt;
*# 対象のエントリをダブルクリックしてください。Account フィールドの MAC アドレスが対象デバイスの MAC アドレスと一致することを確認してください。&lt;br /&gt;
*# &amp;quot;Show password&amp;quot; チェックボックスをクリックしてください。ここで、パスワードを2回入力する必要があります。&lt;br /&gt;
*# パスワードフィールド内のテキストをコピーしてください ({{ic|⌘+a}} {{ic|⌘+c}})。これは実際には XML ファイルです。&lt;br /&gt;
#* テキストをホームディレクトリ内の {{ic|bt_keys.txt}} ファイルにペーストしてください。&lt;br /&gt;
* High Sierra 及びそれ以降の場合、次のコマンドをターミナルで実行してください: {{bc|# defaults read /private/var/root/Library/Preferences/com.apple.bluetoothd.plist LinkKeys &amp;gt; ~/bt_keys.txt}}&lt;br /&gt;
* Sierra 及びそれ以前の場合、次のコマンドをターミナルで実行してください: {{bc|# defaults read /private/var/root/Library/Preferences/blued.plist LinkKeys &amp;gt; ~/bt_keys.txt}}&lt;br /&gt;
&lt;br /&gt;
すると、{{ic|~/.bt_keys.txt}} ファイルには、確立された Bluetooth キーが含まれています。古いバージョンの macOS (High Sierra 及びそれ以前) では、先に進む前にキーの並びを逆にする必要があります。例えば、{{ic|98 54 2f aa bb cc dd ee ff gg hh ii jj kk ll mm}} は {{ic|MM LL KK JJ GG FF EE DD CC BB AA 2F 54 98}} になります。&lt;br /&gt;
&lt;br /&gt;
{{Note|キーの並びを逆にするには、以下の [[Python]] コードを使用できます:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; key = &amp;quot;98 54 2f aa bb cc dd ee ff gg hh ii jj kk ll mm&amp;quot;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &amp;quot; &amp;quot;.join(reversed(key.strip().split()))&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Bluetooth 5.1 デバイスの場合、1つのデバイスに対して複数のキーが関連付けられています。それらのキーを使用する方法については [[#Bluetooth 5.1 キーの準備]] を見てください。&lt;br /&gt;
&lt;br /&gt;
最後に、キーを Linux 環境にインポートするために、Linux を起動し、[[#終わりに]] へ進んでください。&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth 5.1 キーの準備 ====&lt;br /&gt;
&lt;br /&gt;
[[#Windows の場合]] や [[#macOS の場合]] の章に従っていて Bluetooth 5.1 キーが存在していた場合、それらのキーを Linux にインポートする前に特定の変換をかける必要があります。[[#終わりに]] の章で使うために、要求されたファイルを適切に作成してください。この手順は対象デバイスによって異なり、キーの一部を操作する必要があります。これを行うためのユーティリティは以下で挙げられています。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! デバイス !! 元のキー及び変換 (Windows) !! 元のキー及び変換 (macOS) || キーの保存先ファイル&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|&lt;br /&gt;
* Logitech MX Master 3&lt;br /&gt;
* Xbox One S Wireless Controller&lt;br /&gt;
|&lt;br /&gt;
* {{ic|IRK}} をコピー。&lt;br /&gt;
* 16進数の桁間のスペースを除去。&lt;br /&gt;
| {{Grey|?}}&lt;br /&gt;
| {{ic|IdentityResolvingKey.Key}}&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
* {{ic|LTK}} をコピー。&lt;br /&gt;
* 16進数の桁間のスペースを除去。&lt;br /&gt;
| {{Grey|?}}&lt;br /&gt;
| {{ic|SlaveLongTermKey.Key}} と {{ic|PeripheralLongTermKey.Key}}&lt;br /&gt;
|-&lt;br /&gt;
|{{ic|ERand}} と {{ic|EDIV}} は {{ic|0}} にする必要あり。&lt;br /&gt;
|&#039;&#039;Random Number&#039;&#039; と &#039;&#039;Encrypted Diversifier&#039;&#039; は {{ic|0}} にする必要あり。&lt;br /&gt;
| {{-}}&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;4&amp;quot;|&lt;br /&gt;
* ThinkPad TrackPoint Keyboard II&lt;br /&gt;
* Pebble M350 マウス&lt;br /&gt;
* Logitech G604 Lightspeed マウス&lt;br /&gt;
|&lt;br /&gt;
* {{ic|IRK}} をコピー&lt;br /&gt;
* バイトの順番を逆に。&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;Remote IRK&#039;&#039; をコピー。&lt;br /&gt;
* Base64 から16進数に変換。&lt;br /&gt;
| {{ic|IdentityResolvingKey.Key}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* {{ic|LTK}} をコピー。&lt;br /&gt;
* 16進数の桁間のスペースを除去。&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;Remote Encryption&#039;&#039; を &#039;&#039;Long-term Key&#039;&#039; にコピー。&lt;br /&gt;
* Base64 から16進数に変換。&lt;br /&gt;
| {{ic|LongTermKey.Key}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* {{ic|ERand}} をコピー。&lt;br /&gt;
* バイトの順番を逆に。&lt;br /&gt;
* 数値全体を10進数に変換。&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;Remote Encryption&#039;&#039; を &#039;&#039;Random Number&#039;&#039; にコピー&lt;br /&gt;
* Base64 をリトルエンディアンの10進数に変換 (以下の Python コードを参照)。&lt;br /&gt;
| {{ic|LongTermKey.Rand}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* {{ic|EDIV}} をコピー。&lt;br /&gt;
* バイトの順番を逆に。&lt;br /&gt;
* 数値全体を10進数に変換。&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;Remote Encryption&#039;&#039; を &#039;&#039;Encrypted Diversifier&#039;&#039; にコピー。&lt;br /&gt;
* Base64 からリトルエンディアンの10進数に変換 (以下の Python コードを参照)。&lt;br /&gt;
| {{ic|LongTermKey.EDiv}}&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|他のデバイス&lt;br /&gt;
|&lt;br /&gt;
* {{ic|LTK}} をコピー。&lt;br /&gt;
* 16進数の桁間のスペースを除去。&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;Remote IRK&#039;&#039; をコピー。&lt;br /&gt;
* Base64 から16進数に変換。&lt;br /&gt;
| {{ic|LongTermKey.Key}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* {{ic|ERand}} をコピー。&lt;br /&gt;
* バイトの順番を逆に。&lt;br /&gt;
* 数値全体を10進数に変換。&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;Remote Encryption&#039;&#039; を &#039;&#039;Long-term Key&#039;&#039; にコピー。&lt;br /&gt;
* Base64 から16進数に変換。&lt;br /&gt;
| {{ic|LongTermKey.Rand}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* {{ic|EDIV}} をコピー。&lt;br /&gt;
* 16進数の桁間のスペースを除去。&lt;br /&gt;
|&lt;br /&gt;
* &#039;&#039;Remote Encryption&#039;&#039; を &#039;&#039;Encrypted Diversifier&#039;&#039; にコピー。&lt;br /&gt;
* Base64 から16進数に変換。&lt;br /&gt;
* バイトの順番を逆に。&lt;br /&gt;
| {{ic|LongTermKey.EDiv}}&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;1&amp;quot;|Xbox ワイヤレスコントローラ&lt;br /&gt;
|&lt;br /&gt;
* {{ic|LTK}} をコピー。&lt;br /&gt;
* 16進数の桁間のスペースを除去。&lt;br /&gt;
| {{Grey|?}}&lt;br /&gt;
| {{ic|SlaveLongTermKey.Key}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 値からスペースを取り除くには、[https://www.browserling.com/tools/remove-all-whitespace このオンラインツール]や以下の [[Python]] コードを使用できます:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &amp;quot;&#039;&#039;key_value&#039;&#039;&amp;quot;.replace(&amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
* 以下の Python コードはバイトの順番を逆にするだけです:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; ERand=&amp;quot; 63 02 84 B8 5D 40 44 DF   &amp;quot;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; ERand=list(reversed(ERand.strip().split()))&lt;br /&gt;
}}&lt;br /&gt;
* 以下の Python コードは、一部で必要となる追加の10進数変換を行います:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; int(&amp;quot;&amp;quot;.join(ERand), 16)&lt;br /&gt;
16088054540146049635&lt;br /&gt;
}}&lt;br /&gt;
* 以下の Python コードは base64 から16進数への変換を行います:&lt;br /&gt;
 binascii.hexlify(base64.decodebytes(b&#039;...&#039;)).upper()&lt;br /&gt;
* 以下の Python コードは完全な macOS Encrypted Diversifier の変換を行います:&lt;br /&gt;
 struct.unpack(&#039;&amp;lt;H&#039;, base64.decodebytes(b&#039;...&#039;))&lt;br /&gt;
* 以下の Python コードは完全な macOS Random Number の変換を行います:&lt;br /&gt;
 struct.unpack(&#039;&amp;amp;lt;Q&#039;, base64.decodebytes(b&#039;...&#039;))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
一般的なケースの例としては:&lt;br /&gt;
* {{ic|LTK}} の値 {{ic|48 4D AF CD 0F 92 22 88 0A 52 9A F4 76 DA 8B 94}} は、{{ic|LongTermKey.Key}} の値 {{ic|484DAFCD0F9222880A529AF476DA8B94}} となります。&lt;br /&gt;
* {{ic|ERand}} の値 {{ic|63 02 84 B8 5D 40 44 DF}} は、{{ic|Rand}} の値 {{ic|16088054540146049635}} となります。&lt;br /&gt;
* {{ic|EDIV}} の値 {{ic|37520}} は、{{ic|EDiv}} の値 {{ic|37520}} となります。&lt;br /&gt;
&lt;br /&gt;
==== 設定の保存  ====&lt;br /&gt;
&lt;br /&gt;
キーを手に入れたら、ユーザーを root に変更し、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|# cd /var/lib/bluetooth/&#039;&#039;BT-Adapter-MAC-address&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
ここには、ペアリングした Bluetooth 機器ごとのフォルダがあります。Arch とデュアルブートでペアリングしたい各デバイスについて、以下を実行します:&lt;br /&gt;
&lt;br /&gt;
{{bc|# cd &#039;&#039;device-MAC-address&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|この時点で、ペアリング時に MAC アドレスの値を増加させるデバイスを使用している場合、MAC アドレスのディレクトリを、値を増加させたパスへ移動させる必要があります。Windows から MAC アドレスをコピーするか、あるいは、各オクテットが2桁の[[Wikipedia:Hexadecimal|16進数]]であることに注意しながら自分で値を増加させてください。}}&lt;br /&gt;
&lt;br /&gt;
ペアリングキーを持っている場合 (つまり、これは Bluetooth 5.1 デバイスでない)、{{ic|info}} ファイルを編集し、{{ic|[LinkKey]}} 以下のキーを変更します。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=info|2=&lt;br /&gt;
[LinkKey]&lt;br /&gt;
Key=XXXXXXXXXXXXXXX&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|すべての文字が大文字であることを確認する必要があります。スペースはすべて削除してください。}}&lt;br /&gt;
&lt;br /&gt;
複数のキーが存在する場合 (Bluetooth 5.1 の場合)、以下の {{ic|info}} ファイルを編集して、全てのキーをそれぞれの値で置き換えてください。例えば、Xbox One S Wireless Controller の場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=info|2=&lt;br /&gt;
[IdentityResolvingKey]&lt;br /&gt;
Key=&amp;lt;IdentityResolvingKey.Key&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[PeripheralLongTermKey]&lt;br /&gt;
Key=&amp;lt;PeripheralLongTermKey.Key&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[SlaveLongTermKey]&lt;br /&gt;
Key=&amp;lt;SlaveLongTermKey.Key&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、{{ic|bluetooth.service}} と {{ic|pulseaudio}} を[[再起動]]してください。({{ic|pulseaudio -k &amp;amp;&amp;amp; pulseaudio --start}} を使ってください。)&lt;br /&gt;
&lt;br /&gt;
これで、デバイスに接続できるはずです。&lt;br /&gt;
&lt;br /&gt;
{{Note|Bluetooth マネージャによっては、デバイスに再接続するために完全な再起動が必要な場合があります。}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
=== アダプタのデフォルト電源状態 ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|bluez}} 5.65 以降、BlueZ はデフォルトで、サービスの起動時やサスペンドからの復帰時にすべての Bluetooth アダプタをオンにします。[https://github.com/bluez/bluez/commit/180cf09933b2d8eb03972c8638063429fe5fece5]&lt;br /&gt;
&lt;br /&gt;
アダプタを自動で有効化させたくない場合(例えば、ポータブルデバイスなどでバッテリを節約したい場合)、{{ic|/etc/bluetooth/main.conf}} の {{ic|[Policy]}} セクションで {{ic|1=AutoEnable=false}} を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=/etc/bluetooth/main.conf|2=&lt;br /&gt;
[Policy]&lt;br /&gt;
AutoEnable=false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この設定を行っても、[[#ペアリング]] で説明されているように {{ic|power on}} を実行すれば、アダプタを手動でオンにできます。&lt;br /&gt;
&lt;br /&gt;
=== 起動時に発見可能にする ===&lt;br /&gt;
&lt;br /&gt;
デバイスが常に見えていて、かつ直接接続できる必要がある場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=/etc/bluetooth/main.conf|2=&lt;br /&gt;
[General]&lt;br /&gt;
DiscoverableTimeout = 0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== サスペンドからの復帰 ===&lt;br /&gt;
&lt;br /&gt;
Bluetooth キーボードやマウスなどをサスペンドから起動できるようにする。まず、bios の設定を確認し、サスペンドからの復帰 が無効になっていないことを確認します。多くの場合、マザーボードからの Bluetooth は USB デバイスです。&lt;br /&gt;
&lt;br /&gt;
bluetooth アダプターのベンダーコードとデバイス ID を確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lsusb {{!}} grep bluetooth -i|&lt;br /&gt;
Bus 001 Device 002: ID 8087:0039 Intel Corp. AX200 Bluetooth&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
サスペンドからの復帰を有効にするために、ベンダコードとデバイス ID の新しい udev ルールを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/91-keyboard-mouse-wakeup.rules|2=&lt;br /&gt;
SUBSYSTEM==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;8087&amp;quot;, ATTRS{idProduct}==&amp;quot;0039&amp;quot; RUN+=&amp;quot;/bin/sh -c &#039;echo enabled &amp;gt; /sys$env{DEVPATH}/../power/wakeup;&#039;&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
復帰後に Bluetooth キーボードを自動的に再設定して、例えば異なるキーマップやキーのリピート速度をもたせたりする(詳細は [[Xorg でのキーボード設定#typematic delay と rate の調整]] と [[xmodmap]])には、[[実行可能属性|実行可能]]なスクリプトを作成してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|configure_keyboard.sh|2=&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
export DISPLAY=:0&lt;br /&gt;
xset r rate 220 30&lt;br /&gt;
xmodmap /&#039;&#039;your&#039;&#039;/&#039;&#039;path&#039;&#039;/&#039;&#039;to&#039;&#039;/.Xmodmap&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、上記のような追加の udev ルールを作成してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/92-keyboard-reconfiguration-wakeup.rules|2=&lt;br /&gt;
SUBSYSTEM==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;8087&amp;quot;, ATTRS{idProduct}==&amp;quot;0039&amp;quot; RUN+=&amp;quot;/&#039;&#039;your&#039;&#039;/&#039;&#039;path&#039;&#039;/&#039;&#039;to&#039;&#039;/configure_keyboard.sh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 実験的な機能を有効化する ===&lt;br /&gt;
&lt;br /&gt;
Bluez スタックは、バグがあるかもしれない新しい機能を D-Bus 実験的オプションおよびカーネル実験的オプションに留めます。実験的な機能は最終的に、安定していると判断され、もはやオプションを必要としなくなるので、どのような実験的な機能が存在するかはバージョンによって異なります (例えば、現在 D-Bus の実験的なインターフェイスを有効化すると、古いヘッドセットのバッテリーレベルを報告できるようになります)。実験的な機能を有効化するには、設定の対応する行をアンコメントしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/bluetooth/main.conf|2=&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
# Enables D-Bus experimental interfaces&lt;br /&gt;
# Possible values: true or false&lt;br /&gt;
&#039;&#039;&#039;#Experimental = true&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Enables kernel experimental features, alternatively a list of UUIDs&lt;br /&gt;
# can be given.&lt;br /&gt;
# Possible values: true,false,&amp;lt;UUID List&amp;gt;&lt;br /&gt;
# Possible UUIDS:&lt;br /&gt;
...&lt;br /&gt;
# Defaults to false.&lt;br /&gt;
&#039;&#039;&#039;#KernelExperimental = true&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
あるいは、{{ic|bluetooth.service}} を[[編集]]して、{{ic|--experimental}} フラグあるいは {{ic|--kernel}} フラグを追加してください。例えば、以下の[[ドロップインファイル]]のように:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/bluetooth.service.d/override.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=&lt;br /&gt;
ExecStart=/usr/lib/bluetooth/bluetoothd --experimental&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
いずれの場合でも、{{ic|bluetooth.service}} を[[再起動]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
== オーディオ ==&lt;br /&gt;
&lt;br /&gt;
通常は、オーディオサーバーと Bluetooth を統合するために追加の手順を実行する必要があります。これについては、以下のセクションで説明します。&lt;br /&gt;
&lt;br /&gt;
Bluetooth オーディオや Bluetooth ヘッドセットなどの情報については [[Bluetooth ヘッドセット]] のページを見てください。&lt;br /&gt;
&lt;br /&gt;
=== PulseAudio ===&lt;br /&gt;
&lt;br /&gt;
Bluetooth ヘッドフォンやスピーカーのようなオーディオ機器を使うには {{Pkg|pulseaudio-bluetooth}} パッケージのインストールが必要です。インストールを反映させるために、pulseaudio を再起動してください: {{ic|pulseaudio -k}}。デフォルトの Pulseaudio インストールでは (具体的には、パッケージングされているデフォルトの {{ic|default.pa}} でユーザインスタンスを使用している場合)、即座に Bluetooth デバイスからスピーカーにオーディオをストリーミングできるはずです。[https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/blob/stable-16.x/src/daemon/default.pa.in#L84-93]&lt;br /&gt;
&lt;br /&gt;
システム全体の PulseAudio 設定がある場合は、デーモンを実行しているユーザー（通常は {{ic|pulse}}) が {{ic|lp}} グループに属しており、PulseAudio 設定に Bluetooth モジュールをロードしていることを確認します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pulse/system.pa|2=&lt;br /&gt;
...&lt;br /&gt;
load-module module-bluetooth-policy&lt;br /&gt;
load-module module-bluetooth-discover&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これは任意ですが、Bluetooth デバイスの接続時にすべてのオーディオをそのデバイスに自動で切り替えたい場合、{{ic|load-module module-switch-on-connect}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== PipeWire ===&lt;br /&gt;
&lt;br /&gt;
v0.3.19 以降の PipeWire はデフォルトで Bluetooth をサポートしています。&lt;br /&gt;
&lt;br /&gt;
=== ALSA ===&lt;br /&gt;
&lt;br /&gt;
{{Note|Bluez5 は [[ALSA]] の直接統合を中止し、 [[PulseAudio]] のみをサポートします。 PulseAudio を使用できない場合、または使用しない場合は、次の手順に従ってください。}}&lt;br /&gt;
&lt;br /&gt;
まず、 Bluetooth オーディオデバイスが正しくペアリングされ、システムに接続されていることを確認します。&lt;br /&gt;
&lt;br /&gt;
次に、 {{AUR|bluez-alsa-git}} をインストールし、 {{ic|bluealsa}} サービスを開始(そして、有効に) し、ユーザーを {{ic|audio}} グループに追加します。&lt;br /&gt;
&lt;br /&gt;
次のコマンドを実行して、すべてが意図したとおりに動作しているかどうかを確認します({{ic|&#039;&#039;XX:XX:XX:XX:XX:XX&#039;&#039;}} と {{ic|&#039;&#039;FILE.wav&#039;&#039;}} の部分は置き換えてください):&lt;br /&gt;
&lt;br /&gt;
 $ aplay -D bluealsa:SRV=org.bluealsa,DEV=&#039;&#039;XX:XX:XX:XX:XX:XX&#039;&#039;,PROFILE=a2dp &#039;&#039;FILE.wav&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
最後に、 {{ic|~/.asoundrc}} に次の行を追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.asoundrc|&lt;br /&gt;
defaults.bluealsa {&lt;br /&gt;
    service &amp;quot;org.bluealsa&amp;quot;&lt;br /&gt;
    device &amp;quot;XX:XX:XX:XX:XX:XX&amp;quot;&lt;br /&gt;
    profile &amp;quot;a2dp&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これで、 {{ic|bluealsa}} デバイスを使って Bluetooth オーディオデバイスに接続できるようになります。ボリューム管理は {{ic|alsamixer}} とオプション {{ic|-D bluealsa}} を使って通常行われます。&lt;br /&gt;
&lt;br /&gt;
== Bluetooth シリアル ==&lt;br /&gt;
&lt;br /&gt;
Bluetooth-to-Serial modules (HC-05、HC-06) で Bluetooth シリアル通信が機能するようにするには、次の手順に従います:&lt;br /&gt;
&lt;br /&gt;
[[#ペアリング|上記]]で説明したように、 {{ic|bluetoothctl}} を使って Bluetooth デバイスを&#039;&#039;&#039;ペアリング&#039;&#039;&#039;します。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|bluez-deprecated-tools}} をインストールします。新しいツールにはない機能があります。&lt;br /&gt;
&lt;br /&gt;
ペアになっているデバイスの MAC アドレスを tty 端末にバインドします:&lt;br /&gt;
&lt;br /&gt;
 # rfcomm bind rfcomm0 &#039;&#039;MAC_address_of_Bluetooth_device&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
これで、シリアル通信用に {{ic|/dev/rfcomm0}} を開くことができます:&lt;br /&gt;
&lt;br /&gt;
 $ picocom /dev/rfcomm0 -b 115200&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
{{Out of date|Replace hciconfig with newer commands.}}&lt;br /&gt;
&lt;br /&gt;
=== 一般的なトラブルシューティング ===&lt;br /&gt;
&lt;br /&gt;
==== デバッグ ====&lt;br /&gt;
&lt;br /&gt;
デバッグするには、最初に {{ic|bluetooth.service}} を[[停止]]します。&lt;br /&gt;
&lt;br /&gt;
そして {{ic|-d}} パラメーターを付けて開始します。&lt;br /&gt;
&lt;br /&gt;
 # /usr/lib/bluetooth/bluetoothd -n -d&lt;br /&gt;
&lt;br /&gt;
別のオプションとして、 {{ic|btmon}} ツールが有ります。&lt;br /&gt;
&lt;br /&gt;
==== 非推奨の BlueZ ツール ====&lt;br /&gt;
&lt;br /&gt;
8つの BlueZ ツールは[https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/?id=b1eb2c4cd057624312e0412f6c4be000f7fc3617 非推奨となり]、{{Pkg|bluez-utils}} から削除されましたが、それらのすべてが新しいツールに取って代わられたわけではありません。{{Pkg|bluez-deprecated-tools}} パッケージが非推奨となったツールを提供します。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 非推奨のツール&lt;br /&gt;
! あり得る代替&lt;br /&gt;
|-&lt;br /&gt;
| [https://manpages.debian.org/latest/bluez/gatttool.1.en.html gatttool] || btgatt-client, [https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/gatt-api.txt D-Bus Gatt API]{{Dead link|2023|10|29|status=404}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://manpages.debian.org/latest/bluez/hciattach.1.en.html hciattach] || btattach&lt;br /&gt;
|-&lt;br /&gt;
| [https://manpages.debian.org/latest/bluez/hciconfig.1.en.html hciconfig] || btmgmt (そして bluetoothctl?)&lt;br /&gt;
|-&lt;br /&gt;
| [https://manpages.debian.org/latest/bluez-hcidump/hcidump.1.en.html hcidump] || btmon (そして btsnoop)&lt;br /&gt;
|-&lt;br /&gt;
| [https://manpages.debian.org/latest/bluez/hcitool.1.en.html hcitool] || なし、[https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/device-api.txt D-Bus Device API]{{Dead link|2023|10|29|status=404}} が利用可能&lt;br /&gt;
|-&lt;br /&gt;
| [https://manpages.debian.org/latest/bluez/rfcomm.1.en.html rfcomm]&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | なし、[https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/profile-api.txt D-Bus Profile1 API]{{Dead link|2023|10|29|status=404}} の実装?&lt;br /&gt;
|-&lt;br /&gt;
| [https://manpages.debian.org/latest/bluez/ciptool.1.en.html ciptool]&lt;br /&gt;
|-&lt;br /&gt;
|[https://manpages.debian.org/latest/bluez/sdptool.1.en.html sdptool]&lt;br /&gt;
| なし、機能が、異なる D-Bus オブジェクトに散らばっている模様: [https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/profile-api.txt Profile]{{Dead link|2023|10|29|status=404}}、[https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/advertising-api.txt Advertising]{{Dead link|2023|10|29|status=404}}、そして [https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/device-api.txt device]{{Dead link|2023|10|29|status=404}} と [https://git.kernel.org/cgit/bluetooth/bluez.git/tree/doc/adapter-api.txt adapter]{{Dead link|2023|10|29|status=404}} の UUID の配列。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== サービスの問題 ===&lt;br /&gt;
&lt;br /&gt;
==== systemd: Condition check resulted in Bluetooth service being skipped ====&lt;br /&gt;
&lt;br /&gt;
{{ic|bluetooth.service}} は {{ic|/sys/class/bluetooth}} ディレクトリが存在することのみを要求します。このディレクトリは {{ic|bluetooth}} カーネルモジュールによって作成されるはずです。このカーネルモジュールは、{{ic|systemd-udev}} が動作している Bluetooth ハードウェアデバイスを発見した場合にのみ、{{ic|systemd-udev}} により自動的にロードされます。&lt;br /&gt;
&lt;br /&gt;
{{ic|/sys/class/bluetooth}} が存在しない場合、{{ic|lsmod}} コマンドを使って、Bluetooth カーネルモジュールがロードされているかどうかを確認してください。Bluetooth デバイスがあるにも関わらずロードされていない場合、[[カーネルモジュール#手動でモジュールを扱う|Bluetooth モジュールをロード]]し、{{ic|bluetooth.service}} を[[再起動]]することで、手動で起動できます。&lt;br /&gt;
&lt;br /&gt;
また、{{ic|bluetooth}} モジュールをロードする際に、対応するカーネル Bluetooth ドライバもロードする必要があります。{{ic|btusb}} が最も可能性がありますが、{{ic|btrtl,btintel,btbcm,bnep,btusb}} などの可能性もあります。&lt;br /&gt;
&lt;br /&gt;
{{ic|bluetooth.service}} の[[ユニットステータス]]を確認して、このサービスが起動しているかどうかを確認してください。&lt;br /&gt;
&lt;br /&gt;
[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=853207 Debian Bug report logs - #853207] も参照してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|bluetooth.service}} の起動に成功したが、まだ Bluetooth を使えないことがあります (例: {{ic|scan on}} の時に {{ic|bluetoothctl}} が {{ic|org.Bluez.Error.NotReady}} のようなメッセージを発する)。この場合、コンピュータを再起動し、次のことをダブルチェックしてください: {{ic|/sys/class/bluetooth}} ディレクトリが存在するか; {{ic|lsmod}} の出力に正しい Bluetooth モジュールが含まれているか; [[journal]] のログを確認するなど。{{ic|systemd-udev}} は、また手動の変更をせずとも Bluetooth ハードウェアを自動的に認識するはずです。&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth が suspend-to-idle 中のデバイスを即座に立ち上げてしまう ====&lt;br /&gt;
&lt;br /&gt;
[[サスペンドとハイバネート|suspend-to-idle/S2idle/S0ix/Modern Standby]] する能力のあるシステムにおいては、Bluetooth コントローラがスリープ中も有効化されたままになります。通常、これにより、Bluetooth デバイスが接続されていると、システムが[https://bugzilla.kernel.org/show_bug.cgi?id=200039 スリープに移行した直後にスリープが解除されてしまいます]。&lt;br /&gt;
&lt;br /&gt;
これを防ぐには、スリープに移行する前に Bluetooth を完全に無効化できます。{{Pkg|bluez-utils}} をインストールし、以下のファイルを作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/bluetooth-disable-before-sleep.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Disable Bluetooth before going to sleep&lt;br /&gt;
Before=sleep.target&lt;br /&gt;
Before=suspend.target&lt;br /&gt;
Before=hybrid-sleep.target&lt;br /&gt;
Before=suspend-then-hibernate.target&lt;br /&gt;
StopWhenUnneeded=yes&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
&lt;br /&gt;
ExecStart=/usr/bin/bluetoothctl power off&lt;br /&gt;
ExecStop=/usr/bin/bluetoothctl power on&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=sleep.target&lt;br /&gt;
WantedBy=suspend.target&lt;br /&gt;
WantedBy=hybrid-sleep.target&lt;br /&gt;
WantedBy=suspend-then-hibernate.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このサービスを[[有効化]]し、スリープに移行した時に Bluetooth デバイスが切断されることや、スリープからの復帰時に Bluetooth が再び接続されることを確認してください。&lt;br /&gt;
&lt;br /&gt;
この回避策を使用すると、[[#サスペンドからの復帰|Bluetooth マウス/キーボードを使ってシステムをスリープから復帰させること]]ができなくなります。&lt;br /&gt;
&lt;br /&gt;
==== ヘッドレス/サーバのシステムでログアウト後に Bluetooth がオフになる ====&lt;br /&gt;
&lt;br /&gt;
様々な原因が考えられます:&lt;br /&gt;
&lt;br /&gt;
* [[PulseAudio]] と [[PipeWire]] は両方ともデフォルトでユーザサービスとして動作します。よって、最後のセッションが終了するとこれらのサービスは終了されます。この問題を解決するには、対象のユーザに対して [[systemd/ユーザー#systemd のユーザーインスタンスを自動起動|Lingering (残留)]] を有効化してください。&lt;br /&gt;
* さらに、[[WirePlumber]] を [[PipeWire]] と共に実行している場合 (これはよくある環境です)、WirePlumber は &amp;quot;logind-monitor&amp;quot; を実行します。これは、Bluetooth をログイン時に有効化し、ログアウト時に無効化します。問題の解決方法は [[WirePlumber#ログアウト後も Bluetooth を実行し続ける/ヘッドレス Bluetooth]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== アダプタの問題 ===&lt;br /&gt;
&lt;br /&gt;
==== hcitool scan: Device not found ====&lt;br /&gt;
&lt;br /&gt;
* 一部のラップトップ (例: Dell Studio 15、Lenovo Thinkpad X1) では、Bluetooth モードを HID から HCI に切り替える必要があります。{{Pkg|bluez-hid2hci}} パッケージをインストールすれば、[[udev]] が自動的に切り替えを行うはずです。また、次のコマンドを実行して手動で HCI に切り替えることもできます:&lt;br /&gt;
&lt;br /&gt;
 # /usr/lib/udev/hid2hci&lt;br /&gt;
&lt;br /&gt;
* デバイスが表示されず、かつマシンに Windows オペレーティングシステムがある場合、Windows から bluetooth アダプターを有効にして見てください。&lt;br /&gt;
&lt;br /&gt;
* 場合によっては次のコマンドで問題が解決するかもしれません:&lt;br /&gt;
&lt;br /&gt;
 # bluetoothctl power on&lt;br /&gt;
&lt;br /&gt;
==== bluetoothctl: No default controller available ====&lt;br /&gt;
&lt;br /&gt;
一部のマザーボード Bluetooth コントローラにはバグがあります。バグがこの問題の原因であるか調べるには、{{ic|journalctl {{!}} grep hci}} を実行してください。このコマンドの出力に &amp;quot;command tx timeout&amp;quot; や &amp;quot;Reading Intel version command failed&amp;quot; のようなエントリが存在する場合、PC の電源を切り、電源ケーブルを物理的に外して数秒間放置してください。これにより、コントローラにファームウェアを再ロードさせます (通常の再起動では再ロードしません)。[https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1859592 こちら]のバグレポートを参照してください。&lt;br /&gt;
&lt;br /&gt;
デバイスが [[rfkill]] によってブロックされていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
また、一部の Intel カード (8260 など) は Bluetooth サービスによって正しく認識されないかもしれません。{{Pkg|bluez-utils}} の代わりに非推奨の {{Pkg|bluez-deprecated-tools}} を使うことでこの問題が解決したというケースが報告されています。&lt;br /&gt;
&lt;br /&gt;
また、これは省電力機能が原因かもしれません。その場合、{{ic|1=btusb.enable_autosuspend=n}} [[カーネルパラメータ#設定|カーネルパラメータ]]により解決できる可能性があります。[https://bugzilla.redhat.com/show_bug.cgi?id=1573562 Red Hat Bugzilla – Bug 1573562] も参照してください。&lt;br /&gt;
&lt;br /&gt;
時々、{{ic|btusb}} をオプション無しでアンロード・ロードすればコントローラを元に戻せることがあります:&lt;br /&gt;
&lt;br /&gt;
 # modprobe -r btusb&lt;br /&gt;
 # modprobe btusb&lt;br /&gt;
&lt;br /&gt;
また、ドングルが [[#CSR ドングル 0a12:0001|CSR クローン]]である場合にもこの問題が発生することがあります。&lt;br /&gt;
&lt;br /&gt;
==== rfkill unblock: Do not unblock ====&lt;br /&gt;
&lt;br /&gt;
デバイスがソフトブロックされていて [[ConnMan]] を動作させている場合、次を試してみて下さい:&lt;br /&gt;
&lt;br /&gt;
 $ connmanctl enable bluetooth&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth USB ドングル ====&lt;br /&gt;
&lt;br /&gt;
USB ドングルを使う場合は、Bluetooth ドングルが認識されているか確認してください。USB ドングルを挿入する時に {{ic|journalctl -f}} を root として実行する(もしくは {{ic|/var/log/messages.log}} を調査する)ことで、そのことを確認できます。以下のような見た目であるはずです(hci を見てください)。&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
Feb 20 15:00:24 hostname kernel: [ 2661.349823] usb 4-1: new full-speed USB device number 3 using uhci_hcd&lt;br /&gt;
Feb 20 15:00:24 hostname bluetoothd[4568]: HCI dev 0 registered&lt;br /&gt;
Feb 20 15:00:24 hostname bluetoothd[4568]: Listening for HCI events on hci0&lt;br /&gt;
Feb 20 15:00:25 hostname bluetoothd[4568]: HCI dev 0 up&lt;br /&gt;
Feb 20 15:00:25 hostname bluetoothd[4568]: Adapter /org/bluez/4568/hci0 has been enabled&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
最初の2行しか表示されていなかった場合、デバイスは見つかっていますが、そのデバイスを立ち上げる必要があります。&lt;br /&gt;
例:&lt;br /&gt;
&lt;br /&gt;
{{hc|# btmgmt|&lt;br /&gt;
[mgmt]# info&lt;br /&gt;
Index list with 1 item&lt;br /&gt;
hci0:	Primary controller&lt;br /&gt;
	addr 00:1A:7D:DA:71:10 version 6 manufacturer 10 class 0x000000&lt;br /&gt;
	supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy static-addr &lt;br /&gt;
	&#039;&#039;&#039;current settings:&#039;&#039;&#039; connectable discoverable bondable ssp br/edr le secure-conn &lt;br /&gt;
	name Mozart&lt;br /&gt;
	short name &lt;br /&gt;
&lt;br /&gt;
[mgmt]# select hci0&lt;br /&gt;
Selected index 0&lt;br /&gt;
&lt;br /&gt;
[hci0]# power up&lt;br /&gt;
hci0 Set Powered complete, settings: &#039;&#039;&#039;powered&#039;&#039;&#039; connectable discoverable bondable ssp br/edr le secure-conn&lt;br /&gt;
&lt;br /&gt;
[hci0]# info&lt;br /&gt;
hci0:	Primary controller&lt;br /&gt;
	addr 00:1A:7D:DA:71:10 version 6 manufacturer 10 class 0x1c0104&lt;br /&gt;
	supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy static-addr &lt;br /&gt;
	&#039;&#039;&#039;current settings: powered&#039;&#039;&#039; connectable discoverable bondable ssp br/edr le secure-conn&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
または&lt;br /&gt;
&lt;br /&gt;
{{hc|# bluetoothctl|&lt;br /&gt;
[bluetooth]# show&lt;br /&gt;
Controller 00:1A:7D:DA:71:10 (public)&lt;br /&gt;
	Name: Mozart&lt;br /&gt;
	Alias: Mozart&lt;br /&gt;
	Class: 0x0000095c&lt;br /&gt;
	&#039;&#039;&#039;Powered: no&#039;&#039;&#039;&lt;br /&gt;
	Discoverable: yes&lt;br /&gt;
	Pairable: yes&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# power on&lt;br /&gt;
[CHG] Controller 00:1A:7D:DA:71:10 Class: 0x001c0104&lt;br /&gt;
Changing power on succeeded&lt;br /&gt;
[CHG] Controller 00:1A:7D:DA:71:10 &#039;&#039;&#039;Powered: yes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# show&lt;br /&gt;
Controller 00:1A:7D:DA:71:10 (public)&lt;br /&gt;
	Name: Mozart&lt;br /&gt;
	Alias: Mozart&lt;br /&gt;
	Class: 0x001c0104&lt;br /&gt;
	&#039;&#039;&#039;Powered: yes&#039;&#039;&#039;&lt;br /&gt;
	Discoverable: yes&lt;br /&gt;
	Pairable: yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[https://www.bluetooth.com/specifications/assigned-numbers/host-controller-interface/ 公式の仕様表]に従って、Bluetooth のバージョンが HCI のバージョンにマップされていることを確認できます。例えば、先の出力では、HCI &#039;&#039;&#039;version 6&#039;&#039;&#039; が Bluetooth version 4.0 です。&lt;br /&gt;
&lt;br /&gt;
デバイスが検出されているか確認するために {{ic|bluez-utils}} に含まれている {{ic|hcitool}} を使うことができます。次のコマンドで利用可能なデバイスとその識別子・MAC アドレスのリストを表示することが可能です:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ btmgmt info|&lt;br /&gt;
Index list with 1 item&lt;br /&gt;
hci0:	Primary controller&lt;br /&gt;
	addr 00:1A:7D:DA:71:10 &#039;&#039;&#039;version 6&#039;&#039;&#039; manufacturer 10 class 0x1c0104&lt;br /&gt;
	supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy static-addr&lt;br /&gt;
	current settings: powered connectable discoverable bondable ssp br/edr le secure-conn&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
デバイスに関するもっと詳細な情報は、非推奨の {{ic|hciconfig}} を使うことで取得できます。({{AUR|bluez-utils-compat}})&lt;br /&gt;
&lt;br /&gt;
{{hc|$ hciconfig -a hci0|&lt;br /&gt;
hci0:   Type: USB&lt;br /&gt;
        BD Address: 00:1B:DC:0F:DB:40 ACL MTU: 310:10 SCO MTU: 64:8&lt;br /&gt;
        UP RUNNING PSCAN ISCAN&lt;br /&gt;
        RX bytes:1226 acl:0 sco:0 events:27 errors:0&lt;br /&gt;
        TX bytes:351 acl:0 sco:0 commands:26 errors:0&lt;br /&gt;
        Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80&lt;br /&gt;
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3&lt;br /&gt;
        Link policy: RSWITCH HOLD SNIFF PARK&lt;br /&gt;
        Link mode: SLAVE ACCEPT&lt;br /&gt;
        Name: &#039;BlueZ (0)&#039;&lt;br /&gt;
        Class: 0x000100&lt;br /&gt;
        Service Classes: Unspecified&lt;br /&gt;
        Device Class: Computer, Uncategorized&lt;br /&gt;
        HCI Ver: 2.0 (0x3) HCI Rev: 0xc5c LMP Ver: 2.0 (0x3) LMP Subver: 0xc5c&lt;br /&gt;
        Manufacturer: Cambridge Silicon Radio (10)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== ドングルから短距離にいるときにオーディオデバイスがおかしくなる =====&lt;br /&gt;
&lt;br /&gt;
他のデバイスと同一の USB ホストを共有している場合、[https://bbs.archlinux.org/viewtopic.php?pid=1440161#p1440161 オーディオデバイスとの通信に干渉] する可能性があります。オーディオデバイスがバスに接続されている唯一のデバイスであることを確認してください。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lsusb|&lt;br /&gt;
Bus 002 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)&lt;br /&gt;
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
Bus 001 Device 004: ID 048d:1345 Integrated Technology Express, Inc. Multi Cardreader&lt;br /&gt;
Bus 001 Device 003: ID 0424:a700 Standard Microsystems Corp. 2 Port Hub&lt;br /&gt;
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub&lt;br /&gt;
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== CSR ドングル 0a12:0001 =====&lt;br /&gt;
&lt;br /&gt;
デバイス {{ic|ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)}} にはリグレッションのバグがあり、現在、カーネルバージョン 5.17 及び &amp;lt; 6.0 でしか動作しません。詳細は、[https://bugzilla.kernel.org/show_bug.cgi?id=60824 Kernel Bug 60824] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== Logitech Bluetooth USB ドングル ====&lt;br /&gt;
&lt;br /&gt;
Logitech のドングルには Embedded と HCI という二つのモードで動作するものがあります (例: Logitech MX5000)。embedded モードではドングルは USB デバイスをエミュレートするので PC は普通の USB マウス・キーボードを使っていると認識します。&lt;br /&gt;
&lt;br /&gt;
USB BT ミニレシーバの小さな赤いボタンを押すと他のモードが有効になります。BT ドングルの赤いボタンを押しながらコンピュータに接続してください。ボタンを押して3-5秒で、Bluetooth アイコンがシステムトレイに表示されます ([https://ubuntuforums.org/showthread.php?t=1332197 議論])。&lt;br /&gt;
&lt;br /&gt;
また、{{Pkg|bluez-hid2hci}} パッケージをインストールすることもできます。Logitech のドングルを接続すると自動的に切り替えます。&lt;br /&gt;
&lt;br /&gt;
==== Foxconn / Hon Hai / Lite-On の Broadcom デバイス ====&lt;br /&gt;
&lt;br /&gt;
一部のデバイスでは、起動時にファームウェアを書き込む必要があります。&lt;br /&gt;
&lt;br /&gt;
一部のファームウェアは、[[AUR]] で [https://aur.archlinux.org/packages?K=broadcom broadcom] と検索すると入手できます。特出すべきパッケージは {{AUR|broadcom-bt-firmware}} です。これは、[https://github.com/winterheart/broadcom-bt-firmware/blob/master/DEVICES.md 様々なカード]用のファイルを提供します。&lt;br /&gt;
&lt;br /&gt;
または、[https://github.com/jessesung/hex2hcd hex2hcd] ({{Pkg|bluez-utils}} でインストールされます) を使ってファームウェアを Microsoft Windows の &#039;&#039;.hex&#039;&#039; ファイルから &#039;&#039;.hcd&#039;&#039; ファイルに変換することもできます。&lt;br /&gt;
&lt;br /&gt;
正しい &#039;&#039;.hex&#039;&#039; ファイルを取得するために、&#039;&#039;lsusb&#039;&#039; でデバイスの vendor:product コードを検索してください。例:&lt;br /&gt;
&lt;br /&gt;
 Bus 002 Device 004: ID &#039;&#039;&#039;04ca:2006&#039;&#039;&#039; Lite-On Technology Corp. Broadcom BCM43142A0 Bluetooth Device&lt;br /&gt;
&lt;br /&gt;
または:&lt;br /&gt;
&lt;br /&gt;
 Bus 004 Device 004: Id &#039;&#039;&#039;0489:e031&#039;&#039;&#039; Foxconn / Hon Hai&lt;br /&gt;
&lt;br /&gt;
もしくは、Windows (仮想マシンでもかまいません) を起動して Device Manager ユーティリティからファームウェアの名前を取得してください。デバイスのモデルを知りたいのに &#039;&#039;lsusb&#039;&#039; で表示されない場合、&#039;&#039;lsusb -v&#039;&#039; の {{ic|iProduct}} でわかることがあります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;.hex&#039;&#039; ファイルはダウンロードした Windows ドライバーから抽出することができます。Windows を実行する必要はありません。適切なドライバーをダウンロードしてください (例えば、[http://www.fujitsupc.com/downloads/mobile/BLUETOOTH_WIDCOMM_V6.5.0.3100_WIN7-32_FPC46-1771-01.EXE Bluetooth Widcomm]{{Dead link|2023|09|16|status=domain name not resolved}})。フォーマットにも依りますが、ファイルの展開には{{Pkg|unrar}} か {{Pkg|cabextract}} が必要である場合があります。多数の &#039;&#039;.hex&#039;&#039; ファイルの中から必要なファイルを見つけるには、{{ic|Win32/bcbtums-win7x86-brcm.inf}} ファイルの中身を確認して {{ic|[RAMUSB&#039;&#039;&#039;E031&#039;&#039;&#039;.CopyList]}} を検索してください。{{ic|E031}} はあなたの使っているデバイスの product コード (大文字) に置き換えて下さい (&#039;&#039;lsusb&#039;&#039; で確認できる2番目の16進数)。その下に、必要な &#039;&#039;.hex&#039;&#039; ファイルの名前が書かれているはずです。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;.hcd&#039;&#039; ファイルを手に入れたら、{{ic|/lib/firmware/brcm/BCM.hcd}} にコピーしてください - このファイル名は [[dmesg]] からわかります。あなたのマシンでは異なっている可能性があるため &#039;&#039;dmesg&#039;&#039; の出力で確認してください。そして &#039;&#039;btusb&#039;&#039; モジュールをリロードしてください:&lt;br /&gt;
&lt;br /&gt;
 # rmmod btusb&lt;br /&gt;
 # modprobe btusb&lt;br /&gt;
&lt;br /&gt;
これでデバイスが使えるようになるはずです。以上の設定を永続化させる方法は [https://bbs.archlinux.org/viewtopic.php?id=162688 BBS#162688] を参照。&lt;br /&gt;
&lt;br /&gt;
==== Intel の複合 WiFi と Bluetooth カード ====&lt;br /&gt;
&lt;br /&gt;
[[ネットワーク設定/ワイヤレス#Bluetooth の共存]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== Windows とのデュアルブート環境における Mediatek MT7921 や MT7961 ====&lt;br /&gt;
&lt;br /&gt;
デュアルブートシステムでは、Bluetooth のファームウェアバージョンが Windows と Linux とで異なる場合、Windows を起動した後に Bluetooth アダプタが動作しなくなります。&lt;br /&gt;
&lt;br /&gt;
これを防ぐ最も良い方法は、各 OS 用の Bluetooth ドライバ (特にファームウェア) を最新にすることです。&lt;br /&gt;
&lt;br /&gt;
Windows 用の最新バージョンのドライバ (またはファームウェア) を見つけられない場合、最新のファームウェアファイル {{ic|/usr/lib/firmware/mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin.xz}} を Arch Linux からコピーし、Windows へ展開することができます (例えば、{{ic|C:\WINDOWS\system32\DRIVERS\}}。Windows でのファームウェアファイルへのパスはデバイスマネージャから確認できます)。&lt;br /&gt;
&lt;br /&gt;
==== サスペンド/復帰後にアダプタが消える ====&lt;br /&gt;
&lt;br /&gt;
まず、アダプタのベンダーと製品 ID を見つけてください。例:&lt;br /&gt;
&lt;br /&gt;
First, find vendor and product ID of the adapter. For example:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ lsusb -tv|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M&lt;br /&gt;
    ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
    ...&lt;br /&gt;
    |__ Port 3: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M&lt;br /&gt;
        ID 8087:0025 Intel Corp. &lt;br /&gt;
    |__ Port 3: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M&lt;br /&gt;
        ID 8087:0025 Intel Corp. &lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
この場合、ベンダー ID は 8087 で、製品 ID は 0025 です。&lt;br /&gt;
&lt;br /&gt;
次に、 {{pkg|usb_modeswitch}} を使用してアダプタをリセットします:&lt;br /&gt;
&lt;br /&gt;
 # usb_modeswitch -R -v &#039;&#039;vendor_ID&#039;&#039; -p &#039;&#039;product_ID&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ペアリングと接続の問題 ===&lt;br /&gt;
&lt;br /&gt;
==== コンピュータが表示されない ====&lt;br /&gt;
&lt;br /&gt;
携帯からコンピュータが表示されないときは、discoverable モードを有効にしてください:&lt;br /&gt;
&lt;br /&gt;
 # bluetoothctl discoverable on&lt;br /&gt;
&lt;br /&gt;
discoverable モードがオンになっていることを確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# bluetoothctl show|&lt;br /&gt;
	Powered: yes&lt;br /&gt;
	Discoverable: yes&lt;br /&gt;
	Pairable: yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|/etc/bluetooth/main.conf}} の {{ic|PairableTimeout}} と {{ic|DiscoverableTimeout}} を確認してください。}}&lt;br /&gt;
&lt;br /&gt;
まだコンピュータが表示されない場合、以下のように {{ic|/etc/bluetooth/main.conf}} 内のデバイスクラスを変更してみて下さい:&lt;br /&gt;
&lt;br /&gt;
 # Default device class. Only the major and minor device class bits are&lt;br /&gt;
 # considered.&lt;br /&gt;
 #Class = 0x000100 # Computer Type (from default config)&lt;br /&gt;
 Class = 0x100100 # (Object-Transfer Service &amp;amp; Computer Type)&lt;br /&gt;
&lt;br /&gt;
{{Note|場合によっては、{{ic|main.conf}} 内の {{ic|Class}} はデバイスの初期化後に上書きされます。なので、{{ic|hciconfig hci0 class 100100}} のようにクラスを直接設定してください。}}&lt;br /&gt;
&lt;br /&gt;
あるユーザは、携帯からコンピュータを見られるようにするためにはこうするしか無いと報告しています。LG TV(そして、一部の他の機器)はオーディオデバイスから発見可能です。なので、{{ic|000414}} (soundbar クラス)を使用することでそのようなデバイスを発見できるようにできます。&lt;br /&gt;
&lt;br /&gt;
Bluetooth デバイス/サービスのクラスを生成するには https://bluetooth-pentest.narod.ru/software/bluetooth_class_of_device-service_generator.html を見てください。&lt;br /&gt;
&lt;br /&gt;
==== デバイスを接続した数秒後に切断してしまう ====&lt;br /&gt;
&lt;br /&gt;
デバイスを接続したすぐ後に切断が発生し、ジャーナルの出力に以下のようなメッセージが確認できる場合:&lt;br /&gt;
&lt;br /&gt;
 bluetoothd: Unable to get connect data for Headset Voice gateway: getpeername: Transport endpoint is not connected (107)&lt;br /&gt;
 bluetoothd: connect error: Connection refused (111)&lt;br /&gt;
&lt;br /&gt;
おそらく別のオペレーティングシステムで同一の Bluetooth アダプタを使ってデバイスがペアリングされていることが原因です (例: デュアルブート)。一部のデバイスは同一の MAC アドレス (例: Bluetooth アダプタ) に対して複数のペアリングを関連付けた場合に対処できません。この問題を解決するには [[#デュアルブートペアリング]] の指示に従ってください。&lt;br /&gt;
&lt;br /&gt;
==== スキャンしてもデバイスが表示されない ====&lt;br /&gt;
&lt;br /&gt;
Bluetooth Low Energy を使用しているデバイスは bluetoothctl でスキャンしても表示されないことがあります (例: [[Logitech MX Master]])。{{ic|transport le}} を使ってスキャンすることができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|# bluetoothctl|&lt;br /&gt;
[bluetooth]# menu scan&lt;br /&gt;
[bluetooth]# transport le&lt;br /&gt;
[bluetooth]# back&lt;br /&gt;
[bluetooth]# scan on&lt;br /&gt;
[bluetooth]# devices&lt;br /&gt;
...&lt;br /&gt;
Device XX:XX:XX:XX:XX:XX DA V2 X &amp;lt;---- 低消費電力なデバイス&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
もう一つの方法は、{{aur|bluez-utils-compat}} をインストールし、{{ic|bluetooth.service}} を[[開始]]し、以下を実行することです:&lt;br /&gt;
&lt;br /&gt;
{{hc|# bluetoothctl|&lt;br /&gt;
[NEW] Controller (MAC) myhostname [default]&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# power on&lt;br /&gt;
[CHG] Controller (MAC) Class: 0x0c010c&lt;br /&gt;
Changing power on succeeded&lt;br /&gt;
[CHG] Controller (MAC) Powered: yes&lt;br /&gt;
&lt;br /&gt;
[bluetooth]# scan on&lt;br /&gt;
Discovery started&lt;br /&gt;
[CHG] Controller (MAC) Discovering: yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
他のターミナルで:&lt;br /&gt;
&lt;br /&gt;
 # hcitool lescan&lt;br /&gt;
&lt;br /&gt;
デバイスが表示されるまで待機してから hcitool を {{ic|Ctrl+c}} で閉じてください。bluetoothctl からデバイスが認識されたら通常通りにペアリングできます。&lt;br /&gt;
&lt;br /&gt;
==== Intel Corp. AX200 Bluetooth で BLE デバイスが見つからない ====&lt;br /&gt;
&lt;br /&gt;
どうやら、このデバイスでは BLE のパッシブスキャンが壊れているようです。詳細は[https://community.intel.com/t5/Wireless/AX200-Passive-BLE-scan-linux/m-p/1227456 上流のバグレポート]を見てください。&lt;br /&gt;
&lt;br /&gt;
==== スリープ後に再接続できない ====&lt;br /&gt;
&lt;br /&gt;
スリープ後や、コンピュータがスリープから復帰した後に、デバイスが自動的に再接続されないことがあります。&lt;br /&gt;
&lt;br /&gt;
この時、ログに以下のエラーが記録されます:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
bluetoothd[487]: Authentication attempt without agent&lt;br /&gt;
bluetoothd[487]: Access denied: org.bluez.Error.Rejected&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これは、デバイスが &#039;&#039;trusted&#039;&#039; としてマークされていないことが原因です。[[#ペアリング]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== デバイス固有の問題 ===&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth マウスのラグ / 接続断 / 応答なし ====&lt;br /&gt;
&lt;br /&gt;
[[Bluetooth マウス#トラブルシューティング]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== オーディオデバイスが br-connection-profile-unavailable で接続に失敗する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire (pulseaudio-bluetooth ではない) が使用されているが、PipeWire のインスタンスが実行されていない場合、bluetooth オーディオデバイスは接続に失敗します。PipeWire デーモンを開始するには、{{ic|pipewire.service}} [[ユーザーユニット]]を[[開始]]するか、何らかの音声を再生してください。その後、オーディオデバイスをもう一度接続してみてください。&lt;br /&gt;
&lt;br /&gt;
==== ヘッドホンとマウスの干渉 ====&lt;br /&gt;
&lt;br /&gt;
Bluetooth マウスとキーボードを同時に使用しているときに音声が途切れる場合は #23 https://bugs.launchpad.net/ubuntu/+source/bluez/+bug/424215 で参照されているように、次を試してくみてださい:&lt;br /&gt;
&lt;br /&gt;
 # hciconfig hci0 lm ACCEPT,MASTER&lt;br /&gt;
 # hciconfig hci0 lp HOLD,SNIFF,PARK&lt;br /&gt;
&lt;br /&gt;
==== TP-LINK UB400 と Xbox のコントローラが接続/切断を繰り返す ====&lt;br /&gt;
&lt;br /&gt;
以下の設定を使用してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/bluetooth/main.conf|2=&lt;br /&gt;
...&lt;br /&gt;
[General]&lt;br /&gt;
JustWorksRepairing = always&lt;br /&gt;
FastConnectable = true&lt;br /&gt;
Class = 0x000100&lt;br /&gt;
...&lt;br /&gt;
[GATT]&lt;br /&gt;
ReconnectIntervals=1,1,2,3,5,8,13,21,34,55&lt;br /&gt;
AutoEnable=true&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして、{{ic|bluetooth.service}} を[[再起動]]してください。&lt;br /&gt;
&lt;br /&gt;
関連する [https://github.com/atar-axis/xpadneo/issues/166 xpadneo に関する議論]を見ることができますが、xpadneo のドライバは必要ありません。&lt;br /&gt;
&lt;br /&gt;
=== ファイル転送の問題 ===&lt;br /&gt;
&lt;br /&gt;
==== gnome-bluetooth ====&lt;br /&gt;
&lt;br /&gt;
bluetooth-properties でファイルの受信を有効にしようとしたときに以下のメッセージが表示される場合:&lt;br /&gt;
&lt;br /&gt;
 Bluetooth OBEX start failed: Invalid path&lt;br /&gt;
 Bluetooth FTP start failed: Invalid path&lt;br /&gt;
&lt;br /&gt;
[[XDG ユーザーディレクトリ]]が存在することを確認してください。&lt;br /&gt;
&lt;br /&gt;
==== シンボリックリンクのせいで、転送されたファイルを受信できない ====&lt;br /&gt;
&lt;br /&gt;
有効な Bluetooth 接続でファイルの受信に失敗する場合、問題はファイルの転送パス内のシンボリックリンクである場合があります。ジャーナルに以下のようなログが現れます:&lt;br /&gt;
&lt;br /&gt;
 Jun 18 11:18:13 ember obexd[3338969]: open(/home/me/.cache/obexd/MOC740): Operation not permitted (1)&lt;br /&gt;
&lt;br /&gt;
エラーメッセージに表示されれたパス内にシンボリックリンクが含まれている場合、obexd はデフォルトで[https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/obexd/plugins/filesystem.c#n90 それを拒否します]。この挙動は、[[ドロップインファイル]]を {{ic|obex.service}} [[systemd/ユーザー|ユーザサービス]]に対して使うことにより初期化時に上書きできます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/obex.service.d/10-symlink.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=&lt;br /&gt;
ExecStart=/usr/lib/bluetooth/obexd --symlinks&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、ユーザの &#039;&#039;systemd&#039;&#039; マネージャの設定を[[リロード]]し、{{ic|obex.service}} ユーザユニットを[[再起動]]してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://averylarsen.com/2019/12/20/keeping-bluetooth-devices-paired-between-linux-and-windows/ Keeping Bluetooth devices paired between Linux and Windows]&lt;br /&gt;
* [https://nullroute.eu.org/~grawity/bluetooth-key-sharing.html Bluetooth link keys on dual-boot systems]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Bluetooth|2023-11-03|791392}}&lt;/div&gt;</summary>
		<author><name>Relz</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NetworkManager&amp;diff=41604</id>
		<title>NetworkManager</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NetworkManager&amp;diff=41604"/>
		<updated>2026-06-07T11:16:26Z</updated>

		<summary type="html">&lt;p&gt;Relz: AUR から利用できる Wayland 向けの GTK4/libadwaita layer-shell サイドバーとして、nm-sidebar を NetworkManager のフロントエンドセクションに追加しました。これにより、CLI、ホットキー、ランチャー、Waybar のワークフローに適した NetworkManager UI をユーザーが見つけやすくなります。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ネットワークマネージャ]]&lt;br /&gt;
[[Category:DHCP]]&lt;br /&gt;
[[ar:Networkmanager]]&lt;br /&gt;
[[de:Networkmanager]]&lt;br /&gt;
[[en:NetworkManager]]&lt;br /&gt;
[[fr:NetworkManager]]&lt;br /&gt;
[[hu:NetworkManager]]&lt;br /&gt;
[[pt:NetworkManager]]&lt;br /&gt;
[[ru:NetworkManager]]&lt;br /&gt;
[[zh-hans:NetworkManager]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ネットワーク設定}}&lt;br /&gt;
{{Related|ワイヤレスネットワーク設定}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:NetworkManager|NetworkManager]] は、システムがネットワークに自動的に接続できるようにするためにネットワークの検出と設定の機能を提供するプログラムです。&lt;br /&gt;
&lt;br /&gt;
[https://networkmanager.dev/ NetworkManager] は無線ネットワークと有線ネットワークの両方で有用です。無線ネットワークでは、NetworkManager は既知の無線ネットワークを優先するようになっており、最も信頼性のあるネットワークに切り替える機能もあります。NetworkManager 対応のアプリケーションはオンラインモードとオフラインモードの切り替えが可能です。&lt;br /&gt;
&lt;br /&gt;
また、NetworkManager は無線接続よりも有線接続を優先するようになっており、モデム接続と特定の種類の VPN に対応しています。&lt;br /&gt;
&lt;br /&gt;
{{Warning|デフォルトでは、シークレット (Wi-Fi のパスワードなど) は root ユーザからファイルシステムでアクセス可能であり、さらに GUI ([[#nm-applet]] など) を介して設定にアクセスできるユーザからもアクセス可能です。詳細は [[#Wi-Fi パスワードの暗号化]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
NetworkManager は {{Pkg|networkmanager}} パッケージで[[インストール]]できます。このパッケージには、デーモン、コマンドラインインターフェイス (&#039;&#039;nmcli&#039;&#039;)、そして curses ベースのインターフェイス (&#039;&#039;nmtui&#039;&#039;) が含まれています。&lt;br /&gt;
&lt;br /&gt;
=== NetworkManager を有効化する ===&lt;br /&gt;
&lt;br /&gt;
インストールしたら、{{ic|NetworkManager.service}} を[[起動/有効化]]する必要があります。NetworkManager デーモンが起動すると、既に構成されている利用可能な &amp;quot;システム接続&amp;quot; に自動的に接続します。&amp;quot;ユーザ接続&amp;quot; や未構成の接続を設定したり接続したりするには、&#039;&#039;nmcli&#039;&#039; やアプレットが必要です。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 各ネットワークインターフェイスは、ただ一つの [[ネットワーク設定#ネットワークマネージャ|DHCP クライアントあるいはネットワークマネージャ]]のみで管理する必要があります。つまり、システム上には複数の DHCP クライアントあるいはネットワークマネージャを動かすべきではありません。現在実行中のサービスのリストを {{ic|1=systemctl --type=service}} で確認し、競合しているサービスを[[停止]]あるいは再設定してください。&lt;br /&gt;
* [[systemd-resolved]] が[[起動]]されていない場合、エラーメッセージがログに溢れ始めます。詳細は [[#Unit dbus-org.freedesktop.resolve1.service not found]] を見てください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 追加のインターフェイス ===&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|nm-connection-editor}}: グラフィカルユーザインターフェイス。&lt;br /&gt;
* {{Pkg|network-manager-applet}}: システムトレイアプレット ([[#nm-applet]] 章を参照)。&lt;br /&gt;
&lt;br /&gt;
=== モバイルブロードバンドサポート ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager はモバイルブロードバンド接続のサポートに [[ModemManager]] を使用します。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|modemmanager}} と {{Pkg|usb_modeswitch}} を[[インストール]]してください。その後、{{ic|ModemManager.service}} を[[有効化]]し、[[起動]]してください。&lt;br /&gt;
&lt;br /&gt;
ModemManager を認識させるために {{ic|NetworkManager.service}} を[[再起動]]する必要がある場合があります。サービスを再起動し、モデムを挿し直せば、認識されるはずです。&lt;br /&gt;
&lt;br /&gt;
フロントエンド (例えば {{Pkg|nm-connection-editor}}) から接続を追加し、接続タイプにモバイルブロードバンドを選択してください。ISP と料金プランを選んだら、[[Wikipedia:ja:APN|APN]] とその他の設定が {{Pkg|mobile-broadband-provider-info}} にある情報で自動的に書き込まれるはずです。&lt;br /&gt;
&lt;br /&gt;
=== PPPoE / DSL サポート ===&lt;br /&gt;
&lt;br /&gt;
PPPoE / DSL サポートに関しては {{Pkg|ppp}} を[[インストール]]してください。PPPoE 接続を追加するには、{{ic|1=nm-connection-editor}} を使って新しい DSL/PPPoE 接続を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== VPN サポート ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager 1.16 から [[WireGuard]] のネイティブなサポートが追加されました。必要なのは {{ic|wireguard}} カーネルモジュールだけです。詳細は [https://blogs.gnome.org/thaller/2019/03/15/wireguard-in-networkmanager/ NetworkManager のブログ記事の WireGuard] を見てください。&lt;br /&gt;
&lt;br /&gt;
その他の VPN タイプに対するサポートはプラグインなシステムをベースとしています。以下のパッケージで提供されています:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|networkmanager-openconnect}}: [[OpenConnect]] 用&lt;br /&gt;
* {{Pkg|networkmanager-openvpn}}: [[OpenVPN]] 用&lt;br /&gt;
* {{Pkg|networkmanager-pptp}}: [[PPTP クライアント]]用&lt;br /&gt;
* {{Pkg|networkmanager-strongswan}}: [[strongSwan]] 用&lt;br /&gt;
* {{Pkg|networkmanager-vpnc}}&lt;br /&gt;
* {{AUR|networkmanager-fortisslvpn}}&lt;br /&gt;
* {{AUR|networkmanager-iodine-git}}&lt;br /&gt;
* {{AUR|networkmanager-libreswan}}&lt;br /&gt;
* {{Pkg|networkmanager-l2tp}}&lt;br /&gt;
* {{AUR|networkmanager-ssh}}&lt;br /&gt;
* {{Pkg|network-manager-sstp}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|1=VPN サポートに関連する[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues?search=VPN&amp;amp;state=opened バグ]が大量に存在しています。デーモンプロセスのオプションが GUI から適切に設定されていることを確認し、パッケージのリリースの度にダブルチェックしてください。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|1=&amp;lt;nowiki/&amp;gt;&lt;br /&gt;
* VPN 使用時に DNS 解決を完全に機能させるには、[[#DNS キャッシングと条件付きフォワーディング|条件付きフォワーディング]]をセットアップする必要があります。&lt;br /&gt;
* これらのプラグインは、ドキュメント化されたコマンドラインインターフェイスが存在しなかったり、アプレットが実行されていないと全く動作しなかったりする場合があります。通常のデスクトップ環境を使用している場合には問題になりません。通常とは異なるものを使用している場合は、接続を設定したりアクティブ化したりする際に必要なダイアログが表示されるようにするために [[#nm-applet]] を実行するべきです。[https://bbs.archlinux.org/viewtopic.php?id=246698]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 使い方 ==&lt;br /&gt;
&lt;br /&gt;
NetworkManager には {{man|1|nmcli}} と {{man|1|nmtui}} が付属しています。&lt;br /&gt;
&lt;br /&gt;
=== nmcli 例 ===&lt;br /&gt;
&lt;br /&gt;
近くの Wi-Fi ネットワークを一覧表示します:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli device wifi list&lt;br /&gt;
&lt;br /&gt;
Wi-Fi ネットワークに接続します:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli device wifi connect &#039;&#039;SSID_または_BSSID&#039;&#039; password &#039;&#039;パスワード&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
非表示の Wi-Fi ネットワークに接続します:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli device wifi connect &#039;&#039;SSID_または_BSSID&#039;&#039; password &#039;&#039;パスワード&#039;&#039; hidden yes&lt;br /&gt;
&lt;br /&gt;
{{ic|wlan1}} インターフェイスで Wi-Fi に接続します:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli device wifi connect &#039;&#039;SSID_または_BSSID&#039;&#039; password &#039;&#039;パスワード&#039;&#039; ifname wlan1 &#039;&#039;プロファイル名&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
インターフェイスを切断します:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli device disconnect ifname eth0&lt;br /&gt;
&lt;br /&gt;
名前、UUID、タイプ、バッキングデバイスを含む接続のリストを取得します:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection show&lt;br /&gt;
&lt;br /&gt;
接続を有効にします (つまり、既存のプロファイルでネットワークに接続します):&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection up &#039;&#039;名前_または_uuid&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
接続を削除します:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection delete &#039;&#039;名前_または_uuid&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ネットワークデバイスとその状態のリストを表示します:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli device&lt;br /&gt;
&lt;br /&gt;
Wi-Fi をオフにします:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli radio wifi off&lt;br /&gt;
&lt;br /&gt;
=== 接続を編集する ===&lt;br /&gt;
&lt;br /&gt;
設定の包括的なリストについては、{{man|5|nm-settings}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
まず、接続のリストを取得する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nmcli connection|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
NAME                UUID                                  TYPE      DEVICE&lt;br /&gt;
有線接続 2          e7054040-a421-3bef-965d-bb7d60b7cecf  ethernet  enp5s0&lt;br /&gt;
有線接続 1          997f2782-f0fc-301d-bfba-15421a2735d8  ethernet  enp0s25&lt;br /&gt;
MY-HOME-WIFI-5G     92a0f7b3-2eba-49ab-a899-24d83978f308  wifi       --&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
ここでは、後で使用する接続 ID として最初の列を使用できます。この例では、{{ic|有線接続 2}} を接続 ID として選択します。&lt;br /&gt;
&lt;br /&gt;
作成後に接続 {{ic|有線接続 2}} を設定するには、次の3つの方法があります:&lt;br /&gt;
&lt;br /&gt;
; nmcli 対話型エディタ&lt;br /&gt;
: {{ic|nmcli connection edit &#039;有線接続 2&#039;}}。&amp;lt;br&amp;gt; 使用法はエディタから十分に文書化されています。&lt;br /&gt;
&lt;br /&gt;
; nmcli コマンドラインインターフェイス&lt;br /&gt;
: {{ic|nmcli connection modify &#039;有線接続 2&#039; &#039;&#039;設定&#039;&#039;.&#039;&#039;プロパティ&#039;&#039; &#039;&#039;値&#039;&#039;}}。使用方法については {{man|1|nmcli}} を参照してください。例えば、{{ic|nmcli connection modify &#039;有線接続 2&#039; ipv4.route-metric 200}} コマンドを使用して、IPv4 ルートメトリックを 200 に変更できます。&lt;br /&gt;
設定を削除するには、次のように空のフィールド (&amp;quot;&amp;quot;) を渡します:&lt;br /&gt;
: {{ic|nmcli connection modify &#039;有線接続 2&#039; &#039;&#039;設定&#039;&#039;.&#039;&#039;プロパティ&#039;&#039; &amp;quot;&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
; 接続ファイル&lt;br /&gt;
: {{ic|/etc/NetworkManager/system-connections/}} で、対応する {{ic|有線接続 2.nmconnection}} ファイルを変更します。&amp;lt;br&amp;gt;{{ic|nmcli connection reload}} で設定ファイルをリロードすることを忘れないでください。&lt;br /&gt;
&lt;br /&gt;
=== nmtui ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager には、接続、システムのホスト名、無線切り替え管理のためのテキストユーザインタフェース (TUI) が付いています。{{ic|nmtui}} と実行することで起動できます。&lt;br /&gt;
&lt;br /&gt;
== フロントエンド ==&lt;br /&gt;
&lt;br /&gt;
[[デスクトップ環境]]と統合するために、ほとんどのユーザはアプレットをインストールしたいと考えるでしょう。アプレットはネットワークの選択や設定を容易にするだけでなく、機密情報をセキュアに保存するために必要なエージェントも提供します。様々なデスクトップ環境は独自のアプレットを持っています。デスクトップ環境に独自のアプレットが存在しない場合、[[#nm-applet]] を使用することもできます。&lt;br /&gt;
&lt;br /&gt;
=== GNOME ===&lt;br /&gt;
&lt;br /&gt;
[[GNOME]] にはツールが内蔵されており、ネットワーク設定からアクセス可能です。&lt;br /&gt;
&lt;br /&gt;
=== KDE Plasma ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|plasma-nm}} パッケージを[[インストール]]してください。その後、&#039;&#039;パネルオプション &amp;gt; ウィジェットを追加 &amp;gt; ネットワーク&#039;&#039; で KDE タスクバーにアプレットを追加してください。&lt;br /&gt;
&lt;br /&gt;
=== nm-applet ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|network-manager-applet}} は、システムトレイのある Xorg 環境で機能する GTK 3 フロントエンドです。&lt;br /&gt;
&lt;br /&gt;
接続に関する機密情報 (Wi-Fi のパスワードなど) を保存するには、[https://specifications.freedesktop.org/secret-service-spec/latest/ Secret Service D-Bus API] を実装しているアプリケーション ([[GNOME/Keyring]]、[[KDE Wallet]]、[[KeePass|KeePassXC]] など) をインストールし設定してください。&lt;br /&gt;
&lt;br /&gt;
接続の設定で {{ic|Make available to other users}} チェックボックスオプションを有効化すると、NetworkManager はその接続のパスワードを平文で保存することに注意してください。とはいえ、パスワードが含まれるファイルは root (及び {{ic|nm-applet}} を通して他のユーザ) からしかアクセスできません。[[#Wi-Fi パスワードの暗号化]] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{AUR|trayer}} か {{Pkg|stalonetray}} を使うことで、システムトレイ無しで {{ic|nm-applet}} を実行することができます。例えば、以下のようなスクリプトをパスに追加することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|nmgui|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
nm-applet    2&amp;gt;&amp;amp;1 &amp;gt; /dev/null &amp;amp;&lt;br /&gt;
stalonetray  2&amp;gt;&amp;amp;1 &amp;gt; /dev/null&lt;br /&gt;
killall nm-applet&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;stalonetray&#039;&#039; のウィンドウを閉じると、{{ic|nm-applet}} も閉じます。なので、ネットワークの設定を終えたら余分なメモリが消費されることはありません。&lt;br /&gt;
&lt;br /&gt;
このアプレットは、Wi-Fi ネットワークの接続や切断などのイベントの通知を表示することができます。これらの通知を表示させるには、通知サーバがインストールされている必要があります ([[デスクトップ通知]] を見てください)。アプレットを通知サーバ無しで使うと、標準出力や標準エラー出力にメッセージが表示され、最悪、アプレットがハングするかもしれません。[https://bugzilla.gnome.org/show_bug.cgi?id=788313] を参照してください。&lt;br /&gt;
&lt;br /&gt;
通知を無効化した状態で {{ic|nm-applet}} を実行するには、アプレットを以下のコマンドで起動してください:&lt;br /&gt;
&lt;br /&gt;
 $ nm-applet --no-agent&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|nm-applet}} は[[XDG Autostart|自動起動デスクトップファイル]]によって自動的に起動されるかもしれません。そのような場合に {{ic|--no-agent}} オプションを追加するには、デスクトップファイルの Exec 行を変更してください。つまり:&lt;br /&gt;
&lt;br /&gt;
{{bc|1=Exec=nm-applet --no-agent}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|[[i3]] では、nm-applet が {{ic|--no-agent}} オプションで起動された場合、パスワード入力ダイアログが表示されないため、アイテムリストをクリックして新しい暗号化された Wi-Fi ネットワークに接続することができなくなります。[[journal]] には {{ic|no secrets: No agents were available for this request}} と出力されます。}}&lt;br /&gt;
&lt;br /&gt;
==== Appindicator ====&lt;br /&gt;
&lt;br /&gt;
バージョン 1.18.0 から、Appindicator のサポートが公式の {{Pkg|network-manager-applet}} パッケージで[https://gitlab.archlinux.org/archlinux/packaging/packages/network-manager-applet/-/commit/527448fb2a87d85055f504f463dfe961dccd75c3 利用可能]になりました。nm-applet を Appindicator の環境で使うには、アプレットを以下のコマンドで起動してください:&lt;br /&gt;
&lt;br /&gt;
 $ nm-applet --indicator&lt;br /&gt;
&lt;br /&gt;
=== networkmanager-dmenu ===&lt;br /&gt;
&lt;br /&gt;
フロントエンドのもう一つの選択肢は {{Pkg|networkmanager-dmenu}} です。これは、NetworkManager の接続を {{ic|nm-applet}} ではなく [[dmenu]] や [[rofi]] で管理する小さなスクリプトです。このスクリプトには必須の機能が全て揃っています。例えば: NetworkManager の既存の Wi-Fi 接続や有線接続に接続する、新しい Wi-Fi 接続に接続する、必要に応じてパスフレーズを要求する、既存の VPN 接続に接続する、ネットワークを有効化/無効化する、&#039;&#039;nm-connection-editor&#039;&#039; GUI を起動する、Bluetooth ネットワークに接続する。&lt;br /&gt;
&lt;br /&gt;
=== switchboard ===&lt;br /&gt;
&lt;br /&gt;
Pantheon の {{Pkg|switchboard}} は、{{Pkg|switchboard-plug-network}} と {{Pkg|nm-connection-editor}} と組み合わせて使えば、NetworkManager を設定するためのデスクトップ環境に依存しない方法になります。以下のコマンドで実行できます:&lt;br /&gt;
&lt;br /&gt;
 $ io.elementary.settings&lt;br /&gt;
&lt;br /&gt;
=== nm-sidebar ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|nm-sidebar}} は、layer-shell に対応した Wayland コンポジタ向けの GTK4/libadwaita 製 NetworkManager フロントエンドです。右側のサイドバーとして表示され、コマンドライン、ホットキー、ランチャー、Waybar から切り替えることができます。有線接続の状態、Wi-Fi ネットワーク、VPN プロファイル、接続の詳細にアクセスでき、高度なプロファイル編集や VPN インポートには {{Pkg|nm-connection-editor}} を使用します。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
NetworkManager を適切に実行させるには、いくつか追加の手順が必要になる場合があります。[[ネットワーク設定#ホスト名の設定]] で説明されているように、{{ic|/etc/hosts}} が設定されていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
NetworkManager のグローバルな設定ファイルは {{ic|/etc/NetworkManager/NetworkManager.conf}} です。追加の設定ファイルは {{ic|/etc/NetworkManager/conf.d/}} に置くことができます。通常、グローバルなデフォルト値に対して設定を行う必要はありません。&lt;br /&gt;
&lt;br /&gt;
設定ファイルを編集したら、以下のコマンドで変更を適用することができます:&lt;br /&gt;
&lt;br /&gt;
 # nmcli general reload&lt;br /&gt;
&lt;br /&gt;
=== NetworkManager-wait-online ===&lt;br /&gt;
&lt;br /&gt;
{{ic|NetworkManager.service}} を有効化すると、{{ic|NetworkManager-wait-online.service}} も有効化されます。{{ic|NetworkManager-wait-online.service}} は oneshot なシステムサービスで、ネットワークが構成されるまで待機します。このサービスには {{ic|1=WantedBy=network-online.target}} が含まれているため、このサービスが終了するのは、{{ic|network-online.target}} 自体が有効化されている時か、あるいは {{ic|network-online.target}} が他のユニットによって実行された時のみです。[[systemd#ネットワークが稼働した後にサービスを実行する]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|NetworkManager-wait-online.service}} は、ネットワーク接続が確立されるのを待つ ({{man|1|nm-online}} を参照) のではなく、NetworkManager の起動が完了するのを待ちます。ネットワークの準備が整う前に {{ic|NetworkManager-wait-online.service}} が終了してしまってブート時に一部のサービスが失敗してしまう場合、{{ic|NetworkManager-wait-online.service}} [[ユニットを拡張]]し、{{ic|ExecStart}} 行から {{ic|-s}} を削除してください:&lt;br /&gt;
&lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=&lt;br /&gt;
 ExecStart=/usr/bin/nm-online -q&lt;br /&gt;
&lt;br /&gt;
ただし、これにより[https://lists.fedoraproject.org/archives/list/users@lists.fedoraproject.org/thread/EGC324JD3HJCGVN7J55WYPRLFDA3TP7N/ 他の問題]が発生する可能性があることに注意してください。&lt;br /&gt;
&lt;br /&gt;
一部のケースで、タイムアウトの設定が短すぎるために、このサービスの起動が失敗してしまう場合があります。サービスを[[編集]]して {{ic|NM_ONLINE_TIMEOUT}} を {{ic|60}} からより大きい値に変更してください。&lt;br /&gt;
&lt;br /&gt;
=== PolicyKit のパーミッションをセットアップする ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、アクティブなローカルセッションのユーザは全員パスワード無しでほぼ全てのネットワーク設定を変更することができます。セッションの種類を確認する方法については、[[一般的なトラブルシューティング#セッションのパーミッション]] を見てください。ほとんどの場合、特に設定しなくても全て動作するはずです。&lt;br /&gt;
&lt;br /&gt;
一部のアクション (システムのホスト名を変更するなど) においては、管理者のパスワードが必要です。そのような場合、自身のユーザを {{ic|wheel}} グループに[[ユーザーとグループ#グループ管理|追加]]し、パスワードのプロンプトを表示する [[Polkit#認証エージェント|Polkit の認証エージェント]]を実行する必要があります。&lt;br /&gt;
&lt;br /&gt;
リモートセッションの場合 (例えば、[[TigerVNC#vncserver をバーチャル(ヘッドレス)セッションで起動する|ヘッドレス VNC]])、NetworkManager を使用するために必要な特権を得る方法は複数あります:&lt;br /&gt;
&lt;br /&gt;
# 自身を {{ic|wheel}} グループに[[ユーザーとグループ#グループ管理|追加]]する。アクションの度にパスワードを入力する必要があります。注意点として、{{ic|wheel}} グループに追加すると他の権限 (root パスワードを入力せずに [[sudo]] を実行できるなど) も付与される場合があります。&lt;br /&gt;
# 自身を {{ic|network}} グループに[[ユーザーとグループ#グループ管理|追加]]し、以下の内容で {{ic|/etc/polkit-1/rules.d/50-org.freedesktop.NetworkManager.rules}} を作成する: {{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
polkit.addRule(function(action, subject) {&lt;br /&gt;
  if (action.id.indexOf(&amp;quot;org.freedesktop.NetworkManager.&amp;quot;) == 0 &amp;amp;&amp;amp; subject.isInGroup(&amp;quot;network&amp;quot;)) {&lt;br /&gt;
    return polkit.Result.YES;&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}} {{ic|network}} グループ内の全ユーザがパスワード無しでネットワークの追加と削除を行えるようになります (これは、Polkit 認証エージェントを実行する必要がないことを意味します。なので、この方法は SSH セッションでも使えます。)。&lt;br /&gt;
&lt;br /&gt;
=== プロクシ設定 ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager はプロキシに関するいくつかの設定をサポートしています。それらは &#039;&#039;nmtui&#039;&#039; から直接変更することはできませんが、&#039;&#039;nm-applet&#039;&#039; と &#039;&#039;nmcli&#039;&#039; はそれらをサポートしています。&lt;br /&gt;
&lt;br /&gt;
プロキシの設定項目は {{man|5|nm-settings-nmcli}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
また、ディスパッチャスクリプトを使うことでカスタムのプロキシコマンドを常時実行することができます。[[#ディスパッチャの例]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
参照: [[プロキシ設定]]&lt;br /&gt;
&lt;br /&gt;
=== 接続の確認 ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager は、ネットワークに接続した後にウェブサーバへの接続を試みて、キャプティブポータルなどが存在しないか確認します。デフォルトの接続先ホスト ({{ic|/usr/lib/NetworkManager/conf.d/20-connectivity.conf}} で設定されています) は [https://ping.archlinux.org ping.archlinux.org] (redirect.archlinux.org の CNAME エイリアス) です。別のウェブサーバを使う、または接続チェックを無効化するには、{{ic|/etc/NetworkManager/conf.d/20-connectivity.conf}} を作成してください ({{man|5|NetworkManager.conf|CONNECTIVITY SECTION}} を参照)。以下は、GNOME のサーバを使用する例です ([[GNOME]] を使用する必要はありません):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/20-connectivity.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[connectivity]&lt;br /&gt;
uri=http://nmcheck.gnome.org/check_network_status.txt&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
NetworkManager の接続チェックを無効化するには、以下の設定を使用してください。これは、接続チェックを無効化する VPN に接続している場合に便利です。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/20-connectivity.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[connectivity]&lt;br /&gt;
enabled=false&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|自動的な接続チェックはプライバシーの問題を引き起こす可能性がありますが、Arch Linux のデフォルトの接続先 URL は如何なるアクセスも記録しません。[https://gitlab.archlinux.org/archlinux/infrastructure/-/commit/fabccd0f61e5dea3925e8a0c6a46d56d5750c121#a4f34381bbb18ea77bfb3dd11a8aeca707078fca_0_26] [https://gitlab.archlinux.org/archlinux/infrastructure/-/blob/master/roles/ping/templates/nginx.d.conf.j2] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== キャプティブポータル ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:キャプティブポータル|キャプティブポータル]]が存在している場合、デスクトップマネージャが、資格情報を求めるウィンドウを自動的に開く場合があります。あなたのデスクトップ環境がこれを行わない場合、{{Pkg|capnet-assist}} パッケージを使用することができます (しかし現在、このパッケージの NetworkManager ディスパッチャスクリプトは壊れています)。あるいは、NetworkManager ディスパッチャスクリプトを以下の内容で作成することもできます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/90-open_captive_portal|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh -e&lt;br /&gt;
# Script to dispatch NetworkManager events&lt;br /&gt;
#&lt;br /&gt;
# Runs shows a login webpage on walled garden networks.&lt;br /&gt;
# See NetworkManager(8) for further documentation of the dispatcher events.&lt;br /&gt;
&lt;br /&gt;
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&lt;br /&gt;
&lt;br /&gt;
if [ -x &amp;quot;/usr/bin/logger&amp;quot; ]; then&lt;br /&gt;
    logger=&amp;quot;/usr/bin/logger -s -t captive-portal&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    logger=&amp;quot;:&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
wait_for_process() {&lt;br /&gt;
    PNAME=$1&lt;br /&gt;
    while [ -z &amp;quot;$(/usr/bin/pgrep $PNAME)&amp;quot; ]; do&lt;br /&gt;
        sleep 3;&lt;br /&gt;
    done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#launch the browser, but on boot we need to wait that nm-applet starts&lt;br /&gt;
start_browser() {&lt;br /&gt;
    local user=&amp;quot;$1&amp;quot;&lt;br /&gt;
    local display=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    export DISPLAY=&amp;quot;$display&amp;quot;&lt;br /&gt;
    wait_for_process nm-applet&lt;br /&gt;
&lt;br /&gt;
    export XAUTHORITY=&amp;quot;/home/$user/.Xauthority&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    $logger &amp;quot;Running browser as &#039;$user&#039; with display &#039;$display&#039; to login in captive portal&amp;quot;&lt;br /&gt;
    sudo -u &amp;quot;$user&amp;quot; --preserve-env=DISPLAY,XAUTHORITY -H xdg-open http://capnet.elementary.io 2&amp;gt;&amp;amp;1 &amp;gt; /dev/null&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Run the right scripts&lt;br /&gt;
case &amp;quot;$2&amp;quot; in&lt;br /&gt;
    connectivity-change)&lt;br /&gt;
    $logger -p user.debug &amp;quot;dispatcher script triggered on connectivity change: $CONNECTIVITY_STATE&amp;quot;&lt;br /&gt;
    if [ &amp;quot;$CONNECTIVITY_STATE&amp;quot; = &amp;quot;PORTAL&amp;quot; ]; then&lt;br /&gt;
        # Match last column of who&#039;s output with &#039; :[at least one digit] &#039;&lt;br /&gt;
        who | awk &#039;$NF ~ /\(:[0-9]+\)/ { print $1 &amp;quot; &amp;quot; substr($NF, 2, length($NF)-2) };&#039; | \&lt;br /&gt;
        while read user display; do&lt;br /&gt;
            start_browser $user $display || $logger -p user.err &amp;quot;Failed for user: &#039;$user&#039; display: &#039;$display&#039;&amp;quot;&lt;br /&gt;
        done&lt;br /&gt;
    fi&lt;br /&gt;
    ;;&lt;br /&gt;
    *)&lt;br /&gt;
    # In a down phase&lt;br /&gt;
    exit 0&lt;br /&gt;
    ;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
スクリプトには[[実行可能属性]]を付与してください。しかし、このスクリプトは X が使用されていることを仮定しており、単純に http ページを開きます。必ずしも動作するとは限らないかもしれません。&lt;br /&gt;
&lt;br /&gt;
このスクリプトを実行するには、{{ic|NetworkManager.service}} を[[再起動]]するか、システムを再起動する必要があります。そうしたら、ディスパッチャスクリプトはキャプティブポータルを検知するとログインウィンドウを開くはずです。&lt;br /&gt;
&lt;br /&gt;
簡潔な解決策は [https://github.com/Seme4eg/captive-portal-sh captive-portal-sh] です。これはキャプティブポータル URL を取得し、デフォルトのブラウザで開くシェルスクリプトです (Wayland のみ)。&lt;br /&gt;
&lt;br /&gt;
別の解決策は Google Chrome ベースの {{AUR|captive-browser-git}} です。&lt;br /&gt;
&lt;br /&gt;
==== 古いハードウェアにおける iwd のキャプティブポータルサポート ====&lt;br /&gt;
&lt;br /&gt;
一部の古い Fi-Fi チップ (Broadcom BCM4360 など) ではプロプライエタリな {{ic|wl}} ドライバが必要ですが、これには、多くのキャプティブポータルホットスポットがログインページ表示前に使用する OWE/Elliptic-Curve ハンドシェイクのサポートがありません。NetworkManager の Wi-Fi バックエンドを、既存のドライバ上でユーザスペース内で完全な OWE 鍵交換をサポートする {{ic|iwd}} に切り替えることにより ([[#Wi-Fi バックエンドとして iwd を使用する]] を参照)、暗号化されたアソシエーションを確立したり、DHCP を利用したり、ポータルの “PORTAL” ステートをトリガーできるようになります。以上が終わったら、他の方法では完全に接続できなかったハードウェア上でも、ディスパッチャスクリプトかブラウザランチャーがログインページをポップアップします。&lt;br /&gt;
&lt;br /&gt;
=== DHCP クライアント ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、NetworkManager は自身の内蔵 DHCP クライアントを使用します。内蔵 DHCPv4 プラグインは [https://nettools.github.io/n-dhcp4/ nettools の n-dhcp4] ライブラリをベースにしていますが、内蔵 DHCPv6 プラグインは systemd-networkd ベースのコードから作られています。&lt;br /&gt;
&lt;br /&gt;
別の DHCP クライアントを使用するには、以下の代替実装のどれかを[[インストール]]してください:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|dhcpcd}} - [[dhcpcd]]&lt;br /&gt;
* {{Pkg|dhclient}} - [[dhclient]]&lt;br /&gt;
&lt;br /&gt;
DHCP クライアントのバックエンドを変更するには、{{ic|/etc/NetworkManager/conf.d/}} 内に設定ファイルを作成して、そのファイル内で {{ic|1=main.dhcp=&#039;&#039;DHCP_クライアント名&#039;&#039;}} オプションを設定してください。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=/etc/NetworkManager/conf.d/dhcp-client.conf|2=&lt;br /&gt;
[main]&lt;br /&gt;
dhcp=dhcpcd&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
{{Pkg|dhclient}} パッケージと {{Pkg|dhcpcd}} パッケージに同梱されている systemd ユニットは有効化しないでください。NetworkManager と競合してしまいます。詳細は [[#インストール]] セクションに書かれているノートを見てください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== DNS の管理 ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager の DNS 管理については、GNOME プロジェクトの wiki ページ [https://wiki.gnome.org/Projects/NetworkManager/DNS Projects/NetworkManager/DNS] で説明されています。&lt;br /&gt;
&lt;br /&gt;
==== DNS キャッシングと条件付きフォワーディング ====&lt;br /&gt;
&lt;br /&gt;
NetworkManager には、[[dnsmasq]] または [[systemd-resolved]] を使用して DNS キャッシングと条件付きフォワーディングを有効化するプラグインが存在します ([https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/143 以前は]、&amp;quot;条件付きフォワーディング&amp;quot; は NetworkManager のドキュメントで &amp;quot;split DNS&amp;quot; と呼ばれていました)。このセットアップには、DNS ルックアップがキャッシュされるので名前解決の時間が短縮され、VPN ホストの DNS ルックアップが、関連する VPN の DNS サーバに転送されるという長所があります。これは、複数の VPN に接続する場合に特に便利です。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|/etc/resolv.conf}} が {{ic|/run/systemd/resolve/stub-resolv.conf}} や {{ic|/run/systemd/resolve/resolv.conf}}、{{ic|/lib/systemd/resolv.conf}}、{{ic|/usr/lib/systemd/resolv.conf}} へのシンボリックリンクである場合、NetworkManager は systemd-resolved を自動的に選択します。dnsmasq を使用するには、まずシンボリックリンクを削除する必要があります。その後で、NetworkManager を再起動してください。}}&lt;br /&gt;
&lt;br /&gt;
===== dnsmasq =====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|dnsmasq}} がインストールされていることを確認してください。そして、{{ic|/etc/NetworkManager/conf.d/}} 内の設定ファイル (無い場合は作成してください) で {{ic|1=main.dns=dnsmasq}} を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/dns.conf|2=&lt;br /&gt;
[main]&lt;br /&gt;
dns=dnsmasq&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、{{ic|nmcli general reload}} を root として実行してください。NetworkManager は自動的に dnsmasq を起動し、{{ic|/etc/resolv.conf}} に {{ic|127.0.0.1}} を追加します。元の DNS サーバは {{ic|/run/NetworkManager/no-stub-resolv.conf}} を見れば分かります。dnsmasq が使用されているかどうかは、{{ic|drill example.com}} で同じ DNS ルックアップを2度行ってサーバとクエリの時間を計測すれば確認できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* {{ic|dnsmasq.service}} を起動したり、{{ic|/etc/dnsmasq.conf}} を編集したりする必要はありません。NetworkManager は、その systemd サービスを使わず、さらに dnsmasq のデフォルトの設定ファイルを読み込まずに dnsmasq を起動します。&lt;br /&gt;
* NetworkManager によって起動された dnsmasq インスタンスは {{ic|127.0.0.1:53}} にバインドされます。なので、これと同じアドレスとポートで他のソフトウェア ({{ic|dnsmasq.service}} も含む) を実行することはできません。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
====== dnsmasq のカスタム設定 ======&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/NetworkManager/dnsmasq.d/}} 内に設定ファイルを作成することで、&#039;&#039;dnsmasq&#039;&#039; のカスタム設定を作成することができます。例えば、DNS キャッシュ (RAM 内に格納されます) のサイズを変更するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dnsmasq.d/cache.conf|2=&lt;br /&gt;
cache-size=1000&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定ファイルの構文は以下のコマンドで確認できます:&lt;br /&gt;
&lt;br /&gt;
 $ dnsmasq --test --conf-file=/dev/null --conf-dir=/etc/NetworkManager/dnsmasq.d&lt;br /&gt;
&lt;br /&gt;
利用可能な全てのオプションについては {{man|8|dnsmasq}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
====== IPv6 ======&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|NetworkManager は {{ic|::1}} を {{ic|/etc/resolv.conf}} に追加しないため、以下の方法では問題を解決できません。{{ic|@::1}} を手動で drill に渡さない限り、{{ic|Error: error sending query: No (valid) nameservers defined in the resolver}} というエラーで失敗します。}}&lt;br /&gt;
&lt;br /&gt;
NetworkManager で {{ic|dnsmasq}} を有効化すると、IPv6 のみの DNS ルックアップ (つまり、{{ic|drill -6 [hostname]}}) が機能しなくなる場合があります (しかし、それ以外では機能する)。この問題を解決するには、以下のファイルを作成し、IPv6 ループバックもリッスンするように &#039;&#039;dnsmasq&#039;&#039; を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dnsmasq.d/ipv6-listen.conf|2=&lt;br /&gt;
listen-address=::1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
さらに、{{ic|dnsmasq}} は上流の IPv6 DNS を優先しません。残念ながら、NetworkManager も IPv6 DNS を優先しません ([https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/936712 Ubuntu Bug])。回避策は、NetworkManager の設定で IPv6 DNS を無効化することです (IPv4 DNS があると仮定します)。&lt;br /&gt;
&lt;br /&gt;
====== DNSSEC ======&lt;br /&gt;
&lt;br /&gt;
NetworkManager によってデフォルトで開始される dnsmasq インスタンスは、[[DNSSEC]] を検証しません。DNSSEC 検証を有効化するには、以下の設定ファイルを作成してください (これにより、DNSSEC をサポートしない名前サーバでの DNS 解決が機能しなくなります):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dnsmasq.d/dnssec.conf|2=&lt;br /&gt;
conf-file=/usr/share/dnsmasq/trust-anchors.conf&lt;br /&gt;
dnssec&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== systemd-resolved =====&lt;br /&gt;
&lt;br /&gt;
NetworkManager は [[systemd-resolved]] を DNS リゾルバ及び DNS キャッシュとして使用することができます。まず先に、&#039;&#039;systemd-resolved&#039;&#039; が適切に設定されていて、{{ic|systemd-resolved.service}} が[[開始]]されていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/resolv.conf}} が {{ic|/run/systemd/resolve/stub-resolv.conf}} や {{ic|/run/systemd/resolve/resolv.conf}}、{{ic|/usr/lib/systemd/resolv.conf}} への[[systemd-resolved#DNS|シンボリックリンク]]である場合、systemd-resolved は自動的に使用されます。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/NetworkManager/conf.d/}} 内の設定ファイルで {{ic|1=main.dns=systemd-resolved}} を設定することで、これを明示的に有効化することもできます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/dns.conf|2=&lt;br /&gt;
[main]&lt;br /&gt;
dns=systemd-resolved&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== openresolv サブスクライバのある DNS リゾルバ =====&lt;br /&gt;
&lt;br /&gt;
ローカルの [[DNS リゾルバ]]へのサブスクライバ (加入者) が [[openresolv]] に存在している場合、サブスクライバをセットアップし、[[#openresolv を使う|openresolv を使用するように NetworkManager を設定してください]]。&lt;br /&gt;
&lt;br /&gt;
NetworkManager は単一の &amp;quot;インターフェイス&amp;quot; を &#039;&#039;resolvconf&#039;&#039; に広告するため、2つの NetworkManager 接続間で条件付きフォワーディングを行うのは不可能です。[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/153 NetworkManager issue 153] を参照してください。&lt;br /&gt;
&lt;br /&gt;
この問題は {{ic|/etc/resolvconf.conf}} で {{ic|1=private_interfaces=&amp;quot;*&amp;quot;}} を設定すれば、部分的に緩和できます [https://roy.marples.name/projects/openresolv/configuration/]。検索ドメインリストに無いドメインのクエリは、フォワーディングされません。そのようなクエリは、他の DNS サーバにフォワーディングされるか、DNS ルートサーバから回帰的に解決されるなどして、ローカルのリゾルバの設定に従って処理されます。&lt;br /&gt;
&lt;br /&gt;
==== カスタム DNS サーバ ====&lt;br /&gt;
&lt;br /&gt;
===== カスタムグローバル DNS サーバの設定 =====&lt;br /&gt;
&lt;br /&gt;
全ての接続に対して DNS サーバを設定するには、{{man|5|NetworkManager.conf}} 内で {{ic|[global-dns-domain-*]}} というセクション内で {{ic|1=servers=&#039;&#039;serveripaddress1&#039;&#039;,&#039;&#039;serveripaddress2&#039;&#039;,&#039;&#039;serveripaddress3&#039;&#039;}} という構文を使ってDNS サーバを指定してください。例えば:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/dns-servers.conf|2=&lt;br /&gt;
[global-dns-domain-*]&lt;br /&gt;
servers=::1,127.0.0.1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* [[#DNS キャッシングと条件付きフォワーディング|NetworkManager の dnsmasq か systemd-resolved プラグイン]]、または [[#openresolv サブスクライバのある DNS リゾルバ|openresolv サブスクライバ]]を使用する場合、{{ic|1=servers=}} オプションにループバックアドレスを指定しないでください。DNS 解決が機能しなくなる可能性があります。&lt;br /&gt;
* 指定されたサーバは [[systemd-resolved]] に送られず、接続の DNS サーバが代わりに使用されます。[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/1366 NetworkManager issue 1366] と [https://github.com/systemd/systemd/issues/33754 systemd issue 33754] を参照。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== 接続でのカスタム DNS サーバの設定 =====&lt;br /&gt;
&lt;br /&gt;
====== 接続でのカスタム DNS サーバの設定 (GUI) ======&lt;br /&gt;
&lt;br /&gt;
セットアップ方法は、使用するフロントエンドの種類に依ります。手順としては通常、アプレットを右クリックし、プロファイルを編集 (または作成) し、DHCP タイプに &#039;&#039;自動 (アドレスのみ)&#039;&#039; (&#039;&#039;Automatic (specify addresses)&#039;&#039;) を選択するというものです。DNS アドレスを入力する必要があり、通常、{{ic|127.0.0.1, &#039;&#039;DNS-server-one&#039;&#039;, ...}} という形です。&lt;br /&gt;
&lt;br /&gt;
====== 接続でのカスタム DNS サーバの設定 (nmcli / 設定ファイル) ======&lt;br /&gt;
&lt;br /&gt;
DNS サーバーを接続毎にセットアップするには、[[#接続を編集する|接続設定]]で {{ic|ipv4.dns}} と {{ic|ipv6.dns}} の設定 (及び、それらに関連する {{ic|dns-search}} と {{ic|dns-options}}) を変更してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|method}} が {{ic|auto}} に設定されている場合 (DHCP/RA を使用する場合)、{{ic|ignore-auto-dns}} を {{ic|yes}} に設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
DNS over TLS を使用するには ([[#systemd-resolved|systemd-resolved が必要です]])、{{ic|1=dns=&#039;&#039;ip.address&#039;&#039;#&#039;&#039;servername&#039;&#039;;}} のようにして DNS サーバーを指定し、さらに {{ic|connection.dns-over-tls}} を {{ic|2}} に設定してください。例えば、Quad9 を使用するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/system-connections/Example Wi-Fi.nmconnection|2=&lt;br /&gt;
...&lt;br /&gt;
[connection]&lt;br /&gt;
...&lt;br /&gt;
dns-over-tls=2&lt;br /&gt;
&lt;br /&gt;
[ipv4]&lt;br /&gt;
...&lt;br /&gt;
dns=9.9.9.9#dns.quad9.net;149.112.112.112#dns.quad9.net;&lt;br /&gt;
ignore-auto-dns=true&lt;br /&gt;
&lt;br /&gt;
[ipv6]&lt;br /&gt;
...&lt;br /&gt;
dns=2620:fe::fe#dns.quad9.net;2620:fe::9#dns.quad9.net;&lt;br /&gt;
ignore-auto-dns=true&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|この例では Quad9 を使用しています。あなたにとって信頼できる DNS リゾルバに変更してください。[[ドメイン名前解決#サードパーティの DNS サービス]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
==== /etc/resolv.conf ====&lt;br /&gt;
&lt;br /&gt;
NetworkManager の {{ic|/etc/resolv.conf}} 管理モードは、{{ic|main.rc-manager}} で設定されます。{{Pkg|networkmanager}} パッケージはこれを、上流のデフォルトである {{ic|auto}} ではなく、{{ic|symlink}} に設定します。設定と値は {{man|5|NetworkManager.conf}} man ページでドキュメント化されています。&lt;br /&gt;
&lt;br /&gt;
{{Tip|openresolv を使用すると、NetworkManager は、&#039;&#039;resolvconf&#039;&#039; によってサポートされている他のソフトウェアと共存できます。例えば、openresolv が [[openresolv#Subscribers|subscriber]] を持つローカル DNS キャッシングおよび分割 DNS リゾルバを実行できます。openresolv で NetworkManager を使用する場合、条件付きフォワーディングは[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/153 まだ完全にサポートされていない]ことに注意してください。}}&lt;br /&gt;
&lt;br /&gt;
また、&#039;&#039;NetworkManager&#039;&#039; は、ネットワークの変更後に {{ic|/etc/resolv.conf}} を変更するために使用できる、いわゆるディスパッチャスクリプトを介したフックも提供します。詳細は [[#ネットワークサービスで NetworkManager dispatcher を使用する]] と {{man|8|NetworkManager}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* NetworkManager が [[#dnsmasq|dnsmasq]] または [[systemd-resolved]] のいずれかを使用するように設定されている場合、適切なループバックアドレスが {{ic|/etc/resolv.conf}} に書き込まれます。&lt;br /&gt;
* NetworkManager が書き込む {{ic|resolv.conf}}、または {{ic|/etc/resolv.conf}} に書き込む内容は、{{ic|/run/NetworkManager/resolv.conf}} で見られます。&lt;br /&gt;
* 取得したネームサーバーと検索ドメインを含む {{ic|resolv.conf}} ファイルは、{{ic|/run/NetworkManager/no-stub-resolv.conf}} にあります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== 管理対象外の /etc/resolv.conf =====&lt;br /&gt;
&lt;br /&gt;
NetworkManager が {{ic|/etc/resolv.conf}} に干渉しないようにするには、{{ic|/etc/NetworkManager/conf.d/}} の設定ファイルで {{ic|1=main.dns=none}} を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/dns.conf|2=&lt;br /&gt;
[main]&lt;br /&gt;
dns=none&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|NetworkManager が DNS 設定を [[systemd-resolved]] に送信しないように、{{ic|1=main.systemd-resolved=false}} を設定することもできます。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|1=main.dns=none}} を使うのではなく、[[dnsmasq]] や [[systemd-resolved]] などの他の DNS バックエンドを使用するように NetworkManager を設定する方法については、[[#DNS キャッシングと条件付きフォワーディング]] を見てください。}}&lt;br /&gt;
&lt;br /&gt;
その後、{{ic|/etc/resolv.conf}} が壊れたシンボリックリンクになり、削除する必要が生じるかもしれません。その場合、新しい {{ic|/etc/resolv.conf}} ファイルを作成してください。&lt;br /&gt;
&lt;br /&gt;
===== openresolv を使う =====&lt;br /&gt;
&lt;br /&gt;
{{Note|NetworkManager は、{{Pkg|systemd-resolvconf}} によって提供されている systemd-resolved の &#039;&#039;resolvconf&#039;&#039; インターフェイスの使用をサポートしていません ({{man|1|resolvectl|COMPATIBILITY WITH RESOLVCONF(8)}})。&lt;br /&gt;
* [[systemd-resolved]] を使用する際は {{ic|1=main.rc-manager=resolvconf}} を設定しないでください。代わりに、[[systemd-resolved#DNS|/etc/resolv.conf シンボリックリンクを適切に作成する]]か、[[#systemd-resolved|systemd-resolved を使用するように NetworkManager を明示的に設定]]してください。&lt;br /&gt;
* systemd-resolved を使用しない場合は、{{Pkg|systemd-resolvconf}} パッケージがインストールされていないことを確認してください。{{ic|systemd-resolved.service}} が起動されていないと、このパッケージは、resolvconf を使用する全てのネットワーキングソフトウェア (NetworkManager だけではありません) の機能を破壊します。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[openresolv]] を使用するように NetworkManager を設定するには、{{ic|/etc/NetworkManager/conf.d/}} 内の設定ファイルで {{ic|1=main.rc-manager=resolvconf}} を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/rc-manager.conf|2=&lt;br /&gt;
[main]&lt;br /&gt;
rc-manager=resolvconf&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ファイアウォール ===&lt;br /&gt;
&lt;br /&gt;
現在の接続に基づいて [[Firewalld#NetworkManager を使ったゾーン管理|firewalld ゾーンを割り当てる]]ことができます。たとえば、職場では制限の厳しいファイアウォールを使用し、自宅では制限の少ないファイアウォールを使用します。&lt;br /&gt;
&lt;br /&gt;
これは、[[#ネットワークサービスで NetworkManager dispatcher を使用する|NetworkManager dispatcher]] を使用して行うこともできます。&lt;br /&gt;
&lt;br /&gt;
== ネットワークサービスで NetworkManager dispatcher を使用する ==&lt;br /&gt;
&lt;br /&gt;
NetworkManager がインターフェイスを立ち上げるまで実行したくないようなネットワークサービスはたくさんあります。NetworkManager には、(例えば [[NFS]] や [[SMB]]、[[ネットワークタイムプロトコルデーモン|NTPd]] を使用する時などに) ネットワークに接続したらサービスを開始し、切断したらサービスを停止する機能があります。&lt;br /&gt;
&lt;br /&gt;
この機能を有効化するには、{{ic|NetworkManager-dispatcher.service}} を[[有効化]]し、かつ[[起動]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
このサービスを有効化したら、{{ic|/etc/NetworkManager/dispatcher.d}} 内にスクリプトを追加することができます。&lt;br /&gt;
&lt;br /&gt;
スクリプトは &#039;&#039;&#039;root&#039;&#039;&#039; によって所有されていなければなりません。ディスパッチャは、root によって所有されていないスクリプトを実行しません。セキュリティを高めるために、スクリプトのグループ[[所有権]]も root に設定してください:&lt;br /&gt;
&lt;br /&gt;
 # chown root:root /etc/NetworkManager/dispatcher.d/&#039;&#039;10-script.sh&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
スクリプトファイルを[[実行可能属性|実行可能]]にするのを忘れないでください。&lt;br /&gt;
&lt;br /&gt;
スクリプトは、ネットワークへの接続時にはアルファベット順で実行され、切断時には逆アルファベット順で実行されます。実行される順番を保証するために、スクリプトの名前の前に数字を置くのが一般的です (例: {{ic|10-portmap}}、{{ic|30-netfs}}。こうすることで、NFS がマウントを試みる前に、&#039;&#039;portmapper&#039;&#039; が立ち上がります)&lt;br /&gt;
&lt;br /&gt;
スクリプトは以下の引数を受け取ります:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;インターフェイス名:&#039;&#039;&#039; 例えば {{ic|eth0}}&lt;br /&gt;
* &#039;&#039;&#039;アクション:&#039;&#039;&#039; &#039;&#039;up&#039;&#039;、&#039;&#039;down&#039;&#039;、&#039;&#039;vpn-up&#039;&#039;、&#039;&#039;vpn-down&#039;&#039; など (完全なリストは {{man|8|NetworkManager-dispatcher}} を見てください)&lt;br /&gt;
&lt;br /&gt;
{{Warning|外部ネットワークや公開ネットワークに接続する場合は、どのサービスを起動するのか、どのサーバにサービスは接続できるのかに注意してください。公開ネットワークに接続する際に間違ったサービスを起動してしまうとセキュリティホールを作ってしまう可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
=== ディスパッチャのタイムアウトを防ぐ ===&lt;br /&gt;
&lt;br /&gt;
上記がうまくいっているのであれば、このセクションは関係しません。しかし、ディスパッチャのスクリプトの実行に時間が掛かってしまうという一般的な問題があります。最初は、3 秒だけの内部タイムアウトが使用されていました。呼ばれたスクリプトが時間内に完了しないと、そのスクリプトは kill されていました。後に、タイムアウトは約 20 秒に延長されました (詳細は [https://bugzilla.redhat.com/show_bug.cgi?id=982734 Bugtracker] を参照)。タイムアウトのせいで依然として問題が発生する場合は、{{ic|NetworkManager-dispatcher.service}} に対する[[ドロップインファイル]]を使って、終了後もアクティブ状態を維持するように設定することで問題を回避できます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/NetworkManager-dispatcher.service.d/remain_after_exit.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、変更した {{ic|NetworkManager-dispatcher}} サービスを開始し、かつ有効化してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|RemainAfterExit}} 行を追加すると、ディスパッチャが閉じられなくなります。残念ながら、ディスパッチャは、スクリプトを再び実行する前に&#039;&#039;&#039;閉じなければなりません&#039;&#039;&#039;。先の設定により、ディスパッチャはタイムアウトしませんが、閉じられもしません。これは、スクリプトはブート毎に 1 度しか実行されないことを意味します。なので、タイムアウトが実際に問題を起こしていない限り、この行を追加しないでください。}}&lt;br /&gt;
&lt;br /&gt;
=== ディスパッチャの例 ===&lt;br /&gt;
&lt;br /&gt;
==== タイムゾーンを自動的に設定する ====&lt;br /&gt;
&lt;br /&gt;
[[#ネットワークサービスで NetworkManager dispatcher を使用する|NetworkManager ディスパッチャスクリプト]]を作成し、[[実行可能属性|実行可能]]にしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/09-timezone|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
case &amp;quot;$2&amp;quot; in&lt;br /&gt;
    up)&lt;br /&gt;
        timedatectl set-timezone &amp;quot;$(curl --fail &amp;lt;nowiki&amp;gt;https://ipapi.co/timezone&amp;lt;/nowiki&amp;gt;)&amp;quot;&lt;br /&gt;
    ;;&lt;br /&gt;
esac&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|up}} の代わりに {{ic|connectivity-change}} を使うと、[[OpenConnect]] などの VPN クライアントで VPN に接続した際に、タイムゾーンが変更されないようにすることができます。}}&lt;br /&gt;
&lt;br /&gt;
あるいは、{{AUR|tzupdate}} ツールを使うと、IP アドレスのいち情報に基づいてタイムゾーンを自動的に設定できます。運用環境内でどの API を使用するのかを決める際には、[https://medium.com/@ipdata_co/what-is-the-best-commercial-ip-geolocation-api-d8195cda7027 最も人気のある IP 位置情報 API の比較]をみると役立つかもしれません。&lt;br /&gt;
&lt;br /&gt;
==== sshfs でリモートディレクトリをマウントする ====&lt;br /&gt;
&lt;br /&gt;
このスクリプトは非常に制限された環境内で実行されるため、SSH エージェントに接続するためには {{ic|SSH_AUTH_SOCK}} 変数をエクスポートする必要があります。これを行う方法はいくつかあります (詳細は[https://bbs.archlinux.org/viewtopic.php?pid=1042030#p1042030 このメッセージ]を見てください)。以下の例は [[GNOME Keyring]] を使って動作し、キーリングがまだアンロックされていない場合はパスワードを要求します。NetworkManager がログイン時に自動的にネットワークに接続するような状況では、&#039;&#039;gnome-keyring&#039;&#039; がまだ開始されておらず、変数のエクスポートが失敗する可能性が高いです (そのために sleep コマンドがあります)。接続とマッチする {{ic|UUID}} は、{{ic|nmcli connection status}} か {{ic|nmcli connection list}} を実行すれば確認できます。&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
USER=&#039;username&#039;&lt;br /&gt;
REMOTE=&#039;user@host:/remote/path&#039;&lt;br /&gt;
LOCAL=&#039;/local/path&#039;&lt;br /&gt;
&lt;br /&gt;
interface=$1 status=$2&lt;br /&gt;
if [ &amp;quot;$CONNECTION_UUID&amp;quot; = &amp;quot;&amp;lt;/nowiki&amp;gt;&#039;&#039;uuid&#039;&#039;&amp;lt;nowiki&amp;gt;&amp;quot; ]; then&lt;br /&gt;
  case $status in&lt;br /&gt;
    up)&lt;br /&gt;
      # sleep 10&lt;br /&gt;
      SSH_AUTH_SOCK=$(find /tmp -maxdepth 1 -type s -user &amp;quot;$USER&amp;quot; -name &#039;ssh&#039;)&lt;br /&gt;
      export SSH_AUTH_SOCK&lt;br /&gt;
      su &amp;quot;$USER&amp;quot; -c &amp;quot;sshfs $REMOTE $LOCAL&amp;quot;&lt;br /&gt;
      ;;&lt;br /&gt;
    down)&lt;br /&gt;
      fusermount -u &amp;quot;$LOCAL&amp;quot;&lt;br /&gt;
      ;;&lt;br /&gt;
  esac&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==== SMB 共有をマウントする ====&lt;br /&gt;
&lt;br /&gt;
[[SMB]] 共有は特定のネットワークや場所 (例えば自宅) でしか利用できないことがあります。ディスパッチャを使えば、現在の場所で利用可能な SMB 共有のみをマウントすることができます。&lt;br /&gt;
&lt;br /&gt;
以下のスクリプトは、特定のネットワークに接続していることを確認し、それに応じて共有をマウントします:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/30-mount-smb.sh|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# 接続 UUID はターミナルで &amp;quot;nmcli connection show&amp;quot; を実行して確認してください。&lt;br /&gt;
# 全種類の NetworkManager 接続がサポートされています: 無線、VPN、有線など。&lt;br /&gt;
if [ &amp;quot;$2&amp;quot; = &amp;quot;up&amp;quot; ]; then&lt;br /&gt;
  if [ &amp;quot;$CONNECTION_UUID&amp;quot; = &amp;quot;uuid&amp;quot; ]; then&lt;br /&gt;
    mount /your/mount/point &amp;amp; &lt;br /&gt;
    # add more shares as needed&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
以下のスクリプトは、ソフトウェアが特定のネットワークからの切断を開始する前に、全ての SMB 共有をアンマウントします:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/pre-down.d/30-umount-smb.sh|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$CONNECTION_UUID&amp;quot; = &amp;quot;uuid&amp;quot; ]; then&lt;br /&gt;
  umount -a -l -t cifs&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|このスクリプトは上記の通り {{ic|pre-down.d}} サブディレクトリに配置してください。さもないと、接続状態が変わる度に毎回、全ての共有がアンマウントされてしまいます。}}&lt;br /&gt;
&lt;br /&gt;
以下のスクリプトは、特定のネットワークから予期せずに切断されてしまった時に、全ての SMB 共有のアンマウントを試みます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/40-umount-smb.sh|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$CONNECTION_UUID&amp;quot; = &amp;quot;uuid&amp;quot; ]; then&lt;br /&gt;
  if [ &amp;quot;$2&amp;quot; = &amp;quot;down&amp;quot; ]; then&lt;br /&gt;
    umount -a -l -t cifs&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* NetworkManager 0.9.8 から、&#039;&#039;pre-down&#039;&#039; と &#039;&#039;down&#039;&#039; のイベントはシャットダウン時や再起動時に実行されなくなりました。詳細は[https://bugzilla.gnome.org/show_bug.cgi?id&amp;amp;#61;701242 このバグレポート]を見てください。&lt;br /&gt;
* 上記 2 つの &#039;&#039;umount&#039;&#039; スクリプトでは、マウントに実際にアクセスしているアプリケーションが &#039;ハング&#039; してしまう傾向が依然としてあります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
代替案は、[[NFS#NetworkManager dispatcher を使う]] にあるスクリプトを使うことです:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/30-smb.sh|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# 接続 UUID はターミナルで &amp;quot;nmcli connection show&amp;quot; を実行して確認してください。&lt;br /&gt;
# 全種類の NetworkManager 接続がサポートされています: 無線、VPN、有線など。&lt;br /&gt;
WANTED_CON_UUID=&amp;quot;CHANGE-ME-NOW-9c7eff15-010a-4b1c-a786-9b4efa218ba9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$CONNECTION_UUID&amp;quot; = &amp;quot;$WANTED_CON_UUID&amp;quot; ]; then&lt;br /&gt;
    &lt;br /&gt;
    # スクリプトパラメータ $1: ネットワークインターフェイス名 (未使用)&lt;br /&gt;
    # スクリプトパラメータ $2: ディスパッチされたイベント&lt;br /&gt;
    &lt;br /&gt;
    case &amp;quot;$2&amp;quot; in&lt;br /&gt;
        &amp;quot;up&amp;quot;)&lt;br /&gt;
            mount -a -t cifs&lt;br /&gt;
            ;;&lt;br /&gt;
        &amp;quot;down&amp;quot;|&amp;quot;pre-down&amp;quot;|&amp;quot;vpn-pre-down&amp;quot;)&lt;br /&gt;
            umount -l -a -t cifs &amp;gt;/dev/null&lt;br /&gt;
            ;;&lt;br /&gt;
    esac&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|このスクリプトは {{ic|noauto}} オプションのマウントは無視します。これらのマウントをディスパッチャが管理できるようにするには、このオプションを取り除くか、{{ic|auto}} を使ってください。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|pre-down}} イベントをキャッチできるようにするために {{ic|/etc/NetworkManager/dispatcher.d/pre-down/}} 内にシンボリックリンクを作成してください:&lt;br /&gt;
&lt;br /&gt;
 # ln -s ../30-smb.sh /etc/NetworkManager/dispatcher.d/pre-down.d/30-smb.sh&lt;br /&gt;
&lt;br /&gt;
==== NFS 共有をマウントする ====&lt;br /&gt;
&lt;br /&gt;
[[NFS#NetworkManager dispatcher を使う]] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== ディスパッチャを使って、LAN ケーブルが挿入されているかに応じて Wi-Fi を自動的にオンオフする ====&lt;br /&gt;
&lt;br /&gt;
アイディアとしては、LAN ケーブルが抜かれた時にのみ Wi-Fi をオンにし (例えば、ラップトップのドックから取り外された時など)、LAN ケーブルが挿入されたら Wi-Fi を自動的に無効化します。&lt;br /&gt;
&lt;br /&gt;
以下のディスパッチャスクリプトを作成してください[https://superuser.com/questions/233448/disable-wlan-if-wired-cable-network-is-available]。{{ic|&#039;&#039;Your_Ethernet_Interface&#039;&#039;}} の部分は実際のイーサネットインターフェイスのデバイス名に変更してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|[[#nmcli 例|nmcli]] を使えばインターフェイスのリストを取得できます ({{ic|nmcli d {{!}} grep ethernet}})。イーサネットインターフェイスは {{ic|en}} か {{ic|eth}} で始まります (例: {{ic|enp0s5}}、{{ic|eth0}})。}}&lt;br /&gt;
&lt;br /&gt;
このスクリプトを[[実行可能属性|実行可能]]にすることを忘れないでください。{{ic|NetworkManager.service}} を[[再起動]]し、{{ic|ip a}} を実行して {{ic|wlp3s0}} (実際の Wi-Fi インターフェイス名) が {{ic|state DOWN}} であればうまく行っています。予想外の動作が起こった場合は、{{ic|NetworkManager-dispatcher.service}} の [[journal]] を確認してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/99-wifi-auto-toggle.sh|2=&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
LOG_PREFIX=&amp;quot;WiFi Auto-Toggle&amp;quot;&lt;br /&gt;
ETHERNET_INTERFACE=&amp;quot;&#039;&#039;Your_Ethernet_Interface&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$1&amp;quot; = &amp;quot;$ETHERNET_INTERFACE&amp;quot; ]; then&lt;br /&gt;
    case &amp;quot;$2&amp;quot; in&lt;br /&gt;
        up)&lt;br /&gt;
            echo &amp;quot;$LOG_PREFIX ethernet up&amp;quot;&lt;br /&gt;
            nmcli radio wifi off&lt;br /&gt;
            ;;&lt;br /&gt;
        down)&lt;br /&gt;
            echo &amp;quot;$LOG_PREFIX ethernet down&amp;quot;&lt;br /&gt;
            nmcli radio wifi on&lt;br /&gt;
            ;;&lt;br /&gt;
    esac&lt;br /&gt;
elif [ &amp;quot;$(nmcli -g GENERAL.STATE device show $ETHERNET_INTERFACE)&amp;quot; = &amp;quot;20 (unavailable)&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;$LOG_PREFIX failsafe&amp;quot;&lt;br /&gt;
    nmcli radio wifi on&lt;br /&gt;
fi&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|コンピュータが最後にオンであったときに接続されていた LAN インターフェイスが、コンピュータがオフになったときに切断された場合のフェイルセーフ機構が存在します。つまり、LAN インターフェイスが切断されている状態でコンピュータがオンに戻ったときにも無線がオフのままになるということです。この場合、ネットワークに接続されていない状態になります。}}&lt;br /&gt;
&lt;br /&gt;
==== ディスパッチャを使って、ネットワーク接続が確立された後に VPN に接続する ====&lt;br /&gt;
&lt;br /&gt;
この例では、特定の Wi-Fi ネットワークに接続した後に、以前定義された VPN 接続に自動的に接続したいと思います。最初にすべきことは、そのネットワークに接続した後にすることを定義するディスパッチャスクリプトを作成することです。&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|A scripting without {{ic|iwgetid}} does work too and may be more reliable? (議論: [[:en:Talk:NetworkManager#Fixes for automatic VPN dispatcher script]])}}&lt;br /&gt;
&lt;br /&gt;
{{Note|このスクリプトでは {{ic|iwgetid}} を使うために {{Pkg|wireless_tools}} を必要とします。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/vpn-up|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
VPN_NAME=&amp;quot;NetworkManager に定義されている VPN 接続の名前&amp;quot;&lt;br /&gt;
ESSID=&amp;quot;Wi-Fi ネットワークの ESSID (接続名ではない)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
interface=$1 status=$2&lt;br /&gt;
case $status in&lt;br /&gt;
  up|vpn-down)&lt;br /&gt;
    if iwgetid | grep -qs &amp;quot;:\&amp;quot;$ESSID\&amp;quot;&amp;quot;; then&lt;br /&gt;
      nmcli connection up id &amp;quot;$VPN_NAME&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    ;;&lt;br /&gt;
  down)&lt;br /&gt;
    if iwgetid | grep -qs &amp;quot;:\&amp;quot;$ESSID\&amp;quot;&amp;quot;; then&lt;br /&gt;
      if nmcli connection show --active | grep &amp;quot;$VPN_NAME&amp;quot;; then&lt;br /&gt;
        nmcli connection down id &amp;quot;$VPN_NAME&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
    fi&lt;br /&gt;
    ;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
全ての Wi-Fi ネットワークで VPN への接続を試みたい場合は、次の ESSID 定義を使用できます: {{ic|1=ESSID=$(iwgetid -r)}}。スクリプトのパーミッションを[[#ネットワークサービスで NetworkManager dispatcher を使用する|適宜]]設定することを忘れないでください。&lt;br /&gt;
&lt;br /&gt;
[https://developer.gnome.org/NetworkManager/0.9/secrets-flags.html VPN の機密情報が保管される方法]により、上記のスクリプトで VPN への接続しようとしても、{{ic|NetworkManager-dispatcher.service}} が &#039;no valid VPN secrets&#039; というエラーで失敗する場合があります。幸運なことに、スクリプトから VPN のパスワードにアクセスする方法は他にもあります。&lt;br /&gt;
&lt;br /&gt;
1: それらの方法の1つでは、VPN 接続の設定ファイルを編集して、[https://bugzilla.redhat.com/show_bug.cgi?id=710552 root からはアクセスできない]キーリングではなく自身で機密情報を保存させるように NetworkManager を設定する必要があります: {{ic|/etc/NetworkManager/system-connections/&#039;&#039;VPN接続の名前&#039;&#039;.nmconnection}} を開き、{{ic|password-flags}} と {{ic|secret-flags}} を {{ic|1}} から {{ic|0}} に変更してください。&lt;br /&gt;
&lt;br /&gt;
それだけではうまく行かない場合は、以下の内容で {{ic|passwd-file}} を安全な場所にディスパッチャスクリプトと同じパーミッションと所有権で作成する必要があるかもしれません:&lt;br /&gt;
&lt;br /&gt;
{{hc|/path/to/passwd-file|&lt;br /&gt;
vpn.secrets.password:パスワード&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ファイルからパスワードを得られるようにするために、スクリプトは適宜変更する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/vpn-up|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
VPN_NAME=&amp;quot;NetworkManager に定義されている VPN 接続の名前&amp;quot;&lt;br /&gt;
ESSID=&amp;quot;Wi-Fi ネットワークの ESSID (接続名ではない)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
interface=$1 status=$2&lt;br /&gt;
case $status in&lt;br /&gt;
  up|vpn-down)&lt;br /&gt;
    if iwgetid | grep -qs &amp;quot;:\&amp;quot;$ESSID\&amp;quot;&amp;quot;; then&lt;br /&gt;
      nmcli connection up id &amp;quot;$VPN_NAME&amp;quot; passwd-file /path/to/passwd-file&lt;br /&gt;
    fi&lt;br /&gt;
    ;;&lt;br /&gt;
  down)&lt;br /&gt;
    if iwgetid | grep -qs &amp;quot;:\&amp;quot;$ESSID\&amp;quot;&amp;quot;; then&lt;br /&gt;
      if nmcli connection show --active | grep &amp;quot;$VPN_NAME&amp;quot;; then&lt;br /&gt;
        nmcli connection down id &amp;quot;$VPN_NAME&amp;quot;&lt;br /&gt;
      fi&lt;br /&gt;
    fi&lt;br /&gt;
    ;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
2: あるいは、{{ic|password-flags}} を変更して、設定ファイル内に {{ic|vpn-secrets}} セクションを追加してパスワードを直接書き込むという方法もあります:&lt;br /&gt;
&lt;br /&gt;
  [vpn]&lt;br /&gt;
  ....&lt;br /&gt;
  password-flags=0&lt;br /&gt;
  &lt;br /&gt;
  [vpn-secrets]&lt;br /&gt;
  password=&#039;&#039;パスワード&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|NetworkManager の接続エディタを再び開き、VPN のパスワード/機密情報を保存し直す必要があるかもしれません。}}&lt;br /&gt;
&lt;br /&gt;
==== ディスパッチャを使って、VPN プロバイダの接続時に IPv6 を無効化する ====&lt;br /&gt;
&lt;br /&gt;
多くの[[:カテゴリ:VPN プロバイダー|商用 VPN プロバイダー]]は IPv4 のみをサポートしています。つまり、IPv6 のトラフィックは全て VPN をバイパスし、事実上、使い物にならなくなります。ディスパッチャを使って、VPN に接続されている時は全ての IPv6 トラフィックを無効化することで、この問題を回避できます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/10-vpn-ipv6|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$2&amp;quot; in&lt;br /&gt;
	vpn-up)&lt;br /&gt;
		echo 1 &amp;gt; /proc/sys/net/ipv6/conf/all/disable_ipv6&lt;br /&gt;
		;;&lt;br /&gt;
	vpn-down)&lt;br /&gt;
		echo 0 &amp;gt; /proc/sys/net/ipv6/conf/all/disable_ipv6&lt;br /&gt;
		;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|WireGuard では、NetworkManager が {{ic|vpn-up/down}} イベントを出さないため、上記のスクリプトは動作しません。代わりに、[https://gist.github.com/TheDcoder/85e1ec99a31180e20ba8e4896024f265] のコードのように WireGuard インターフェイスに対しては汎用イベントに頼る必要があります。}}&lt;br /&gt;
&lt;br /&gt;
代替案としては、ディスパッチャを使って、VPN 接続に使用しているデバイスの IPv6 モードを一時的に {{ic|link-local}} に設定することもできます。これにより、NetworkManager が、IPv6 が無効化されていることについて警告をログに大量出力することを防ぐことができます。このスクリプトは、複数のデバイスや接続が IPv6 接続を提供している場合、動作しません。しかし、複数のデバイスを反復させることで応用することができます。注意点として、接続に対して何らかの変更が加えられた場合 ({{man|1|nmcli}} や[[デスクトップ環境]]の機能を使った場合)、そのデバイスに対する接続全体が再適用され、IPv6 が再有効化されます (その接続で有効化されている場合)。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/10-vpn-ipv6|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$2&amp;quot; in&lt;br /&gt;
	vpn-up)&lt;br /&gt;
		nmcli device modify &amp;quot;${DEVICE_IFACE}&amp;quot; ipv6.method link-local&lt;br /&gt;
		;;&lt;br /&gt;
	vpn-down)&lt;br /&gt;
		nmcli device reapply &amp;quot;${DEVICE_IFACE}&amp;quot;&lt;br /&gt;
		;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==== OpenNTPD ====&lt;br /&gt;
&lt;br /&gt;
[[OpenNTPD#NetworkManager dispatcher を使う]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== systemd-timesyncd で DHCP 経由で受信した NTP サーバを動的に設定する ====&lt;br /&gt;
&lt;br /&gt;
異なるネットワーク間 (例: 会社の LAN、自宅の Wi-Fi、その他の様々な Wi-Fi) でローミングする場合、timesyncd によって使用されている NTP サーバを DHCP によって提供されているものに設定したい場合があります。ただし、NetworkManager 自体は systemd-timesyncd と通信して NTP サーバを設定することはできません。&lt;br /&gt;
&lt;br /&gt;
ディスパッチャを使うことで、この問題を回避できます。&lt;br /&gt;
&lt;br /&gt;
systemd-timesyncd の設定ようのオーバーレイディレクトリ {{ic|/etc/systemd/timesyncd.conf.d}} を[[作成]]してください (まだ存在していない場合)。{{ic|/etc/NetworkManager/dispatcher.d}} 内に以下を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/10-update-timesyncd|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
[ -z &amp;quot;$CONNECTION_UUID&amp;quot; ] &amp;amp;&amp;amp; exit 0&lt;br /&gt;
INTERFACE=&amp;quot;$1&amp;quot;&lt;br /&gt;
ACTION=&amp;quot;$2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
case $ACTION in&lt;br /&gt;
up | dhcp4-change | dhcp6-change)&lt;br /&gt;
	# `DHCP6_DHCP6_NTP_SERVERS` with double `DHCP6` is the correct variable name as varified by `printenv` as of NetworkManager 1.56.0-1&lt;br /&gt;
	set -- ${DHCP6_DHCP6_NTP_SERVERS-} ${DHCP4_NTP_SERVERS-}&lt;br /&gt;
	servers=$*&lt;br /&gt;
	[ -n &amp;quot;$servers&amp;quot; ] || exit 0&lt;br /&gt;
	mkdir -p /etc/systemd/timesyncd.conf.d&lt;br /&gt;
	cat &amp;lt;&amp;lt;-THE_END &amp;gt;&amp;quot;/etc/systemd/timesyncd.conf.d/${CONNECTION_UUID}.conf&amp;quot;&lt;br /&gt;
		[Time]&lt;br /&gt;
		NTP=$servers&lt;br /&gt;
	THE_END&lt;br /&gt;
	systemctl restart systemd-timesyncd.service&lt;br /&gt;
	;;&lt;br /&gt;
down)&lt;br /&gt;
	rm -f &amp;quot;/etc/systemd/timesyncd.conf.d/${CONNECTION_UUID}.conf&amp;quot;&lt;br /&gt;
	systemctl restart systemd-timesyncd.service&lt;br /&gt;
	;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
NetworkManager が新しいネットワーク接続を設定する ({{ic|1=ACTION=up}}) か、既存の接続の更新を取得する ({{ic|1=ACTION=dhcp4-change}} または {{ic|1=ACTION=dhcp6-change}}) 度に、接続データに NTP サーバ ({{ic|DHCP6_DHCP6_NTP_SERVERS}} と {{ic|DHCP4_NTP_SERVERS}}) に関する情報が含まれていると、接続固有のオーバーレイ設定ファイルが {{ic|/etc/systemd/timesyncd.conf.d}} に書き込まれ、このファイルには、提供された NTP サーバ (1台または複数) の情報が記述されます。提供された NTP サーバが含まれます。接続が停止される ({{ic|1=ACTION=down}}) と、接続固有のオーバーレイファイルは削除されます。systemd-timesyncd の設定が変更されるたびに、サービスは再起動され、更新された設定を取得します。NetworkManager で 2つ以上の接続を並行して管理する場合、{{ic|up}}、{{ic|dhcp4-change}}、{{ic|dhcp6-change}}、そして {{ic|down}} アクションが任意の順序で来るかもしれないので、設定内の異なる NTP サーバ名が上書きされないように接続固有の設定ファイルを意図的に使用しています。&lt;br /&gt;
&lt;br /&gt;
{{Note|NetworkManager 1.56.0-1 の時点では、{{ic|1=DHCP6}} が2つある {{ic|1=DHCP6_DHCP6_NTP_SERVERS}} は、{{ic|1=printenv}} で確認できるように正しい変数名です。}}&lt;br /&gt;
&lt;br /&gt;
== テスト ==&lt;br /&gt;
&lt;br /&gt;
NetworkManager アプレットはログイン時にロードされるようになっているので、ほとんどのユーザにとって追加の設定は必要ないはずです。以前のネットワーク設定を無効化し、ネットワークから切断されているならば、NetworkManager が動作するかどうかをテストできます。まず始めに、{{ic|NetworkManager.service}} を[[起動]]してください。&lt;br /&gt;
&lt;br /&gt;
一部のアプレットは、NetworkManager アプレットをアプリケーションメニューからロードできるようにするために、{{ic|.desktop}} ファイルを提供しています。デスクトップファイルが提供されていない場合は、アプレットを使用するためのコマンドを見つけるか、アプレットをロードするために一度ログアウトして再度ログインする必要があります。アプレットが開始されれば、DHCP サーバを使って自動設定によるネットワーク接続のポーリングが開始されるでしょう。&lt;br /&gt;
&lt;br /&gt;
[[awesome]] などの XDG 非互換のウィンドウマネージャで GNOME のアプレットを開始するには:&lt;br /&gt;
&lt;br /&gt;
 nm-applet --sm-disable &amp;amp;&lt;br /&gt;
&lt;br /&gt;
固定 IP アドレスの場合は、NetworkManager にそのことを伝えなければなりません。手順としては通常、アプレットを右クリックし、&#039;接続を編集する&#039; (&#039;Edit Connections&#039;) などのような項目を選択します。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== Wi-Fi パスワードの暗号化 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、NetworkManager はパスワードを平文で {{ic|/etc/NetworkManager/system-connections/}} 内の設定ファイルに保存します。保存されているパスワードを表示するには、以下のコマンドを使ってください:&lt;br /&gt;
&lt;br /&gt;
 # grep -r &#039;^psk=&#039; /etc/NetworkManager/system-connections/&lt;br /&gt;
&lt;br /&gt;
パスワードは root ユーザからファイルシステムでアクセス可能であり、さらに GUI (例: {{ic|nm-applet}}) を通して設定にアクセスできるユーザからもアクセス可能です。&lt;br /&gt;
&lt;br /&gt;
パスワードは、平文ではなく、キーリングの中で暗号化された形で保存するのが望ましいです。しかし、これの欠点は、それぞれのユーザで接続をセットアップしなけれならないことです。&lt;br /&gt;
&lt;br /&gt;
キーリングを読み書きするために、利用可能なシークレットエージェントが存在していなければなりません。いかのどれかを使用できます:&lt;br /&gt;
&lt;br /&gt;
* {{ic|nmcli}} で {{ic|--ask}} オプションを使う。&lt;br /&gt;
* [[#フロントエンド]] に挙げられているグラフィカルインターフェイス&lt;br /&gt;
&lt;br /&gt;
シークレットエージェントが利用できないと、{{ic|no secrets: No agents were available for this request.}} というエラーで認証が失敗します。&lt;br /&gt;
&lt;br /&gt;
==== GNOME Keyring を使う ====&lt;br /&gt;
&lt;br /&gt;
以下の方法を使うには、GNOME Keyring のキーリングデーモンが開始されていて、キーリングがアンロックされている必要があります。&lt;br /&gt;
&lt;br /&gt;
さらに、全ユーザのパスワードを保存しないように NetworkManager を設定する必要があります。GNOME の {{Pkg|network-manager-applet}} を使って、ターミナルから {{ic|nm-connection-editor}} を実行し、ネットワーク接続を選択し、&#039;&#039;編集&#039;&#039; (&#039;&#039;Edit&#039;&#039;) をクリックし、&#039;&#039;Wi-Fi セキュリティー&#039;&#039; (&#039;&#039;Wi-Fi Security&#039;&#039;) タブを選択し、パスワード入力欄の右のアイコンをクリックして、&#039;&#039;このユーザーのパスワードのみ保存する&#039;&#039; (&#039;&#039;Store the password only for this user&#039;&#039;) にチェックを入れてください。&lt;br /&gt;
&lt;br /&gt;
==== KDE Wallet を使う ====&lt;br /&gt;
&lt;br /&gt;
KDE の {{Pkg|plasma-nm}} を使う場合、アプレットをクリックし、右上の &#039;&#039;設定&#039;&#039; アイコンをクリックし、ネットワーク接続を選択し、&#039;&#039;一般設定&#039;&#039; (&#039;&#039;General configuration&#039;&#039;) タブを選択し、&#039;&#039;すべてのユーザはこのネットワークに接続可能&#039;&#039; (&#039;&#039;All users may connect to this network&#039;&#039;) のチェックを外してください。このオプションにチェックが入っていると、たとえキーリングデーモンが実行されていたとしても、パスワードが平文で保存されてしまいます。&lt;br /&gt;
&lt;br /&gt;
以前このオプションにチェックが入っていて、後にチェックを外した場合、ファイルからパスワードを消すために {{ic|reset}} オプションを使用する必要がある場合があります。あるいは、接続を削除し、再度セットアップしてください。&lt;br /&gt;
&lt;br /&gt;
=== Wi-Fi でインターネット接続を共有する ===&lt;br /&gt;
&lt;br /&gt;
数クリックでインターネット接続 (例: 3G、有線) を共有することができます。ただし、[[ファイアウォール]]はインターネット共有を妨害する場合があることに注意してください。&lt;br /&gt;
&lt;br /&gt;
AP モードをサポートする Wi-Fi カードが必要になります。詳細は [[ソフトウェアアクセスポイント#Wi-Fi デバイスが AP モードをサポートしていること]] を見てください。&lt;br /&gt;
&lt;br /&gt;
接続を共有できるようにするために {{Pkg|dnsmasq}} パッケージを[[インストール]]してください。NetworkManager は ({{ic|dnsmasq.service}} とは独立に) 独自の &#039;&#039;dnsmasq&#039;&#039; インスタンスを DHCP サーバとして開始することに注意してください。これに関する注意事項は [[#dnsmasq]] を見てください。&lt;br /&gt;
&lt;br /&gt;
共有された接続を作成してください:&lt;br /&gt;
&lt;br /&gt;
* アプレットをクリックし、&#039;&#039;新規 Wi-Fi ネットワークを作成&#039;&#039; (&#039;&#039;Create new wireless network&#039;&#039;) を選んでください。&lt;br /&gt;
* ウィザードに従ってください (WPA2 以上を選んでください。パスワードは 8 文字以上にしてください。さもないと失敗します)。&lt;br /&gt;
* Wi-Fi モードとして[[Fedora:Features/RealHotspot|ホットスポット]]かアドホックを選択してください。&lt;br /&gt;
&lt;br /&gt;
これで、次回必要になるときのために接続は保存されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|Android はアドホックネットワークへの接続をサポートしていません。Android と接続を共有するには、インフラストラクチャモードを使用してください (つまり、Wi-Fi モードを &amp;quot;ホットスポット&amp;quot; に設定する)。}}&lt;br /&gt;
&lt;br /&gt;
=== イーサネットでインターネット接続を共有する ===&lt;br /&gt;
&lt;br /&gt;
シナリオ: デバイスが Wi-Fi 経由でインターネットに接続されていて、イーサネットで他のデバイスとインターネット接続を共有したいと考えている場合。&lt;br /&gt;
&lt;br /&gt;
要件:&lt;br /&gt;
&lt;br /&gt;
* 接続を共有できるようにするために {{Pkg|dnsmasq}} パッケージと {{Pkg|nm-connection-editor}} パッケージを[[インストール]]してください。NetworkManager は ({{ic|dnsmasq.service}} とは独立に) 独自の &#039;&#039;dnsmasq&#039;&#039; インスタンスを DHCP サーバとして開始することに注意してください。これに関する注意事項は [[#dnsmasq]] を見てください。&lt;br /&gt;
* インターネットに接続されたデバイスとその他のデバイスが適切なイーサネットケーブルで接続されていること (これは通常、間をクロスオーバーケーブルやスイッチで繋ぐことを意味します)。&lt;br /&gt;
* インターネット共有が[[ファイアウォール]]によってブロックされていないこと。&lt;br /&gt;
&lt;br /&gt;
手順:&lt;br /&gt;
&lt;br /&gt;
* ターミナルから {{ic|nm-connection-editor}} を実行してください。&lt;br /&gt;
* 新しいイーサネット接続を追加してください。&lt;br /&gt;
* 何かわかりやすい名前を付けてください。例えば &amp;quot;Shared Internet&amp;quot;。&lt;br /&gt;
* &amp;quot;IPv4 設定&amp;quot; (&amp;quot;IPv4 Settings&amp;quot;) を開いてください。&lt;br /&gt;
* &amp;quot;メソッド:&amp;quot; (&amp;quot;Method:&amp;quot;) で &amp;quot;他のコンピューターへ共有&amp;quot; (&amp;quot;Shared to other computers&amp;quot;) を選択してください。&lt;br /&gt;
* 保存&lt;br /&gt;
&lt;br /&gt;
これで、NetworkManager の有線接続に &amp;quot;Shared Internet&amp;quot; という新しいオプションができたはずです。&lt;br /&gt;
&lt;br /&gt;
=== cron ジョブやスクリプトでネットワークが立ち上がっているか確認する ===&lt;br /&gt;
&lt;br /&gt;
{{Out of date|&#039;&#039;nm-tool&#039;&#039; は NetworkManager から削除されました [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/commit/bb8c75bd536d4f8fb80a4366025a279078f0ec81]。代わりに &#039;&#039;nmcli&#039;&#039; を使用するべきです。}}&lt;br /&gt;
&lt;br /&gt;
一部の &#039;&#039;cron&#039;&#039; ジョブではネットワークが立ち上がっている必要があり、ネットワークが落ちている状態でそのようなジョブを実行したくない場合があります。そうするには、NetworkManager の &#039;&#039;nm-tool&#039;&#039; にクエリして、ネットワークの状態をチェックする &#039;&#039;&#039;if&#039;&#039;&#039; テストを追加してください。このテストは、何らかのインターフェイスが立ち上がっていれば成功し、インターフェイスが全て落ちている場合は失敗します。これは、ある時は有線接続されていて、ある時は無線で、またある時はネットワークから切断されているようなノート PC で便利です。&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
if [ $(nm-tool|grep State|cut -f2 -d&#039; &#039;) == &amp;quot;connected&amp;quot; ]; then&lt;br /&gt;
    # ネットワークがオンラインの時に実行したいコード&lt;br /&gt;
else&lt;br /&gt;
    # ネットワークがオフラインの時に実行したいコード (注記: この部分と上の else は任意です)&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
これは、例えば F-Prot ウイルススキャナのシグネチャを更新するために &#039;&#039;fpupdate&#039;&#039; を実行する {{ic|cron.hourly}} で便利です。また、&#039;&#039;nm-tool&#039;&#039; の出力の様々な部分を使えば、ネットワークを識別することもできます。例えば、アクティブなワイヤレスネットワークにはアスタリスクが付くので、ネットワーク名を grep して、その後でアスタリスクを grep しますs。&lt;br /&gt;
&lt;br /&gt;
=== ブート時にシークレットを使ってネットワークに接続する ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、NetworkManager はシークレットを要求するネットワークにはブート時に自動的に接続しません。NetworkManager では、そのようなネットワークは、そのネットワークをデフォルトで使用するユーザがログインした後にのみ、接続されるからです。この動作を変更するには、以下を行ってください:&lt;br /&gt;
&lt;br /&gt;
# パネルの {{ic|nm-applet}} のアイコンを右クリックし、&amp;quot;接続を編集する&amp;quot; を選択し、Wi-Fi タブを開いてください。&lt;br /&gt;
# 使いたい接続を選択し、編集ボタンをクリックしてください。&lt;br /&gt;
# “Connect Automatically” と “Available to all users” のボックスにチェックを入れてください。&lt;br /&gt;
# 加えて、&amp;quot;Wi-Fi Security&amp;quot; タブで &amp;quot;Store password for all users (not encrypted)&amp;quot; が選択されていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
ログアウトし、ログインし直せば完了です。&lt;br /&gt;
&lt;br /&gt;
=== OpenConnect で KWallet 内のパスワードを使う ===&lt;br /&gt;
&lt;br /&gt;
接続時にユーザ名とパスワードを入力することはできますが、{{Pkg|plasma-nm}} 0.9.3.2-1 から、[[KWallet]] から直接 OpenConnect のユーザ名とパスワードを取得することが可能になりました。&lt;br /&gt;
&lt;br /&gt;
&amp;quot;KDE Wallet Manager&amp;quot; を開き、&amp;quot;Network Management|Maps&amp;quot; で対象の OpenConnect VPN 接続を見つけてください。&amp;quot;Show values&amp;quot; をクリックし、認証情報を以下の形式で &amp;quot;VpnSecrets&amp;quot; に入力してください (&#039;&#039;ユーザ名&#039;&#039; と &#039;&#039;パスワード&#039;&#039; の部分は適宜置き換えてください):&lt;br /&gt;
&lt;br /&gt;
 form:main:username%SEP%&#039;&#039;ユーザ名&#039;&#039;%SEP%form:main:password%SEP%&#039;&#039;パスワード&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
次回の接続時に、ユーザ名とパスワードが &amp;quot;VPN secrets&amp;quot; ダイアログボックスに入力されるはずです。&lt;br /&gt;
&lt;br /&gt;
=== 特定のデバイスを無視する ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager で特定のデバイスを無視し、そのデバイスに対してはアドレスとルート (route) の設定を試みないようにすることが望ましい場合があります。{{ic|/etc/NetworkManager/conf.d/unmanaged.conf}} で以下のオプションを使うことで、MAC またはインターフェイス名によって特定のデバイスを無視することができます:&lt;br /&gt;
&lt;br /&gt;
 [keyfile]&lt;br /&gt;
 unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth0&lt;br /&gt;
&lt;br /&gt;
ファイルを編集したら、{{ic|nmcli general reload}} を root として実行してください。その後、NetworkManager があなたの設定を変更することなく、インターフェイスを構成できるようになっているはずです。&lt;br /&gt;
&lt;br /&gt;
=== MAC アドレスのランダム化を設定する ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=(安定した) リンク接続[https://bbs.archlinux.org/viewtopic.php?id=220101]や、MAC アドレスに基づいてデバイスを制限したりネットワーク容量に制限を設けているネットワークへの接続には、MAC アドレスのランダム化を無効化する必要がある場合があります。}}&lt;br /&gt;
&lt;br /&gt;
MAC アドレスのランダム化は、本物の MAC アドレスをネットワークに開示しないことで、プライバシーを向上させることができます。&lt;br /&gt;
&lt;br /&gt;
NetworkManager は2種類の MAC アドレスランダム化をサポートしています: スキャン中のランダム化とネットワーク接続におけるランダム化です。どちらのモードも、{{ic|/etc/NetworkManager/NetworkManager.conf}} を変更するか、{{ic|/etc/NetworkManager/conf.d/}} 内に別の設定ファイルを作成することで設定できます (前者は NetworkManager によって上書きされる場合があるので、後者が推奨されます)。&lt;br /&gt;
&lt;br /&gt;
Wi-Fi スキャン中のランダム化はデフォルトで有効化されていますが、以下の行を {{ic|/etc/NetworkManager/NetworkManager.conf}} か {{ic|/etc/NetworkManager/conf.d}} 内の別の設定ファイルに追加することで無効化することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/wifi_rand_mac.conf|2=&lt;br /&gt;
[device]&lt;br /&gt;
wifi.scan-rand-mac-address=no&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ネットワーク接続における MAC アドレスランダム化は、無線インターフェイスとイーサネットインターフェイスで別々のモードを設定することができます。モードに関する詳細は [https://blogs.gnome.org/thaller/2016/08/26/mac-address-spoofing-in-networkmanager-1-4-0/ GNOME のブログ記事]を参照してください。&lt;br /&gt;
&lt;br /&gt;
MAC アドレスランダム化に関して、最も重要なモードは {{ic|stable}} と {{ic|random}} です。{{ic|stable}} は、新しいネットワークに接続した時にランダムな MAC アドレスを生成し、そのネットワークと MAC アドレスを永続的に関連付けます。これはつまり、そのネットワークに接続すると毎回同じ MAC アドレスが使用されることを意味します。それとは対照的に、{{ic|random}} は、ネットワークに接続する度に、そのネットワークが新しかろうが既知であろうが、新しい MAC アドレスを生成します。{{ic|/etc/NetworkManager/conf.d}} 内に設定ファイルを追加してこの MAC アドレスランダム化を設定することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/wifi_rand_mac.conf|2=&lt;br /&gt;
[device-mac-randomization]&lt;br /&gt;
# &amp;quot;yes&amp;quot; は既にスキャンにおけるデフォルトです。&lt;br /&gt;
wifi.scan-rand-mac-address=yes&lt;br /&gt;
 &lt;br /&gt;
[connection-mac-randomization]&lt;br /&gt;
# 全てのイーサネット接続に対して MAC をランダム化する&lt;br /&gt;
ethernet.cloned-mac-address=random&lt;br /&gt;
# 各 Wi-Fi に対してランダムな MAC を生成し、それらを関連付ける。&lt;br /&gt;
wifi.cloned-mac-address=stable&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
特定の接続に対して MAC ランダム化を設定するには (例えば、そのネットワークでランダムな MAC アドレスを使えない場合)、[[#接続を編集する|接続を編集して]] {{ic|802-11-wireless.cloned-mac-address}} に所望のモード (例: {{ic|stable}}、{{ic|random}}) を設定してください。&lt;br /&gt;
&lt;br /&gt;
詳細は [https://blogs.gnome.org/thaller/2016/08/26/mac-address-spoofing-in-networkmanager-1-4-0/ GNOME ブログ記事]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ホスト名の送信をオフにする ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、NetworkManager は DHCP サーバにホスト名を送ります。&lt;br /&gt;
&lt;br /&gt;
DHCP サーバへのホスト名の送信をグローバルに無効化するには、{{ic|/etc/NetworkManager/conf.d/}} 内の設定ファイルで2つのオプション {{ic|ipv4.dhcp-send-hostname{{=}}0}} と {{ic|ipv6.dhcp-send-hostname{{=}}0}} を設定してください。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/dhcp-send-hostname.conf|2=&lt;br /&gt;
[connection]&lt;br /&gt;
ipv4.dhcp-send-hostname=0&lt;br /&gt;
ipv6.dhcp-send-hostname=0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
特定の接続においてのみ DHCP サーバへのホスト名の送信を無効化するには (あるいは、グローバルに無効化しておいて、特定の接続では有効化するには)、以下をネットワーク接続ファイルに追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/system-connections/&#039;&#039;your_connection_file&#039;&#039;.nmconnection|2=&lt;br /&gt;
...&lt;br /&gt;
[ipv4]&lt;br /&gt;
dhcp-send-hostname=false&lt;br /&gt;
...&lt;br /&gt;
[ipv6]&lt;br /&gt;
dhcp-send-hostname=false&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|デフォルトでは、[[#DHCP クライアント|内部 DHCP クライアント]]のみがこれらのオプションに従います。NetworkManager を dhcpcd と共に使用する際にホスト名の送信を省略するには、{{ic|/etc/dhcpcd.conf}} を編集して最後の行に {{ic|anonymous}} を挿入してください。}}&lt;br /&gt;
&lt;br /&gt;
=== IPv6 プライバシー拡張を有効にする ===&lt;br /&gt;
&lt;br /&gt;
[[IPv6#NetworkManager]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 接続ごとに一意の DUID を設定する ===&lt;br /&gt;
&lt;br /&gt;
DHCPv6 Unique Identifier (DUID) は、DHCPv6 クライアントが DHCPv6 サーバに対して自身を識別するために使用する値です。NetworkManager は3種類の DUID をサポートしています:&lt;br /&gt;
&lt;br /&gt;
* DUID-UUID ([[RFC:6355|RFC 6355]]): Universally Unique IDentifier (UUID) から生成されます。&lt;br /&gt;
* DUID-LL ([[RFC:3315|RFC 3315]]): リンク層アドレス (別名 MAC アドレス) から生成されます。&lt;br /&gt;
* DUID-LLT ([[RFC:3315|RFC 3315]]): リンク層アドレスとタイムスタンプから生成されます。&lt;br /&gt;
&lt;br /&gt;
NetworkManager の内部 DHCP クライアントが使用されている場合 (デフォルト)、machine-id ({{ic|/etc/machine-id}}) から生成されたグローバルで永続的な DUID-UUID で自身を識別します。これは、すべての接続が同じ UUID を共有することを意味し、プライバシーの侵害となる可能性があります。&lt;br /&gt;
&lt;br /&gt;
幸いなことに、NetworkManager は、接続の stable-id とホストごとの一意のキーから派生した、接続ごとの一意の DUID を提供できます。{{ic|/etc/NetworkManager/conf.d}} 内に次の設定を追加することで、これを有効にすることができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/duid.conf|2=&lt;br /&gt;
[connection]&lt;br /&gt;
ipv6.dhcp-duid=stable-uuid&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|stable-ll}} および {{ic|stable-llt}} の値もサポートされています。詳細については、{{man|5|nm-settings|ipv6 setting}} の {{ic|dhcp-duid}} の説明を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 有線接続の操作 ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager は、デフォルトで、有線イーサネット接続を検出するたびにそれぞれに対して接続プロファイルを生成します。接続を生成する時点では、利用可能なイーサネットアダプターがさらにあるかどうかはわかりません。そのため、最初の有線接続は &amp;quot;有線接続 1&amp;quot; となります。{{ic|no-auto-default}} ({{man|5|NetworkManager.conf}} を参照) を設定するか、単に削除することで、この接続を生成しないようにできます。そうすれば、NetworkManager はこのインターフェイスの接続を二度と生成しないように記憶します。&lt;br /&gt;
&lt;br /&gt;
また、接続を編集 (およびディスクに永続化) したり、削除したりすることもできます。NetworkManager は新しい接続を再生成することはありません。それから、名前を好きなものに変更することができます。この作業には {{Pkg|nm-connection-editor}} などを使うことができます。&lt;br /&gt;
&lt;br /&gt;
=== Wi-Fi バックエンドとして iwd を使用する ===&lt;br /&gt;
&lt;br /&gt;
{{Note|1=&amp;lt;nowiki/&amp;gt;&lt;br /&gt;
* {{ic|iwd.service}} を有効化したり、[[iwd]] を手動で構成したりしないでください。NetworkManager は自身で iwd を開始し、管理します。&lt;br /&gt;
* &#039;&#039;iwd&#039;&#039; に切り替える前に、[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues?scope=all&amp;amp;utf8=%E2%9C%93&amp;amp;state=opened&amp;amp;search=iwd 既知の問題]を考慮してください。}}&lt;br /&gt;
&lt;br /&gt;
[https://archive.kernel.org/oldwiki/iwd.wiki.kernel.org/networkmanager.html 実験的な iwd バックエンド]を有効化するには、{{Pkg|iwd}} を[[インストール]]してから、以下の設定ファイルを作成してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/wifi_backend.conf|2=&lt;br /&gt;
[device]&lt;br /&gt;
wifi.backend=iwd&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
または、{{AUR|networkmanager-iwd}} をインストールすることもできます。これは、&#039;&#039;iwd&#039;&#039; のみで動作する &#039;&#039;NetworkManager&#039;&#039; をビルドするように設定された修正パッケージです。主な違いは、&#039;&#039;iwd&#039;&#039; が必要であり、&#039;&#039;wpa_supplicant&#039;&#039; はビルド後にアンインストールできることです。&lt;br /&gt;
&lt;br /&gt;
{{Note|1=&#039;&#039;iwd&#039;&#039; に切り替えた後、[https://archive.kernel.org/oldwiki/iwd.wiki.kernel.org/networkmanager.html#converting_network_profiles 既存の NetworkManager ネットワークプロファイルを変換する]必要がある場合があります。}}&lt;br /&gt;
&lt;br /&gt;
=== ネットワーク名前空間内で実行する ===&lt;br /&gt;
&lt;br /&gt;
ネットワーク名前空間内で NetworkManager を実行する場合 (たとえば、選択したアプリケーションで使用する必要がある特定のデバイスを管理する場合)、その名前空間に移動させる前にデバイスを落としてください:&lt;br /&gt;
&lt;br /&gt;
 $ ip link set dev &#039;&#039;MY_DEVICE&#039;&#039; down&lt;br /&gt;
 $ ip link set dev &#039;&#039;MY_DEVICE&#039;&#039; netns &#039;&#039;MY_NAMESPACE&#039;&#039;&lt;br /&gt;
 $ ip netns exec &#039;&#039;MY_NAMESPACE&#039;&#039; NetworkManager&lt;br /&gt;
 ...&lt;br /&gt;
 $ ip netns exec &#039;&#039;MY_NAMESPACE&#039;&#039; killall NetworkManager&lt;br /&gt;
&lt;br /&gt;
そうしないと、NetworkManager は後で {{ic|device is strictly unmanaged}} エラーにより接続の確立に失敗します。&lt;br /&gt;
&lt;br /&gt;
=== VPN に自動的に接続する ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager は、インターネットへの接続時に VPN に自動的に接続するように (ネットワーク毎に) 設定できます。VPN 接続自体は、GNOME の NetworkManager フロントエンドで追加できますが、VPN を自動的に使用するようにするには、{{ic|nmcli}} を使用しなければなりません。他のフロントエンドにはこの制限はない場合があります。&lt;br /&gt;
&lt;br /&gt;
まず、対象の VPN が全ユーザで利用可能であることを確認してください。GNOME では、{{ic|details}} タブ内のあるボックスにチェックを入れれば良いです。{{ic|Identity}} タブのパスワード入力欄内の右側にあるアイコンをクリックし、{{ic|Store the password for all users}} を選択してください。&lt;br /&gt;
&lt;br /&gt;
そして、VPN 接続の UUID を見つけ、インターネット接続の {{ic|connection.secondaries}} にその UUID を追加してください:&lt;br /&gt;
&lt;br /&gt;
 # UUID=$(nmcli --get-values connection.uuid connection show &#039;&#039;VPN接続の名前&#039;&#039;)&lt;br /&gt;
 # nmcli connection modify &#039;&#039;インターネット接続の名前&#039;&#039; connection.secondaries &amp;quot;$UUID&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NetworkManager を再起動して、設定したインターネット接続に接続したら、自動的に VPN に接続されるようになっているはずです。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== セキュアな Wi-Fi ネットワークのパスワードプロンプトが表示されない ===&lt;br /&gt;
&lt;br /&gt;
セキュアな Wi-Fi ネットワークに接続しようとすると、パスワードのプロンプトが表示されず、接続が確立されません。これは、キーリングのパッケージがインストールされていない時に起こります。簡単な解決法は、{{Pkg|gnome-keyring}} をインストールすることです。パスワードを暗号化して保存したい場合は、[[GNOME Keyring]] に書かれてある指示に従い、&#039;&#039;gnome-keyring-daemon&#039;&#039; をセットアップしてください。&lt;br /&gt;
&lt;br /&gt;
=== Network management disabled ===&lt;br /&gt;
&lt;br /&gt;
時々、NetworkManager を終了したときに pid (state) ファイルが削除されずに {{ic|Network management disabled}} というメッセージが表示されることがあります。これが発生した場合は、そのファイルを手動で削除してください:&lt;br /&gt;
&lt;br /&gt;
 # rm /var/lib/NetworkManager/NetworkManager.state&lt;br /&gt;
&lt;br /&gt;
=== 内蔵 DHCP クライアントに関する問題 ===&lt;br /&gt;
&lt;br /&gt;
内臓の DHCP クライアントを使用すると IP アドレスの取得に問題が発生する場合、他の DHCP クライアントを使用することを検討してください (手順は [[#DHCP クライアント]] を見てください)。この回避策は、eduroam などの巨大なワイヤレスネットワークにおける問題を解決するかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== dhclient における DHCP の問題 ===&lt;br /&gt;
&lt;br /&gt;
DHCP での IP アドレス取得に問題が発生する場合、以下を {{ic|/etc/dhclient.conf}} に追加してみてください:&lt;br /&gt;
&lt;br /&gt;
  interface &amp;quot;eth0&amp;quot; {&lt;br /&gt;
    send dhcp-client-identifier 01:&#039;&#039;aa:bb:cc:dd:ee:ff&#039;&#039;;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;aa:bb:cc:dd:ee:ff&#039;&#039;}} は NIC の MAC アドレスです。この MAC アドレスは {{Pkg|iproute2}} パッケージの {{ic|ip link show &#039;&#039;インターフェイス&#039;&#039;}} コマンドを使って確認できます。&lt;br /&gt;
&lt;br /&gt;
=== 3G モデムが検知されない ===&lt;br /&gt;
&lt;br /&gt;
[[USB 3G モデム#NetworkManager]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ノートパソコンで WLAN をオフにする ===&lt;br /&gt;
&lt;br /&gt;
時々、ノートパソコンに付いているスイッチを使って Wi-Fi アダプタを無効化し、再び有効化しようとすると NetworkManager が機能しなくなることがあります。これは、しばしば &#039;&#039;rfkill&#039;&#039; の問題であることがあります。ドライバが &#039;&#039;rfkill&#039;&#039; にワイヤレスアダプタの状態について通知しているかどうか確認するには、以下のコマンドを使ってください:&lt;br /&gt;
&lt;br /&gt;
 $ watch -n1 rfkill list all&lt;br /&gt;
&lt;br /&gt;
アダプタを切り替えた後にどれかの識別子がブロックされたままになる場合、手動でアンロックしてみることができます (X の部分は、上記のコマンドで得られた識別子の番号です):&lt;br /&gt;
&lt;br /&gt;
 # rfkill event unblock X&lt;br /&gt;
&lt;br /&gt;
=== 固定 IP アドレスの設定が DHCP に戻る ===&lt;br /&gt;
&lt;br /&gt;
とある未解決のバグにより、デフォルトの接続を固定 IP アドレスに変更すると、{{ic|nm-applet}} が設定の変更を適切に保存せずに、自動 DHCP に戻ってしまいます。&lt;br /&gt;
&lt;br /&gt;
この問題を回避するには、{{ic|nm-applet}} でデフォルトの設定 (例: &amp;quot;Auto eth0&amp;quot;) を編集し、接続名を変更 (例: &amp;quot;my eth0&amp;quot;) し、&amp;quot;Available to all users&amp;quot; チェックボックスのチェックを外し、固定 IP アドレスの設定を好きに変更し、&#039;&#039;&#039;Apply&#039;&#039;&#039; をクリックしてください。これで、指定した名前で新しい接続が保存されます。&lt;br /&gt;
&lt;br /&gt;
そうしたら、デフォルトの接続に自動的に接続しないようにしたいと思うでしょう。そうするには、まず {{ic|nm-connection-editor}} を実行してください (root としてでは&#039;&#039;&#039;ありません&#039;&#039;&#039;)。接続エディタで、デフォルトの接続 (例: &amp;quot;Auto eth0&amp;quot;) を編集し、&amp;quot;Connect automatically&amp;quot; のチェックを外してください。&#039;&#039;&#039;Apply&#039;&#039;&#039; をクリックし、接続エディタを閉じてください。&lt;br /&gt;
&lt;br /&gt;
=== 通常ユーザとして接続を編集できない ===&lt;br /&gt;
&lt;br /&gt;
[[#PolicyKit のパーミッションをセットアップする]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 隠されたワイヤレスネットワークを削除する ===&lt;br /&gt;
&lt;br /&gt;
隠されたネットワークはワイヤレスの選択リストに表示されないので、GUI から削除することができません。以下のコマンドでそのようなネットワークを削除できます:&lt;br /&gt;
&lt;br /&gt;
 # rm /etc/NetworkManager/system-connections/&#039;&#039;SSID&#039;&#039;.nmconnection&lt;br /&gt;
&lt;br /&gt;
これは、他の接続でも使えます。&lt;br /&gt;
&lt;br /&gt;
=== VPN が GNOME で動作しない ===&lt;br /&gt;
&lt;br /&gt;
GNOME を使用している時に NetworkManager で OpenConnect や vpnc の接続をセットアップすると、ダイアログボックスが表示されず、以下のエラーが {{ic|/var/log/errors.log}} に現れることがあります:&lt;br /&gt;
&lt;br /&gt;
 localhost NetworkManager[399]: &amp;lt;error&amp;gt; [1361719690.10506] [nm-vpn-connection.c:1405] get_secrets_cb(): Failed to request VPN secrets #3: (6) No agents were available for this request.&lt;br /&gt;
&lt;br /&gt;
これは、GNOME NetworkManager Applet が、ダイアログスクリプトが {{ic|/usr/lib/gnome-shell}} にあると想定していることが原因です (NetworkManager のパッケージはダイアログスクリプトを {{ic|/usr/lib/networkmanager}} 内に置きます)。&amp;quot;一時的な&amp;quot; 修正として (このバグはしばらく前から存在しています)、以下のシンボリックリンクを作成してください:&lt;br /&gt;
&lt;br /&gt;
* OpenConnect の場合: {{ic|ln -s /usr/lib/nm-openconnect-auth-dialog /usr/lib/gnome-shell/}}&lt;br /&gt;
* VPNC (つまり Cisco VPN) の場合: {{ic|ln -s /usr/lib/nm-vpnc-auth-dialog /usr/lib/gnome-shell/}}&lt;br /&gt;
&lt;br /&gt;
これは、他の NetworkManager VPN プラグインでも行う必要がある場合がありますが、上記が最も一般的です。&lt;br /&gt;
&lt;br /&gt;
=== 検出されてはいるのにヨーロッパのワイヤレスネットワークに接続できない ===&lt;br /&gt;
&lt;br /&gt;
WLAN チップにはデフォルトの[[ネットワーク設定/ワイヤレス#規制範囲に従う|規制範囲]]が設定されています。アクセスポイントがその規制内で動作しない場合、そのネットワークに接続することはできません。これは簡単に解決できます:&lt;br /&gt;
&lt;br /&gt;
# {{Pkg|wireless-regdb}} を[[インストール]]してください。&lt;br /&gt;
# {{ic|/etc/conf.d/wireless-regdom}} で適切な国名コードをアンコメントしてください。&lt;br /&gt;
# システムを再起動してください。この設定はブート時にしか読み込まれないからです。&lt;br /&gt;
&lt;br /&gt;
=== ブート時の VPN への自動接続が機能しない ===&lt;br /&gt;
&lt;br /&gt;
この問題は、システム (つまり、root ユーザとして動作している NetworkManager) が VPN 接続を確立しようと試みたが、パスワードが特定のユーザの GNOME Keyring 内に保存されているためにアクセスできなかった場合に発生します。&lt;br /&gt;
&lt;br /&gt;
解決策は、[[#ディスパッチャを使って、ネットワーク接続が確立された後に VPN に接続する]] の手順 2 で説明されている通りに、VPN のパスワードを平文で保存することです。&lt;br /&gt;
&lt;br /&gt;
{{ic|nm-applet}} GUI で新しい &amp;quot;auto-connect VPN&amp;quot; オプションを使用している場合は、自動接続するために 手順 1 で説明されているディスパッチャを使用する必要はありません。&lt;br /&gt;
&lt;br /&gt;
=== systemd のボトルネック ===&lt;br /&gt;
&lt;br /&gt;
時が立つにつれてログファイル ({{ic|/var/log/journal}}) が膨大になってしまうことがあります。そうすると NetworkManager を使う場合にブートパフォーマンスに大きな影響を与えます。参照: [[systemd#少しづつ起動時間が長くなっている]]。&lt;br /&gt;
&lt;br /&gt;
=== 定期的なネットワーク接続断、遅延、パケットロス (Wi-Fi) ===&lt;br /&gt;
&lt;br /&gt;
NetworkManager は2分ごとにスキャンを行います。&lt;br /&gt;
&lt;br /&gt;
一部の Wi-Fi ドライバは、接続/アソシエーション中にベースステーションのスキャンを行うと問題が発生します。症状としては、VPN 接続断/再接続、パケットロス、ウェブページのロードに失敗してリフレッシュすると良くなるなどがあります。&lt;br /&gt;
&lt;br /&gt;
{{ic|journalctl -f}} を root として実行すると、スキャンが行われていることがわかります。以下のようなメッセージが定期的にログに現れます:&lt;br /&gt;
&lt;br /&gt;
 NetworkManager[410]: &amp;lt;info&amp;gt;  (wlp3s0): roamed from BSSID 00:14:48:11:20:CF (my-wifi-name) to (none) ((none))&lt;br /&gt;
&lt;br /&gt;
ローミングが重要でないならば、Wi-Fi 接続プロファイルでアクセスポイントの BSSID をロックすることにより、定期的なスキャンの挙動を無効化することができます。&lt;br /&gt;
&lt;br /&gt;
=== Lenovo ラップトップ (IdeaPad、Legion など) で Wi-Fi をオンにできない ===&lt;br /&gt;
&lt;br /&gt;
これは、Wi-Fi ドライバがソフトブロックを誤って報告することによる、一部の Lenovo モデルにおける {{ic|ideapad_laptop}} モジュールの問題です。カードは依然として {{ic|netctl}} で操作できますが、NetworkManager などのマネージャーは機能しません。この問題が発生しているかどうかを確認するには、ハードウェアのスイッチをオンオフしたあとで {{ic|rfkill list}} の出力を確認し、ソフトブロックされ続けるかどうか確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|rfkill の問題を解決するには、{{ic|rfkill.default_state}} と {{ic|rfkill.master_switch_mode}} を使用してみてください ([https://docs.kernel.org/admin-guide/kernel-parameters.html kernel-parameters.html] を参照))。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|ideapad_laptop}} モジュールを[[modprobe|アンロード]]すれば、この問題は解決するはずです。(&#039;&#039;&#039;警告&#039;&#039;&#039;: これにより、ラップトップのキーボードとタッチパッドも無効になる可能性があります!)&lt;br /&gt;
&lt;br /&gt;
=== nm-applet が i3wm で消える ===&lt;br /&gt;
&lt;br /&gt;
通知に {{ic|xfce4-notifyd.service}} を使用する場合は、そのユニットを[[編集]]して、以下を追加する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/user/xfce4-notifyd.service.d/display_env.conf|2=&lt;br /&gt;
[Service]&lt;br /&gt;
Environment=&amp;quot;DISPLAY=:0.0&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
デーモンをロードし直したら、{{ic|xfce4-notifyd.service}} を[[再起動]]してください。i3 を終了し、再び起動すると、アプレットがトレイに表示されているはずです。&lt;br /&gt;
&lt;br /&gt;
=== Unit dbus-org.freedesktop.resolve1.service not found ===&lt;br /&gt;
&lt;br /&gt;
{{ic|systemd-resolved.service}} が開始されていない場合、NetworkManager は D-Bus を使用して開始しようとし、失敗します:&lt;br /&gt;
&lt;br /&gt;
 dbus-daemon[991]: [system] Activating via systemd: service name=&#039;org.freedesktop.resolve1&#039; unit=&#039;dbus-org.freedesktop.resolve1.service&#039; requested by &#039;:1.23&#039; (uid=0 pid=1012 comm=&amp;quot;/usr/bin/NetworkManager --no-daemon &amp;quot;)&lt;br /&gt;
 dbus-daemon[991]: [system] Activation via systemd failed for unit &#039;dbus-org.freedesktop.resolve1.service&#039;: Unit dbus-org.freedesktop.resolve1.service not found.&lt;br /&gt;
 dbus-daemon[991]: [system] Activating via systemd: service name=&#039;org.freedesktop.resolve1&#039; unit=&#039;dbus-org.freedesktop.resolve1.service&#039; requested by &#039;:1.23&#039; (uid=0 pid=1012 comm=&amp;quot;/usr/bin/NetworkManager --no-daemon &amp;quot;)&lt;br /&gt;
&lt;br /&gt;
これは、NetworkManager が {{man|5|NetworkManager.conf}} の {{ic|1=main.dns=}} 設定に関係なく、DNS 情報を [[systemd-resolved]] に送信しようとするためです。[https://gitlab.freedesktop.org/NetworkManager/NetworkManager/commit/d4eb4cb45f41b1751cacf71da558bf8f0988f383]&lt;br /&gt;
&lt;br /&gt;
これは、{{ic|/etc/NetworkManager/conf.d/}} 内の設定ファイルで無効にできます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/no-systemd-resolved.conf|2=&lt;br /&gt;
[main]&lt;br /&gt;
systemd-resolved=false&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Bug|62138}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Secrets were required, but not provided ===&lt;br /&gt;
&lt;br /&gt;
ネットワークに接続しようとして以下のエラーが発生する場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ nmcli device wifi connect &#039;&#039;SSID&#039;&#039; password &#039;&#039;パスワード&#039;&#039;|&lt;br /&gt;
Error: Connection activation failed: (7) Secrets were required, but not provided&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このエラーの原因となりうるものはたくさんあり、[[journal]] を読む必要があります ({{ic|-u NetworkManager}} で出力をフィルタしてください)。例えば、接続の確立に時間がかかりすぎると、NetworkManager はパスワードが正しくなかったと結論づけます:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
NetworkManager[1372]: &amp;lt;warn&amp;gt;  [1643991888.3808] device (wlan0): Activation: (wifi) association took too long&lt;br /&gt;
NetworkManager[1372]: &amp;lt;info&amp;gt;  [1643991888.3809] device (wlan0): state change: config -&amp;gt; need-auth (reason &#039;none&#039;, sys-iface-state: &#039;managed&#039;)&lt;br /&gt;
NetworkManager[1372]: &amp;lt;warn&amp;gt;  [1643991888.3838] device (wlan0): Activation: (wifi) asking for new secrets&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
接続プロファイルを削除し、新しいプロファイルを作成してみてください:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection delete &#039;&#039;SSID&#039;&#039;&lt;br /&gt;
 $ nmcli device wifi connect &#039;&#039;SSID&#039;&#039; password &#039;&#039;パスワード&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
また、MAC アドレスランダム化を無効化してみるのも良いでしょう:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/conf.d/wifi_rand_mac.conf|2=&lt;br /&gt;
[device]&lt;br /&gt;
wifi.scan-rand-mac-address=no&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== iwd での WPA Enterprise 接続 ===&lt;br /&gt;
&lt;br /&gt;
[[#Wi-Fi バックエンドとして iwd を使用する|iwd バックエンド]]と NetworkManager で &#039;eduroam&#039; などの WPA Enterprise ネットワークに接続しようとした際に、NetworkManager sで以下のエラーが発生します:&lt;br /&gt;
&lt;br /&gt;
  Connection &#039;eduroam&#039; is not avialable on device wlan0 because profile is not compatible with device (802.1x connections must have IWD provisioning files)&lt;br /&gt;
&lt;br /&gt;
NetworkManager は WPA Enterprise ネットワークを設定できないことが原因です。なので、[[iwd#WPA Enterprise]] で説明されているように iwd の設定ファイル {{ic|/var/lib/iwd/&#039;&#039;essid&#039;&#039;.8021x}} を使って設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== Failed to request VPN secrets ===&lt;br /&gt;
&lt;br /&gt;
以下のエラーが発生する場合:&lt;br /&gt;
&lt;br /&gt;
 Failed to request VPN secrets #1: No agents were available for this request.&lt;br /&gt;
&lt;br /&gt;
パスワードが空であるか、[[#PolicyKit のパーミッションをセットアップする|PolicyKit のパーミッションをセットアップする]]必要があるかのどちらかです。&lt;br /&gt;
&lt;br /&gt;
=== OpenVPN 接続が &amp;quot;secrets: failed to request VPN secrets&amp;quot; という警告で失敗する ===&lt;br /&gt;
&lt;br /&gt;
GNOME-Shell と統合させる場合、{{Pkg|networkmanager-openvpn}} パッケージは {{Pkg|libnma-gtk4}} と任意で {{Pkg|libnma}} (Gtk3) も必要とします。{{Pkg|libnma}} が必要であるが、インストールされていない場合、以下のようなメッセージがログに出力されます:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
NetworkManager[642]: &amp;lt;warn&amp;gt;  [...] vpn[...&amp;quot;name_of_vpn_profile VPN&amp;quot;]: secrets: failed to request VPN secrets #3: No agents were available for this request.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL の &amp;quot;ca md too weak&amp;quot; エラーで OpenVPN の接続に失敗する ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|openssl}} がバージョン3に更新されたため、レガシーな暗号化アルゴリズムで生成された証明書はデフォルトで拒否されます。このような設定で {{Pkg|networkmanager-openvpn}} を使用しようとすると、ログに次のエラーが記録される可能性があります:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
nm-openvpn[14359]: OpenSSL: error:0A00018E:SSL routines::ca md too weak&lt;br /&gt;
nm-openvpn[14359]: Cannot load certificate file /home/archie/.local/share/networkmanagement/certificates/my_issued_cert.crt&lt;br /&gt;
nm-openvpn[14359]: Exiting due to fatal error&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
正しいアプローチは、OpenVPN サーバの管理者に、より安全な証明書を生成して再発行してもらうことです。ただし、当面の回避策として、OpenVPN には {{ic|1=tls-cipher &amp;quot;DEFAULT:@SECLEVEL=0&amp;quot;}} が必要です。この設定は、プラグイン GUI からでは無理かもしれませんが、&#039;&#039;nmcli&#039;&#039; からなら可能です。これとは別に、OpenSSL で&#039;&#039;レガシー&#039;&#039;なプロバイダを有効化する必要もあります。&lt;br /&gt;
&lt;br /&gt;
まず、以下のコマンドの出力から、問題のある VPN 接続の名前を取得してください:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection show&lt;br /&gt;
&lt;br /&gt;
接続の名前は &#039;&#039;vpn.example.com&#039;&#039; であると仮定します。以下のように &#039;&#039;nmcli&#039;&#039; を使ってください:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection modify vpn.example.com +vpn.data tls-cipher=DEFAULT:@SECLEVEL=0&lt;br /&gt;
&lt;br /&gt;
変更は即座に {{ic|/etc/NetworkManager/system-connections/vpn.example.com.nmconnection}} に反映されるはずです。&lt;br /&gt;
&lt;br /&gt;
OpenSSL に関しては、[https://wiki.openssl.org/index.php/OpenSSL_3.0#Providers OpenSSL wiki] で説明されている通りに {{ic|/etc/ssl/openssl.cnf}} を編集してください。&lt;br /&gt;
&lt;br /&gt;
具体的には、{{ic|[provider_sect]}} セクションの最後に {{ic|1=legacy = legacy_sect}} を追加してください。{{ic|[default_sect]}} で {{ic|1=activate = 1}} のコメントを外してください。最後に、{{ic|1=activate = 1}} という行も含む新しいセクション {{ic|[legacy_sect]}} を追加してください。他のほとんどの既存の構成セクションを除外すると、最終結果は次のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ssl/openssl.cnf|2=&lt;br /&gt;
openssl_conf = openssl_init&lt;br /&gt;
&lt;br /&gt;
[openssl_init]&lt;br /&gt;
providers = provider_sect&lt;br /&gt;
&lt;br /&gt;
[provider_sect]&lt;br /&gt;
default = default_sect&lt;br /&gt;
legacy = legacy_sect&lt;br /&gt;
&lt;br /&gt;
[default_sect]&lt;br /&gt;
activate = 1&lt;br /&gt;
&lt;br /&gt;
[legacy_sect]&lt;br /&gt;
activate = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
最後に、{{ic|NetworkManager.service}} を[[再起動]]して、新しい OpenSSL 設定を有効化してください。&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL の &amp;quot;unsupported protocol&amp;quot; エラーで WPA Enterprise の接続の認証に失敗する ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|openssl}} がバージョン 3 に更新されたため、[https://www.openssl.org/news/openssl-3.0-notes.html デフォルトで] SSL 3、TLS 1.0、TLS 1.1、そして DTLS 1.0 はセキュリティレベル 0 でのみ動作するようになりました。それよりも古い標準しかサポートしていない Wi-Fi ネットワークでの認証は、ログに以下のエラーを吐いて失敗します:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
wpa_supplicant[3320]: SSL: SSL3 alert: write (local SSL3 detected an error):fatal:protocol version&lt;br /&gt;
wpa_supplicant[3320]: OpenSSL: openssl_handshake - SSL_connect error:0A000102:SSL routines::unsupported protocol&lt;br /&gt;
wpa_supplicant[3320]: wlp3s0: CTRL-EVENT-EAP-FAILURE EAP authentication failed&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
正しい方法は、設備の管理者を説得して、暗号化されたネットワークトンネルのプロトコルを TLS 1.3 にアップグレードし、任意で TLS 1.0/1.1、DTLS 1.0、SSL 1-3 を含む非推奨となっているセキュリティ標準のサポートを落としてもらうことです。しかし、当面の回避策として、TLS 1.0 や 1.1 をデフォルトで許可する方法は複数あります。一つは、手動で OpenSSL にパッチを当てるか、破壊的な変更をもとに戻すことです ([https://github.com/openssl/openssl/commit/7bf2e4d7f0c7ae19b7a8c416910886a7171e9820])。これは、OpenSSL レベル 1 を使用する他の全てのプログラムのセキュリティも低下してしまうため、推奨されません。代わりに、([https://bbs.archlinux.org/viewtopic.php?id=286417#p2104492 BBS#286417] で説明されているように) wpa_supplicant によって使用されるレベルを直接設定することができます。問題のある接続設定ファイルの {{ic|1=[802-1x]}} セクションで {{ic|1=phase1-auth-flags=32}} または {{ic|1=phase1-auth-flags=64}} を設定することで、その接続のみを変更できます。これは GUI からは無理かもしれませんが、&#039;&#039;nmcli&#039;&#039; でなら可能です。&lt;br /&gt;
&lt;br /&gt;
まず、以下のコマンドの出力から、問題のある Wi-Fi 接続の名前を手に入れてください:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection show&lt;br /&gt;
&lt;br /&gt;
この接続では TLS 1.0 が使用され、接続名は &#039;&#039;Example Wi-Fi&#039;&#039; であるとします。以下のように &#039;&#039;nmcli&#039;&#039; を使用してください:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection modify &#039;Example Wi-Fi&#039; 802-1x.phase1-auth-flags 32&lt;br /&gt;
&lt;br /&gt;
TLS 1.1 接続に対しては、代わりに &amp;quot;64&amp;quot; を使用してください:&lt;br /&gt;
&lt;br /&gt;
 $ nmcli connection modify &#039;Example Wi-Fi&#039; 802-1x.phase1-auth-flags 64&lt;br /&gt;
&lt;br /&gt;
{{Note|1=ここで入力した数字は、2 の &#039;&#039;&#039;n&#039;&#039;&#039; 乗です。ただし、&#039;&#039;&#039;n&#039;&#039;&#039; はネットワーク認証ビットオクテットのインデックス (右から左に数えます) です。5番目のビットを1にすると TLS 1.0 が有効になり (&#039;&#039;&#039;[log(2) 32]&#039;&#039;&#039;)、6番目のビットを1にすると TLS 1.1 が有効になります (&#039;&#039;&#039;[log(2) 64]&#039;&#039;&#039;)。}}&lt;br /&gt;
&lt;br /&gt;
変更は即座に {{ic|/etc/NetworkManager/system-connections/Example Wi-Fi.nmconnection}} に反映されるはずです。&lt;br /&gt;
&lt;br /&gt;
最後に、{{ic|NetworkManager.service}} を[[再起動]]して、新しい OpenSSL の設定を有効化してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://blogs.gnome.org/dcbw/2015/02/16/networkmanager-for-administrators-part-1/ NetworkManager for Administrators Part 1]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|NetworkManager|2026-05-04|872001}}&lt;/div&gt;</summary>
		<author><name>Relz</name></author>
	</entry>
</feed>