Ok, esto es exactamente lo que hice, no se desea rootear HTC:
Configurar bind9 y NAT, etc.
nota: 1: si solo hace sudo echo 1> / proc / sys / net / ipv4 / ip_forward obtendrá un error de permisos, así que aquí hay un script para el proceso 2: puede hacer que iptables sea más específico sobre cómo hace las cosas al Agregar 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
ahora conecte su teléfono y seleccione 'internet pass through'
espere a que aparezca el dispositivo:
ifconfig
compruebe que también está en:
arp
Descubrí que tenía que desconectar el dispositivo y luego enchufarlo nuevamente para que aparezca en arp, las cosas no funcionan correctamente si arp no muestra el dispositivo.
El dispositivo esperará a que HTC Sync le envíe un mensaje, por lo que debe burlarse del mensaje 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
Puedo escribir una versión de esto usando D-Bus para que la última parte se ejecute automáticamente cuando el dispositivo está enchufado, etc.
Ok, aquí está mi trabajo en progreso, no pude encontrar nada 'genérico' en d-bus, así que opté por un poco de solución de pirateo usando udev ... Esto no es perfecto, por ejemplo, el comando se ejecuta dos veces, así que Tendré que ver si puedo filtrar los parámetros coincidentes un poco mejor, también agregar un tiempo de espera en el último script, por si acaso, y ver si puedo reemplazar arp con algo un poco mejor, digamos buscando en / proc
aquí está mi archivo .rules de /etc/udev/rules.d que creé
cat /etc/udev/rules.d/htc-desire.rules
Puedes llamarlo como quieras pero NO COMIENCE CON UN NÚMERO, de esa manera se ejecuta al final de todo.
Agregue lo siguiente al archivo como sudo usando un editor de su elección, 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
Básicamente, si no ves esas 3 'r,
sudo chmod a+r /etc/udev/rules.d/htc-desire.rules
Entonces necesitará dos archivos más, uno para encadenar el otro, ya que RUN desde udev bloqueará todo lo demás (¡aunque se ejecute por última vez!) ... hmm ... de todos modos:
Creé los archivos en mi directorio de inicio por ahora "/ home / olli /" ... así que recuerde reemplazar el bit '/ home / olli /' con el lugar donde cree los archivos:
así que para mí, cd a mi directorio de inicio.
cd ~
crear un archivo llamado
chain_mock_htc_sync.sh
que contiene lo siguiente:
#!/bin/bash
/home/olli/mock_htc_sync.sh "$1" &
exit
hazlo ejecutable
chmod +x chain_mock_htc_sync.sh
crear otro archivo llamado
mock_htc_sync.sh
contactando lo siguiente
#!/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
Hazlo ejecutable:
chmod +x mock_htc_sync.sh
Espero tener una buena versión ordenada tan pronto como sea posible. (probablemente mañana).