Ok, đây chính xác là những gì tôi đã làm, không cần root HTC mong muốn:
Thiết lập bind9 và NAT, v.v ...
lưu ý: 1: nếu bạn chỉ thực hiện sudo echo 1> / Proc / sys / net / ipv4 / ip_forward, bạn sẽ gặp lỗi quyền, vì vậy đây là tập lệnh cho quy trình 2: Bạn có thể làm cho iptables cụ thể hơn về cách thực hiện bằng cách thêm thông số cho các thiết bị cụ thể.
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
bây giờ hãy cắm điện thoại của bạn và chọn 'internet qua'
chờ thiết bị xuất hiện trong:
ifconfig
kiểm tra xem nó cũng ở trong:
arp
Tôi thấy rằng tôi phải rút phích cắm thiết bị sau đó cắm lại để thiết bị xuất hiện trong arp, mọi thứ không hoạt động đúng nếu arp không hiển thị thiết bị.
Sau đó, thiết bị sẽ ngồi chờ HTC Sync gửi tin nhắn để bạn phải giả lập tin nhắn 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
Tôi có thể viết một phiên bản này bằng D-Bus để phần sau tự động thực thi khi thiết bị được cắm, v.v ....
Ok đây là công việc của tôi đang tiến hành, tôi không thể tìm thấy bất cứ điều gì 'chung chung' trên d-bus vì vậy tôi đã chọn một chút giải pháp hack bằng udev .. Điều này không hoàn hảo, ví dụ, lệnh được chạy hai lần, vì vậy tôi Tôi sẽ phải xem liệu tôi có thể lọc các tham số phù hợp tốt hơn một chút không, cũng thêm thời gian chờ vào tập lệnh cuối cùng, chỉ cần nhập và xem liệu tôi có thể thay thế arp bằng thứ gì đó tốt hơn một chút không, nói là tìm trong / Proc
đây.s tập tin .rules của tôi từ /etc/udev/rules.d tôi đã tạo
cat /etc/udev/rules.d/htc-desire.rules
Bạn có thể gọi nó là bất cứ điều gì bạn thích nhưng KHÔNG BẮT ĐẦU NÓ VỚI MỘT SỐ, theo cách đó, nó sẽ được chạy sau cùng.
Thêm phần sau vào tệp dưới dạng sudo bằng trình chỉnh sửa bạn chọn, v.v ....
#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
Về cơ bản, nếu bạn không thấy 3 'r,
sudo chmod a+r /etc/udev/rules.d/htc-desire.rules
Sau đó, bạn sẽ cần thêm hai tệp, một tệp để xâu chuỗi tệp kia, vì RUN từ udev sẽ chặn mọi thứ khác (mặc dù nó chạy cuối cùng !!) ... hmm ... dù sao đi nữa:
Bây giờ tôi đã tạo các tệp trong thư mục chính của mình "/ home / olli /" ... vì vậy hãy nhớ thay thế bit '/ home / olli /' bằng bất cứ nơi nào bạn tạo tệp:
vì vậy đối với tôi, cd vào thư mục nhà của tôi.
cd ~
tạo một tập tin gọi là
chain_mock_htc_sync.sh
chứa những điều sau đây:
#!/bin/bash
/home/olli/mock_htc_sync.sh "$1" &
exit
làm cho nó thực thi
chmod +x chain_mock_htc_sync.sh
tạo một tập tin khác gọi là
mock_htc_sync.sh
chống lại những điều sau đây
#!/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
Làm cho nó thực thi:
chmod +x mock_htc_sync.sh
Hy vọng rằng tôi sẽ có một phiên bản được dọn dẹp tốt đẹp ngay khi pos. (Có lẽ vào ngày mai).