Ok, voici exactement ce que j'ai fait, pas de rooting de HTC souhaité :
Configurer bind9 et NAT etc...
note : 1 : si vous faites simplement sudo echo 1 > /proc/sys/net/ipv4/ip_forward vous obtiendrez une erreur de permissions, donc voici un script pour le processus 2 : Vous pouvez rendre iptables plus spécifique sur la façon dont il fait les choses en ajoutant des paramètres pour des périphériques spécifiques.
cd ~
echo '!/bin/bash
apt-get install bind9
iptables -A POSTROUTING -t nat -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward' > setup_bind9_nat.sh
chmod +x setup_bind9_nat.sh
sudo ./setup_bind9_nat.sh
Maintenant, branchez votre téléphone et sélectionnez "Internet pass through".
attendre que l'appareil apparaisse : ifconfig
vérifier qu'il est aussi dans : arp
J'ai découvert que je devais débrancher le périphérique puis le rebrancher pour qu'il apparaisse dans arp, les choses ne fonctionnent pas correctement si arp ne montre pas le périphérique.
L'appareil attendra ensuite que HTC Sync lui envoie un message. Vous devez donc vous moquer du message de HTC Sync :
#change this line to be more specific if you have more than one usb network device
phone_usb_device="usb"
get_ip ()
{
arp -n | grep $phone_usb_device | awk '{print $1}'
}
#TODO: This needs a timeout and loop needs cleaning up, but works fine and borrowed from another post.
echo "waiting for IP on computer usb"
while [[ `get_ip` < 192 ]];do sleep 2; done
phoneip=`get_ip`
echo "IP adress is $phoneip "
echo -n -e "\x00\x02\x00\x00" | nc -q 2 $phoneip 6000 > /dev/null
Je vais peut-être écrire une version de ceci en utilisant le D-Bus pour que la dernière partie s'exécute automatiquement lorsque le dispositif est branché etc.....
Ok, voici mon travail en cours, je n'ai pas pu trouver quelque chose de 'générique' sur le d-bus donc j'ai opté pour une solution un peu bricolée en utilisant udev . Ce n'est pas parfait, par exemple la commande est exécutée deux fois, donc je vais devoir voir si je peux filtrer les paramètres correspondants un peu mieux, aussi ajouter un timeout sur le dernier script, juste au cas où et voir si je peux remplacer arp avec quelque chose d'un peu mieux, par exemple regarder dans /proc.
Voici le fichier .rules que j'ai créé à partir de /etc/udev/rules.d
cat /etc/udev/rules.d/htc-desire.rules
Vous pouvez l'appeler comme vous voulez, mais ne le commencez pas par un numéro, car il sera exécuté en dernier.
Ajoutez ce qui suit au fichier en tant que sudo en utilisant un éditeur de votre choix etc....
#KERNEL=="usb?" or DRIVERS=="usb" not sure which is best, may need extra mode information too from usb device.
SUBSYSTEM=="net", DRIVERS=="usb", ATTRS{manufacturer}=="HTC", ATTRS{idProduct}=="0ffe", RUN+="/home/olli/chain_mock_htc_sync.sh $kernel"
Ubuntu is setup to create the file with the correct permissions already
ls -lrt /etc/udev/rules.d/htc-desire.rules
-rw-r--r-- 1 root root 248 Jun 26 22:09 htc-desire.rules
En gros, si tu ne vois pas ces 3 "r",
sudo chmod a+r /etc/udev/rules.d/htc-desire.rules
Ensuite, vous aurez besoin de deux autres fichiers, l'un pour enchaîner l'autre, puisque RUN de udev bloquera tout le reste (même s'il est exécuté en dernier ! !)... hmm... enfin bref :
J'ai créé les fichiers dans mon répertoire personnel pour l'instant "/home/olli/" ... donc n'oubliez pas de remplacer la partie '/home/olli/' par l'endroit où vous créez les fichiers :
donc pour moi, cd dans mon répertoire personnel.
cd ~
créer un fichier appelé
chain_mock_htc_sync.sh
contenant les éléments suivants :
#!/bin/bash
/home/olli/mock_htc_sync.sh "$1" &
exit
le rendre exécutable
chmod +x chain_mock_htc_sync.sh
créer un autre fichier appelé
mock_htc_sync.sh
comprenant les éléments suivants
#!/bin/bash
#change this line to be more specific if you have more than one usb network device
phone_usb_device="$1"
get_ip ()
{
arp -n | grep $phone_usb_device | awk '{print $1}'
}
#TODO: This needs a timeout and loop needs cleaning up, but works fine and borrowed from another post.
echo "waiting for IP on computer $phone_usb_device"
while [[ `get_ip` /dev/null
Rendez-le exécutable :
chmod +x mock_htc_sync.sh
Avec un peu de chance, je devrais avoir une version bien rangée bientôt. (probablement demain).