How to debug Bluetooth problems

From FedoraProject

(Difference between revisions)
Jump to: navigation, search
(Created page with "Bluetooth is a short range wireless protocol that is used to connect to various low bandwidth I/O devices (like keyboards, mice, headsets). Newer versions have a low-energy m...")
 
(Identifying Bluetooth Problems)
Line 6: Line 6:
  
 
=== Was the bluetooth hardware found? ===
 
=== Was the bluetooth hardware found? ===
 
A simple command to make sure the kernel found the bluetooth hardware and activated it
 
  
 
<ul>
 
<ul>
Line 32: Line 30:
 
<pre>$ hciconfig up </pre>
 
<pre>$ hciconfig up </pre>
 
</ul>
 
</ul>
 +
 +
=== Is the bluetoothd daemon running? ===
 +
 +
<ul>
 +
<li> Verify under systemd bluetooth is 'Active' and 'enabled'
 +
<pre>$ systemctl status bluetooth
 +
● bluetooth.service - Bluetooth service
 +
  Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
 +
  Active: active (running) since Wed 2017-10-04 16:07:40 EDT; 1 day 22h ago
 +
    Docs: man:bluetoothd(8)
 +
Main PID: 27427 (bluetoothd)
 +
  Status: "Running"
 +
    Tasks: 1 (limit: 4915)
 +
  CGroup: /system.slice/bluetooth.service
 +
          └─27427 /usr/libexec/bluetooth/bluetoothd
 +
</pre>
 +
<li> Verify obex is configured to run (to transfer files from phone)
 +
<pre>$ systemctl --global --user is-enabled obex
 +
enabled
 +
</pre>

Revision as of 18:52, 6 October 2017

Bluetooth is a short range wireless protocol that is used to connect to various low bandwidth I/O devices (like keyboards, mice, headsets). Newer versions have a low-energy mode with a slightly higher bandwidth and range.

The Bluetooth solution is composed of a userspace daemon, bluetoothd, that communicates through a management port in the kernel to the hardware drivers. Applications that want to communicate with the bluetoothd daemon do so over a d-bus api. This includes the various GNOME bluetooth applets.

Identifying Bluetooth Problems

Was the bluetooth hardware found?

  • Make sure bluetooth was found and enabled (note hci0: and 'UP RUNNING'):
    $ hciconfig
    hci0:	Type: Primary  Bus: USB
    	BD Address: xx:xx:xx:xx:xx:xx  ACL MTU: 1021:4  SCO MTU: 96:6
    	UP RUNNING PSCAN 
    	RX bytes:15047 acl:0 sco:0 events:2433 errors:0
    	TX bytes:599323 acl:0 sco:0 commands:2431 errors:0
    
  • If the command returns nothing (no hci: info), then there is a hardware issue
    $ lsusb -v | grep Bluetooth | grep DeviceProtocol
    bDeviceProtocol         1 Bluetooth
    
  • If the lsusb command returns nothing, there is no hardware, a dmesg output would be needed
  • If the lsusb commands returns Bluetooth, then check for attached driver
    $ lsusb -t | grep Wireless
        |__ Port 4: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M
        |__ Port 4: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M
    
  • If Driver is empty, lsusb -v output would be needed to add ids
  • If hciconfig shows output but not UP
    $ hciconfig up 

Is the bluetoothd daemon running?

  • Verify under systemd bluetooth is 'Active' and 'enabled'
    $ systemctl status bluetooth
    ● bluetooth.service - Bluetooth service
       Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
       Active: active (running) since Wed 2017-10-04 16:07:40 EDT; 1 day 22h ago
         Docs: man:bluetoothd(8)
     Main PID: 27427 (bluetoothd)
       Status: "Running"
        Tasks: 1 (limit: 4915)
       CGroup: /system.slice/bluetooth.service
               └─27427 /usr/libexec/bluetooth/bluetoothd
    
  • Verify obex is configured to run (to transfer files from phone)
    $ systemctl --global --user is-enabled obex
    enabled