Jump to content

[Tuto][Initié]Synchronisation portable avec PC


16ar

Recommended Posts

Hop je commence par réserver des posts

Résumé

Ce tutorial va vous permettre de synchroniser votre téléphone portable avec un répertoire de fichiers sur votre machine linux via bluetooth.

J'ai eu le besoin de sauvegarder mes contacts sur mon PC car je faisais de moins en moins confiance à mon portable et j'avais peur de ne plus accéder à mes contacts car ils étaient stockés sur le téléphone et non pas sur la SIM. De plus, je change de portable dans pas longtemps, raison de plus pouvoir transférer les contacts d'un portable à un autre.

Environnement de test

* Toute cette procédure a été effectuée sous une Debian sid/unstable kernel 2.6.17.4

* Dongle bluetooth USB : MSI. Bluetooth USB Dongle

* Téléphone portable : SonyEricsson T68i

* outils et librairies utilisées : la pile bluetooth bluez, le logiciel de synchronisation multisync

Link to comment
Share on other sites

Installation du bluetooth

(je me suis basé sur ce tutorial pour configurer ma machine : http://gentoo-wiki.com/HOWTO_The_host-to-host_Bluetooth)

Tout d'abord, avant de transférer les données via bluetooth, il faut avoir un bluetooth fonctionnel ! Même au fond ca suit, formidable !

Pour que le bluetooth marche, puisque c'est lié à du matériel et des protocoles, il y'a une partie nécéssaire dans le kernel (kernelspace), et une autre en outils utilisateurs (userspace)

Les modules kernel nous intéressant se trouvent :

Networking  --->
 <*> Bluetooth subsystem support  --->
  <*> L2CAP protocol support
  <*> SCO links support
  <*> RFCOMM protocol support
	  [*] RFCOMM TTY support
  <*> BNEP protocol support
	  [*] Multicast filter support
	  [*] Protocol filter support
		  Bluetooth device drivers  --->
			<*> HCI USB driver
				[*] SCO (voice) support
USB support  --->
 <*> Support for Host-side USB
 --- USB Host Controller Drivers
 <M> EHCI HCD (USB 2.0) support
 <M> OHCI HCD support
 <*> UHCI HCD (most Intel and VIA) support
 --- USB Device Class drivers
 <*> USB Audio support

Installons ensuite les paquets qui nous intéressent :

aptitude install bluetooth

Ca devrait installer bluez-utils et toute les dépendances afférentes.

A partir de la, nous devrions avoir des outils sympathique comme hcitool, hciconfig, rfcomm, l2ping ...

Link to comment
Share on other sites

utilitaires en ligne de commande

hciconfig : utilitaire permettant de configurer le service et les periphériques bluetooth de la machine linux. C'est un utilitaire root.

hcitool : utilitaire permettant d'interagir avec les périphériques bluetooth externes à la machine linux (téléphone portable, kit main libre...). Il est utilisable en tant qu'utilisateur pour la lecture (scanner les périphériques bluetooth a proximité), mais nécéssite les droits root lorsqu'il y'a des connexions a initier.

l2ping : utilitaire permettant de pinger un périphérique bluetooth à proximité et déjà jumelé. Il nécéssite les droits root (car le programme créé un socket)

rfcomm : utilitaire permettant de lier un periphérique bluetooth jumelé à la machine linux. Cela créera un periphérique /dev/rfcommXX qui est accessible comme un port série. C'est une sorte d'émulation de port série via bluetooth. Il nécéssite les droits root puisqu'il créé un périphérique dans /dev/).

La liaison automatique de périphériques connus se fait dans

/etc/bluetooth/rfcomm.conf

services :

hcid : le daemon qui permet à une machine linux d'avoir un accès bluetooth. Il se configure dans

/etc/bluetooth/hcid.conf

Link to comment
Share on other sites

Vérifions que notre périphérique bluetooth est détecté :

# grep ^[TPD] /proc/bus/usb/devices | grep Cls=e0 -B1 -A1
T:  Bus=02 Lev=02 Prnt=03 Port=00 Cnt=01 Dev#=  4 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=e0(unk. ) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0a12 ProdID=0001 Rev= 5.25

le : Cls=e0(unk. ) indique que c'est une périphérique bluetooth. (me demandez pas pourquoi, c'est indiqué dans le tutorial gentoo ! )

Commencons par configurer notre daemon hcid

Vérifions que le périphérique bluetooth est bien reconnu par la pile bluez à coup de hciconfig :

