Avete acquistato un Palm TX e volete effettuare la sincronizzazione via bluetooth?

In questo HowTo spiego i passi necessari a stabilire una connessione senza fili tra una linux box Debian equipped e un Palm TX.

Ovviamente il PC deve avere l'hardware necessario per le connessioni bluetooth.

Nel mio caso ho utilizzato un dongle USB con chipset CSR (Cambridge Silicon Radio).

Per capire meglio come gira il fumo, ho fatto tutto a manina, evitando accuratamente ogni automazione.

Il software che utilizzeremo per il sync è pilot-xfer della suite pilot-link.

Ritengo che le istruzioni possano valere anche per altri modelli di Palm, come il T5 o il Treo650.

Buona lettura!

Prima di partire, sinceriamoci che il dongle inserito in una delle nostre porte USB sia visto dal sistema digitando:

lsusb

esempio di output:

Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 001 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

Il primo software di sistema da installare se non già presente sulla nostra macchina è BlueZ, lo stack bluetooth ufficiale di Linux. Da bravi debianers digitiamo:

apt-get install bluez-utils

Per nostra maggiore sicurezza andiamo ad editare, come root, il file /etc/bluetooth/pin, sostituendo un nostro codice a quello standard (che è 1234). Utilizzeremo questo codice quando accoppieremo la nostra Linux box al Palm.

Avviamo i servizi bluetooth digitando:

/etc/init.d/bluetooth start

Inseriamo nel kernel il modulo hci_usb, necessario per utilizzare il bluetooth attraverso un dongle USB, digitando:

modprobe hci_usb

Verifichiamo se il dongle viene visto dai servizi bluetooth digitando:

hciconfig

esempio di output:

hci0: Type: USB
BD Address: 00:10:60:A4:2D:6F ACL MTU: 192:8 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN  RX bytes:370 acl:0 sco:0 events:16 errors:0
TX bytes:312 acl:0 sco:0 commands:15 errors:0

Qualora il dongle risultasse DOWN, possiamo attivarlo, digitando il comando:

hciconfig hci0 up

A questo punto, accendiamo il nostro Palm TX e attiviamo il suo bluetooth (Consenti rilevamento periferica deve essere su SI). Possiamo così verificare se viene visto da Linux digitando:

hcitool scan

esempio di output:

Scanning ...
00:70:E0:A8:9C:BC AtaualpaPalmTX

Nell'esempio AtaualpaPalmTX è il nome che io ho assegnato al mio Palm. La sequenza alfanumerica che precede il nome del Palm è il suo codice.

Possiamo acquisire ulteriori informazioni sul nostro Palm, sfruttando il codice del device appena ottenuto e digitando:

hcitool info 00:70:E0:A8:9C:BC

Ora modifichiamo alcuni file con le informazioni ottenute per garantire il funzionamento della connessione bluetooth.

Editiamo il file /etc/bluetooth/rfcomm.conf con i dati del Palm, ad esempio:

rfcomm0 {  
# Automatically bind the device at startup  
bind yes;  

# Bluetooth address of the device  
device 00:70:E0:A8:9C:BC;  

# RFCOMM channel for the connection   
channel 1;   

# Description of the connection   
comment "il mio AtaualpaPalmTX";   
}

Se più avanti dovessimo riscontrare problemi, editiamo il file /etc/bluetooth/hcid.conf, cambiando il valore di default della class in 0x100, ad esempio:

class 0x100;

Verifichiamo che la creazione del dispositivo rfcomm sia avvenuta correttamente digitando:

rfcomm

esempio di output: rfcomm0: 00:11:22:33:44:55 channel 1 clean

Se il canale dovesse essere closed, digitiamo in sequenza:

rfcomm release all

rfcomm bind rfcomm0 00:11:22:33:44:55 1

A questo punto riverifichiamo che il canale sia clean sempre con il comando rfcomm.

Registriamo il servizio di porta seriale digitando:

sdptool add --channel=1 SP

Mettiamo linux in ascolto sulla porta digitando:

rfcomm listen /dev/rfcomm0 1

rfcomm garantisce il supporto per una connessione bluetooth attraverso una porta seriale virtuale (che poi verrà utilizzata da PPP quando effettueremo il network syncing).

Riavviamo i servizi bluetooth digitando:

/etc/init.d/bluetooth restart

esempio di output:
Restarting bluetooth: hcid sdpd rfcomm

Adesso andiamo a lavorare sul Palm.

