Wacom Intuos BT S en Ubuntu 18.04 Bionic Beaver

Como aficionado al dibujo, hacía tiempo que deseaba tener una tableta gráfica. Me decidí por una Wacom por su renombre y porque sabía que funcionaría en GNU/Linux; aunque la marca, lamentablemente, no desarrolle el driver para este S.O.

El modelo es la Intuos S que incorpora conexión por Bluetooth (CTL-4100WL).

The Linux Wacom Project es el proyecto que lleva años desarrollando el driver para las tabletas Wacom en GNU/Linux.

Lo primero que hice fue comprobar si mi Ubuntu 18.04 reconocía la tableta conectándola con el cable USB.

dmesg | grep "usb 3-8"
[ 538.767225] usb 3-8: new full-speed USB device number 7 using xhci_hcd
[ 538.916557] usb 3-8: New USB device found, idVendor=056a, idProduct=0376
[ 538.916561] usb 3-8: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 538.916564] usb 3-8: Product: Intuos BT S
[ 538.916567] usb 3-8: Manufacturer: Wacom Co.,Ltd.
[ 538.916569] usb 3-8: SerialNumber: 8HH00S1234567

lsusb
Bus 003 Device 007: ID 056a:0376 Wacom Co., Ltd

El S.O. la reconoce y, de hecho, la tableta funciona pero no la puedo configurar porque el applet de gnome no la ve.

Tableta no detectada
Tableta no detectada
Lápiz no detectado
Lápiz no detectado
La tableta funciona
La tableta funciona

La página del proyecto Linux Wacom nos ofrece el driver (input-wacom) y dos librerías (xf86-input-wacom y libwacom) explicando qué hace cada uno de ellos.

The Linux Wacom Project
The Linux Wacom Project

En el caso de mi tableta, necesito los tres y, además, el driver quiero que se recompile cuando actualice el núcleo de GNU/Linux vía DKMS.

Siguiendo los enlaces que ofrece la web para cada módulo, descargo las últimas versiones desde las páginas de releases de cada uno de ellos. (Hay que descargar el archivo .tar.bz2).

Driver input-wacom
Driver input-wacom
Librería xf86-input-wacom
Librería xf86-input-wacom
Librería libwacom
Librería libwacom

Antes de continuar, instalo las dependencias para Ubuntu de cada módulo tal como se indica en la página de cada uno en la que habla de cómo compilar el código fuente. Además, instalo libelf-dev porque al compilar la primera vez vi que el compilador se quejaba de que le faltaba esta librería.

Lo siguiente es descomprimir los archivos .tar.bz2 descargados con el comando:

tar xjf nombre_del_archivo.tar.bz2

Y para que el driver se recompile automáticamente con dkms, hay que crear un enlace simbólico al código fuente en /usr/src con:

cd /usr/src
ln -s /path/al/codigo/fuente/input-wacom-0-42-0

Después creo el archivo dkms.conf en /path/al/codigo/fuente/input-wacom-0-42-0 con el siguiente contenido:

PACKAGE_NAME="input-wacom"
PACKAGE_VERSION="0.42.0"
BUILT_MODULE_NAME[0]="wacom"
BUILT_MODULE_NAME[1]="wacom_w8001"
BUILT_MODULE_LOCATION[0]="4.5"
# Ubuntu ignora el directorio destino y lo instala en /updates/dkms
DEST_MODULE_LOCATION[0]="/extra"
BUILT_MODULE_LOCATION[1]="4.5"
DEST_MODULE_LOCATION[1]="/extra"
MAKE[0]="./configure && make"
# Este script compila e instala las librerías.
POST_INSTALL="../dkms/compila_resto.sh"
REMAKE_INITRD=yes
AUTOINSTALL="yes"

El script que se llama después de instalar el driver es necesario para que se compilen e instalen las librerías xf86-input-wacon y libwacom. Tal como indica en la página de man de dkms, la ruta de POST_INSTALL debe ser relativa al directorio del código fuente.

El script compila_resto.sh lo ejecuta root; por eso, para ejecutar correctamente tanto el configure como el make, uso sudo -u mi_usuario y sudo -u root para el make install.

#!/bin/bash
#
dir_actual=`pwd`
xf86_dir="/path/al/codigo/fuente/xf86-input-wacom-0.36.1/"
libwacom_dir="/path/al/codigo/fuente/libwacom-0.32/"
echo "Compilando xf86-input-wacom"
cd $xf86_dir
sudo -u mi_usuario ./configure --prefix="/usr" --libdir="/usr/lib" && sudo -u mi_usuario make && sudo -u root make install || echo "Build Failed"
echo "Compilando libwacom"
cd $libwacom_dir
sudo -u mi_usuario ./configure --prefix="/usr" --libdir="/usr/lib/x86_64-linux-gnu" && sudo -u mi_usuario make && sudo -u root make install || echo "Build Failed"
echo "Hecho."
cd $dir_actual

