Ok, aqui está exatamente o que eu fiz, nenhum enraizamento da HTC desejado:
Instalação bind9 e NAT etc ...
note: 1: se você apenas fizer sudo echo 1> / proc / sys / net / ipv4 / ip_forward, receberá um erro de permissão, então aqui está um script para o processo 2: Você pode tornar as tabelas de ip mais específicas sobre como ele faz as coisas, adicionando parâmetros para dispositivos específicos.
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
agora conecte seu telefone e selecione 'Internet Pass Through'
aguarde o dispositivo aparecer:
ifconfig
verifique também em:
arp
Descobri que era necessário desconectar o dispositivo e conectá-lo novamente para que ele apareça no arp; as coisas não funcionarão corretamente se o arp não mostrar o dispositivo.
O dispositivo fica aguardando que o HTC Sync envie uma mensagem para que você precise zombar da mensagem do 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
Posso escrever uma versão disso usando o D-Bus, para que a última parte seja executada automaticamente quando o dispositivo estiver conectado, etc.
Ok, aqui está o meu trabalho em andamento, eu não consegui encontrar nada 'genérico' no d-bus, então optei por uma solução de hack usando o udev. Isso não é perfeito, por exemplo, o comando é executado duas vezes, então eu vou ter que ver se consigo filtrar os parâmetros correspondentes um pouco melhor, também adicionar um tempo limite no último script, apenas colocar e ver se consigo substituir o arp por algo um pouco melhor, digamos procurando em / proc
here.s meu arquivo .rules em /etc/udev/rules.d Criei
cat /etc/udev/rules.d/htc-desire.rules
Você pode chamá-lo como quiser, mas NÃO O INICIE COM UM NÚMERO, para que seja executado por último.
Adicione o seguinte ao arquivo como sudo usando um editor de sua escolha, 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
Basicamente, se você não vê esses 3 'r's,
sudo chmod a+r /etc/udev/rules.d/htc-desire.rules
Então você precisará de mais dois arquivos, um para encadear o outro, já que o RUN do udev bloqueará todo o resto (mesmo que tenha sido executado por último !!) ... hmm ... de qualquer maneira:
Eu criei os arquivos no meu diretório pessoal por enquanto "/ home / olli /" ... então lembre-se de substituir o bit '/ home / olli /' por onde você criar os arquivos:
então, para mim, CD para o meu diretório pessoal.
cd ~
crie um arquivo chamado
chain_mock_htc_sync.sh
contendo o seguinte:
#!/bin/bash
/home/olli/mock_htc_sync.sh "$1" &
exit
torná-lo executável
chmod +x chain_mock_htc_sync.sh
crie outro arquivo chamado
mock_htc_sync.sh
contendo o seguinte
#!/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
Torne executável:
chmod +x mock_htc_sync.sh
Espero ter uma boa versão arrumada assim que pos. (provavelmente amanhã).