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 konfigurációjá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űzetekhez é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 kernel nem tudja inicializálni az RFCOMM/BNEP-et beépítettként fordítva. 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, jobb, ha modulként fordítsd újra.

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-re van szükség. A sys-kernel/linux-firmware csomagnak biztosítania kell a szükséges firmware-t, bár egyes eszközöknek szüksége lehet más csomagban elérhető vagy csak a gyártó által biztosított firmware-re.

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

USE jelölőzászlók

A BlueZ a Bluetooth protokoll stack Linuxhoz való megvalósítása, és a net-wireless/bluez csomag biztosítja.

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 rendszerben engedélyezhető a USE változó bluetooth értékre állításával:

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

Emerge

A rendszert frissíteni kell, ha a USE változó bluetooth értékre volt állítva:

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

BlueZ telepítése

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

Konfiguráció

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:

root #rc-service bluetooth start

Bluetooth elindítása rendszerindítás alkalmával:

root #rc-update add bluetooth default

systemd

Bluetooth elindítása:

root #systemctl start bluetooth

Bluetooth elindítása rendszerindítás alkalmával:

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 a konfigurációs módosítások alkalmazásához:

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édprogramok csak akkor érhetők el, ha a net-wireless/bluez telepítve van a deprecated USE jelölőzászlóval.
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, a UP (3. sor) pedig azt jelzi, hogy a vezérlő engedélyezve van.

Engedélyezze a vezérlőt, ha a hciconfig azt jelzi, hogy (DOWN) (3. sor), vagyis hogy a vezérlő le van tiltva:

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 a rfkill paranccsal:

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

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

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

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

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ők 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, meghibásodáshoz vezet. Az ilyen eszközökkel a párosítás kihagyható.

Ez a cikk csak az eszközök párosítására vonatkozik a bluetoothctl paranccsal, amely a net-wireless/bluez csomag által biztosított parancssori interakciós ügynök. Ha Ön grafikus asztali környezetet használ, akkor az eszköz párosítása elvégezhető egy grafikus interakciós ügynökkel. 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 program használata a javasolt.

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 felfedezhetővé (átmenetileg 3 percre) és párosíthatóvá azt:

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

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

[bluetooth]#scan on

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

Fedezze 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

Írja be a PIN kódot, ha a rendszer kéri:

[agent]PIN code: ####

Abban az esetben, ha a PIN kódot nem kéri, 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áshoz, é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 kernel moduláris Bluetooth-támogatással rendelkezik (modulként lett betöltve, és nem lett belefordítva a kernelbe közvetlen), akkor tiltsa le a Bluetooth-modulok betölté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 az Micro$oft XBOX ONE vezeték nélküli vezérlők a legtöbb Linux rendszeren nem hajlandók a párosítást. A probléma megoldásához az ERTM-et le kell tiltani.

Manuális letiltás érdekében:

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

Ez csak a rendszer újraindításáig tiltja le az ERTM-et. A végleges letiltásához telepítse az xpadneo kernel modult.

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 konfigurációs fá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 konfigurációjá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 konfigurációját írja le a Gentoo Linux 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 — details setup for Broadcom Bluetooth 4.x devices mostly based on BCM20702, BCM4354, and BCM4356 chipsets.

Hivatkozások