Partage Internet par bluetooth pour PDA

Surfer sur internet avec un PDA en utilisant la connexion Bluetooth d’un PC linux qui sert de passerelle. Cela peut être utile pour enregistrer des itinéraires avant de partir en vacances par exemple.

Principe

Le PDA va établir une liaison par bluetooth avec un PC sous linux grâce à une clé usb-bluetooth. Ce PC sous linux sera configuré pour partager sa connexion internet permanente.

Installation des outils nécessaires

apt-get install bluez-hcidump libbluetooth1
apt-get install bluez-utils bluez-firmware

Une connexion ppp va être utilisée donc les packages relatifs sont aussi nécessaire (souvent installés par défaut).

Configuration

Brancher la clé usb, normalement, les modules nécessaires sont chargés automatiquement. Vérifier avec lsmod que le module hci_usb est chargé.

Relancer le gestionnaire bluetooth: /etc/init.d/bluez-utils start

La commande hciconfig donne normalement un résultat du style:

hci0:   Type: USB
        BD Address: 11:22:33:44:55:66 ACL MTU: 192:8 SCO MTU: 64:8
        UP RUNNING PSCAN ISCAN
        RX bytes:107 acl:0 sco:0 events:14 errors:0
        TX bytes:300 acl:0 sco:0 commands:13 errors:0

où 11:22:33:44:55:66 est l’adresse de la clé bluetooth.

Si le PDA est allumé et à proximité, une requête hcitool inq permet de le détecter:

Inquiring ...
        66:55:44:33:22:11       clock offset: 0x1030    class: 0x120110

où 66:55:44:33:22:11 est l’adresse bluetooth du PDA (le PDA doit être configuré pour être détectable bien sur)

l2ping 66:55:44:33:22:11 permet de pinger le PDA pour vérifier que la connexion est là.

Editer le fichier /etc/bluetooth/rfcomm.conf pour autoriser le PDA à se connecter:

rfcomm0 {
   bind yes;
   device 66:55:44:33:22:11;
   channel 1;
   comment "Pocket PC";
}

suivit de la commande rfcomm bind all.

hciconfig -a permet d’avoir des informatins plus détaillées, notamment le nom client affecté par défaut (du type monordi-0)

Lancement de la connexion

Création de la connexion entrante:
dund --listen --msdun --channel 1 192.168.2.101:192.168.2.102

Autorisation au niveau du firewall et spécification du routage:

echo '1' > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i ppp0 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Dans l’hypothèse où la connexion internet permanente se trouve sur eth0 et où la connexion créée par le PDA se fait sur ppp0.

Configuration d’un Pocket PC

Sur le pocketPC:
Bluetooth manager -> new -> connect! -> connect to the internet.
next -> connect via a LAN… -> next -> choisir le pc sous linux

Si la connexion échoue avec un message dans /var/log/messages du style

cat /var/log/messages
Mar 14 00:17:22 localhost pppd[19725]: Using interface ppp0
Mar 14 00:17:22 localhost pppd[19725]: Connect: ppp0 <--> /dev/rfcomm1
Mar 14 00:17:25 localhost pppd[19725]: Peer monordi-0 failed CHAP authentication
Mar 14 00:17:25 localhost pppd[19725]: Connection terminated.
Mar 14 00:17:25 localhost pppd[19725]: Hangup (SIGHUP)

Il faut modifier le fichier /etc/ppp/chap-secrets

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses

"monordi-0"            *       "monpassword"          *

le nom client et le password étant les même que ceux entré sur le pocketPC à l’étape précédente.

Si la connexion n’est pas DHCP, préciser les DNS au PocketPC. cat /etc/resolv.conf pour connaitre les DNS utilisés en général par le PC. Sur le pocketPC: Menu Demarrer -> Settings -> onglet Connections -> Connections -> Manage existing connections -> BT Network Access -> Edit -> Next -> Next -> Régler les user name et password -> advanced -> onglet TCP/IP -> spécifier l’adresse 192.168.2.102 -> onglet serveur -> ajouter les DNS -> ok -> finish.

La tentative suivante de connexion devrait fonctionner

Déconnexion

Se déconnecter à partir du PDA, puis kill des programmes dund sdpd et hcid sur le PC.

Notes

Je n’ai pas réussi à faire marcher ce partage avec un ordinateur sous Windows XP à la place de Linux malgré un nombre de tentatives non négligeable. L’absence de messages d’erreur clairs empêche de localiser la source du problème (tout l’intérêt des logs sous Linux). Un écran bleu signalant un plantage d’un module de communication est même arrivé redémarrant tout le PC. C’est pour cela que j’ai tenté de faire l’opération sous Linux. J’ai été surpris de la rapidité et de la facilité à mettre un tel système en place.

Une source qui m’a bien aidé pour faire marcher tout ca: http://www.metacon.ca/bcs/view.php?page=bluetooth

Leave a Reply

Your email address will not be published. Required fields are marked *