Bluetooth

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Bluetooth and the translation is 100% complete.
Resources

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.

KERNEL Bluetooth Unterstützung einstellen
[*] 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 Marker

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:

DATEI /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:

Notiz
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
Wichtig
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.

Notiz
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:

DATEI /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:

DATEI /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.

Notiz
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:

DATEI /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:

DATEI /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:

DATEI /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