Va arribar el nou any i a principis de Febrer va tocar canviar de Debian Lenny a Debian Squeeze. Fàcil? Molt. Perfecte? Ni d’un bon tros. El que m’ha fet suar més ha estat el bluetooth.
La raó és perquè s’ha canviat de la branca 3 a la 4. Hem de suposar que aporta una infinitat de millores, i dic suposar ja que no hi ha enlloc una documentació com cal. Potser els responsables de tan lloable tasca caldria que fessin una ullada per Google i adonar-se de que si el número de sortides demanant una solució pel nou sistema de bluetooth és tres ordres de magnitud superior al de possibles solucions, és que alguna està mal feta o mal explicada. Però els que piquem codi moltes vegades som així de magnífics: la documentació clara fa nosa i segur que és un invent de les malignes empreses de software privatiu. No fotem i fem les coses com cal…
Així, que aquí va com fer anar una cosa senzilla: connectar un teclat inalàmbric per bluetooth (Apple Wireless Keyboard) and una Debian Squeeze, utilitzant un emissor-receptor USB de bluetooth (dongle) al nostre ordinador. Lo primer és oblidar-se compatibilitats amb la branca 3. Si ho fem, ho fem bé. I per fer-ho bé basta instal·lar poca cosa:
# aptitude install bluez dbus python-gobject python-dbus
Després hem de mirar quin tipus de dongle tenim:
# hciconfig –a
Aquí trobarem la direcció MAC del dongle del tipus AA:AA:AA:AA:AA:AA i una línia del tipus "Class: 0x4a0100". Molt bé, això és el que volíem. Després hem d’anar a /etc/bluetooth/main.config i precisament canviar la classe que ens ve per defecte i deixar una cosa així: "Class = 0x4a0100". Reiniciem tot el que tengui que veure amb el bluetooth:
# /etc/init.d/bluetooth restart
Ara fem que el dongle sigui visible pels aparells que provin de connectar-se:
# hciconfig hci0 piscan
Adicionalment, hem de saber la direcció MAC del teclat inalàmbric. I per això fem:
# hcitool scan
I aquí obtindrem una direcció del tipus BB:BB:BB:BB:BB:BB. Anota-la perquè la necessitarem ara mateix.
Fins ara tot normal, no?. Ara és quan comença el refregit de la branca 4. Per començar hem d’anar a /usr/share/doc/bluez/examples, després pitgem el botonet lateral del teclat per procedir al procés de pairing. Ara apareix un llumet verd que parpelleja a la part superior dreta del teclat. I ara, ja dins el darrer directori esmentat fem:
#./simple-agent hci0 BB:BB:BB:BB:BB:BB
I ara sorgeix la màgia del pairing: les dues andròmines amb bluetooth es troben i demanen quin password utilitzaran per comunicar-se. Introdueix primer el codi (per exemple 1234) al teclat des d’on estàs fent totes aquestes operacions i pitja Enter. Immediatament tecleja el mateix codi al teclat bluetooth i pitja Enter a aquest teclat. I màgia: els dos trastos s’estimen i es comuniquen.
Però com a totes les històries d’amor, això pot durar poc, en aquest cas només fins que apaguem l’ordinador, i cal fer que aquesta relació sigui més duradora. Per això hem d’anar a /var/lib/bluetooth/AA:AA:AA:AA:AA:AA i allí dins crear dos fitxers: pincodes i trusts. Dins pincodes afegim només aquesta línia: BB:BB:BB:BB:BB:BB 1234. Dins trusts afegim només aquesta altra: BB:BB:BB:BB:BB:BB [all].
I amb això ja basta? No. Apple no sempre ens es fa la vida més senzilla i cal afegir el mòdul hid-apple dins /etc/modules.conf
I ara? Ara si, sempre que el pairing hagi funcionat com cal. Si no ha estat així caldrà eliminar el pairing defectuós i seguir des d’allí. Per eliminar l’associació defectuosa hem de fer:
#./simple-agent hci0 BB:BB:BB:BB:BB:BB remove
I ja està. Ni és fàcil, ni és evident ni està documentat com cal. Un altre exemple de perquè els usuaris de Linux acaben les tardes de dissabte a casa en lloc de gaudir d’una vida senzilla i sense pretensions. Però vull pensar que tot plegat també té la seva gràcia.


Antoni, moltes gràcies pel post, és just el que buscava, tot i que tinc alguns problemes que no emdeixen enllaçar el meu teclat d’apple bluetooth:
D’entrada, quan faig haciconfig -a, d’entre les dades que em surten no hi tinc cap línia del tipus Class = xxxxxxx.
root@robert-debian:/home/robert# hciconfig –a
hci0: Type: BR/EDR Bus: USB
BD Address: 00:1E:3D:A6:D4:15 ACL MTU: 1021:6 SCO MTU: 64:1
UP RUNNING PSCAN
RX bytes:1867 acl:0 sco:0 events:191 errors:0
TX bytes:1901 acl:0 sco:0 commands:42 errors:0
Tot i amb això continuo amb el procés, sense canviar res de la configuració del bluetooth, i quan faig ./simple-agent hcio xx:xx:xx:xx:xx acabo amb un error d’autenticació sense que hagi tingut l’oportunitat de posar el pin.
root@robert-debian:/usr/share/doc/bluez/examples# ./simple-agent hci0 00:1E:52:6E:59:8B
Creating device failed: org.bluez.Error.AuthenticationCanceled: Authentication Canceled
Val a dir que el bluetooth em funciona amb l’iphone, per exemple, per compartir la connexió d’internet. Dedueixo, doncs, que el tinc ben configurat. Malgrat tot no puc aparellar els dos aparells. Alguna idea?