Habilitar adaptador Bluetooth en GNU/Linux Slackware

Bueno, basta de andar haciéndose el hacker. Vamos a ponernos serios.

Artículo original en http://www.slackware.cl/?q=node/868

1.- Configurar el kernel

#cd /usr/src/linux
#make menuconfig
——-
Networking —>
< M > Bluetooth subsystem support —->
< M > L2CAP protocol support
< M > SCO links support
< M > RFCOMM protocol support
[ * ] RFCOMM TTY support
< M > BNEP protocol support
[ * ] Multicast filter support
[ * ] Protocol filter support
< M > HIDP protocol support
Bluetooth device drivers —>
< M > HCI USB driver
[ * ] SCO (voice) support
< M > HCI UART driver
[ * ] UART (H4) protocol support
[ * ] BCSP protocol support
< M > HCI BCM203x USB driver
< M > HCI BPA10x USB driver
< M > HCI BlueFRITZ! USB driver
< M > HCI VHCI (Virtual HCI driver) driver

Como dice el autor original, podés probar dmesg y lsusb para identificar mejor el chipset de tu adaptador y compilar sólo lo necesario ya que, como se ve, acá se compiló todo…

Para instalar los módulos:

#make modules
#make modules_install

Recuerda que si usas drivers propietarios (ati, nvidia, etc.) es muy probable que debas instalarlos nuevamente.

Una vez instalados los módulos, hay que enchufar el adaptador y verificar que haya sido correctamente configurado mediante un tail /var/log/messages (Usando hotplug los módulos se cargarán automáticamente)

2.- Descargando las herramientas
Basado en BlueZ y en kdebluetooth para realizar la conexión. Lo primero fue conseguir los programas.

BlueZ puede descargarse desde el sitio http://www.bluez.org
MessageBus es necesario para la que BlueZ comunique notificaciones a otros programas.
Openobex necesario para algunas tareas de comunicación.
kdebluetooth puede descargarse desde el sitio http://kde-bluetooth.sourceforge.net

Para instalar BlueZ, MessageBus y openobex se pueden usar los paquetes de linuxpackages, mientras que kdebluetooth fué instalado mediante el método configure-make-checkinstall.

3.- Probando

Una vez instaladas nuestras herramientas, hay que probar que todo funcione. La forma más simple es:

bash-3.00# hciconfig
hci0: Type: USB
BD Address: 00:08:XX:XX:XX:XX ACL MTU: 192:8 SCO MTU: 64:8
UP RUNNING
RX bytes:117 acl:0 sco:0 events:15 errors:0
TX bytes:310 acl:0 sco:0 commands:14 errors:0

Puede verse que mi adaptador bluetooth está correctamente reconocido y listo para operar.

Para verificar la comunicación, activé el “encuéntrame” de mi celular, y luego:

bash-3.00# hcitool inq
Inquiring …
00:15:XX:XX:XX:XX clock offset: 0×0684 class: 0×522204

Puede verse que ha sido detectado mi celular.
Estamos listos para configurar.

4.- Configurando

Si has usaste los paquetes de linuxpackages, el archivo de configuración estará en /etc/bluetooth. El archivo en cuestión que nos interesa se llama hcid.conf

#
# HCI daemon configuration file.
#
# $Id: hcid.conf,v 1.7 2004/12/13 14:16:03 holtmann Exp $
#

# HCId options
options {
# Automatically initialize new devices
autoinit yes;

# Security Manager mode
# none - Security manager disabled
# auto - Use local PIN for incoming connections
# user - Always ask user for a PIN
#
security user;

# Pairing mode
# none - Pairing disabled
# multi - Allow pairing with already paired devices
# once - Pair once and deny successive attempts
pairing multi;

# PIN helper
#pin_helper /usr/bin/bluepin;

# kdebluetooth PIN helper
pin_helper /opt/kde/lib/kdebluetooth/kbluepin;

# D-Bus PIN helper
#dbus_pin_helper;
}

# Default settings for HCI devices
device {
# Local device name
# %d - device id
# %h - host name
name “BlueZ (%d)”;

# Local device class
class 0×3e0100;

# Default packet type
#pkt_type DH1,DM1,HV1;

# Inquiry and Page scan
iscan enable; pscan enable;

# Default link mode
# none - no specific policy
# accept - always accept incoming connections
# master - become master on incoming connections,
# deny role switch on outgoing connections
lm accept;

# Default link policy
# none - no specific policy
# rswitch - allow role switch
# hold - allow hold mode
# sniff - allow sniff mode
# park - allow park mode
lp rswitch,hold,sniff,park;

# Authentication and Encryption (Security Mode 3)
#auth enable;
#encrypt enable;
}

Puede verse que el archivo es relativamente intuitivo (no olvides leer la documentación). Una línea particularmente importante es:

# kdebluetooth PIN helper
pin_helper /opt/kde/lib/kdebluetooth/kbluepin;

Donde se indica que el Pin Helper que usaré será el de kdebluetooth. Una vez configurado, estamos casi listos.

5.- Testeando

Una vez finalizado, podemos iniciar los demonios:

#/etc/rc.d/rc.messagebus start
#hcid
#sdpd

Luego en KDE, K->Internet->kbluetoothd

Empezamos a probar que todo ande.. Por ejemplo tratamos de parear el teléfono con el PC.. en mi caso envié las fotos a la PC vía bluetooth, las cuales fueron recibidas de inmediato [eso es bueno]

6.- Bonus Track

Script para iniciar y parar los servicios de bluetooth que puede ser invocado desde rc.local o rc.M (a gusto del usuario… como debe ser).

#!/bin/bash

blue_start () {
if [ -x /usr/sbin/hcid -a -x /usr/sbin/sdpd ]; then
echo ‘Starting Bluetooth layer…’
/usr/sbin/hcid
/usr/sbin/sdpd
fi

}

blue_stop () {
echo ‘Stopping Bluetooth layer…’
killall hcid
sleep 2
killall sdpd

}

blue_restart () {

blue_stop
sleep 2
blue_start
}

case “$1″ in

’start’)
blue_start
;;
’stop’)
blue_stop
;;
‘restart’)
blue_restart
;;
*)
echo ‘Use start|stop|restart’
;;
esac

Saludos. Cualquier cosa, avisen…

Nota: Agradezco al autor original [Leopard] por haber permitido la publicación en este blog.

Dejar comentario

CAPTCHA