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.
Filed under: GNU/Linux






