2015-03-04 32 views
5

Tôi đang cố gắng thiết lập môi trường thử nghiệm cho ứng dụng Android của mình nơi các thiết bị riêng biệt cần kết nối Internet nhưng không có khả năng không dây.Chia sẻ kết nối ngược của một số thiết bị Android qua USB

Vì vậy, tôi đã quyết định sử dụng tính năng chia sẻ kết nối ngược USB. Máy chủ của tôi đang chạy Ubuntu. Tôi đã quản lý thiết lập tính năng chia sẻ kết nối ngược cho một thiết bị, kết nối đang hoạt động và tôi có thể ping google.com từ trình bao adb của thiết bị này.

Khi tôi kết nối thiết bị thứ hai, việc chia sẻ kết nối đầu tiên sẽ ngừng hoạt động. Cả hai thiết bị đều có cùng địa chỉ IP được cấu hình trên giao diện USB0 bên trong của chúng.

Dưới đây là những gì tôi có cho đến nay:

  1. Port forwarding trên máy chủ được kích hoạt

    echo 1 > /proc/sys/net/ipv4/ip_forward 
    
  2. Iptables quy tắc trên máy chủ định tuyến lưu lượng:

    iptables -t nat -A POSTROUTING -s 169.254.255.2/24 -j MASQUERADE 
    
  3. Plugin đầu tiên thiết bị:

    ifconfig shows the device on usb0 @ ip 169.254.255.2/30 
    
  4. Trên điện thoại đầu tiên (với adb shell)

    > route add default gw 169.254.255.2 dev usb0 
    > setprop net.dns1 8.8.8.8 
    > ping google.com --> is giving results 
    
  5. Plugin thứ hai thiết bị

    ifconfig shows this device on usb1 @ ip 169.254.255.2/30 
    
  6. Trên điện thoại thứ hai

    Add gw, set DNS like above 
    

Bây giờ thiết bị thứ hai có thể ping google.com, nhưng thiết bị thứ nhất thì không.

Khi tôi thay đổi IP nội bộ hoặc IP được gán cho máy chủ usb0, giao diện usb1 Tôi không thể kết nối với thiết bị qua adb nữa.

Tôi nghi ngờ đây là vấn đề về mạng, chứ không phải là vấn đề với ADB? Bất kỳ ý tưởng?

+1

Vui lòng đọc lại câu đầu tiên giải thích rằng điều này nhằm mục đích ** thử nghiệm phần mềm đang phát triển ** trước khi bỏ phiếu chống lại điều này ** các câu hỏi về công cụ phát triển ** rõ ràng là chủ đề. –

+0

cách bạn có thể thực hiện chia sẻ kết nối ngược. Tôi không thể làm được. Tôi có máy tính xách tay với archlinux và điện thoại android không root. Tôi cũng muốn thử nghiệm ứng dụng của mình trên kết nối di động thông qua chia sẻ kết nối ngược –

Trả lời

4

Sau nhiều lần googling và thử và sai, cuối cùng tôi đã tìm thấy giải pháp cho thiết lập cụ thể của mình.

Những gì tôi đã làm cuối cùng và những gì tôi bỏ lỡ trong lần thử đầu tiên là đặt mỗi thiết bị USB được kết nối vào một mạng con riêng biệt (xem this answer on serverfault).

Nói một cách rõ ràng, thiết lập tại là như sau:

  1. iptables chứa các nguyên tắc sau

    iptables -t nat -A POSTROUTING -j MASQUERADE 
    
  2. usb0 và USB1 giao diện của máy chủ, bây giờ trong subnet riêng

    usb0: inet addr:169.254.0.1 Bcast:169.254.15.255 Mask:255.255.240.0 
    usb1: inet addr:169.254.16.1 Bcast:169.254.31.255 Mask:255.255.240.0 
    
  3. nội bộ usb0 iface của thiết bị Android connecte d trên usb0 chủ của:

    - usb0 169.254.0.2/20 
    - default gw 169.254.0.1 (so the host's usb0 iface) 
    
  4. iface usb0 nội bộ của thiết bị Android kết nối trên USB1 chủ của:

    - usb0 169.254.16.2/20 
    - default gw 169.254.16.1 (so the host's usb1 iface) 
    

Bằng cách đó bây giờ tôi có thể truy cập Internet (sau setprop adb shell net.dns1 8.8 .8.8) từ mỗi thiết bị Android được kết nối với giao diện usb trên máy chủ của tôi.

3

Bạn cần một hệ thống Linux có quyền truy cập root, điện thoại android bắt nguồn từ và cáp USB.

bước

  1. Cài đặt adb và fastboot trong hệ thống Linux của bạn.

    sudo apt-get install android-tools-adb android-tools-fastboot

  2. Kết nối điện thoại Android của bạn vào máy tính của bạn thông qua USB và cho phép chia sẻ kết nối USB từ các cài đặt trên điện thoại của bạn.
  3. Mở thiết bị đầu cuối trong PC của bạn và nhập các lệnh được cung cấp bên dưới.
  4. Tìm hiểu giao diện mạng mới đã được tạo trên PC của bạn.

    ifconfig

    Nói chung giao diện mạng mới sẽ usb0 hoặc USB1. Hãy xem xét usb0.

  5. Bây giờ, hãy tạo một số địa chỉ IP tĩnh cho giao diện mới này usb0.

    sudo ifconfig usb0 10.42.0.1 netmask 255.255.255.0

  6. Bây giờ làm usb0 này giao diện mới như kết nối chia sẻ.

    echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

  7. Bây giờ thực hiện một số thay đổi Iptables firewall.

    sudo iptables -t nat -F sudo iptables -t nat -A POSTROUTING -j MASQUERADE

  8. Bây giờ chúng ta phải nhập một số lệnh trong điện thoại Android. Chúng ta có thể sử dụng adb hoặc gõ trực tiếp các lệnh trong điện thoại android thông qua một trình mô phỏng thiết bị đầu cuối được cài đặt trong điện thoại. Tôi đang sử dụng cách adb.

  9. Tìm giao diện mạng trong điện thoại Android.

    adb shell busybox ifconfig

    Mine là rndis0.

  10. Đặt IP tĩnh, mặt nạ mạng và cổng vào.

    adb shell ifconfig rndis0 10.42.0.2 netmask 255.255.255.0 adb shell route add default gw 10.42.0.1 dev rndis0

  11. Xác minh kết nối Internet trên điện thoại của bạn.

    adb shell ping 8.8.8.8

    Nếu nó được ping, thì Internet trong điện thoại di động của bạn đang làm việc.

Kết nối Internet này sẽ không hoạt động với các ứng dụng như opera mini và paytm, nhưng hoạt động tốt với whatsapp.

Các vấn đề liên quan