domingo, agosto 24, 2008

Acceder al dockstation

Para acceder a la unidad de dvd que tenemos en la dockstation y al puerto firewire necesitamos instalar los siguiente módulos:
sbp2
ohci1394
ieee1394

Esto está en Device Drivers -> IEEE 1394 (FireWire) support. Y activamos como módulo:
IEEE 1394 (FireWire) support
OHCI-1394 support
SBP-2 support (Harddisks etc.)

También necesitamos tenemos el soporte SCSI: Device Drivers -> SCSI device support. Y activamos como módulo:
SCSI device support
SCSI CDROM support

Compilamos, instalamos y cargamos... tiene que aparecer en dmesg algo parecido a esto:
ohci1394: fw-host0: OHCI-1394 1.0 (PCI): IRQ=[10] MMIO=[e0202000-e02027ff] Max Packet=[2048] IR/IT contexts=[4/4]
ieee1394: The root node is not cycle master capable; selecting a new root node and resetting...
ieee1394: Node added: ID:BUS[0-00:1023] GUID[0000f041a000b057]
ieee1394: Host added: ID:BUS[0-01:1023] GUID[0000f04120067e39]
SCSI subsystem initialized
scsi0 : SBP-2 IEEE-1394
ieee1394: sbp2: Logged into SBP-2 device
ieee1394: sbp2: Node 0-00:1023: Max speed [S400] - Max payload [2048]
scsi 0:0:0:0: CD-ROM TSSTcorp CD/DVDW TS-L632B TM31 PQ: 0 ANSI: 0
Driver 'sr' needs updating - please use bus_type methods
sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray
Uniform CD-ROM driver Revision: 3.20
sr 0:0:0:0: Attached scsi CD-ROM sr0
sr 0:0:0:0: Attached scsi generic sg0 type 5
Driver 'sd' needs updating - please use bus_type methods

Ahora tenemos la unidad dvd en /dev/sr0

domingo, julio 13, 2008

Bluetooth

Ahora vamos a conectar nuestro bluetooth-usb a nuestro portátil.

El usb es de conceptronic, y lo primero es compilar los módulos:
Networking -> Bluetooth subsystem support -> Aquí activar todas las opciones.
y en Bluetooth device drivers: HCI USB driver y HCI VHCI (Virtual HCI device) driver

Una vez hecho, nos tenemos que instalar las utilidades desde http://www.bluez.org/download/:
bluez-libs
./configure --prefix=/usr/local/bluetooth --localstatedir=/var

bluez-utils
Para instalar este paquete necesitamos libnl; hay que aplicar el siguiente parche:
--- libnl-1.0/lib/route/link/vlan.c.orig 2008-01-16 22:59:21.000000000 -0800
+++ libnl-1.0/lib/route/link/vlan.c 2008-01-16 22:59:36.000000000 -0800
@@ -27,6 +27,9 @@
#include

#include
+#ifndef VLAN_FLAG_REORDER_HDR
+#define VLAN_FLAG_REORDER_HDR 0x01
+#endif

/** @cond SKIP */

#define VLAN_HAS_ID (1<<0)>
./configure --prefix=/usr/local/bluetooth

También necesitamos una versión actual de la glib, porque las utils utilizan una función relativamente nueva "g_timeout_add_seconds"

Ahora instalamos las utils:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/bluetooth/lib/pkgconfig

CPPFLAGS=-I/usr/local/bluetooth/include LDFLAGS=-L/usr/local/usb/lib ./configure --prefix=/usr/local/bluetooth --localstatedir=/var --enable-alsa --enable-usb --enable-netlink --enable-tools --enable-bccmd --enable-hid2hci --enable-dfutool --enable-hidd --enable-pand --enable-dund --enable-manpages --enable-configfiles --enable-initscripts --enable-pcmciarules --enable-debug --enable-test

Una vez compilado e instalado también debemos copiar del directorio test el programa passkey-agent a /usr/local/bluetooth/bin

bluez-firmware
./configure --prefix=/usr/local/bluetooth

bluez-hcidump
./configure --prefix=/usr/local/bluetooth

Si conectamos nuestro bluetooth debe aparcer en dmesg:
usb 1-1: USB disconnect, address 12
usb 1-1: new full speed USB device using uhci_hcd and address 13
usb 1-1: configuration #1 chosen from 1 choice
Bluetooth: Core ver 2.11
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized
Bluetooth: HCI socket layer initialized
Bluetooth: HCI USB driver ver 2.9
usbcore: registered new interface driver hci_usb

Ahora levantamos el interfaz: hciconfig hci0 up

Si ponemos hciconfig debe aparecer:
hci0: Type: USB
BD Address: 00:80:5A:46:58:97 ACL MTU: 384:8 SCO MTU: 64:8
UP RUNNING
RX bytes:1845 acl:0 sco:0 events:41 errors:0
TX bytes:153 acl:0 sco:0 commands:22 errors:0

Para buscar los dispositivos: hcitool scan; tiene que aparecer una lista de los dispositivos a su alcance.

passkey-agent --default '1234' &

dejando en ejecución el programa que suministra la clave. Como esta solución parece poco elegante voy a utilizar udev para que ejecute el programa "passkey-agent" cada vez que conecte el dispositivo bluetooth usb. udev es un sistema que se encarga de la creación dinámica de dispositivos.

Editamos un fichero llamado:

/etc/udev/rules.d/60-reglasmias.rules


y le añadimos la siguiente línea:

ACTION=="add", SUBSYSTEM=="usb_device", SYSFS{idVendor}=="0a12", SYSFS{idProduct}=="0001", RUN+="/usr/bin/passkey-agent --default '1234'
"

En resumidas cuentas, le estamos diciendo a udev que cuando de conecte el dispositvo con los idVendor e idProduct especificados ejecute el programa "passkey-agent".
Los valores de IdVendor e idProducto corrresponden a un adaptador bluetooth Conceptronics. Para averiguar los valores concretos en tu caso deberías ejecutar:

lsusb

para averiguar tus identificadores de dispositivo concretos.

Una vez creado o modificado el fichero ejecutamos:

start_udev

para reiniciar los servicios udev. Ahora cada vez que conectamos el dispositivo USB bluetooth tendremos el programa "passkey-agent" en ejecución.


Audio:
En /usr/local/sonido/lib/alsa-lib, ln -s /usr/local/bluetooth/lib/alsa-lib/libasound_module_* .
En $HOME/.asoundrc
pcm.bluetooth {
type bluetooth
device 00:1A:80:45:AC:57
profile "hifi"
}

mplayer -ao alsa:device=bluetooth file.mp3

martes, julio 08, 2008