Un mouse Bluetooth, múltiples sistemas operativos

Gabolonte Blasfemus
Genius Navigator 905BT Mouse

Un Genius Navigator 905BT rojo, mi primer mouse Bluetooth. Lindo pero dejaba que desear.

Hace ya un tiempo de algo que nunca pensé que haría: Comencé a usar un mouse Bluetooth. Es que quien haya jugado un poco en sus años mozos con esta tecnología que ya lleva tantos tiempo con nosotros sabe bien de sus inestabilidades, que a la larga lo vuelve impráctico para muchas situaciones y usos.

Y fue todo un cambio, porque además pasé de disfrutar de mi segundo Logitech Anywhere Mouse MX a un simple Genius, y la diferencia la sufría en cada movimiento del cursor, que pasó a ser bailarín de medio tiempo. ¿Por qué no fui por otro Logitech igual si después de todo es uno de los mejores (sino el mejor) fabricante de mouses? Impaciencia, paja, tacañería y eficiencia. Impaciencia de esperar hasta pasar por Galería Jardín a comprarlo, paja de ir ese mismo día sólo por eso, tacañería de pagar tanto (nuevamente) por un mouse que, aunque lo vale, lo que no vale es que por segunda vez me haya durado sólo un año luego de lo cual comenzó a fallarle el botón izquierdo; y finalmente eficiencia, porque estaba cansado de tener un puerto USB ocupado constantemente en la notebook, además de los problemas que conlleva a nivel suspensión del equipo los transceptores USB inalámbricos. Sorprendentemente, es la primera vez en muchos años que realmente le doy una utilidad real al adaptador Bluetooth de una PC, y la experiencia, aunque tortuosa al principio, no salió tan mal: Ahora sabía que iba a comenzar a usar mouses Bluetooth, solo que necesitaba algo mejor que un Genius.

El Logitech Anywhere Mouse MX, usé dos seguidos; a los dos les murió el click izquierdo al año de uso. Fuera de eso excepcionales.

El Logitech Anywhere Mouse MX, usé dos seguidos; a los dos les murió el click izquierdo al año de uso. Fuera de eso excepcionales.

No sos vos, es tu sensor óptico

Ahí la cosa se puso complicada, porque me di cuenta que un mouse Bluetooth de marca reconocida no es algo que precisamente abunde, y más si encima buscamos algo de mayor precisión, como por ejemplo tecnología láser. Los de Logitech son pocos y brillan por su ausencia, a tal punto que hasta desde su propia web se hace difícil ubicarlos. Después están los Genius como el que conseguí y, como novedad que me hubiese gustado probar pero también algo difícil de conseguir, un Verbatim que increíblemente es también Láser. Por último está la oferta de Microsoft. Microsoft, a quién veneré por su primer Explorer óptico que tantos años me supo durar y que varios después al querer volver a probar suerte nuevamente me decepcionó con la calidad. Pero al menos ahora Microsoft tiene una oferta interesante de mouses Bluetooth, aunque por momentos rara, como ese modelo de mouse que esencialmente parece una porción de queso. Al final después de un tiempo me decidí a intentar con el Sculpt Touch, que en vez de la ruedita de siempre tiene una tira plástica que oficia de mini-touchpad para pasar los dedos y conseguir un scroll multidireccional. No me terminaba de convencer porque tenía miedo que tuviera una fuerte dependencia de software para sus funciones especiales, algo que me limitaría esencialmente a Windows y me haría las cosas muy difíciles en Linux, pero me quedaba sin opciones y Microsoft (casi) siempre me demostró cierto estándar elevado en lo que a la calidad de su hard respecta. Otra cosa que no pensaba hacer, volver a un mouse de Microsoft. Pero, como hace 15 años ya decíamos, lo mejor de Microsoft es su hardware. Además, el Sculpt Touch no será láser pero en cambio incorpora algo que Microsoft bautizó como BlueTrack Technology y lo vende como más preciso y multi-superficie que la tecnología láser.

El Sculpt Touch de Microsoft. Hermoso chiche, aunque la rueda emulada dista de ser perfecta.

El Sculpt Touch de Microsoft. Hermoso chiche, aunque la rueda emulada dista de ser perfecta.

