Tamam, işte tam olarak yaptığım şey, HTC'nin köklenmesi istenmiyor:
Bind9 ve NAT vb. Kurulum ...
not: 1: sadece sudo echo 1> / proc / sys / net / ipv4 / ip_forward yaparsanız, bir izin hatası alırsınız, bu yüzden işlem için bir komut dosyası 2: iptables'ı nasıl yaptığına dair daha spesifik yapabilirsiniz belirli cihazlar için parametre ekleme.
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
şimdi telefonunuzu takın ve 'İnternet geçişi'ni seçin
cihazın görünmesini bekleyin:
ifconfig
ayrıca:
arp
Arp'de görünmesi için cihazın fişini çıkarıp tekrar takmam gerektiğini buldum, arp cihazı göstermiyorsa işler düzgün çalışmıyor.
Cihaz daha sonra HTC Sync'in bir mesaj göndermesini beklerken oturup HTC Syncs mesajını taklit etmeniz gerekir:
#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
D-Bus kullanarak bunun bir sürümünü yazabilirim, böylece cihaz takıldığında ikinci parça otomatik olarak çalışır.
Tamam işim devam ediyor, ben d-bus üzerinde 'jenerik' bir şey bulamadım bu yüzden udev kullanarak bir hack çözüm seçti .. Bu mükemmel değil, örneğin komut iki kez çalışır, bu yüzden ben Eşleşme parametrelerini biraz daha iyi filtreleyip filtreleyemeyeceğimi, son komut dosyasına bir zaman aşımı ekleyip eklemeyeceğimi görmeliyim, sadece örtün ve arp'yi biraz daha iyi bir şeyle değiştirip değiştiremeyeceğimi görüyorum.
here.s /etc/udev/rules.d dosyamdaki .rules dosyamı oluşturdum
cat /etc/udev/rules.d/htc-desire.rules
İstediğiniz herhangi bir şey diyebilirsiniz, ancak bir numara ile başlamayın, böylece her şeyden önce çalışır.
Aşağıdakileri istediğiniz bir editör kullanarak sudo olarak dosyaya ekleyin ....
#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
Temel olarak, bu 3'leri görmüyorsanız,
sudo chmod a+r /etc/udev/rules.d/htc-desire.rules
Daha sonra, biri diğerini zincirlemek için iki dosyaya daha ihtiyacınız olacak, çünkü udev'den RUN diğer her şeyi engelleyecektir (son çalıştırılsa bile !!) ... hmm ... neyse:
Şimdilik "/ home / olli /" için ana dizinimdeki dosyaları oluşturdum ... bu yüzden '/ home / olli /' bitini dosyaları oluşturduğunuz her yerde değiştirmeyi unutmayın:
benim için, ana dizinime cd.
cd ~
adlı bir dosya oluştur
chain_mock_htc_sync.sh
aşağıdakileri içeren:
#!/bin/bash
/home/olli/mock_htc_sync.sh "$1" &
exit
çalıştırılabilir yap
chmod +x chain_mock_htc_sync.sh
adlı başka bir dosya oluştur
mock_htc_sync.sh
aşağıdakileri içeren
#!/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
Yürütülebilir yap:
chmod +x mock_htc_sync.sh
Umarım en kısa sürede pos kadar güzel bir tidied sürümü olmalıdır. (muhtemelen yarın).