LINUX.ORG.RU
ФорумMobile

Запилил безрутовый Reverse Tethering для Android

 , , , ,


14

5

[update]

Новая версия: https://github.com/vvviperrr/SimpleRT

Реализована поддержка сразу нескольких подключенных android девайсов, притом все девайсы находятся в одной виртуальной сети. Удобно напрямую обмениваться файлами с девайса на девайс.

Днс сервер теперь можно указать вручную, либо оставить используемый по умолчанию.

Код полностью переработан, софтина стала намного стабильнее.

Потенциальные юз-кейсы (помимо очевидного - получения интернета):

  • анализ трафика
  • основа для стенда тестирования

[/update]

Позволяет раздать интернет с ПК на мобильный девайс через usb, без рута, без adb. Зачем оно местному анонимусу? В случаях, когда нет wi-fi, когда не ловит 3g/lte (или ловит, но скорость небольшая), но есть ПК с жирным каналом. Почему бы не воспользоваться им, да еще и попутно подзарядить девайс?

Софтина в 2-х частях, андроидная и десктопная. Андроиды поддерживаются от 4.0 и выше. Оси - только линукс и osx. По факту создается виртуальный туннель, на десктопе настраивается ip forward и nat. Можно использовать для передачи файлов с ПК на девайс и обратно (поднять туннель и запустить ftp/samba/etc сервер на девайсе). Хорошая альтернатива mtp (который под линуксом работает чуть лучше, чем никак).

Для передачи данных по usb используется Android Open Accessory API, т.е ПК выступает в роли аксессуара. Со стороны ПК - libusb, с простой реализацией AOA.

Андроидная часть - простой VpnService, без гуя. При первом коннекте девайс спросит, использовать ли софтину постоянно с этим «аксессуаром» и разрешает ли владелец перехват трафика. При последующих соединениях просто молча запустится тетеринг.

Есть минусы: некоторые приложения (например youtube) не хотят работать с сетью, если нет ни wi-fi, ни 3g соединения. Выход - смириться, либо перед запуском туннеля оставить один из видов соединения. Трафик все равно пойдет по туннелю (на нем дефолтный маршрут). Ну либо поднять рута, в xposed framework есть плагин, который исправляет ситуацию.

Конкуренты с маркета:

Естественно open source. Код далек от идеала, по факту это просто proof of concept. Но работает стабильно. Идеи, пожелания, рекомендации охотно принимаются на гитхабе.

Если нет желания самому собирать апкшку - на гитхабе лежит уже собранная. Если софтина вызовет хоть минимальный интерес у сообщества - так и быть, подарю гуглу 25 баксов и выложу в маркет.

https://github.com/vvviperrr/SimpleRT

пс. подгоните иконку тематическую.

upd. тема на hn - https://news.ycombinator.com/item?id=12198085

Перемещено Klymedy из development

★★★★★

Последнее исправление: vvviperrr (всего исправлений: 10)

Ответ на: ping от warhow

3.66

Перепробывал разные значения ACC_BUF_SIZE. Также останавливал все процессы (аппач, минидлна), не хочет больше 3.66 мбайт\с (29 мбит\с) и все.

Конечно для большинства фильмов этого хватит, редко фильмы больше 25 мбит\с битрейт имеют даже блюрейремуксы, но хотелось бы иметь запас.

warhow
()
Ответ на: комментарий от vvviperrr

Слабоват процессор

Вообщем поэкпеременнтировал я. У меня канал в инет 80 мбит/с. При стандартной частоте процессора PI2 900 мгц speedtest.net дает примерно 36-40 мбит/с, а файл из внутренней локальной сети качается на внутреннюю память телефона со скоростьб 3.66 мбайт/с (29 мбит/с).

Включил режим оверклок на ПИ2 до 1000 мгц частота процессора увеличивается (тоетсь поднял на 11%) и о чудо, спидтест стал 47-51 мбит/с, а из локалки 4.03 мбайт/с (32 мбит/с). Получается что слабоват видно сам процессор ПИ2 для достижения 100мбит/с.

Еще запускал параллельно DLNA просмотр на ТВ 20 ГБ кино и одновременно перезапись с локалки, скорость падала до 2.5 мбайт/с, при остановке фильма поднималась до 4.03 мбайт/с.

Видно все же для полноценной 100мбит/с тетхеринга нужен проц частойто под 2 гигагерца не меньше. Но это покажет эксперимент установки на ББ 2.4 ГГц.

warhow
()
25 марта 2017 г.

поддержал макось

vvviperrr ★★★★★
() автор топика
Ответ на: комментарий от vvviperrr

При установке новой версии 1.1 на андрюше в свойствах приложения показывает версию 1.0 (старую предварительно удалил, новую поставил). Это так и надо, или где-то в исходниках версию надо поменять ?

warhow
()
Ответ на: комментарий от warhow

нормально. просто я пока не стал править версию в апкшке, дабы народ мог пользоваться и новой, и старой консольной тулзой.

vvviperrr ★★★★★
() автор топика
Ответ на: комментарий от warhow

кстати, еще раз о скорости. проверял на новой версии именно пропускную способность через usb (чтение из памяти запись в память) ~ 30 метров в секунду.

vvviperrr ★★★★★
() автор топика
Ответ на: комментарий от vvviperrr

Я никак не могу понять в чем слабое звено моей связки. Поставил вчера вашу новую версию 1.1 на ТРИ ! устройства, два одинаковых планшета Acer A200 и телефон LG G3 D855. Везде скорость перезаписи по локалке с внутреннего сервера на внутреннюю память телефона / планшета всего 2.5 мбайта/с (ранее на версии 1.0 доходило до 3.66), естественно удалил старую и перекомпелировал новую версию 1.1 на Raspeberry PI2 из исходников. В чем может быть дело, или железо малины слабое. Но на версии 1.0 скорость выше была. Или ... х/з. Локалка гигабитная, прямая проверка записи с сервера по LAN (у распебери 100мбитка) около 7 мбайт/с, то есть 55 мбит/с (тут может ограничение скорости самой карты памяти, но все же 2.5 мбайта (при тетхеринге одного и тогоже файла через Raspeberry на LG G3 и Acer A200) и записи 6.8 мбайт/с этого же файла с сервера внутрь Raspeberry сильно отличаются. Где камень преткновения.

warhow
()
Ответ на: комментарий от warhow

раз на всех устррйствах скорость одна, очевидно, проблема в распберри, т.к у нее езернет висит на усб.

vvviperrr ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.