# hciconfig
hci0:   Type: USB
	BD Address: 00:02:72:C9:00:3B ACL MTU: 377:10 SCO MTU: 16:0
	UP RUNNING AUTH
	RX bytes:169931 acl:7386 sco:0 events:3285 errors:0
	TX bytes:90769 acl:4746 sco:0 commands:174 errors:0

Mon dongle bluetooth est donc bien reconnu et est utilisé par le système en tant que : hci0

Modifions /etc/bluetooth/pin afin que nous ayons un PIN par défaut pour notre configuration

1234

Nous allons faire en sorte que hcid soit configuré comme il faut a chaque démarrage pour notre dongle. il suffit de remplir le fichier de configuration /etc/bluetooth/hcid.conf tel quel et d'adapter suivant les cas (y'a beaucoup d'options que je ne connais pas et donc que j'ai copié collé)

#
# HCI daemon configuration file.
#

# HCId options
options {
	# Mise en marche automatique des nouveaux périphériques (je suppose lors d'un branchement à chaud : TODO: à tester)
	autoinit yes;

	# Mode de gestion de la sécurité
	#   none - aucun gestionnaire de sécurité
	#   auto - on utilise le pin de /etc/bluetooth/pin ou le passkey pour accepter les connexions (TODO: quel pin est lu, celui du fichier de conf pin, ou celui du passkey ?)
	#   user - On demande le PIN a chaque fois à l'utilisateur lors de jumelage
	#
	security auto;

	# Mode de jumelage
	#   none  - aucun jumelage
	#   multi - Jumelage multiple
	#   once  - Jumele 1 périphérique et refuse les autres (TODO: à tester)
	pairing multi;

	# code PIN par défaut lors de connexions entrantes

	passkey "1234";
}

# Les paramêtres par défaut pour les périphériques bluetooth de la machine
device {
	# Le nom du périphérique affiché lors d'un scan 
	#   %d - ID du périphérique
	#   %h - Nom de la machine (le contenu de /etc/hostname)
	name "%h a le BlueZ";

	# La classe du périphérique local (TODO: utilité ?)
	class 0x3e0100;

	# Default packet type
	#pkt_type DH1,DM1,HV1;

	# Accepter les scan
	# iscan : inquiry  scan (les scans effectués par les autres appareils pour voir qui est disponible en bluetooth)
	# pscan : page scan (TODO: utilité du page scan)
	# ATTENTION : seul le pscan à l'air d'être activé au démarrage automatique TODO:voir pourquoi le iscan n'est pas activé
	iscan enable; pscan enable;

	# Le mode de liaison par défaut
	#   none   - pas de règle par défaut
	#   accept - accepte toujours les connexion entrantes
	#   master - devient le maitre de la connexion entrante
	#			refuse ce role dans des connexion sortantes (TODO: traduction mot a mot, je ne sais pas à quoi ca sert :p)
	lm accept;

	# Règle de liaison par défaut
	#   none	- aucun
	#   rswitch - autorise le changement de role
	#   hold	- autorise la conservation de la liaison
	#   sniff   - autorise le sniffing 
	#   park	- autorise le park 
	# TODO:comprendre tout ca
	lp rswitch,hold,sniff,park;
}

Il suffit ensuite de relancer le service bluetooth.

# /etc/init.d/bluetooth restart

On vérifie que la configuration est bien telle qu'on l'a indiqué dans le fichier de configuration :

# hciconfig -a

Ca devrait ressembler à ça :

hci0:   Type: USB
	BD Address: 00:02:72:C9:00:3B ACL MTU: 377:10 SCO MTU: 16:0
	UP RUNNING PSCAN ISCAN
	RX bytes:9336 acl:153 sco:0 events:308 errors:0
	TX bytes:5331 acl:140 sco:0 commands:134 errors:0
	Features: 0xff 0xfe 0x0d 0x38 0x08 0x08 0x00 0x00
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
	Link policy: RSWITCH HOLD SNIFF PARK
	Link mode: SLAVE ACCEPT
	Name: 'TouffeBleue a le BlueZ'
	Class: 0x3e0100
	Service Classes: Networking, Rendering, Capturing, Object Transfer, Audio
	Device Class: Computer, Uncategorized
	HCI Ver: 1.2 (0x2) HCI Rev: 0x14 LMP Ver: 1.2 (0x2) LMP Subver: 0x309
	Manufacturer: Broadcom Corporation (15)

