Ok, ecco esattamente quello che ho fatto, nessun rooting di HTC desiderato:
Setup bind9 e NAT ecc ...
nota: 1: se fai semplicemente sudo echo 1> / proc / sys / net / ipv4 / ip_forward otterrai un errore permessi, quindi ecco uno script per il processo 2: Puoi rendere iptables più specifico su come fa le cose aggiunta di parametri per dispositivi specifici.
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
ora collega il tuo telefono e seleziona "Internet pass through"
attendere che il dispositivo appaia in:
ifconfig
verificare che sia anche in:
arp
Ho scoperto che dovevo scollegare il dispositivo e ricollegarlo perché appaia in arp, le cose non funzionano correttamente se arp non mostra il dispositivo.
Il dispositivo rimarrà quindi in attesa che HTC Sync invii un messaggio, quindi è necessario deridere il messaggio HTC Syncs:
#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
Potrei scrivere una versione di questo usando D-Bus in modo che quest'ultima parte venga eseguita automaticamente quando il dispositivo è collegato, ecc ...
Ok, ecco i miei lavori in corso, non sono riuscito a trovare nulla di "generico" su d-bus, quindi ho optato per un po 'di una soluzione di hacking usando udev .. Questo non è perfetto, ad esempio il comando viene eseguito due volte, quindi ho dovrò vedere se riesco a filtrare un po 'meglio i parametri corrispondenti, aggiungere anche un timeout sull'ultimo script, solo in caso di evase e vedere se posso sostituire arp con qualcosa di un po' meglio, diciamo guardando in / proc
ecco il mio file .rules da /etc/udev/rules.d che ho creato
cat /etc/udev/rules.d/htc-desire.rules
Puoi chiamarlo come preferisci ma NON INIZIARLO CON UN NUMERO, in questo modo viene eseguito per ultimo.
Aggiungi quanto segue al file come sudo usando un editor a tua scelta ecc ....
#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
Fondamentalmente, se non vedi quei 3 'r,
sudo chmod a+r /etc/udev/rules.d/htc-desire.rules
Quindi avrai bisogno di altri due file, uno per concatenare l'altro, poiché RUN da udev bloccherà tutto il resto (anche se è eseguito per ultimo !!) ... hmm ... comunque:
Ho creato i file nella mia directory home per ora "/ home / olli /" ... quindi ricordati di sostituire il bit '/ home / olli /' con ovunque tu crei i file:
quindi per me, cd nella mia home directory.
cd ~
crea un file chiamato
chain_mock_htc_sync.sh
contenente quanto segue:
#!/bin/bash
/home/olli/mock_htc_sync.sh "$1" &
exit
renderlo eseguibile
chmod +x chain_mock_htc_sync.sh
crea un altro file chiamato
mock_htc_sync.sh
contenente quanto segue
#!/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
Renderlo eseguibile:
chmod +x mock_htc_sync.sh
Spero di avere una bella versione riordinata non appena pos. (probabilmente domani).