Bluetooth
Dieser Eintrag beschreibt die Konfiguration und Anwendung von Bluetooth Controllern und Geräten.
Voraussetzungen
Dieser Artikel erwartet, dass udev und USB bereits eingestellt wurden.
Installation
Kernel
Für den Durchschnitt sollte es reichen RFCOMM (CONFIG_RFCOMM), HIDP (CONFIG_BT_HIDP), HCI USB (CONFIG_BT_HCIBTUSB) und oder HCI UART (CONFIG_BT_HCIUART) einzuschalten. Der User-space Ein-/Ausgabe Driver für HID Eingabegeräte (CONFIG_UHID) sollte für Bluetooth Tastaturen und Mäuse eingeschaltet werden.
[*] Networking support ---> <M> Bluetooth subsystem support ---> [*] Bluetooth Classic (BR/EDR) features <*> RFCOMM protocol support [ ] RFCOMM TTY support < > BNEP protocol support [ ] Multicast filter support [ ] Protocol filter support <*> HIDP protocol support [*] Bluetooth High Speed (HS) features [*] Bluetooth Low Energy (LE) features Bluetooth device drivers ---> <M> HCI USB driver <M> HCI UART driver <*> RF switch subsystem support ---> Device Drivers ---> HID support ---> <*> User-space I/O driver support for HID subsystem
Firmware
Die meisten Bluetooth Controller brauchen Firmware um zu funktionieren. Wenn der Controller von Linux unterstützt wird, kann dmesg ein Indikator sein, dass Firmware eine Voraussetzung ist. Das sys-kernel/linux-firmware Paket sollte die nötige Firmware zur Verfügung stellen, obwohl manche Geräte Firmware benötigen, die nur der Hersteller selbst zur Verfügung stellt.
root #
emerge --ask --noreplace sys-kernel/linux-firmware
USE-Flags
BlueZ ist eine Implementation der Bluetooth Protokolle für Linux. Es wird vom net-wireless/bluez Paket bereit gestellt.
USE flags for net-wireless/bluez Bluetooth Tools and System Daemons for Linux
btpclient
|
Enable BTP client |
cups
|
Add support for CUPS (Common Unix Printing System) |
debug
|
Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces |
deprecated
|
Build deprecated plugins |
doc
|
Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally |
experimental
|
Build experimental plugins |
extra-tools
|
Install tools that upstream doesn't install on purpose by default. All this tools shouldn't be used. Then, please notify upstream about you still need them to let them know the situation. |
mesh
|
Add support for Bluetooth Mesh control application and advertising bearer. |
midi
|
Enable MIDI support |
obex
|
Enable OBEX transfer support |
readline
|
Enable support for libreadline, a GNU line-editing library that almost everyone wants |
selinux
|
!!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur |
systemd
|
Enable use of systemd-specific libraries and features like socket activation or session tracking |
test
|
Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently) |
test-programs
|
Install tools for testing of various Bluetooth functions |
udev
|
Enable virtual/udev integration (device discovery, power and storage device support, etc) |
Bluetooth Unterstützung kann Systemweit mit dem beschreiben der USE Variable zu bluetooth
eingeschaltet werden:
/etc/portage/make.conf
USE="bluetooth"
Emerge
Das System muss aktualisiert werden, wenn die USE Variable modifiziert wird:
root #
emerge --ask --changed-use --deep @world
Installiere BlueZ:
root #
emerge --ask --noreplace net-wireless/bluez
Konfiguration
Rechte
Die Rechte der Bluetooth Geräte erfolgt automatisch durch D-Bus. Alle Nutzer haben im Normalzustand Zugriff.
Dienste
OpenRC
Starte Bluetooth:
root #
rc-service bluetooth start
Starte Bluetooth automatisch:
root #
rc-update add bluetooth default
systemd
Starte Bluetooth:
root #
systemctl start bluetooth
Starte Bluetooth automatisch:
root #
systemctl enable bluetooth
Anwendung
Controller Einrichtung
Zeige die Spezifikationen des Controllers:
hciconfig und andere Werkzeuge sind nur mit der
deprecated
USE Markierung für das net-wireless/bluez Paket verfügbar.root #
hciconfig -a
hci0: Type: BR/EDR Bus: USB BD Address: 00:02:72:2F:A9:33 ACL MTU: 1021:8 SCO MTU: 64:1 UP RUNNING PSCAN RX bytes:1166 acl:0 sco:0 events:43 errors:0 TX bytes:960 acl:0 sco:0 commands:43 errors:0 Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87 Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 Link policy: RSWITCH SNIFF Link mode: SLAVE ACCEPT Name: 'BlueZ 5.21' Class: 0x000104 Service Classes: Unspecified Device Class: Computer, Desktop workstation HCI Version: 4.0 (0x6) Revision: 0x1000 LMP Version: 4.0 (0x6) Subversion: 0x220e Manufacturer: Broadcom Corporation (15)
hci0
ist hier der Name des Controllers. UP
(3te Zeile) zeigt, dass der Controller aktiv ist.
Schalte den Controller ein, wenn hciconfig indiziert, dass der Controller inaktiv ist (mit DOWN
in der 3ten Zeile):
root #
hciconfig hci0 up
Beim einschalten des Controllers kann die folgende Nachricht ausgegeben werden: Can't init device hci0: Operation not possible due to RF-kill
Nutze in diesem Fall rfkill um den Zustand des Bluetooth Senders zu erfahren:
root #
rfkill list bluetooth
0: hci0: Bluetooth Soft blocked: no Hard blocked: no
rfkill wird von >=sys-apps/util-linux-2.31 zur Verfügung gestellt. Es kann auch vom ungepflegten net-wireless/rfkill Paket installiert wird.
Wenn Bluetooth im BIOS/UEFI blockiert oder ausgeschaltet ist wird rfkill den Controller eventuell inkorrekt als
Hard blocked: no
anzeigen.Schalte den Controller frei, wenn rfkill ihn als Soft blocked: yes
und somit als blockiert erkennt:
root #
rfkill unblock bluetooth
Wenn rfkill den Controller als Hard blocked: yes
erkennt, muss er mit einem physischen Schalter oder mit einer Funktionstaste auf der Tastatur.
Bluetooth Controller können automatisch mit dem ändern der Einstellung AutoEnable=true
in /etc/bluetooth/main.conf eingeschaltet werden:
/etc/bluetooth/main.conf
[Policy] AutoEnable=true
In machen Fällen können Bluetooth Controller von den Energieverwaltungswerkzeugen udevs soft-geblockt worden sein. Überprüfe, dass state in der verantwortlichen Regeldatei auf 1
gesetzt ist. Alternativ kann die Regel auch ganz entfernt werden:
/etc/udev/rules.d/10-local-powersave.rules
SUBSYSTEM=="rfkill", ATTR{type}=="bluetooth", ATTR{state}="1"
Geräte koppeln
Bluetooth Geräte müssen erst mit dem Controller gekoppelt worden sein, um genutzt werden zu können. Auf beiden Geräten wird eine PIN (oder eine andere Codeform) über einen Interaktionsagenten eingegeben. Auf manchen Geräten wie z. B. Headsets ist es nicht möglich einen zufälligen Code einzugeben. Solche Geräte haben einen fest vorgelegten Code, welcher meistens 0000,1111,1234 oder 9999 ist. Außerdem gibt es Geräte die keinen Code benötigen (z. B. Sony BD Remote Control). Wenn versucht wird, bei solchen Geräten einen Code zu benutzen, führt es zu einem Fehler. Koppeln ist bei diesen Geräten nicht nötig.
Dieser Artikel deckt nur das Koppeln mit Hilfe von bluetoothctl ab, welches ein Kommandozeilen Werkzeug ist. Wenn eine grafische Desktop Umgebung genutzt wird, kann das Koppeln mit einem grafischen Agenten durchgeführt werden. Für KDE Nutzer gibt es kde-plasma/bluedevil, für GNOME Nutzer net-wireless/gnome-bluetooth und für GTK Nutzer net-wireless/blueman oder net-wireless/blueberry.
Geräte, die mit BlueZ 4. gekoppelt wurden, müssen neu gekoppelt werden.
Starte bluetoothctl:
user $
bluetoothctl
Liste die verfügbaren Controller auf:
[bluetooth]#
list
Zeige die Spezifikationen eines Controllers:
[bluetooth]#
show controller_mac_address
Setze den Standardcontroller:
[bluetooth]#
select controller_mac_address
Schalte den Controller ein:
[bluetooth]#
power on
Aktiviere den Agenten und setze ihn als Standard:
[bluetooth]#
agent on
[bluetooth]#
default-agent
Mache den Controller sichtbar (temporär für 3 Minuten) und kopplungsfähig:
[bluetooth]#
discoverable on
[bluetooth]#
pairable on
Suche nach Geräten:
[bluetooth]#
scan on
Versetze das Geräte in den Kopplungsmodus. Es muss meistens ein Knopf oder eine Kombination der eben genannten gedrückt werden. Dies dann üblicherweise auch über mehrere Sekunden.
Finde die MAC Adresse des Gerätes heraus:
[bluetooth]#
devices
Kopple das Gerät:
[bluetooth]#
pair device_mac_address
Gebe die PIN ein, wenn verlangt:
[agent]
PIN code: ####
Erlaube die Autorisierung des Dienstes wenn angefragt:
[agent]
Authorize service service_uuid (yes/no): yes
Vertraue dem Gerät:
[bluetooth]#
trust device_mac_address
Verbinde das Gerät mit dem System:
[bluetooth]#
connect device_mac_address
Gebe Informationen über das Gerät aus:
[bluetooth]#
info device_mac_address
Jetzt ist das Gerät gekoppelt:
[bluetooth]#
quit
Bluetooth ausschalten
Führe folgendes Kommando aus, um Bluetooth während es ausgeführt wird, zu beenden:
root #
rfkill block bluetooth
Um Bluetooth nicht automatisch bei jedem Bootvorgang zu starten, gibt es folgende Optionen:
Nutze udev, um Bluetooth zu deaktivieren
Bei der Nutzung udevs muss nur die folgende Regel installiert werden um Bluetooth auszuschalten:
/etc/udev/rules.d/80-disable-bluetooth.rules
SUBSYSTEM=="rfkill", ATTR{type}=="bluetooth", ATTR{state}="0"
Nutze OpenRC, um Bluetooth zu deaktivieren
Bei der Nutzung von sys-apps/openrc, installiere das folgende Script als "lokaler" Dienst und versichere, dass es ausführbar ist:
/etc/local.d/disable-bluetooth.start
#!/bin/sh rfkill block bluetooth
root #
chmod o+x /etc/local.d/disable-bluetooth.start
Bluetooth auf Kernel Ebene deaktivieren
Wenn der Kernel Bluetooth modular unterstützt, kann das laden der Module ausgeschaltet werden:
/etc/modprobe.d/blacklist-bluetooth.conf
blacklist bnep blacklist bluetooth blacklist btusb
Fehlerbehebung
TLP und laptop_mode
Überprüfe, dass Bluetooth nicht als Maßnahme des Energie Sparens ausgeschaltet ist, wenn laptop-mode-tools oder TLP installiert sind.
Siehe auch
- Bluetooth headset — describes the configuration of Bluetooth headsets within Gentoo Linux.
- Bluetooth input devices — describes the setup of Bluetooth input devices, for example a bluetooth mouse, on a Linux system.
- Bluetooth Network Aggregation Point — covers the setup of a Bluetooth Network Aggregation Point (NAP) on Gentoo Linux.
- Broadcom Bluetooth — details setup for Broadcom Bluetooth 4.x devices mostly based on BCM20702, BCM4354, and BCM4356 chipsets.