¿Veredicto? La tirita táctil es menos peor de lo que pensaba, ya que manda pequeñas vibraciones que proveen un feedback físico que intenta emular la sensación que se tiene al pasar el dedo por la típica rueda de mouse. No es lo mismo que una buena rueda, pero uno se puede llegar a acostumbrar. ¿Lo mejor? Lo podemos usar absolutamente sin problemas en Linux o en cualquier otro SO, de hecho en Windows ni siquiera sentí la necesidad de instalar ningún software extra de Microsoft para disfrutarlo por completo. Sobre la BlueTrack Technology, no sé si será mejor que un sensor láser, pero ciertamente anda muchísimo mejor que un sensor estándar. Para cerrar, es lindo, vistoso, liviano, y muy cómodo.

Se necesita mouse bígamo

Genial, tenía un bonito mouse nuevo, que en casi todo era más o menos lo que yo quería. ¿El problema? Mientras que con el Genius anterior, luego de romperme la cabeza unos días con problemas de emparejamiento conseguí sin problemas usarlo tanto en Windows como en Linux Mint (no sin antes cambiar a Blueman, ya que muchas veces es la única forma de tener un soporte funcional de Bluetooth en una distro Linux), ahora con el elegante Sculpt no puedo usarlo con más de un sistema operativo sin tener que re-emparejar cada vez. Básicamente, si lo emparejo con Windows, luego tendré que volver a emparejarlo con Linux cuando lo quiera usar ahí, y volveré a perder el emparejamiento inicial. En mi notebook alterno de Windows a Linux y viceversa más rápido que yo de ropa, por lo que es un completo dolor testicular. La pregunta inmediata que me hice fue: ¿Por qué con el Genius que a todas luces es más choto esto no me pasaba?

Sin pensarlo demasiado, cuando había logrado que el Genius me anduviera tanto en Windows como en el Linux que tengo en mi notebook, imaginaba que se debía a que esencialmente era el mismo adaptador Bluetooth, con la misma dirección física, que es un número hexadecimal que funciona igual al de las MAC address de los adaptadores de red; es único para cada adaptador. Pero con eso no alcanzaba para el Sculpt, y tampoco alcanzaba asegurarse que el nombre descriptivo sea el mismo en los dos SOs; había algo más.

RTFM

El estándar Bluetooth, aunque antiguo, con vulnerabilidades y problemas, incorpora, no de la mejor manera pero al menos lo hace, un mecanismo de cifrado para la transmisión de datos entre dispositivos. Esencialmente toda comunicación vía Bluetooth está encriptada, y lo que lo hace interesante y algo menos inseguro es que la clave de cifrado es distinta para cada par de dispositivos y se negocia en el momento que se los empareja. Y ahí radicaba mi problema: Como para generar esta clave se utilizan ciertos valores pseudoaleatorios, cuando emparejaba el mouse con Windows ambos pasaban a compartir una clave generada en ese mismo momento, que siempre va a ser distinta en cada nuevo emparejamiento, como cuando por ejemplo lo hiciera luego con Linux. Jamás serviría emparejar el mouse primero con un SO y luego con el otro, porque en cada nuevo emparejamiento la nueva clave de cifrado generada es la que quedaría almacenada en el mouse, eliminando a la anterior que es la que necesitaría para también funcionar con el otro sistema operativo.

Otra vez: ¿Y por qué esto con el Genius no pasaba? Existen dispositivos Bluetooth que permiten emparejarlos con más de un dispositivo a la vez, generalmente 2, pero dicen por ahí que casi no existen mouses que lo hagan, y además sumémosle que cada fabricante realiza su implementación del estándar a su manera, que puede ser más, menos, o terriblemente desastrosa. Es muy probable que no tuviera que ver con que ese Genius soportara multipairing, sino con la pobre o nula aleatoriedad con que se generaba la clave de cifrado. En todo caso, terminé con un mouse que, por culpa de seguramente hacer las cosas mejor, no me permitía hacer algo que el otro sí, y que realmente necesitaba.

 The cacker way

