Condividere una tastiera bluetooth tra linux e windows

Qui abbiamo visto che condividere un mouse bluetooth tra Linux e Windows è una cosa molto semplice dato che basta associare il mouse ad entrambi i sistemi operativi senza autenticazione ma se volessimo condividere una tastiera bluetooth tra Linux e Windows senza doverla ricollegare ogni volta le cose si complicano un poco dato che non è possibile associarla senza autenticazione.

In questo caso occorre fare in modo che la tastiera bluetooth venga collegata ad entrambi i sistemi operativi con la stessa chiave di pairing, a parole sembra molto facile ma questa non è una cosa che ci è possibile fare intuitivamente quindi aguzziamo l'ingegno e colleghiamo la tastiera con il pairing prima su Linux e poi su Windows, successivamente leggiamo dal registro di sistema la chiave che ha usato Windows per il pairing per il collegamento e la usiamo sotto Linux in modo da avere sempre la stessa chiave.

Basta chiacchiere, passiamo al lavoro.

Avviamo Linux e colleghiamo la tastiera con la procedura guidata (se non dovessimo essere sotto gnome scarichiamo ed installiamo gnome-bluetooth poiché i tool degli altri dm danno dei problemi).

Da shell diamo il comando:

sudo hciconfig

e segniamo l'indirizzo bluetooth del nostro hub hci0 che sarà tipo aa:aa:aa:aa:aa:aa.

Sempre da shell diamo il comando:

sudo hidd --show

e segniamo l'indirizzo bluetooth della nostra tastiera che sarà tipo bb:bb:bb:bb:bb:bb.

Avviamo Windows e colleghiamo la tastiera con la procedura guidata.

Scarichiamo psexec.

Avviamo il cmd da amministratore ed avviamo il regedit con il seguente comando:

psexec -s -i regedit

(dobbiamo avviare il regedit in questo modo perché altrimenti anche se avviato da amministratore non è possibile leggere delle chivi sensibili)

Esportiamo la chiave:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys\aaaaaaaaaaaa

dove la parte finale aaaaaaaaaaaa è l'indirizzo bluetooth del nostro hub ed è lo stesso aa:aa:aa:aa:aa:aa che avevamo trovato sotto Linux tranne che per i due punti.

Analizzando la chiave esportata vediamo che al suo interno avremo qualcosa del tipo:

"bbbbbbbbbbbb"=hex:cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc

Bene, è facile intuire che la prima parte della stringa ci indica l'indirizzo bluetooth della nostra tastiera (che su linux era bb:bb:bb:bb:bb:bb) e la seconda parte della stringa ci indica la chiave che Windows ha usato per il pairing.

Appuntiamo questa chiave.

Controlliamo ora il nome dello stack bluetooth sotto Windows:

  • Clickare col tasto destro sull'icona del bluetooth
  • Apri Impostazioni -> Hardware -> Proprietà -> Avanzate
  • Controllare il nome

Appuntiamo questo nome.

Avviamo Linux dove ovviamente la tastierà bluetooth non sarà più funzionante.

Avviamo la schell e diamo il comando:

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

dove anche in questo caso aa:aa:aa:aa:aa:aa sarà l'ormai conosciuto indirizzo bluetooth del nostro hub.

Il file aperto sarà del tipo:

bb:bb:bb:bb:bb:bb DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 0 6

ed anche in questo caso è facile intuire che la prima parte della stringa  ci indica l'indirizzo bluetooth della nostra tastiera (che su windows era bbbbbbbbbbbb e la seconda parte della stringa  ci indica la chiave che Linux ha usato per il pairing.

Dobbiamo quindi sostituire la chiave usata da Linux per il pairing con quella usata da Windows prestando attenzione nello scriverla a lettere maiuscole e senza i due punti; In pratica la chiave usata da Windows era:

cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc,cc

e per noi sotto Linux diventa:

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

quindi il nostro nuovo file /var/lib/bluetooth/aa:aa:aa:aa:aa:aa/linkkeys sarà:

bb:bb:bb:bb:bb:bb CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 0 6

Ora assegniamo all'hub bluetooth lo stesso nome che ha sotto Windows:

sudo hciconfig
sudo hciconfig hci0 name nomewindows

Ed infine riavviamo il bluetooth:

sudo /etc/init.d/bluetooth restart

Ed ecco fatto, finalmente la tastiera è collegata ad entrambi i sistemi operativi.

Facile, no?

Nello stesso modo è possibile condividere un cellulare o un qualsiasi altro dispositivo bluetooth tra Linux e Windows.

3 comments

e se volessi la condivisione su android?
ho una tastiera wedge e vorrei usarla sul portatile windows/linux
e quando sono col tablet con quest'ultimo, che è già routed

Non me ne sono mai interessato perché non tollero i tablet ed i miei dispositivi android hanno una splendida tastiera qwerty estraibile, comunque sia dovrebbe essere abbastanza semplice e credo si debba lavorare sui dati presenti nel database sqlite dell'app /data/data/com.android.bluetooth. Appena ho un poco di tempo controllo meglio.

Bel lavoro.