Si il n'y a pas ISCAN indiqué, votre machine linux ne sera pas détectable par les scan des téléphones portables. Pour vous faciliter la tâche, activez le :

# hciconfig hci0 piscan

piscan permet d'activer le iscan ET le pscan. Comme je ne sais pas a quoi sert le pscan, je préfère l'activer quand même :yes:

A partir de maintenant, on peut scanner notre machine linux avec nos portables bluetooth. On peut même les jumeler en utilisant le code de liaison indiqué dans le passkey de /etc/bluetooth/hcid.conf ou dans /etc/bluetooth/pin

Une fois que les appareils sont jumelés, on va crééer les périphériques rfcomm et on va enfin pouvoir utiliser multisync.

La suite au prochain numéro :)

Link to comment
Share on other sites

Configuration des connexions en RFCOMM

Maintenant que nos périphériques sont jumelés et peuvent se voir, ils doivent pouvoir communiquer entre eux. On va créer cette liaison en utilisant RFCOMM (Radio Frequency COMMunication).

Tout d'abord, on va vérifier que notre téléphone portable support la synchronisation avec IrMC :

sdptools browse

sdptools (Service Discovery Protocol) permet de savoir quels sont les services disponibles sur le portable et donc les moyens de communications.

Pour mon t68i, ca donne :

Inquiring ...
Browsing 00:11:22:33:44:55 ...
Service Name: Dial-up Networking
Service RecHandle: 0x10000
Service Class ID List:
 "Dialup Networking" (0x1103)
 "Generic Networking" (0x1201)
Protocol Descriptor List:
 "L2CAP" (0x0100)
 "RFCOMM" (0x0003)
Channel: 1
Profile Descriptor List:
 "Dialup Networking" (0x1103)
Version: 0x0100

Service Name: Fax
Service RecHandle: 0x10001
Service Class ID List:
 "Fax" (0x1111)
 "Generic Telephony" (0x1204)
Protocol Descriptor List:
 "L2CAP" (0x0100)
 "RFCOMM" (0x0003)
Channel: 2
Profile Descriptor List:
 "Fax" (0x1111)
Version: 0x0100

Service Name: Voice gateway
Service RecHandle: 0x10002
Service Class ID List:
 "Headset Audio Gateway" (0x1112)
 "Generic Audio" (0x1203)
Protocol Descriptor List:
 "L2CAP" (0x0100)
 "RFCOMM" (0x0003)
Channel: 3
Profile Descriptor List:
 "Headset" (0x1108)
Version: 0x0100

Service Name: Serial Port 1
Service RecHandle: 0x10003
Service Class ID List:
 "Serial Port" (0x1101)
Protocol Descriptor List:
 "L2CAP" (0x0100)
 "RFCOMM" (0x0003)
Channel: 4

Service Name: Serial Port 2
Service RecHandle: 0x10004
Service Class ID List:
 "Serial Port" (0x1101)
Protocol Descriptor List:
 "L2CAP" (0x0100)
 "RFCOMM" (0x0003)
Channel: 5

Service Name: OBEX Object Push
Service RecHandle: 0x10005
Service Class ID List:
 "OBEX Object Push" (0x1105)
Protocol Descriptor List:
 "L2CAP" (0x0100)
 "RFCOMM" (0x0003)
Channel: 10
 "OBEX" (0x0008)
Profile Descriptor List:
 "OBEX Object Push" (0x1105)
Version: 0x0100

Service Name: IrMC Synchronization
Service RecHandle: 0x10006
Service Class ID List:
 "IrMC Sync" (0x1104)
Protocol Descriptor List:
 "L2CAP" (0x0100)
 "RFCOMM" (0x0003)
Channel: 11
 "OBEX" (0x0008)
Profile Descriptor List:
 "IrMC Sync" (0x1104)
Version: 0x0100

Service Name: Voice gateway
Service RecHandle: 0x1000f
Service Class ID List:
 "Handfree Audio Gateway" (0x111f)
 "Generic Audio" (0x1203)
Protocol Descriptor List:
 "L2CAP" (0x0100)
 "RFCOMM" (0x0003)
Channel: 6
Profile Descriptor List:
 "Handsfree" (0x111e)
Version: 0x0100

Ainsi on voit que le service IrMC est disponible sur le canal 11.

On va configurer rfcomm pour se lier sur le canal 11.

On peut tout configurer avec l'utilitaire en ligne de commande

rfcomm

