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

Ez a cikk a Bluetooth vezérlők, és Bluetooth eszközök beállítását, valamint azok használatát ismerteti.

Előfeltételek

Ez a cikk feltételezi, hogy az udev és az USB korábban be lett állítva.

Telepítés

Kernel

A legtöbb esetben elegendő az RFCOMM ( CONFIG_BT_RFCOMM ), HIDP ( CONFIG_BT_HIDP ), HCI USB ( CONFIG_BT_HCIBTUSB ) és/vagy HCI UART ( CONFIG_BT_HCIUART ) engedélyezése. A HID beviteli eszközök felhasználói térben lévő I/O illesztőprogramját ( CONFIG_UHID ) engedélyezni kell a Bluetooth billentyűzetek és egerek számára.

KERNEL Bluetooth támogatottság bekapcsolása
[*] 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 bus support --->
            <*>   User-space I/O driver support for HID subsystem
Important
Előfordulhat, hogy a kernelképfájl nem tudja inicializálni az RFCOMM/BNEP-et amikor bele van fordítva magába a kernelképfájlba. A bluetooth szolgáltatás rendszernaplója ebben az esetben megemlíti az RFCOMM/BNEP támogatás hiányát. Ez például megszakíthatja a HSP/HFP headset profil inicializálását. Tehát ha a dmesg nem mond semmit az RFCOMM-ról, akkor jobb, ha Ön különálló kernelmodulfájl formájában fordítja újra a forráskódból, és nem építi bele közvetlenül a kernelképfájlba azt.

Firmware

A legtöbb Bluetooth vezérlőnek firmware kell a működéséhez. Ha a vezérlőt a Linux támogatja, akkor a dmesg általában jelzi, ha firmware használatára van szükség. A sys-kernel/linux-firmware szoftvercsomagnak biztosítania kell a szükséges firmware-t, bár egyes eszközöknek szüksége lehet más szoftvercsomagban elérhető vagy csak a gyártó által biztosított firmware használatára.

root # emerge --ask --noreplace sys-kernel/linux-firmware

USE jelölőzászlók

A BlueZ egy Bluetooth protokoll stack megvalósítás a Linux számára, és a net-wireless/bluez szoftvercsomag tartalmazza.

USE flags for net-wireless/bluez Bluetooth Tools and System Daemons for Linux

+mesh Add support for Bluetooth Mesh control application and advertising bearer.
+obex Enable OBEX transfer support
+readline Enable support for libreadline, a GNU line-editing library that almost everyone wants
+udev Enable virtual/udev integration (device discovery, power and storage device support, etc)
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.
man Build and install man pages
midi Enable MIDI support
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

A Bluetooth támogatás az egész operációs rendszerben engedélyezhető a USE változó bluetooth értékre állításával:

FILE /etc/portage/make.conf
USE="bluetooth"

Emerge

Ha a USE változó bluetooth értékre volt állítva, akkor az operációs rendszert frissíteni kell:

root # emerge --ask --changed-use --deep @world

BlueZ telepítése

root # emerge --ask --noreplace net-wireless/bluez

Beállítás

Jogosultságok

A Bluetooth eszközök jogosultságait a D-Bus automatikusan kezeli, és alapértelmezés szerint minden felhasználónak hozzáférést biztosít.

Szolgáltatások

OpenRC

Bluetooth elindítása azonnal:

root # rc-service bluetooth start

Annak érdekében, hogy a Bluetooth automatikusan elinduljon amikor az operációs rendszer elindul, futtassa a következő parancsot:

root # rc-update add bluetooth default

systemd

Bluetooth elindítása azonnal:

root # systemctl start bluetooth

Annak érdekében, hogy a Bluetooth automatikusan elinduljon amikor az operációs rendszer elindul, futtassa a következő parancsot:

root # systemctl enable bluetooth

Akkumulátorjelentés engedélyezése

Note
A experimental USE jelölőzászlót engedélyezni kell a net-wireless/bluez programcsomagban.
Warning
A bluez kísérleti módjának a használata megakadályozhatja az egyes Bluetooth-mikrofonok automatikus csatlakozását. [1]

A Bluez rendelkezik egy olyan funkcióval, amely jelentheti az eszköz akkumulátorának töltöttségi szintjét az upower felé. Ez a funkció jelenleg kísérleti jellegű, és nem stabil. A kísérleti mód engedélyezése:

FILE /etc/bluetooth/main.conf
[General]

Experimental=true

Indítsa újra a bluetooth szolgáltatást annak érdekében, hogy a beállításmódosítások alkalmazva legyenek:

root # rc-service bluetooth restart

Most az upower-nek tudnia kell minden olyan eszköz akkumulátor töltöttségi szintjét, amely támogatja a saját akkumulátorszint küldését.