Ahora compilo e instalo el driver y las librerias con:

sudo dkms install --force -m input-wacom/0.42.0

Por último, hay que generar un archivo de reglas actualizado usando la utilidad generate-udev-rules que hay en el directorio tools de la librería libwacom. Para ello, hay que situarse en dicho directorio y ejecutar:

./generate-udev-rules > 65-libwacom.rules

sudo mv /lib/udev/rules.d/65-libwacom.rules /lib/udev/rules.d/65-libwacom.rules.old

sudo cp 65-libwacom.rules /lib/udev/rules.d/

Aunque no debería ser necesario, reinicio el PC y tras conectar la tableta con el cable USB compruebo que se ha cargado el nuevo driver con:

grep "" /sys/module/wacom/version

Y veo que la versión cargada es la correcta:

v2.00-0.42.0

Ahora, al abrir las propiedades de la tableta en el applet de gnome, sí veo y puedo configurar la tableta.

Propiedades de la tableta
Propiedades de la tableta
Propiedades del lápiz
Propiedades del lápiz

Configurando la conexión por Bluetooth

Al intentar conectar la tableta por Bluetooth me encontré con el problema de que no la veía el controlador. Investigando un poco me di cuenta de que el Bluetooth que lleva mi placa base, que es de Broadcom, daba un error porque no encontraba un archivo de firmware. Encontré esta página donde explica el problema y tiene los archivos faltantes disponibles para la descarga.

Para saber cuál era el archivo ejecuté el comando:

dmesg | grep [Bb]lue
[ 3.454325] Bluetooth: Core ver 2.22
[ 3.454345] Bluetooth: HCI device and connection manager initialized
[ 3.454347] Bluetooth: HCI socket layer initialized
[ 3.454350] Bluetooth: L2CAP socket layer initialized
[ 3.454354] Bluetooth: SCO socket layer initialized
[ 3.590386] Bluetooth: hci0: BCM: chip id 63
[ 3.591374] Bluetooth: hci0: BCM: features 0x07
[ 3.608384] Bluetooth: hci0: BCM20702A1 (001.002.014) build 1469
[ 3.620857] bluetooth hci0: Direct firmware load for brcm/BCM20702A1-0b05-17cf.hcd failed with error -2
[ 3.620861] Bluetooth: hci0: BCM: Patch brcm/BCM20702A1-0b05-17cf.hcd not found
[ 4.731835] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 4.731836] Bluetooth: BNEP filters: protocol multicast
[ 4.731839] Bluetooth: BNEP socket layer initialized
[ 23.304959] Bluetooth: RFCOMM TTY layer initialized
[ 23.304963] Bluetooth: RFCOMM socket layer initialized
[ 23.304966] Bluetooth: RFCOMM ver 1.11

Descargando ese archivo de la página indicada y copiándolo en /lib/firmware/brcm se soluciona el problema:

dmesg | grep [Bb]lue
[ 18.060287] Bluetooth: Core ver 2.22
[ 18.060298] Bluetooth: HCI device and connection manager initialized
[ 18.060300] Bluetooth: HCI socket layer initialized
[ 18.060302] Bluetooth: L2CAP socket layer initialized
[ 18.060305] Bluetooth: SCO socket layer initialized
[ 18.258451] Bluetooth: hci0: BCM: chip id 63
[ 18.259449] Bluetooth: hci0: BCM: features 0x07
[ 18.276449] Bluetooth: hci0: BCM20702A1 (001.002.014) build 1469
[ 19.017456] Bluetooth: hci0: BCM20702A1 (001.002.014) build 1469
[ 19.033456] Bluetooth: hci0: Broadcom Bluetooth Device
[ 19.471692] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 19.471693] Bluetooth: BNEP filters: protocol multicast
[ 19.471696] Bluetooth: BNEP socket layer initialized
[ 109.675612] Bluetooth: RFCOMM TTY layer initialized
[ 109.675615] Bluetooth: RFCOMM socket layer initialized
[ 109.675618] Bluetooth: RFCOMM ver 1.11

Al encender el Bluetooth y pulsar el botón de encendido de la tableta durante tres segundos, el dispositivo se empareja correctamente y ya puedo prescindir del cable USB para trabajar con la tableta sin hilos. :-)

Observaciones

Si desinstalas la librería libwacom, instala la que lleva la distribución por defecto o el gdm se negará a arrancar por faltarle esa librería.

Share on RedditShare on FacebookTweet about this on TwitterShare on LinkedIn

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Antes de enviar el formulario: