Ok, oto dokładnie to, co zrobiłem, nie ma potrzeby rootowania HTC:
Skonfiguruj bind9 i NAT itp ...
Uwaga: 1: jeśli wykonasz sudo echo 1> / proc / sys / net / ipv4 / ip_forward, otrzymasz błąd uprawnień, więc oto skrypt dla procesu 2: Możesz sprecyzować iptables o tym, jak to robi dodawanie parametrów dla określonych urządzeń.
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
teraz podłącz telefon i wybierz „Internet pass through”
poczekaj na pojawienie się urządzenia:
ifconfig
sprawdź, czy jest również w:
arp
Odkryłem, że muszę odłączyć urządzenie, a następnie podłączyć je ponownie, aby pojawiło się w arp, rzeczy nie działają poprawnie, jeśli arp nie pokazuje urządzenia.
Następnie urządzenie będzie siedzieć i czekać, aż HTC Sync wyśle mu wiadomość, więc musisz wyśmiewać wiadomość 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
Mogę napisać wersję tego za pomocą D-Bus, aby ta ostatnia część była wykonywana automatycznie po podłączeniu urządzenia itp.
Ok, oto moja praca w toku, nie mogłem znaleźć niczego „ogólnego” na d-bus, więc zdecydowałem się na trochę hackowania przy użyciu udev. To nie jest idealne, na przykład polecenie uruchamia się dwukrotnie, więc Będę musiał sprawdzić, czy mogę lepiej filtrować pasujące parametry, dodać także limit czasu na ostatnim skrypcie, po prostu zwiększyć i zobaczyć, czy mogę zastąpić arp czymś nieco lepszym, powiedzmy patrząc w / proc
tutaj.s mój plik .rules z /etc/udev/rules.d utworzyłem
cat /etc/udev/rules.d/htc-desire.rules
Możesz nazwać to jak chcesz, ale NIE ROZPOCZNIJ GO NUMEREM, w ten sposób zostanie uruchomiony na końcu.
Dodaj następujące pliki do pliku jako sudo za pomocą edytora, który wybierzesz itp.
#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
Zasadniczo, jeśli nie widzisz tych 3 'r,
sudo chmod a+r /etc/udev/rules.d/htc-desire.rules
Następnie będziesz potrzebować dwóch kolejnych plików, jednego do połączenia drugiego, ponieważ RUN z udev zablokuje wszystko inne (nawet jeśli jest uruchamiane jako ostatni !!) ... hmm ... w każdym razie:
Pliki w moim katalogu domowym utworzyłem na razie „/ home / olli /” ... więc pamiętaj, aby zastąpić bit „/ home / olli /” za każdym razem, gdy tworzysz pliki:
więc dla mnie cd do mojego katalogu domowego.
cd ~
utwórz plik o nazwie
chain_mock_htc_sync.sh
zawierający następujące elementy:
#!/bin/bash
/home/olli/mock_htc_sync.sh "$1" &
exit
sprawiają, że jest wykonywalny
chmod +x chain_mock_htc_sync.sh
utwórz inny plik o nazwie
mock_htc_sync.sh
zawierający następujące
#!/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
Spraw, by był wykonywalny:
chmod +x mock_htc_sync.sh
Mam nadzieję, że powinienem mieć ładną uporządkowaną wersję, jak tylko pos. (prawdopodobnie jutro).