Seulement, y'a plus automatique pour ne pas avoir à le faire a chaque fois, le fichier /etc/bluetooth/rfcomm.conf

On va l'editer tel quel

# le nom indique le nom du périphérique accessible via /dev/nomDuPeriph. ici, ca sera /dev/rfcomm0
# et pour les utilisations de la commande rfcomm, le chiffre de fin indique l'ID du périphérique, ici : 0
rfcomm0 {
	# On lie automatiquement le périphérique distant au démarrage sur le peripherique /dev/rfcomm0
	bind yes;

	# On indique l'adresse bluetooth du périphérique distant
	device 00:11:22:33:44:55;

	#On indique le canal qui sera lié, ici le 11 est pour le service IrMC de mon T68i
	channel 11;

	#Un commentaire
	comment "16aR";
}

On peut relancer le service bluetooth

/etc/init.d/bluetooth restart
[code]


NOTE : Ce fichier de configuration nous simpliefiera la vie lorsqu'on utiliseras rfcomm. Exemple, quand on veut connecter le PC et le portable ensemble sur le canal 11, il faut normalement lancer : 
[code]rfcomm connect 0 00:11:22:33:44:55 11

On connecte le periphérique 0 (/dev/rfcomm0) avec le périphérique distant 00:11:22:33:44:55 sur le canal 11

Comme on a deja indiqué que /dev/rfcomm0 et 00:11:22:33:44:55 sont liés dans le fichier /etc/bluetooth/rfcomm.conf, il nous suffit de faire :

rfcomm connect 0

Le reste sera lu dans le fichier de config :)

On vérifie que notre connexion rfcomm est bien ok :

rfcomm

Moi ca indique :

rfcomm0: 00:11:22:33:44:55 channel 11 clean

On va donc passer à la configuration de multisync

Link to comment
Share on other sites

Multisync, configuration et utilisation

tout d'abord, récupérons multisync :

# aptitude install multisync libmultisync-plugin-backup libmultisync-plugin-irmc-bluetooth

lançons le.

On va créer un nouveau profil de synchronisation : bouton New... ou CTRL + N

Une fenetre de configuration va s'ouvrir.

Les parties intéressantes sont en premiere page :

first plugin

second plugin

En effet, chaque plugin permet une synchronisation particuliere : synchronisation d'un téléphone portable vers un repertoire d'un systeme de fichier classique, ou bien vers un agenda/calendrier d'Evolution.

Pour le moment, je n'ai testé que le plugin sauvegardant les données vers le systeme de fichier : backup.

Mon premier plugin sera donc : IrMC Mobile Device

Mon deuxieme sera : Backup

On séléctionne les parties que l'on veut synchroniser : Calendrier, contacts et les taches

Configuration d'IrMC Mobile Device

On appuie sur Options et on tombe sur une nouvelle fenetre de configuration.

Dans connection, on séléctionne bluetooth

Puis multisync nous mache le boulot, on appuie sur search for device en ayant activé le bluetooth sur notre appareil. Il devrait le detecter : on le selectionne, et pour bien faire, on vérifie la connexion avec le test.

Si ca ne marche pas, les 2 périphérique (pc et portables) ne sont surement pas jumelés.

Une fois que la connexion fonctionne, on peut sortir de ce panneau.

NOTE: il y'a des options a tester dans l'autre onglet de ce panneau. Notamment dans bug workaround, il se peut qu'une case non cochée empechera le bon fonctionnement.

Configuration de Backup

Dans l'onglet options, on séléctionne un répertoire vers lequel on veut une sauvegarde du contenu de notre portable.

Voila, c'est fini pour la configuration.

On finit par donner un nom a notre profil de synchronisation (genre PhoneToPC) et on valide.

La synchronisation !

De retour sur l'interface principale de multisync, notre profil est apparu dans la liste.

On séléctionne notre profil, et on appuie sur sync. Ensuite, on attends.

Suivant les options cochées dans l'onglet options de IrMC, on verra apparaitre sur notre téléphone : synchronisation en cours, ou pas.

En tout cas, soyez patient. Ca m'a pris presque 5 min à me transférer mes 340 données (contacts, evenement + todo)

Normalement, dans votre répertoire de backup vous devriez avoir 1 fichier par donnée. Il vous suffira d'utiliser votre outil préféré pour récuperer le fichier contenant le nom et le numéro de votre contact perdu.

a savoir

