Bluetooth pairing in linux

Bluetooth pairing in linux

Using Bluetooth in a Debian system

Bluetooth is a standard providing short-range wireless communication between devices, generally for linking an audio device, mouse, keyboard, phone, etc. to your PC. This article documents how to configure a Bluetooth adapter with Debian and pair it with a device. Bluetooth audio is separately documented on the BluetoothUser/a2dp page.

Information for developers, related to the internal packaging of Bluetooth within Debian, can be found on the Bluetooth page.

  1. Introduction
  2. Preparation
  3. Pairing
    1. Pairing using a GUI tool
    2. Pairing using CLI
    3. Using a Bluetooth mouse
    1. General pairing issues
    2. Helpful Commands
    3. Helpful Configuration Files
    4. KDE Issues
    5. GNOME topics
    6. Can’t reconnect after sleep
    7. Audio device issues (With pairing, quality, codec selection, etc.)
    8. Bluetooth Device is disabled
    1. External links

    Introduction

    We assume you have a Bluetooth adapter in your computer and a Bluetooth device (such as a mobile phone or PDA). This documents describes what you need to do to use Bluetooth to communicate with other Bluetooth devices.

    • exchange data with devices, such as sending music or videos to/from your phone
    • use a mobile phone to give your computer mobile internet access
    • use Bluetooth peripherals with your computer, such as a Bluetooth wireless mouse

    See the links below for details.

    Preparation

    Install Bluetooth support (package bluetooth) :

    Read /usr/share/doc/bluez/README.Debian.gz to get some understanding of what’s going on.

    Make sure the Bluetooth daemon is running. If it’s not running, start it.

    # service bluetooth status bluetooth is running

    Pairing

    For security reasons, Bluetooth devices will only talk to each other if they have been «introduced» first (a bit like in real life :-)). This is referred to as Pairing.

    Note that pairing is usually only required the first time two devices interact. Afterwards, they will remember each other, and no exchange of PINs is necessary. This will however depend on the devices involved (on some devices this may be configurable).

    To pair devices, you need a passkey-agent. Options are:

    Pairing using a GUI tool

    Log out of your desktop session and log back in — this is required for the pairing pop-up in the next step to appear correctly.

    On your Bluetooth device you can now try to pair. On the device you need to choose something like the «setup», «connect» or «Bluetooth» menu and then search for Bluetooth devices. You should find your Debian system, called something like debian-0, where debian is the hostname of your Debian system. On your device, select the Debian system. The device will then ask for a PIN, you can make one up, (choose four digits, say 2309 ).

    On your computer you will get a pop-up information balloon asking for the PIN, something like Pairing request from Phone (xx:xx:xx:xx:xx:xx) where Phone is the name of your phone and xx:xx:xx:xx:xx:xx is its MAC address.

    Click on the information balloon.

    Another window will pop-up. It asks for the PIN, enter the one you just made up. (e.g. 2309 ) and press [Enter].

    Your phone sees that the PIN matches and shows it on its display.

    Both devices are now paired.

    Pairing using CLI

    If you do not want to or cannot use Gnome or KDE, you can also use bluetooth-agent or bluetoothctl for the pairing.

    Using bluetooth-agent

    Bluetooth-agent is a part of package bluez, so it should already be available if Bluetooth has been configured on your system.

    Just start bluetooth-agent (as root), giving an arbitrary PIN, such as 4835:

    Then, as described above, choose something like the «setup», «connect» or «Bluetooth» menu on the device to be paired, and search for Bluetooth devices. Select your computer once found; the device should prompt you for a PIN. Now enter the PIN you gave to bluetooth-agent, and pairing is completed.

    Note: Instead of initiating the pairing process from the phone, you can also initiate it from the computer. Start bluetoogh-agent as explained above, then run a command that will try to connect to the phone, e.g.

    where is your phone’s bluetooth address, as shown by hcitool scan (note that this will only work if the phone is discoverable, though the computer need not be). This will force a connection from computer to phone, which should cause the phone to ask you to confirm the connection attempt by prompting for a PIN. Enter the pin you used with bluetooth-agent.

    Using bluetoothctl

    If bluetooth-agent is not available, try bluetoothctl:

    • Turn the power to the controller on by entering «power on». It is off by default.
    • Enter «devices» to get the MAC Address of the device with which to pair.
    • Enter device discovery mode with «scan on» command if device is not yet on the list.
    • Turn the agent on with «agent on».
    • Enter «pair MAC Address» to do the pairing (tab completion works).
    • If using a device without a PIN, one may need to manually trust the device before it can reconnect successfully. Enter «trust MAC Address» to do so.
    • Finally, use «connect MAC address» to establish a connection.

    Using a Bluetooth mouse

    To use a Bluetooth mouse, first the support for Bluetooth must be installed on the system. See above.

    If your machine has a graphical environment with a GUI for pairing Bluetooth devices, chances are you can discover and pair your device easily from there. See above how to pair using a GUI tool.

    If that does not succeed or you need to use the command line you can try running

    to get the bluetooth MAC address of the mouse.

    An initial connection can be done with

    where is the MAC address obtained with the previous command.

    To enable further automatic reconnections (e.g. on reboot), you need to run

    /usr/share/doc/bluez/examples/test-device trusted

    to mark the device as trusted.

    Troubleshooting

    General pairing issues

    In order for the pairing to work as described above, your computer’s bluetooth interfaces must be discoverable. A bluetooth dongle may start off in hidden mode (bug report here)

    # dbus-send --system --dest=org.bluez /org/bluez/hci0 org.bluez.Adapter.SetMode string:discoverable

    Then hciconfig should show the flags ISCAN PSCAN, indicating bluetooth is discoverable (i.e. can be scanned). After you finished pairing, it’s best to make your computer hidden again:

    # dbus-send --system --dest=org.bluez /org/bluez/hci0 org.bluez.Adapter.SetMode string:off

    Helpful Commands

    Display your Bluetooth device (for proof that it was installed properly)

    Search for remote Bluetooth devices

    Restart the Bluetooth services

    sudo service bluetooth restart

    Force connection to device

    Helpful Configuration Files

    /etc/default/bluetooth — Default HID bluez setting — enable for mice and keyboards

    /etc/bluetooth/hcid.conf — HCI bluez settings — configure static device information

    device 00:1E:52:FB:68:55 name "Apple Wireless Keyboard"; auth enable; encrypt enable;>

    KDE Issues

    This section is very outdated and needs a full rewrite.

    KDE now uses BlueDevil instead of KDEBluetooth. The programs listed below no longer exist. Devices can be paired with BlueDevil by running bluedevil-wizard in your terminal.

    Since the PIN should be implemented on a user level, we need to make some changes to /etc/bluetooth/hcid.conf

    and add the following line directly below it (Note: kdebluetooth includes the program kbluepin):

    # passkey "2309"; pin_helper /usr/bin/bluez-pin;

    KDE also expects a file /etc/bluetooth/link_key to be present.

    # touch /etc/bluetooth/link_key # chmod 644 /etc/bluetooth/link_key # service bluetooth restart

    In KDE, run kbluetoothd. Click on the Bluetooth icon in the system tray, this loads Konqueror with the Bluetooth:// URL. You should be able to see your device and do some simple file transfers by clicking on the device and choosing the proper transfer protocol.

    Scanning for the PC from your device should bring up a window in KDE that asks you for a PIN. Now you can send files to your PC (KDE should bring up a program to handle this).

    GNOME topics

Оцените статью
Adblock
detector