Table des matières
creer une connexion entre son telephone portable equipe d'un modem et son ordinateur
Par bluetooth
Voir si son périphérique bluetooth est reconnu par linux
# hcitool dev Devices: hci0 00:01:02:03:04:05
Rechercher l'adresse bluetooth du téléphone
Ouvrez un terminal et taper :
# hcitool scan Scanning ... 00:17:83:48:XX:XX Gigi # l2ping 00:17:83:48:XX:XX Ping: 00:17:83:48:XX:XX from 00:22:43:A5:XX:XX (data size 44) ... 0 bytes from 00:17:XX:XX:E1:D6 id 0 time 35.62ms
Rechercher la liste des services du téléphone avec sdptool
gigi@portable:~$ sdptool browse 00:17:83:48:XX:XX Browsing 00:17:83:48:XX:XX ... Service Name: AVRCP Target Service Description: Audio Video Remote Control Service Provider: Symbian Software Ltd. Service RecHandle: 0x10000 Service Class ID List: "AV Remote Target" (0x110c) Protocol Descriptor List: "L2CAP" (0x0100) PSM: 23 "AVCTP" (0x0017) uint16: 0x100 Profile Descriptor List: "AV Remote" (0x110e) Version: 0x0100 Service Name: Hands-Free Audio Gateway Service RecHandle: 0x10003 Service Class ID List: "Handsfree Audio Gateway" (0x111f) "Generic Audio" (0x1203) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 1 Language Base Attr List: code_ISO639: 0x454e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "Handsfree" (0x111e) Version: 0x0105 Service Name: Audio Source Service RecHandle: 0x10004 Service Class ID List: "Audio Source" (0x110a) Protocol Descriptor List: "L2CAP" (0x0100) PSM: 25 "AVDTP" (0x0019) uint16: 0x100 Language Base Attr List: code_ISO639: 0x454e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "Advanced Audio" (0x110d) Version: 0x0100 Service Name: Headset Audio Gateway Service RecHandle: 0x10005 Service Class ID List: "Headset Audio Gateway" (0x1112) "Generic Audio" (0x1203) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 2 Language Base Attr List: code_ISO639: 0x454e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "Headset" (0x1108) Version: 0x0100 Service Name: AVRCP Controller Service Description: Audio Video Remote Control Service Provider: Symbian Software Ltd. Service RecHandle: 0x10006 Service Class ID List: "AV Remote" (0x110e) Protocol Descriptor List: "L2CAP" (0x0100) PSM: 23 "AVCTP" (0x0017) uint16: 0x100 Profile Descriptor List: "AV Remote" (0x110e) Version: 0x0100 Service Name: SyncMLClient Service RecHandle: 0x10007 Service Class ID List: UUID 128: 00000002-0000-1000-8000-0002ee000002 Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 10 "OBEX" (0x0008) Language Base Attr List: code_ISO639: 0x454e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "" (0x00000002-0000-1000-8000-0002ee000002) Version: 0x0100 Service Name: OBEX File Transfer Service RecHandle: 0x10008 Service Class ID List: "OBEX File Transfer" (0x1106) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 11 "OBEX" (0x0008) Language Base Attr List: code_ISO639: 0x454e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "OBEX File Transfer" (0x1106) Version: 0x0100 Service Name: Nokia OBEX PC Suite Services Service RecHandle: 0x10009 Service Class ID List: UUID 128: 00005005-0000-1000-8000-0002ee000001 Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 12 "OBEX" (0x0008) Language Base Attr List: code_ISO639: 0x454e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "" (0x00005005-0000-1000-8000-0002ee000001) Version: 0x0100 Service Name: Phonebook access PSE Service Provider: Symbian Software Ltd Service RecHandle: 0x1000a Service Class ID List: "Phonebook Access - PSE" (0x112f) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 3 "OBEX" (0x0008) Language Base Attr List: code_ISO639: 0x656e encoding: 0x01 base_offset: 0x6a Profile Descriptor List: "Phonebook Access" (0x1130) Version: 0x0100 Service Name: OBEX Object Push Service RecHandle: 0x1000b Service Class ID List: "OBEX Object Push" (0x1105) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 9 "OBEX" (0x0008) Language Base Attr List: code_ISO639: 0x454e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "OBEX Object Push" (0x1105) Version: 0x0100 Service Name: Dial-Up Networking <-- ici Service RecHandle: 0x1000c Service Class ID List: "Dialup Networking" (0x1103) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) <-- rfcomm protocol Channel: 4 <-- channel 4 Language Base Attr List: code_ISO639: 0x454e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "Dialup Networking" (0x1103) Version: 0x0100 Service Name: Imaging Service RecHandle: 0x1000d Service Class ID List: "Imaging Responder" (0x111b) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 15 "OBEX" (0x0008) Language Base Attr List: code_ISO639: 0x454e encoding: 0x6a base_offset: 0x100 Profile Descriptor List: "Imaging" (0x111a) Version: 0x0100
Rechercher dans la liste qui apparaît le service Dial-up Networking, puis rechercher son numéro de channel (dans notre cas 4).
Créer un périphérique correspondant au téléphone avec rfcomm
rfcomm connect <n°périph. à créer> [addresse du périph.bluetooth] [canal]
Ce qui donne, pour notre exemple, cette commande, à taper dans un terminal (en root):
rfcomm connect 0 00:17:83:48:XX:XX 4 Connected /dev/rfcomm0 to 00:0E:07:30:6B:78 on channel 1 Press CTRL-C for hangup
Rendre la liaison rfcomm avec le téléphone permanente
Une fois la connexion testée avec succès il est possible de rendre permanente la liaison avec le téléphone. Pour cela il vous faut éditer le fichier /etc/bluetooth/rfcomm.conf et y copier le contenu suivant en remplaçant avec l'adresse et le channel Bluetooth de votre téléphone:
rfcomm0 { # Liaison automatique de rfcomm0 au démarrage bind yes; # Adresse Bluetooth du périphérique device 00:0E:07:30:6B:78; # Canal RFCOMM à utiliser channel 1; }
Connexion avec wvdial
Créer un fichier appelé wvdial_Bluetooth.conf comme indiqué ci-dessous :
[Dialer Defaults] Modem = /dev/rfcomm0 ISDN = off Modem Type = Analog Modem Baud = 460800 Init = ATZ Init2 = AT+cgdcont=,"IP","wapsfr" Init3 = Init4 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 Phone = *99***1# Phone1 = Dial Prefix = Dial Attempts = 1 Dial Command = ATM0L0DT Ask Password = off Password = wapsfr Username = wapsfr Auto Reconnect = off Abort on Busy = off Carrier Check = off Check Def Route = on Abort on No Dialtone = on Stupid Mode = off Idle Seconds = 2400 Auto DNS = on ;Minimize = on ;Dock = on ;Do NOT edit this file by hand!
Pour lancer une connexion :
sudo wvdial -C wvdial_Bluetooth.conf
- Pour SFR :
o Nom d'utilisateur : websfr
o Mot de passe : websfr
o Numéros de Téléphone : *99***1# ou *99***3#
- Pour Orange :
o Nom d'utilisateur : orange
o Mot de passe : orange
o Numéros de Téléphone : *99#
- Pour Bouygues :
o Nom d'utilisateur : wap
o Mot de passe : wapwap
o Numéros de Téléphone : *99#
Connexion par câble
Sur port Série
- Si vous utilisez le port Série numéro 1 de votre ordinateur (le seul ou celui du haut) le nom interne sera : /dev/ttyS0
- Si vous utilisez le port Série numéro 2 de votre ordinateur (celui du bas) le nom interne sera : /dev/ttyS1
En IrDA (infrarouge)
- Le nom de votre périphérique infrarouge est par défaut : /dev/irda0
Sur Port USB
gigi@portable:~$ sudo udevadm monitor --udev monitor will print the received events for: UDEV - the event which udev sends out after rule processing UDEV [1241173783.066410] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1 (usb) UDEV [1241173783.080047] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0 (usb) UDEV [1241173783.085161] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.2 (usb) UDEV [1241173783.092353] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.4 (usb) UDEV [1241173783.109670] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.6 (usb) UDEV [1241173783.112113] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.6/usb_endpoint/usbdev2.3_ep84 (usb_endpoint) UDEV [1241173783.114375] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.6/usb_endpoint/usbdev2.3_ep03 (usb_endpoint) UDEV [1241173783.121222] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/usb_endpoint/usbdev2.3_ep00 (usb_endpoint) UDEV [1241173783.121992] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.8 (usb) UDEV [1241173783.124257] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.8/usb_endpoint/usbdev2.3_ep86 (usb_endpoint) UDEV [1241173783.126578] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.8/usb_endpoint/usbdev2.3_ep04 (usb_endpoint) UDEV [1241173783.139347] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.1 (usb) UDEV [1241173783.142391] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.3 (usb) UDEV [1241173783.190327] add /module/usbnet (module) UDEV [1241173783.215157] add /module/cdc_ether (module) UDEV [1241173783.216077] add /bus/usb/drivers/cdc_ether (drivers) UDEV [1241173783.217138] add /module/rndis_host (module) UDEV [1241173783.217216] add /bus/usb/drivers/rndis_host (drivers) UDEV [1241173783.218221] add /module/rndis_wlan (module) UDEV [1241173783.219325] add /bus/usb/drivers/rndis_wlan (drivers) UDEV [1241173783.227076] add /module/cdc_acm (module) UDEV [1241173783.227295] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.7 (usb) UDEV [1241173783.228612] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.7/usb_endpoint/usbdev2.3_ep85 (usb_endpoint) UDEV [1241173783.229939] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.5 (usb) UDEV [1241173783.230831] add /bus/usb/drivers/cdc_acm (drivers) UDEV [1241173783.231859] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.5/usb_endpoint/usbdev2.3_ep83 (usb_endpoint) UDEV [1241173783.780097] add /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.5/tty/ttyACM0 (tty)
On voit à la dernière ligne que le périphérique ttyACM0 est ajouté, il se trouve dans /dev/ttyACM0.
En regardant dans /var/log/kernel.log, on voit également :
May 1 12:29:43 portable kernel: [ 4392.978487] cdc_acm 2-1:1.5: ttyACM0: USB ACM device
La configuration est la meme, il suffit maintenant de lancer la commande wvdial en modifiant dans le fichier de configuration /dev/rfcomm0 par /dev/ttyACM0.
Création de scipt
Le script Internet permet de se connecter à internet en 3G et le script sms permet d'envoyer des SMS.
Si vous intilisez le script sms, vous devrez installer le paquet suivant :
sudo aptitude install gsmsendsms
about::config
Changer la valeur de la ligne general.useragent.extra.firefox à NokiaN95.
optionnel : si ca ne marche pas positionner le proxy sur l'ip 195.115.25.129 et sur le port 8080
- switch proxy pour changer facilement de proxy
- User Agent Switcher ppur configurer et changer facilement de user agent
script shell basique
Internet
#!/bin/bash if [ `id -u` != 0 ] ; then echo "Seul root peut lancer ce programme" exit 0 fi if [ -e /dev/ttyACM0 ] ; then echo "Connexion par USB" wvdial -C wvdial_USB.conf else echo "Connexion par bluetooth" if [ ! -e /dev/rfcomm0 ] ; then echo "Création de l'interface de communication /dev/rfcomm0" nohup rfcomm connect 0 00:17:83:48:E1:D6 4& sleep 6 fi sudo wvdial -C wvdial_Bluetooth.conf fi
SMS
#!/bin/bash if [ `id -u` != 0 ] ; then echo "Seul root peut lancer ce programme"; exit 0 fi if [ -e /dev/ttyACM0 ] ; then echo "Connexion par câble" dev="/dev/ttyACM0" else echo "Connection par bluetooth" if [ ! -e /dev/rfcomm0 ] ; then echo "Création de l'interface de communication /dev/rfcomm0" nohup rfcomm connect 0 00:17:83:48:E1:D6 4& sleep 1 fi dev="/dev/rfcomm0" fi printf "\nEntrer le numéro du destinataire comme de la façon suivante : +33620274684\n" read num_dest printf "Entrer votre message\n" read -d "#" message gsmsendsms -C +33609001390 -d "$dev" "$num_dest" "$message"
Script graphique
Il existe plusieurs outils pour faire du script graphique, perl TK, GTK dialog, zenity (GTK), kdialog (QT), Xdialog…
Nous utiliserons Xdialog.
sudo aptitude install dialog xdialog
Tuto Xdialog :
Internet
#!/bin/bash if [ -z $DISPLAY ] then DIALOG=dialog else DIALOG=Xdialog fi title="GigiX Internet 3G" if [ `id -u` != 0 ] ; then #echo "Seul root peut lancer ce programme"; $DIALOG --title "$title" --msgbox 'Seul root peut lancer ce programme !' 0 0 exit 0 fi log=/home/gigi/Documents/conf_3G_portable/log.txt if [ -e /home/gigi/Documents/conf_3G_portable/log.txt ] ; then rm "$log" touch "$log" else touch "$log" fi if [ "$1" = "--debug" ] ; then $DIALOG --title "$title" --no-cancel --date-stamp --logbox "$log" 0 0& $DIALOG --title "$title" --no-cancel --date-stamp --logbox /var/log/syslog 0 0& fi if [ -e /dev/ttyACM0 ] ; then echo "Connexion par câble" | tee -a "$log" dev="/dev/ttyACM0" echo "Utilisation du périphérique $dev" | tee -a "$log" else echo "Connection par bluetooth" | tee -a "$log" if [ ! -e /dev/rfcomm0 ] ; then echo "Création de l'interface de communication /dev/rfcomm0" | tee -a "$log" nohup rfcomm connect 0 00:17:83:48:E1:D6 4 | tee -a "$log"& compteur1=16 ( while [ "$compteur1" -le 100 ] do echo $compteur1 echo "XXX" echo "Création de l'interface de communication /dev/rfcomm0 (blutooth)" echo "XXX" compteur1=`expr $compteur1 + 16` sleep 1 done ) | $DIALOG --title "$title" --gauge "Création de l'interface de communication /dev/rfcomm0 (blutooth)" 20 70 0 if [ `grep down "$log" | wc -l` = 1 ] ; then $DIALOG --title "$title" --msgbox 'Raccorder le téléphone par câble ou activer le bluetooth' 0 0 exit fi else echo "/dev/rfcomm0 déjà créée, réutilisation de cette interface" | tee -a "$log" fi dev="/dev/rfcomm0" echo "Utilisation du périphérique $dev" | tee -a "$log" fi compteur2=0 ( while [ "$compteur2" != 102 ] do if [ `tail -10 /var/log/syslog | grep primary | wc -l` = 1 ] ; then compteur2=100; echo $compteur2 echo "XXX" echo "Connecté ($compteur2 pourcent)" echo "XXX" sleep 2 connect=1 else echo $compteur2 echo "XXX" echo "Tentative de connexion au réseau SFR ($compteur pourcent)" echo "XXX" if [ "$compteur2" = 98 ]; then if [ "$connect" = 1 ] ; then $DIALOG --title "$title" --msgbox "Problème l'initialisation modem du portable" 0 0 exit fi fi fi compteur2=`expr $compteur2 + 2` sleep 1 done ) | $DIALOG --title "$title" --gauge "Connexion en cours..." 20 70 0& if [ -e /dev/ttyACM0 ] ; then echo "Connexion par USB" | tee -a "$log" wvdial -C wvdial_USB.conf | tee -a "$log" else echo "Connexion par bluetooth" | tee -a "$log" if [ ! -e /dev/rfcomm0 ] ; then echo "Création de l'interface de communication /dev/rfcomm0" | tee -a "$log" nohup rfcomm connect 0 00:17:83:48:E1:D6 4 | tee -a "$log"& sleep 6 fi sudo wvdial -C wvdial_Bluetooth.conf | tee -a "$log" fi
SMS
Ce script utilise un fichier nommé annuaire-tel.txt comme annuaire, il doit avoir cette syntaxe :
+33611111111 tata status1 +33622222222 toto status1 ...
#!/bin/bash if [ -z $DISPLAY ] then DIALOG=dialog else DIALOG=Xdialog fi title="GigiX SMS" if [ `id -u` != 0 ] ; then #echo "Seul root peut lancer ce programme"; $DIALOG --title "$title" --msgbox 'Seul root peut lancer ce programme !' 0 0 exit 0 fi log=/home/gigi/Documents/conf_3G_portable/log.txt if [ -e /home/gigi/Documents/conf_3G_portable/log.txt ] ; then rm "$log" touch "$log" else touch "$log" fi if [ "$1" = "--debug" ] ; then $DIALOG --title "$title" --no-cancel --date-stamp --logbox "$log" 0 0& fi if [ -e /dev/ttyACM0 ] ; then echo "Connexion par câble" | tee -a "$log" dev="/dev/ttyACM0" echo "Utilisation du périphérique $dev" | tee -a "$log" else echo "Connection par bluetooth" | tee -a "$log" if [ ! -e /dev/rfcomm0 ] ; then echo "Création de l'interface de communication /dev/rfcomm0" | tee -a "$log" nohup rfcomm connect 0 00:17:83:48:E1:D6 4 | tee -a "$log"& compteur1=16 ( while [ "$compteur1" -le 100 ] do echo $compteur1 echo "XXX" echo "Création de l'interface de communication /dev/rfcomm0 (blutooth)" echo "XXX" compteur1=`expr $compteur1 + 16` sleep 1 done ) | $DIALOG --title "$title" --gauge "Création de l'interface de communication /dev/rfcomm0 (blutooth)" 20 70 0 if [ `grep down "$log" | wc -l` = 1 ] ; then $DIALOG --title "$title" --msgbox 'Raccorder le téléphone par câble ou activer le bluetooth' 0 0 exit fi else echo "/dev/rfcomm0 déjà créée, réutilisation de cette interface" | tee -a "$log" fi dev="/dev/rfcomm0" echo "Utilisation du périphérique $dev" | tee -a "$log" fi num_dest=`Xdialog --title "$title" --help "Cliquer sur annuler pour pouvoir saisir manuellement" --buildlist "Annuaire de GIGI" 0 0 1 \`cat annuaire-tel.txt| sort -k 2 | tr "\n" " "\` 2>&1` EXIT_CODE=$? case $EXIT_CODE in 0) # All OK. The $RESULTS variable holds everything entered/choosed by the user. ;; 1) # Cancel/No pressed. num_dest=`$DIALOG --title "$title" --inputbox 'Entrer les numéros des destinataires de cette forme +33620274684' 0 0 2>&1` EXIT_CODE=$? case $EXIT_CODE in 0) # All OK. The $RESULTS variable holds everything entered/choosed by the user. ;; 1) # Cancel/No pressed. exit ;; 255) # An error occured or the box was closed. exit ;; esac ;; 255) # An error occured or the box was closed. exit ;; esac if [ "$num_dest" = '' ] ; then $DIALOG --title "$title" --msgbox 'Vous devez entrer un numéro de téléphone' 0 0 exit fi num_dest=`echo $num_dest | sed s/"\/"/' '/g` message=`Xdialog --title "$title" --editbox text 1 0 2>&1` if [ "$?" = 1 ] ; then exit fi echo "Utilisation du centre de messagerie SFR +33609001390" | tee -a "$log" for num in $num_dest do gsmsendsms -C +33609001390 -d "$dev" "$num" "$message" | tee -a "$log" echo "Envoie du message à "$num" en cours ..." | tee -a "$log" done
Firefox
Tapez dans la barre d'adresse ceci : about:config
Dans le champ Filtre, tapez “useragent”, puis double cliquez sur le nom de l'option : general.useragent.extra.firefox et remplacez le contenu par “NokiaN95”.