Használat

Vezérlőbeállítás

Vezérlő információjának megjelenítése:

Note
A hciconfig és más segédszoftverek kizárólag akkor érhetőek el amikor a net-wireless/bluez szoftvercsomag a deprecated USE jelölőzászlóval telepítve van.
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)

Ahol a hci0 a vezérlő neve, az UP (3. sor) pedig azt jelzi, hogy a vezérlő engedélyezve van.

Ha a hciconfig azt jelzi, hogy a vezérlő le van tiltva (3. sor, DOWN ), akkor engedélyezze a vezérlőt:

root # hciconfig hci0 up
Important
Amikor megpróbálja engedélyezni a vezérlőt, a következő üzenet jelenhet meg: "Nem lehet elindítani a hci0 eszközt: A működés nem lehetséges az RF-kill miatt".

Ebben az esetben kérdezze le a Bluetooth rádióadó állapotát az rfkill parancs segítségével:

root # rfkill list bluetooth
0: hci0: Bluetooth
        Soft blocked: no
        Hard blocked: no

Az rfkill parancsot a sys-apps/util-linux szoftvercsomag 2.31 (és attól nagyobb) verziója tartalmazza. A nem karbantartott net-wireless/rfkill szoftvercsomagból is telepíthető.

Note
Ha a Bluetooth ki van kapcsolva a(z) BIOS/UEFI menüben, akkor az rfkill parancs helytelenül Hard blocked: no állapotban lévőként fogja kilistázni az eszközt.

Ha az rfkill azt mutatja, hogy a vezérlő a Soft blocked: yes blokkolt állapotában van, akkor oldja fel a vezérlőt:

root # rfkill unblock bluetooth

Ha az rfkill azt jelzi, hogy a vezérlő a Hard blocked: yes módon van blokkolva, akkor a Bluetooth vezérlő blokkolását a számítógépen lévő kézzel fogható fizikai kapcsolóval, vagy a billentyűzeten lévő funkcióbillentyű (kombinációval) oldja fel.

A Bluetooth vezérlők automatikusan engedélyezhetőek az /etc/bluetooth/main.conf fájl AutoEnable=true beállításával:

FILE /etc/bluetooth/main.conf
[Policy]
AutoEnable=true

Egyes esetekben a Bluetooth vezérlőket soft blokkolhatták az udev energiagazdálkodási eszközei. Győződjön meg arról, hogy a state értéke 1 a megfelelő szabályozó fájlban, vagy távolítsa el teljesen a következő sort:

FILE /etc/udev/rules.d/10-local-powersave.rules
SUBSYSTEM=="rfkill", ATTR{type}=="bluetooth", ATTR{state}="1"

Eszközpárosítás

A Bluetooth eszközöket használat előtt párosítani kell egy Bluetooth vezérlővel. Ez úgy történik, hogy egy interakciós ügynökön keresztül mindkét eszközön megad egy PIN kódot (vagy más kódot). Bizonyos eszközök, például fejhallgatók nem teszik lehetővé tetszőleges PIN kód megadását. Ezek az eszközök statikus PIN kódot használnak, ami általában 0000, 1111, 1234 vagy 9999. Vannak olyan eszközök is (például a Sony BD Remote Control ), amelyekhez nincs szükség PIN kód bevitelére, és a PIN kódok megadásának kísérlete, amikor a rendszer kéri, hibához vezethet. Az ilyen eszközökkel a párosítás kihagyható.

Ez a cikk kizárólag az eszközök párosítására vonatkozik a bluetoothctl parancs segítségével, amely a net-wireless/bluez szoftvercsomag által biztosított parancssori interakciós ügynök. Ha Ön grafikus felhasználói felülettel rendelkező asztali környezetet használ, akkor az eszköz párosítása elvégezhető egy grafikus interakciós ügynök segítségével. KDE környezethez a kde-plasma/bluedevil , a GNOME környezethez a net-wireless/gnome-bluetooth , a GTK környezethez pedig a net-wireless/blueman szoftvercsomag használata a javasolt eljárás.

Note
A korábban párosított eszközöket újra párosítani kell a BlueZ 4-ről való frissítéskor.

A bluetoothctl indítása:

user $ bluetoothctl

Az elérhető vezérlők felsorolása:

[bluetooth]# list

Információ megjelenítése a vezérlőről:

[bluetooth]# show controller_mac_address

A vezérlő beállítása alapértelmezettként:

[bluetooth]# select controller_mac_address

A vezérlő bekapcsolása:

[bluetooth]# power on

Az ügynök engedélyezése, és beállítása alapértelmezettként:

[bluetooth]# agent on
[bluetooth]# default-agent