Llegados a este momento, queda una única forma de que un dispositivo Bluetooth, en este caso un mouse, pueda funcionar con 2 o más sistemas a la vez aunque no soporte multipairing, y esto es lograr tener la misma dirección física y la misma clave de cifrado en cada uno. En el caso de tener una PC con doble booteo no existe problema en lo primero, ya que el adaptador Bluetooth va a ser el mismo y por ende tendrá la misma dirección no importa desde qué SO se lo utilice. El problema es que hay que lograr tener la misma clave de cifrado en los dos sistemas, en mi caso eso significa en Windows y en Linux. Esto es algo que no le pasa a todo el mundo, pero afortunadamente a alguien le pasó y lo analizaron en superuser. A continuación los pasos para que nuestro mouse Bluetooth quede emparejado y funcione tanto con el Windows como con el Linux de nuestra PC o notebook:

1. Emparejamos el mouse primero con Linux. Como dije antes, para evitar problemas recomiendo directamente reemplazar el gestor de Bluetooth que venga incorporado en la distro empleada por Blueman, aunque en el caso de Linux Mint 16 Cinnamon puedo afirmar que anda derecho como viene.

2. Luego arrancamos Windows, y emparejamos nuestro mouse con el. Es importante que el último emparejamiento sea con Windows, ya que en estos pasos vamos a quedarnos con la clave generada en este emparejamiento como la definitiva, poniéndola luego en Linux. Aunque podríamos hacerlo exactamente al revés considero que esta es la forma más fácil.

3. Ya sea cuando hacemos el paso 1 o el 2, es importante que nos fijemos cuál es la dirección física de Bluetooth de nuestro mouse y la tengamos anotada para futura referencia. Esta información se puede ver al mirar las propiedades del dispositivo en Dispositivos e impresoras. Si no se lo puede hacer se puede omitir este paso en tanto y en cuanto sepamos que nuestro mouse es el único dispositivo Bluetooth que alguna vez hemos emparejado con nuestros sistemas.

4. Volvemos a arrancar nuestro Linux, y vamos a instalar chntpw, un programa muy útil que nos permite desde la línea de comandos navegar y editar archivos del registro de Windows. En Debian, Ubuntu, Linux Mint o derivados se lo puede instalar ejecutando:

sudo apt-get install chntpw

5. Montamos la partición de Windows desde Linux. No es el propósito de esto explicar ahora cómo hacerlo, basta decir que en Ubuntu y derivados es automático y sólo hace falta abrir el administrador de archivos para encontrarla.

6. Una vez en la partición de Windows nos vamos a la ruta \Windows\System32\config\ y nos copiamos de ahí el archivo SYSTEM. Es importante que no borremos ni alteremos nada acá, ya que cualquier desliz los puede dejar con un Windows que no arranca, y por supuesto yo no me hago responsable de descuidos y accidentes kármicos. Es importante que el que vayan a copiar sea el archivo SYSTEM (el que no tiene ninguna extensión), y lo mejor es que lo copien en alguna carpeta temporal dentro de su home de Linux para evitar tocar nada más en Windows.

7. Abren una consola, se van al directorio donde tienen la copia de SYSTEM y ejecutan:

chntpw -e SYSTEM

Inmediatamente verán una serie de información técnica del archivo de registro accedido y los dejará con una línea de comandos que les va a permitir interactuar con el mismo.

8. Ahora debemos ir hasta la ruta del registro donde se guardan las claves de emparejamiento Bluetooth, para eso tipeamos:

cd ControlSet001\services\BTHPORT\Parameters\Keys

9. Luego listamos lo que hay en esa rama de la misma forma que listaríamos archivos en la consola, con el comando ls. Si como es normal tenemos un sólo adaptador Bluetooth en el equipo entonces sólo veremos una clave de registro cuyo nombre será la dirección física del mismo. Ejemplo de salida:

cd ControlSet001\services\BTHPORT\Parameters\Keys

(…)\services\BTHPORT\Parameters\Keys> ls
Node has 1 subkeys and 0 values
key name
<xxxxxxxxxxxx>

(…)\services\BTHPORT\Parameters\Keys>

En lugar de xxxxxxxxxxxx deberemos ver la dirección física del adaptador Bluetooth. Si alguna vez conectamos otro adaptador Bluetooth, por ejemplo uno USB, es probable que también figure, por lo que deberemos verificar previamente cual es la dirección física del que vamos a usar. Eso podemos verlo yendo por ejemplo al Administrador de dispositivos de Windows.

10. Cuando ya estamos seguros de cual es la clave de registro cuyo nombre se corresponde con la dirección del adaptador nos paramos en ella:

cd xxxxxxxxxxxx