Dobbiamo creare una connessione per la nostra Linux box:

Apriamo l'applicazione Preferenze

  1. Selezioniamo Connessione
  2. Premiamo nuovo
  3. Assegniamo un nome alla connessione (es: BT to Linux)
  4. Selezioniamo PC in Connetti a:
  5. Selezioniamo Bluetooth in Via:.
  6. Selezioniamo il pulsante a fianco di Periferica per abbinare la nostra Linux Box come periferica Bluetooth da utilizzare con questa connessione. E' in questo momento che, selezionato il PC, dovremo inserire (una tantum) il nostro PIN precedentemente personalizzato.
  7. Premiamo Dettagli.
  8. Selezioniamo 115.200 bps in Velocità:.
  9. Lasciamo Automatico in Controllo di Flusso:.

Abbiamo fatto. Premiamo OK e salviamo per tornare al menu dell'applicazione Preferenze.

Ora dobbiamo fare in modo che il Palm abbia una rete a cui connettersi quando utilizziamo la connessione appena creata:

  1. Selezioniamo il menu Rete (siamo sempre in Preferenze).
  2. Selezioniamo Nuovo.
  3. Assegniamo un nome al Servizio (es: Linux).
  4. Non inseriamo Nome utente e Password.
  5. Selezioniamo la connessione creata prima in Connessione (nel nostro esempio: BT to Linux).
  6. Premiamo Dettagli.
  7. Lasciamo PPP come Tipo connessione.
  8. Lasciamo 3 minuti come Disconnessione dopo.
  9. Verifichiamo che siano selezionati con il chechmark sia Interroga DNS sia Indirizzo Ip Automatico.
  10. Selezioniamo Script...
  11. Verifichiamo che ci sia solo Fine.
  12. Fatto tutto, premiamo Fine, tornando così a Preferenze.

Per evitare l'utilizzo di visor, il kernel driver deputato a gestire le connessioni di Linux con palmari PalmOS based, ci affideremo alla modalità di network syncing sviluppata con le ultime versioni di pilot-link (al momento è "Anoxia" v0.12.0-pre4). Gli ulteriori passi ci serviranno inoltre per utilizzare la connessione bluetooth per navigare tramite la connessione internet del PC.

Creiamo il file /etc/ppp/peers/dun, che verrà utilizzato da dund per la connessione, inserendovi questo contenuto (personalizzato con i propri indirizzi di PC e rete):

115200  
192.168.1.2:10.0.1.40  
local  
ms-dns 192.168.1.1  
noauth  
debug 

192.168.1.2 è l'indirizzo IP del PC, 10.0.1.40 è l'indirizzo IP assegnato al Palm, 192.168.1.1 è l'indirizzo IP del gateway di accesso alla rete (es: un router).

dund è un demone che utilizza pppd per gestire la connessione con il Palm.

Eseguiamo dund. La prima volta che lo utilizziamo per il collegamento del palmare, può essere utile abilitare la visualizzazione a video del log, così da meglio intepretare eventuali problemi:

dund --nodetach --listen --persist --msdun call dun

Successivamente, quando tutto gira, dund può essere eseguito con:

dund --listen --persist --msdun call dun

Possiamo anche automatizzare l'esecuzione di dund all'avvio di bluez, modificando il file /etc/default/bluetooth alla sezione DUND come segue:

############ DUND  
#  
# Run dund -- this allows ppp logins. 1 for enabled, 0 for disabled.  
#DUND_ENABLED=0  
DUND_ENABLED=1  

# Arguments to dund: defaults to acting as a server  
#DUND_OPTIONS="--listen --persist"  
DUND_OPTIONS="--listen --persist --msdun call dun"  

Per forwardare le richieste dal palm verso la rete digitiamo:

echo 1 > /proc/sys/net/ipv4/ip_forward

Riavviamo i servizi bluetooth digitando:

/etc/init.d/bluetooth restart

esempio di output:
Restarting bluetooth: hcid sdpd rfcomm

Ricordiamo che ogni tentativo di connessione con il Palm deve essere effettuato avendo i servizi bluetooth attivi e il demone dund in esecuzione. Una volta che tutto funziona è comodo crearsi uno script che provvede al necessario (io non uso hotplug).

Se, oltre alla connessione Palm - PC per sincronizzare e scambiare file, vogliamo navigare in rete con il Palm dobbiamo avere in esecuzione anche il demone pand. Questo demone consente di accedere ad una connessione ethernet attraverso il bluetooth.

