ठीक है, यहां मैंने वही किया, जो एचटीसी की इच्छा नहीं थी:
सेटअप bind9 और NAT आदि ...
नोट: 1: यदि आप सिर्फ sudo echo 1> / proc / sys / net / ipv4 / ip_forward करते हैं, तो आपको एक अनुमति त्रुटि मिलेगी, इसलिए यहां प्रक्रिया 2 के लिए एक स्क्रिप्ट है: आप iptables को इसके बारे में और अधिक विशिष्ट बना सकते हैं, जिसके द्वारा यह काम करता है विशिष्ट उपकरणों के लिए पैरामीटर जोड़ना।
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
अब आप फोन में प्लग इन करें और 'इंटरनेट पास' सेलेक्ट करें
डिवाइस के प्रदर्शित होने की प्रतीक्षा करें:
ifconfig
यह देखें कि यह भी इसमें है:
arp
मैंने पाया कि मुझे डिवाइस को अनप्लग करना था फिर इसे फिर से आरपी में प्रदर्शित करने के लिए प्लग करें, अगर एआरपी डिवाइस को नहीं दिखाता है तो चीजें ठीक से काम नहीं करती हैं।
इसके बाद डिवाइस आपको सिंक करने के लिए HTC सिंक का इंतजार करने बैठेगा ताकि आपको 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
मैं डी-बस का उपयोग करके इसका एक संस्करण लिख सकता हूं ताकि बाद वाला हिस्सा स्वचालित रूप से निष्पादित हो जब डिवाइस आदि में प्लग किया गया हो ...।
ठीक है, यहाँ मेरा काम प्रगति पर है, मुझे डी-बस में कुछ भी 'जेनेरिक' नहीं मिला, इसलिए मैंने udv का उपयोग करके एक हैक समाधान का एक सा विकल्प चुना। यह सही नहीं है, उदाहरण के लिए कमांड दो बार चलती है, इसलिए मैं यह देखना होगा कि क्या मैं मिलान के मापदंडों को थोड़ा बेहतर फ़िल्टर कर सकता हूं, अंतिम स्क्रिप्ट पर एक टाइमआउट भी जोड़ सकता हूं, बस संलग्न करें और देखें कि क्या मैं कुछ बेहतर के साथ arp को बदल सकता हूं, कहिए / देख कर
यहाँ /etc/udev/rules.d से मेरी .rules फ़ाइल बनाई गई है
cat /etc/udev/rules.d/htc-desire.rules
आप इसे अपनी पसंद के अनुसार कुछ भी कह सकते हैं, लेकिन इसे एक नंबर के साथ शुरू न करें, इस तरह यह सभी के अंतिम भाग में चला जाता है।
फ़ाइल में निम्नलिखित को आप अपनी पसंद के संपादक के रूप में sudo के रूप में जोड़ें ... आदि।
#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
मूल रूप से, यदि आप उन 3 आर को नहीं देखते हैं,
sudo chmod a+r /etc/udev/rules.d/htc-desire.rules
फिर आपको दो और फ़ाइलों की आवश्यकता होगी, एक को दूसरे से चेन करने के लिए, क्योंकि udv से RUN बाकी सब को ब्लॉक कर देगा (भले ही यह अंतिम चल रहा हो !!) ... hmm ... anyhow:
मैंने अपने होम डायरेक्टरी में अभी "/ home / olli /" के लिए फाइलें बनाई हैं ... इसलिए जहाँ भी आप फाइल बनाते हैं, '/ home / olli /' बिट को बदलना याद रखें:
तो मेरे लिए, मेरे घर निर्देशिका के लिए सीडी।
cd ~
नामक एक फ़ाइल बनाएँ
chain_mock_htc_sync.sh
निम्नलिखित शामिल हैं:
#!/bin/bash
/home/olli/mock_htc_sync.sh "$1" &
exit
इसे अमल में लाएं
chmod +x chain_mock_htc_sync.sh
नामक एक अन्य फ़ाइल बनाएँ
mock_htc_sync.sh
निम्नलिखित के विपरीत
#!/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
इसे निष्पादित करें:
chmod +x mock_htc_sync.sh
उम्मीद है कि मेरे पास जल्द से जल्द एक अच्छा ख़बरदार संस्करण होना चाहिए। (संभवत: कल)।