Difference between revisions of "Bluetooth"

From ArchWiki
Jump to: navigation, search
m (fix gap)
m (kbluetooth)
Line 43: Line 43:
 
=== kbluetooth ===
 
=== kbluetooth ===
  
The bluetooth tool fro KDE4 is kbluetooth and it is into [extra] repository. To install it type:
+
The bluetooth tool for KDE4 is kbluetooth and it is into [extra] repository. To install it type:
 
  # pacman -S kbluetooth
 
  # pacman -S kbluetooth
 
Make sure bluetooth daemon runs, then launch kbluetooth. You should get a bluetooth icon in system tray, from which you can configure kbluetooth, detect bluetooth devices, etc. by right-clicking the icon.
 
Make sure bluetooth daemon runs, then launch kbluetooth. You should get a bluetooth icon in system tray, from which you can configure kbluetooth, detect bluetooth devices, etc. by right-clicking the icon.

Revision as of 13:18, 22 March 2010

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Template:Article summary start Template:Article summary text Template:Article summary end

Installation

To use Bluetooth, the bluez package for the Linux Bluetooth protocol stack must be installed:

# pacman -S bluez

Once bluez is installed, both the dbus daemon and the bluetooth daemon must be running:

# /etc/rc.d/dbus start
# /etc/rc.d/bluetooth start

The dbus daemon is used to read settings and for pin pairing, while the bluetooth daemon is required for the Bluetooth protocol. It is important that dbus is started before bluetooth. If dbus was not running when bluetooth was started, then try (after dbus is running):

# /etc/rc.d/bluetooth restart

To start bluetooth automatically on boot, add bluetooth to your daemons array in rc.conf (after dbus):

DAEMONS=(... bluetooth)

Graphical Front-ends

The following packages allow for a graphical interface to customize Bluetooth.

Blueman

Blueman is a full featured Bluetooth manager written in GTK and, as such, is recommended for GNOME or Xfce. Install Blueman using the pacman tool:

# pacman -S blueman

Be sure that bluetooth daemon is running as described above and execute blueman-applet. To make the applet run on login add blueman-applet either under System -> Preferences -> Startup Applications (GNOME) or Xfce Menu -> Settings -> Session and Startup (Xfce).

gnome-bluetooth

gnome-bluetooth is a fork of the old bluez-gnome and is focused on integration with the GNOME desktop environment. First, install gnome-bluetooth:

# pacman -S gnome-bluetooth

Run bluetooth-applet for a nice Bluetooth applet. You should now be able to setup devices and send files by right-clicking the Bluetooth icon. To make the applet run on login, add it to System -> Preferences -> Startup Applications.

To add a Bluetooth entry to the SendTo menu in Thunar's file properties menu, see: http://thunar.xfce.org/pwiki/documentation/sendto_menu

kbluetooth

The bluetooth tool for KDE4 is kbluetooth and it is into [extra] repository. To install it type:

# pacman -S kbluetooth

Make sure bluetooth daemon runs, then launch kbluetooth. You should get a bluetooth icon in system tray, from which you can configure kbluetooth, detect bluetooth devices, etc. by right-clicking the icon.

Fluxbox, openbox, other wm

Of course you can still use the preceding applications even if GNOME, Xfce or KDE are not your desktop manager. This list should help you figuring out which application does what:

  • bluetooth-applet -- tray icon with access to settings, pairing wizard, management of known devices
  • /usr/lib/gnome-user-share/gnome-user-share -- needs to be running if you're about to receive files via obexBT from a paired/bonded device (if you're receiving an error during transmission and/or there's no file received add
 <policy user="your_user_id">
   <allow own="org.bluez"/>
   <allow send_destination="org.bluez"/>
   <allow send_interface="org.bluez.Agent"/>
 </policy>

into /etc/dbus-1/system.d/bluetooth.conf)

  • bluetooth-wizard -- for new devices to be paired
  • bluetooth-properties -- accessible also via bluetooth-applet icon
  • gnome-file-share-properties -- permissions on receiving files via bluetooth
  • bluez-sendto -- gui for sending files to a remote device


Manual Configuration

To configure bluetooth (bluez) manually, you will need to edit the configuration files in /etc/bluetooth. These are:

audio.conf
input.conf
main.conf
network.conf
rfcomm.conf

The default configuration should work for most purposes. Most configuration options are well-documented in these files, so customization is a simple matter of reading the option descriptions. For general options, start with main.conf.


Pairing

Note: This section might not be completely accurate. Thanks to Gattschardo for the pin solution

Many bluetooth devices require pairing. The exact procedure depends among other on the devices involved, and their input functionality. The procedure on a mobile may be as follows:

  • The computer sends a connect request to the mobile.
  • A pin, determined by the computer, is prompted for at the mobile
  • The same key must be re-entered at the computer.

To scan for external devices, do

 $> hcitool scan

To pair with a device without using the gnome-bluez package you will need to use a tool named bluez-simple-agent that comes with the bluez package. You need a few python related packages from the regular repositories to get this to run: dbus-python and pygobject. If you have everything ready you can start the script from the root user:

 $> bluez-simple-agent

If it all works, you should get the message "Agent registered" on that console. You can now start pairing from your mobile device, and the script will ask you for the passcode on this console, you type it and confirm with enter - voila that's all. You can now also shut down the agent using ^C-c, you need it only for pairing, not every time you want to connect. If you can`t discover computer from your phone, go to troubleshooting section.

For an example scroll down to the example section.


Using Obex for sending and receiving files

Another option, rather than using KDE or Gnome Bluetooth packages, is Obexfs which allows you to mount your phone and treat it as part of your filesystem. Note that to use Obexfs, you need a device that provides an Obex FTP service.

To install;

# pacman -S obexfs

and then your phone can then be mounted running as root

# obexfs -b <devices mac address> /mountpoint

For more mounting options see http://dev.zuckschwerdt.org/openobex/wiki/ObexFs


Examples

Siemens S55

This is what I did to connect to my S55. (I have not figured out how to initiate the connection from the phone)

  • The steps under installation
  $> hcitool scan
  Scanning ...
          XX:XX:XX:XX:XX:XX  NAME
  $> B=XX:XX:XX:XX:XX:XX

Start the simple-agent in a second terminal

  $> su -c bluez-simple-agent 
  Password: 
  Agent registered

Back to the first console

  $> obexftp -b $B -l "Address book"
  # Phone ask for pin, I enter it and answer yes when asked if I want to save the device
  ...
  <file name="5F07.adr" size="78712" modified="20030101T001858" user-perm="WD" group-perm="" />
  ...
  $> obexftp -b 00:01:E3:6B:FF:D7 -g "Address book/5F07.adr"
  Browsing 00:01:E3:6B:FF:D7 ...
  Channel: 5
  Connecting...done
  Receiving "Address book/5F07.adr"... Sending "Address book"... done
  Disconnecting...done
  $> obexftp -b 00:01:E3:6B:FF:D7 -p a                      
  ...
  Sending "a"... done
  Disconnecting...done

Logitech Mouse MX Laser

Connect Bluetooth Logitech Mouse MX Laser without Dongle.

$> hidd --connect XX:XX:XX:XX:XX:XX

Motorola V900

After installing blueman and running blueman-applet, click "find me" under connections -> bluetooth in motorla device. In blueman-applet, scan devices, find the motorola, click "add" in blueman-applet. Click "bond" in blueman-applet, enter some pin, enter the same pin in motorola when it asks. In terminal:

  cd ~/
  mkdir bluetooth-temp
  obexfs -n xx:yy:zz:... ~/bluetooth-temp
  cd ~/bluetooth-temp

and browse... Only audio, video, and pictures are available when you do this.

Pairing with an iPhone using bluez-simple-agent

Assuming a bluetooth device called hci0 and an iPhone that showed up in a hcitool scan as '00:00:DE:AD:BE:EF':

   # bluez-simple-agent hci0 00:00:DE:AD:BE:EF
   Passcode:

Troubleshooting

passkey-agent

$> passkey-agent --default 1234
Can't register passkey agent
The name org.bluez was not provided by any .service files

You probably started /etc/rc.d/bluetooth before /etc/rc.d/dbus

$> hciconfig dev
# (no listing)

Try running hciconfig hc0 up

Blueman

If blueman-applet fails to start, try removing the entire /var/lib/bluetooth directory and restarting the machine (or just the hal, dbus, and bluetooth services).

# rm -rf /var/lib/bluetooth
# reboot

gnome-bluetooth

If you see this when trying to enable receiving files in bluetooth-properties:

 Bluetooth OBEX start failed: Invalid path
 Bluetooth FTP start failed: Invalid path

Then run:

 # pacman -S xdg-user-dirs
 $ xdg-user-dirs-update

You can edit the paths using:

 $ vi ~/.config/user-dirs.dirs

Bluetooth USB Dongle

If you are using a USB dongle, you should check that your Bluetooth dongle is recognized. You can do that by inspecting /var/log/messages.log when plugging in the USB dongle. It should look something like the following (look out for hci):

# tail -f /var/log/messages.log
May  2 23:36:40 tatooine usb 4-1: new full speed USB device using uhci_hcd and address 9
May  2 23:36:40 tatooine usb 4-1: configuration #1 chosen from 1 choice
May  2 23:36:41 tatooine hcid[8109]: HCI dev 0 registered
May  2 23:36:41 tatooine hcid[8109]: HCI dev 0 up
May  2 23:36:41 tatooine hcid[8109]: Device hci0 has been added
May  2 23:36:41 tatooine hcid[8109]: Starting security manager 0
May  2 23:36:41 tatooine hcid[8109]: Device hci0 has been activated

For a list of supported hardware please refer to the resources section on this page.

If you only get the first two lines, you may see that it found the device but you need to bring it up. Example:

hciconfig -a hci0
hci0:	Type: USB
	BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0
	DOWN 
	RX bytes:0 acl:0 sco:0 events:0 errors:0
	TX bytes:0 acl:0 sco:0 commands:0 errors:
sudo hciconfig hci0 up
hciconfig -a hci0
hci0:	Type: USB
	BD Address: 00:02:72:C4:7C:06 ACL MTU: 377:10 SCO MTU: 64:8
	UP RUNNING 
	RX bytes:348 acl:0 sco:0 events:11 errors:0
	TX bytes:38 acl:0 sco:0 commands:11 errors:0

To verify that the device was detected you can use hcitool which is part of the bluez-utils. You can get a list of available devices and their identifiers and their MAC address by issuing:

$ hcitool dev
Devices:
        hci0	00:1B:DC:0F:DB:40

More detailed informations about the device can be retrieved by using hciconfig.

$ hciconfig -a hci0
hci0:   Type: USB
        BD Address: 00:1B:DC:0F:DB:40 ACL MTU: 310:10 SCO MTU: 64:8
        UP RUNNING PSCAN ISCAN 
        RX bytes:1226 acl:0 sco:0 events:27 errors:0
        TX bytes:351 acl:0 sco:0 commands:26 errors:0
        Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
        Link policy: RSWITCH HOLD SNIFF PARK 
        Link mode: SLAVE ACCEPT 
        Name: 'BlueZ (0)'
        Class: 0x000100
        Service Classes: Unspecified
        Device Class: Computer, Uncategorized
        HCI Ver: 2.0 (0x3) HCI Rev: 0xc5c LMP Ver: 2.0 (0x3) LMP Subver: 0xc5c
        Manufacturer: Cambridge Silicon Radio (10)

hcitool scan: Device not found

On some Dell laptops (e.g. Studio 15) you have to switch the Bluetooth mode from HID to HCI using

# hid2hci

My computer isn't visible

Can't discover computer from your phone? Enable PSCAN and ISCAN:

# enable PSCAN and ISCAN
$ hciconfig hci0 piscan 
# check it worked
$ hciconfig 
hci0:   Type: USB
        BD Address: 00:12:34:56:78:9A ACL MTU: 192:8 SCO MTU: 64:8
        UP RUNNING PSCAN ISCAN
        RX bytes:20425 acl:115 sco:0 events:526 errors:0
        TX bytes:5543 acl:84 sco:0 commands:340 errors:0
Note: Check DiscoverableTimeout and PairableTimeout in /etc/bluetooth/main.conf

Resources