Siamo giunti al momento cruciale, perchè ora non ci rimane che provare ad eseguire il nostro primo network sync:

  1. Apriamo sul Palm l'applicazione HotSync.
  2. Apriamo il menù Opzioni di Hotsync e impostiamo su LANSync la Preferenza LANSync.
  3. Selezioniamo Rete come tipo di hotsync e clicchiamo su Seleziona PC.

Nella mia esperienza il Palm, pur connettendosi, dichiara di non rilevare nessun PC nella LAN. Se avete lo stesso esito, potete risolvere cliccando su Altro ed inserendo manualmente l'indirizzo IP del PC. L'indirizzo da inserire è lo stesso che abbiamo utilizzato nella configurazione del file /etc/ppp/peers/dun (nell'esempio precedente era 192.168.1.2).

Proviamo a interrogare il Palm, per ottenere l'elenco dei file contenuti nel nostro device. Sul Palm clicchiamo su HotSync e subito dopo, in un terminale sul PC, digitiamo (non è necessario essere root):

pilot-xfer -p net:any -l

esempio di output:
Listening for incoming connection on net:any... connected!

Reading list of databases in RAM...
AdditDVRData
AdditDVSData
ADD050SData
AdditSystemSData
AdditDVVData
AddItVData
.........

List complete. 281 files found.

Se questo primo sync ha funzionato, tutti i successivi dovremo eseguirli invertendo l'ordine di esecuzione dei due step: PRIMA lanceremo pilot-xfer e QUINDI attiveremo HotSync.

Se amiamo il terminale possiamo utilizzare pilot-xfer per tutte le nostre operazioni. Detto che man pilot-xfer sarà nostro amico, di seguito alcuni esempi:

pilot-xfer -p net:any -i file.da.installare

pilot-xfer -p net:any -b path.del.backup

pilot-xfer -p net:any -D /path.della.SD -i file.da.installare.sulla.SD

Con riferimento all'ultimo dei 3 esempi, va ricordato che al momento le operazioni che possono essere eseguite da pilot-link sulla SD sono: - opzione -l = lista del contenuto del device
- opzione -i = installazione del file nel device
- opzione -f = estrazione dal device del database specificato

Per chi vuole lavorare liberamente sulla propria SD il consiglio è quindi di dotare il proprio PC di un lettore di schede che consentirà di montare la SD come un qualsiasi dispositivo.

In alternativa, si può reperire ed utilizzare il programma Card Export II, che consente di gestire la scheda SD inserita nel Palm come se fosse un dispositivo standard USB Mass Storage.

I passi per utilizzare Card Export II sono i seguenti:

Carichiamo nel kernel il modulo usb-storage, digitando:

modprobe usb-storage

Montiamo la scheda, digitando:

mount -t vfat -o dmask=077,fmask=177,sync /dev/sda1 /mnt/usbflash

Ovviamente ciascuno personalizzerà il comando con il path della directory su cui montare la scheda (ad esempio, io ho creato /mnt/usbflash).

Come rilevato da un altro utente, se il riconoscimento della SD non andasse a buon fine provate a smontare e rimontare il modulo digitando in sequenza:

rmmod usb-storage  
modprobe usb-storage

Anche qui, se tutto funziona, non è poi difficile crearsi uno script per gestire il tutto più semplicemente: un esempio potete vederlo qui.

Per chi volesse utilizzare Jpilot come interfaccia grafica ai comandi della suite pilot-link, le uniche accortezze sono di: modificare con net:any l'indirizzo della porta seriale (menù File/Preferenze/Impostazioni) impostare a 115.200 la velocità seriale (stessa maschera)

Prima di concludere segnalo che per fare un debug della connessione bluetooth, nel caso in cui ci sia qualcosa che non funziona, ci si può aiutare lanciando il comando:

hcidump -X -V

hcidump è lo sniffer HCI per l'analisi del flusso RAW dei pacchetti bluetooth.

Ogni commento che farete per migliorare questo HowTo mi sarà utile, così come spero che Vi sia stato utile leggerlo.

Buon Network Syncing cari PalmDebianers!

Le seguenti pagine mi sono state d'aiuto e possono servire per ulteriori approfondimenti:

Synchronize your PalmOS® Handheld over Bluetooth in Linux
Syncing the Treo 650 with Bluetooth
Configure a linux PC as a bluetooth access point for a palm

Comments on this page are closed.