Bluetooth
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.
[*] 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
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:
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
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:
[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:
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
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ő.
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:
[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:
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.
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:
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ó:
#!/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:
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:
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:
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.