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