ตกลงนี่คือสิ่งที่ฉันทำไม่มีการรูทเครื่อง HTC ที่ต้องการ:
ตั้งค่า 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
ฉันพบว่าฉันต้องถอดปลั๊กอุปกรณ์จากนั้นเสียบใหม่อีกครั้งเพื่อให้ปรากฏใน arp สิ่งต่าง ๆ ทำงานไม่ถูกต้องหาก arp ไม่แสดงอุปกรณ์
อุปกรณ์จะรอให้ HTC Sync ส่งข้อความดังนั้นคุณต้องจำลองข้อความ 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
ฉันอาจเขียนรุ่นนี้โดยใช้ D-Bus ดังนั้นส่วนหลังจะดำเนินการโดยอัตโนมัติเมื่อเสียบอุปกรณ์ ฯลฯ
ตกลงนี่คืองานของฉันอยู่ระหว่างดำเนินการฉันไม่พบอะไร 'ทั่วไป' บน d-bus ดังนั้นฉันจึงเลือกใช้แฮ็คโซลูชันโดยใช้ udev .. มันไม่สมบูรณ์แบบเช่นคำสั่งจะทำงานสองครั้งดังนั้นฉันจึง ฉันจะต้องดูว่าฉันสามารถกรองพารามิเตอร์การจับคู่ได้ดีขึ้นหรือไม่นอกจากนี้ยังเพิ่มการหมดเวลาในสคริปต์สุดท้ายเพียงแค่ใส่กล่องและดูว่าฉันสามารถแทนที่ arp ด้วยบางสิ่งที่ดีกว่าได้ไหมพูดใน / proc
here.s ไฟล์. rules ของฉันจาก /etc/udev/rules.d ฉันสร้างขึ้น
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
จากนั้นคุณจะต้องมีไฟล์เพิ่มเติมสองไฟล์ไฟล์หนึ่งเชื่อมโยงกันเนื่องจาก RUN จาก udev จะบล็อกทุกอย่าง (แม้ว่าไฟล์จะรันล่าสุด !!) ... อืม ... ยังไงก็ตาม:
ฉันสร้างไฟล์ในโฮมไดเร็กตอรี่ของคุณสำหรับตอนนี้ "/ 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
หวังว่าฉันควรจะมีเวอร์ชั่นที่ดีขึ้นเร็ว ๆ นี้ในฐานะที่เป็น POS (อาจเป็นวันพรุ่งนี้)