Ejecutamos nuevamente ls y veremos listados uno o más valores binarios DWORD cuyos nombres son direcciones físicas Bluetooth. Si sólo hay una de seguro es la de nuestro mouse, si hay más de una es cuando necesitaremos tener anotada del paso 3 la que corresponde al mouse

11. Ahora necesitamos ver el contenido de ese valor DWORD, que es donde se encuentra la clave de cifrado que buscamos. Para verlo ejecutamos:

hex yyyyyyyyyyyy

Donde  yyyyyyyyyyyy es la dirección física del mouse Bluetooth. Ejemplo de salida:

(...)\BTHPORT\Parameters\Keys\f4b7e2d2137a> hex yyyyyyyyyyyy
Value <7c1e526f38a0> of type REG_BINARY, data length 16 [0x10]
:00000 ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ #.O...|.#.1.....

Lo que nos interesa de acá es ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ que es una secuencia de bytes representada en hexadecimal que es la clave de cifrado que necesitamos. La copiamos al portapapeles desde la consola para tenerla a mano.

12. Ahora debemos acceder en Linux al lugar donde este guarda la clave que se generó cuando se realizó el emparejamiento con el mouse, y ese lugar es la ruta /var/lib/bluetooth/XX:XX:XX:XX:XX:XX donde, siguiendo la nomenclatura, XX:XX:XX:XX:XX:XX es la dirección del adaptador de la PC, y también el nombre de la carpeta donde se guarda todo la relativo a la configuración del mismo en Linux. Entonces ingresamos:

sudo gedit /var/lib/bluetooth/XX:XX:XX:XX:XX:XX/linkkeys

Así Gedit (o el editor de texto que hallamos elegido) nos abre el archivo linkkeys que es el que contiene las claves de cifrado de todos los dispositivos que se emparejaron. Acá no hay complicaciones como con el registro de Windows, es simplemente un archivo de texto y el formato es el siguiente:

YY:YY:YY:YY:YY:YY ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 5 0

YY:YY:YY:YY:YY:YY es la dirección física del dispositivo Bluetooth que se emparejó con la PC, y ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ la clave de cifrado negociada. Obviamente pueden existir varias líneas así en este archivo, tantas como dispositivos se hayan emparejado. Debemos ubicar la que corresponde a la dirección de nuestro mouse, y reemplazar la clave por la que nos habíamos guardado en el paso anterior. Salvamos y listo!

12. Paso final: Disfrutar de nuestro mouse Bluetooth en ambos sistemas; normalmente ni siquiera hace falta reiniciar, con sólo encender el mouse este comenzará a funcionar solo. 😀

Puede que se pregunten qué necesidad hay de leer el registro de Windows desde Linux, y la respuesta es que desde Windows usando regedit no van a poder ver la clave, porque tiene una configuración de permisos que lo impide, y aunque los cambien y crean que los deja, no les va a mostrar nada, haciéndoles creer que no contiene ningún valor. Esto no pasa si usamos chntpw. Actualización: Si realmente necesitan acceder/modificar a keys desde Windows mismo, por ejemplo para hacer andar el mouse desde dos Windows, una forma es ejecutando regedit.exe con la cuenta de sistema. Para hacerlo hace falta la aplicación PsExec del glorioso pack de utilidades SysInternals de Mark Russinovich. Luego se invoca a regedit usando PsExec de esta forma:

psexec -s -i regedit

También, es importante tener en cuenta que puede que esta solución no funcione para todo el mundo. Es sabido, o al menos sospechado, que ciertos equipos con ciertos chips específicos de Bluetooth llevan instalados drivers propietarios que incorporan un stack Bluetooth esencialmente distinto del de Microsoft, en cuyo caso la clave de cifrado a buscar puede estar almacenada en lugares completamente distintos al mostrado. Existen consejos para en esos casos eliminar el soft propietario e intentar que Windows detecte el adaptador con su propio stack, pero ya hablamos de experimentos que nos pueden dejar en el mejor de los casos sin Bluetooth en absoluto, y en el peor con un Windows roto.

Lo bueno es que en todos los demás casos que esto funciona, nos permite compartir el mouse con todos los sistemas que tengamos instalados en el equipo, no tiene que ser necesariamente la combinación 1 Windows + 1 Linux, pueden ser 2 Windows, 3 Linux o lo que tengamos.


Comments are closed.