Home Community Forum IRC Shop Bugs Hg Cook
SliTaz GNU/Linux official and community documentation wiki.
.png

Bluetooth

Introduction

This guide will help you to configure bluetooth, e.g. to use your phone as a modem. Do following steps as root. First of all you must install Slitaz packages related to bluetooth:

# tazpkg get-install bluez
# tazpkg get-install linux-bluetooth

The first package contains the Official Linux Bluetooth protocol stack www.bluez.org and the second contains the kernel modules related to bluetooth. Now you can launch the bluetooth daemon:

# bluetoothd

And load the module required by your local bluetooth device, this is very likely btusb:

# modprobe btusb

If btusb is the module you need the command “hcitool dev” to show you the local device address:

root@slitaz:/home/tux# hcitool dev
Devices:
        hci0    00:02:72:xx:xx:xx

If the command “hcitool dev” does not show you any hci* device you must detect which module you need and repeat the previous step until you have a hci* device. Now that you have hci* you can run the “hcitool scan” command to show you if there is any discoverable device nearby. So if you are searching, e.g. your phone, remember to put it in discoverable mode:

root@slitaz:/home/tux# hcitool scan
Scanning ...
        00:18:C5:xx:xx:xx       Nokia 6151
root@slitaz:/home/tux#

Now you can pair your locale device with your remote device. You use bluez-simple-agent to do that.

If you want to start the pairing from the remote device you need to put your local device in discoverable mode:

# hciconfig hci0 piscan

Now launch bluez-simple-agent, start the pairing from the remote device and wait for bluez-simple-agent to ask you for the pin code needed to pair. This code will be the same one you typed on the phone. When you are done you need to kill bluez-simple-agent with Ctrl-c:

root@slitaz:/home/tux# hciconfig hci0 piscan
root@slitaz:/home/tux# bluez-simple-agent
Agent registered
RequestPinCode (/org/bluez/2944/hci0/dev_00_18_C5_xx_xx_xx)
Enter PIN Code: 1234
^CTraceback (most recent call last):
  File "/usr/bin/bluez-simple-agent", line 113, in <module>
    mainloop.run()
KeyboardInterrupt
root@slitaz:/home/tux#

Put your local device back in undiscoverable mode:

# hciconfig hci0 pscan

If you want to start the pairing from your local device you can do it using bluez-simple-agent with the hci* of your local device and the address of the device you discovered with “hcitool scan”. In this case you will choose the pin in bluez-simple-agent and type the same pin on the remote device:

root@slitaz:/home/tux# bluez-simple-agent hci0 00:18:C5:xx:xx:xx
RequestPinCode (/org/bluez/3078/hci0/dev_00_18_C5_xx_xx_xx)
Enter PIN Code: 1234
Release
New device (/org/bluez/3078/hci0/dev_00_18_C5_xx_xx_xx)
root@slitaz:/home/tux# 

Be fast because bluez-simple-agent has a timeout which I don't know how to set (suggestions?)

Use a phone as a modem

Now you have your two devices paired, i will go on with the phone as a modem example, I don't have other experiences with bluetooth devices. To use your phone as a modem you need the rfcomm module. At the moment I am writing this guide the rfcomm module of Slitaz is compiled without tty support. You can check if this is the case with the following commands:

root@slitaz:/home/tux# zcat /proc/config.gz | grep RFCOMM                    
CONFIG_BT_RFCOMM=m
# CONFIG_BT_RFCOMM_TTY is not set
root@slitaz:/home/tux#

If CONFIG_BT_RFCOMM_TTY is not =y you must recompile the module with tty support. Install linux-source:

# tazpkg get-install linux-source

cd in /usr/src/linux-`uname -r`/ and give this command:

# make CONFIG_BT_RFCOMM=m CONFIG_BT_RFCOMM_TTY=y M=net/bluetooth/rfcomm

This will build only the rfcomm module with tty support. You will find it in /usr/src/linux-`uname -r`/net/bluetooth/rfcomm/rfcomm.ko. Now you can delete the old rfcomm module and replace it with your module:

# rm /lib/modules/`uname -r`/kernel/net/bluetooth/rfcomm/rfcomm.ko.gz
# cp /usr/src/linux-`uname -r`/net/bluetooth/rfcomm/rfcomm.ko /lib/modules/`uname -r`/kernel/net/bluetooth/rfcomm/ 
# depmod -a

Now that we have a working rfcomm module we must detect the channel where the phone dialup service is listening:

# sdptool browse 00:18:C5:xx:xx:xx

Where 00:18:C5:xx:xx:xx is the address of your phone, it will give a list with the services available on your phone. The one you are looking for is Dial-up networking or DUN:

Service Name: Dial-up networking
Service RecHandle: 0x10000
Service Class ID List:
  "Dialup Networking" (0x1103)
  "Generic Networking" (0x1201)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 1
Language Base Attr List:
  code_ISO639: 0x656e
  encoding:    0x6a
  base_offset: 0x100
Profile Descriptor List:
  "Dialup Networking" (0x1103)
    Version: 0x0100
    

rfcomm.conf

As you can see it is listening on channel 1, so you edit /etc/bluetooth/rfcomm.conf this way:

  #
  # RFCOMM configuration file.
  #
  rfcomm0 {
  #       # Automatically bind the device at startup
          bind yes;
  #
  #       # Bluetooth address of the device
          device 00:18:C5:xx:xx:xx;
  #
  #       # RFCOMM channel for the connection
          channel 1;
  #
  #       # Description of the connection
  #       comment "Example Bluetooth device";
  }

Now with:

# modprobe rfcomm
# rfcomm bind all

You can use /dev/rfcomm0 as a modem in a wvdial script. You may want to check this guide http://doc.slitaz.org/en:guides:dialup



Page Review Section
Quality Good
Review Minor Updates
Priority Medium
Problems add a forum post link
OR add a lab issue tracker link
How to Improve Add tazhw setup bluetooth ; Please create “sections” for toc



 
en/guides/bluetooth.txt · Last modified: 2010/08/22 17:39 by linea