Tegye a vezérlőt felderíthetővé (átmenetileg 3 percre) és párosíthatóvá az Ön környezetében megtalálható másik eszközök számára:

[bluetooth]# discoverable on
[bluetooth]# pairable on

Az környezetünkben lévő másik eszközök keresése:

[bluetooth]# scan on

Állítsa a készüléket párosítási módba. Ez a művelet általában egy gomb vagy gombkombináció megnyomását jelenti, amely általában néhány másodpercnyi lenyomásig tart.

Utána, derítse fel az eszköz MAC címét:

[bluetooth]# devices

Párosítás a másik készülékkel:

[bluetooth]# pair device_mac_address

Ha az operációs rendszer kéri Önt, akkor írja be a PIN kódot:

[agent] PIN code: ####

Abban az esetben, ha a PIN kód nincs kérve, de szükség van rá, akkor ezt a parancsot hozzá kell adni az eszközzel való párosítás előtt (tekintse meg ezt a bejegyzést ):

[bluetooth]# agent NoInputNoOutput

Kérésre engedélyezze a szolgáltatás jogosultságát:

[agent] Authorize service service_uuid (yes/no): yes

Megbízni a készülékben:

[bluetooth]# trust device_mac_address

Csatlakozás az eszközhöz:

[bluetooth]# connect device_mac_address

Információ megjelenítése a készülékről:

[bluetooth]# info device_mac_address

Az eszköz most párosítva lett:

[bluetooth]# quit

hciconfig

Open and initialize HCI device:
root # hciconfig -a <hci0> up
Close HCI device:
root # hciconfig -a <hci0> down
Reset HCI device:
root # hciconfig -a <hci0> reset
Reset statistic counters:
root # hciconfig -a <hci0> rstat
Enable Authentication:
root # hciconfig -a <hci0> auth
Disable Authentication:
root # hciconfig -a <hci0> noauth
Enable Encryption:
root # hciconfig -a <hci0> encrypt
Disable Encryption:
root # hciconfig -a <hci0> noencrypt
Enable Page and Inquiry scan:
root # hciconfig -a <hci0> piscan
Disable scan:
root # hciconfig -a <hci0> noscan
Enable Inquiry scan:
root # hciconfig -a <hci0> iscan
Enable Page scan:
root # hciconfig -a <hci0> pscan
Get/Set default packet type:
root # hciconfig -a <hci0> ptype [type]
Get/Set default link mode:
root # hciconfig -a <hci0> lm [mode]
Get/Set default link policy:
root # hciconfig -a <hci0> lp [policy]
Get/Set local name:
root # hciconfig -a <hci0> name [name]
Get/Set class of device:
root # hciconfig -a <hci0> class [class]
Get/Set voice setting:
root # hciconfig -a <hci0> voice [voice]
Get/Set inquiry access code:
root # hciconfig -a <hci0> iac [iac]
Get/Set inquiry transmit power level:
root # hciconfig -a <hci0> nqtpl [level]
Get/Set inquiry mode:
root # hciconfig -a <hci0> inqmode [mode]
Get/Set inquiry data:
root # hciconfig -a <hci0> inqdata [data]
Get/Set inquiry scan type:
root # hciconfig -a <hci0> inqtype [type]
Get/Set inquiry scan window and interval:
root # hciconfig -a <hci0> inqparms [win:int]
Get/Set page scan window and interval:
root # hciconfig -a <hci0> pageparms [win:int]
Get/Set page timeout:
root # hciconfig -a <hci0> ageto [to]
Get/Set AFH mode:
root # hciconfig -a <hci0> afhmode [mode]
Get/Set Simple Pairing Mode:
root # hciconfig -a <hci0> sspmode [mode]
Set ACL MTU and number of packets:
root # hciconfig -a <hci0> clmtu <mtu:pkt>
Set SCO MTU and number of packets:
root # hciconfig -a <hci0> scomtu <mtu:pkt>
Delete link key from the device:
root # hciconfig -a <hci0> delkey <bdaddr>
Get local OOB data:
root # hciconfig -a <hci0> oobdata
Display supported commands:
root # hciconfig -a <hci0> commands
Display device features:
root # hciconfig -a <hci0> features
Display version information:
root # hciconfig -a <hci0> version
Display revision information:
root # hciconfig -a <hci0> revision
Add a device to the blacklist:
root # hciconfig -a <hci0> block <bdaddr>
Remove a device from the blacklist:
root # hciconfig -a <hci0> unblock <bdaddr>
Set LE Random Address:
root # hciconfig -a <hci0> lerandaddr <bdaddr>
Enable LE advertising:
root # hciconfig -a <hci0> leadv [type]
Show all commands device has support for:
root # hciconfig get commands