grep -i "leNomDeMonContact" /mon/repertoire/de/backup/* | xargs cat | grep 

Pour moi, je cherche mon ami Gerard Majax

grep -i "gerard.*majax" * | cut -d: -f1 | xargs cat | grep TEL

Ca me sort :

TEL;HOME:0123456789
TEL;CELL:9876543210

Ou sinon un

grep -i "gerard.*majax" * | cut -d: -f1 | xargs cat

nous permettras d'afficher le contenu entier des fichiers pour gerard majax, on pourra récupérer son email par exemple. (qui est bien sur gerard.majax@grandmagicien.com, tout le monde le sait)

Link to comment
Share on other sites

[Réservé]

Bon ben je pense que j'ai reservé assez de posts.

Vous pouvez commencer a commenter :)

Par contre, oui c moche, et oui, y'a pas beaucoup d'infos, en tout cas, pas les infos intéressantes :p Ca viendra demain :)

Link to comment
Share on other sites

Par contre, oui c moche, et oui, y'a pas beaucoup d'infos, en tout cas, pas les infos intéressantes :p Ca viendra demain :)

C'est quand même assez déroutant en ligne de commande. C'est pas possible de la faire avec une gui ?

En tout cas très bien :p , si je ne trouve pas un logiciel qui le fais je prendrais une semaine sabatique et je me lancerais la dedans (qui a dit que j'étais nouveau sous nunux ;) )

Link to comment
Share on other sites

Maintenant que je comprends un peu mieux l'architecture du bluetooth, j'ai pu faire des recherche plus pertinentes, et j'ai trouvé ca :

http://www.kde-apps.org/content/show.php?content=23061

Ce script permet a votre machine linux de fournir de devenir un accessoire bluetooth (comme un clavier, un kit main libre, ..) et donc de pouvoir acceder a des options via votre menu accessoire de votre téléphone bluetooth.

La, ce logiciel utilise bluemote pour gérer le mode "accessoire", lui il prémache la configuration de bluemote via un panneau de configuration kommander. Il possède des scripts tout fait pour bluemote : amarok, koffice Kpresenter, kmplayer.

Ainisi, grace a ca, dans notre menu accessoire, on voit PC remote, et de la on peut par exemple changer la chanson d'Amarok en cours.

Plus utile, dans le cadre d'une présentation professionnelle avec KPresenter, on peut changer de slide sans changer de place ou se pencher sur la machine. La l'intéret est déjà plus grand.

Bref, moi j'adore :)

Link to comment
Share on other sites

Le tutorial est terminé pour ce que j'ai pu découvrir et utiliser du bluetooth et multisync

Voila, j'espere que ca vous a plu et que ca vous sera utile :)

Je mettrai en forme quand j'aurai du temps, et aussi je rajouterai des screenshots pour multisync.

Bon bidouillage de touffe bleue !

Link to comment
Share on other sites

Hop, un petit shot pour agrémenter le topic (j'utilise depuis pas mal de temps l'interface bluetooth pour communiquer avec mon téléphone : ça fonctionne nickel) :

shot6qu8.th.png

Téléphone : Samsung SGH-E730

Dongle : Belkin Dongle USB Bluetooth 10 (F8T009 via bcm2035)

Le tout sous Gentoo x86_64.

edit : sinon, pour ma part, je fais toutes les manipulations via l'interface graphique de KDE, une fois la phase de configuration passée (ce qui est fait depuis un bout de temps, à vrai dire).

Link to comment
Share on other sites

Bon, moi je viens de tester la synchronisation IrMC->Ximian2 Evolution

Ca marche impec. Mon calendrier est géré, mes contacts et ma liste de tache aussi.

Le calendrier sur mon T68i ne gère qu'un seul rappel par contre, et la gestion des groupes du t68i et d'evolution est différente.

Mais au final, vive le gain de temps (clavier azerty, clavier telephone portable)

J'ai utilisé evolution car y'a pas de plugin pour kde-PIM sur multisync, et j'ai pas encore testé autre chose que ca.

Link to comment
Share on other sites

  • 1 month later...

Bonjour à tous, j'ai changé de portable et je viens de tester sur mes nouvelles config :

OS : ubuntu 6.06 Dapper

Téléphone : SonyEricsson W850i

Ca marche impec !

La seule variation, c'est le nom du service bluetooth sous ubuntu : c'est bluez-utils.

Donc /etc/init.d/bluez-utils restart au lieu de /etc/init.d/bluetooth restart

Voila :p

(bon par contre, les photos des contacts ne sont pas synchronisé dans evolution :( )

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...