Bluetooth kikapcsolása

A Bluetooth futás közbeni kikapcsolásához futtassa a következő parancsot:

root # rfkill block bluetooth

A Bluetooth automatikus letiltásához minden rendszerindításkor válassza a következő lehetőségek egyikét:

Az udev használata arra, hogy a Bluetooth eszközt letiltsa

Az UDEV használatakor csak telepítse a következő szabályt, amely letiltja a Bluetooth eszközt:

FILE /etc/udev/rules.d/80-disable-bluetooth.rules
SUBSYSTEM=="rfkill", ATTR{type}=="bluetooth", ATTR{state}="0"

OpenRC használata arra, hogy kikapcsolja a Bluetooth eszközt

A sys-apps/openrc használatakor telepítse a következő szkriptet a helyi szolgáltatás számára, és győződjön meg arról, hogy végrehajtható:

FILE /etc/local.d/disable-bluetooth.start
#!/bin/sh
rfkill block bluetooth
root # chmod o+x /etc/local.d/disable-bluetooth.start

A Bluetooth kikapcsolása kernel szinten

Ha a binárisan futtatható kernelképfájl moduláris Bluetooth-támogatással rendelkezik, akkor tiltsa le a Bluetooth-kernelmodulfájlok memóriába történő betöltődését:

FILE /etc/modprobe.d/blacklist-bluetooth.conf
blacklist bnep
blacklist bluetooth
blacklist btusb

Hibaelhárítás

TLP és laptop_mode

Ha a laptop-mode-tools , vagy a TLP telepítve van, akkor győződjön meg róla, hogy nem tiltja-e le az a Bluetooth eszközt az energiatakarékosság érdekében.

XBOX ONE kontroller párosítása

Ismert probléma, hogy a Micro$oft XBOX ONE vezeték nélküli kontrollerek a legtöbb Linux operációs rendszeren nem hajlandóak az eszközpárosításra. A probléma megoldásához az ERTM-et le kell tiltani.

A manuális úton történő letiltás érdekében futtassa a következő parancsot:

root # echo 'Y' > /sys/module/bluetooth/parameters/disable_ertm

Ez a megoldás kizárólag az operációs rendszer újraindításáig tiltja le az ERTM-et. A végleges letiltás érdekében telepítse az xpadneo kernelmodult tartalmazó szoftvercsomagot a számítógépre.

root # emerge --ask games-util/xpadneo

A legtöbb esetben ez automatikusan megoldja a problémát. Ha a probléma továbbra is fennáll, akkor adja hozzá ezt a sort manuálisan az xpadneo beállításfájlhoz:

FILE /etc/modprobe.d/xpadneo.conf
options bluetooth disable_ertm=Y

A notebook számítógépnek Synopsys DesignWare vezérlője van

Ehhez a vezérlőhöz a Bluetooth támogatásához a kernel beállításában [2] is szüksége van a következő beállításokra:

KERNEL
Device Drivers  --->
    Character devices  --->
        Serial drivers  --->
            [*] 8250/16550 and compatible serial support
            [*] Support for Synopsys DesignWare 8250 quirks

Firmware-problémák megoldása

Előfordul, hogy a bluetooth adapterek firmware-je olyan állapotba kerül, hogy nem tud összepárosulni egy bizonyos (vagy az összes) bluetooth eszközzel. Az adapter gyári állapotba történő visszaállítása (reset-elése) megoldhatja az ilyen problémákat.

Beépített bluetooth adapterrel rendelkező laptop esetén ez a következőképpen érhető el:

  • Menjen bel a laptop firmware beállításaiba (BIOS), és tiltsa le a beépített adaptert.
  • Mentse el a beállításokat és indítsa újra a laptopot.
  • Menjen be másodszor is a firmware beállításaiba (BIOS), és engedélyezze újra a bluetooth adaptert.
  • Ismét mentse el a beállításokat és indítsa újra a számítógépet.
  • Most a rendszerben próbálja meg párosítani az eszközt.

További olvasnivaló a témában

  • Bluetooth headset — a Bluetooth headset hangeszközök beállítását írja le a Gentoo Linux operációs rendszeren.
  • Bluetooth input devices — a Bluetooth beviteli eszközök, például a bluetooth egér beállítását írja le Linux rendszeren.
  • Bluetooth Network Aggregation Point — egy Bluetooth hálózati aggregációs pont (Bluetooth Network Aggregation Point (NAP)) beállítását tárgyalja a Gentoo Linux rendszeren.
  • Broadcom Bluetooth — a Broadcom Bluetooth 4.x eszközök beállításáról szól, amelyek többnyire BCM20702, BCM4354 és BCM4356 lapkakészleteken (angolul chipset) alapulnak.

Hivatkozások