LINUX.ORG.RU
ФорумMobile

Android: включить режим usb-modem при подключении usb кабеля

 


0

1

Здравствуйте. Подскажите решение. Необходимо автоматически включить на андройде режим usb-modem; Можно ли это сделать с помощью скриптов и рута. Может быть это возможно сделать через приложения?!

Любое решение, пожалуйста.


Ответ на: комментарий от yacuken

Мной разрабатываемое. Мне необходимо добиться следующего: чтобы сразу же включался режим usb модема, любыми средствами.

Т.е. это могут быть скрипты при загрузке, которые висят в цикле. Или это будет app, которая запускает скрипты.

Хоть что-нибудь, чтобы при включении usb кабеля (включении ПК, выхода из Ждущего режима) - android переходил в режим usb-модема.

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

каких подробностей ты жаждешь в одной команде?

подключи девайсину к usb, открой шелл, введи команду, узри. достаточно подробно?

vvviperrr ★★★★★
()
Последнее исправление: vvviperrr (всего исправлений: 1)
Ответ на: комментарий от yacuken

Хорошо.

Есть такой код:

prevconfig=$(getprop sys.usb.config)
if [ "${prevconfig}" != "${prevconfig#rndis}" ] ; then
	echo 'Is tethering already active?' >&2
	exit 1
fi

echo "${prevconfig}" > /cache/usb_tether_prevconfig
setprop sys.usb.config 'rndis,adb'
until [ "$(getprop sys.usb.state)" = 'rndis,adb' ] ; do sleep 1 ; done

ip rule add from all lookup main
ip addr flush dev rndis0
ip addr add 192.168.2.1/24 dev rndis0
ip link set rndis0 up
iptables -t nat -I POSTROUTING 1 -o rmnet0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
dnsmasq --pid-file=/cache/usb_tether_dnsmasq.pid --interface=rndis0 --bind-interfaces --bogus-priv --filterwin2k --no-resolv --domain-needed --server=8.8.8.8 --server=8.8.4.4 --cache-size=1000 --dhcp-range=192.168.2.2,192.168.2.254,255.255.255.0,192.168.2.255 --dhcp-lease-max=253 --dhcp-authoritative --dhcp-leasefile=/cache/usb_tether_dnsmasq.leases < /dev/null

Подскажите, как его переделать, чтобы стать «клиентом» а не шлюзом.

меняю ip link set rndis0 up, на ip link set rndis0 dhcp - ничего не происходит

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

выкидывый настройку нат таблицы, выкидывай dnsmasq. оставляешь перевод в режим модема (rndis), присваиваешь адрес, поднимаешь интерфейс, настраиваешь дефолтный маршрут (по желанию). на другом конце так же поднимаешь интерфейс, настраиваешь нат таблицу, разрешаешь ip_forward. вуаля, твой девайс ходит в сеть через комп.

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

андройда, через эмулятор терминала. Напрямую sh он выполнять не может, поэтому использую: bysubox sh

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

Хотелка: При подключении андройде к ПК (windows) необходимо сразу же запустить режим usb-modem (ysb tether) и стать клиентом, а не шлюзом - выполнить

netcfg rndis0 dhcp

Есть встроенный функционал usb-revers-tethering, то есть при его включении, андройд становится клиентом. Но я не знаю. как его запустить через команду или скрипт(

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

что значит «стать клиентом»? итоговая цель какая? интернет получать на телефоне с компа? или что?

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

Да, revers tether - это получение сети от ПК на устройство.

Можете конкретно написать эту команду, на включение usb revers tethering?

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

нет такой команды (в готовом виде). чтоб дать с компа интернет на телефон, комп должен работать как маршрутизатор. телефон в свою очередь должен только поднять интерфейс, получить адрес, установить маршрут. все это делается через утилиту ip. ее можно дергать из жабы через Runtime.exec(). на компе нужно поднять нат и разрешить ip_forward.

vvviperrr ★★★★★
()
Последнее исправление: vvviperrr (всего исправлений: 1)
Ответ на: комментарий от vvviperrr

Хорошо, всё это сделал. Комп маршрутизирует как надо.

на андройде поднимаю интерфейс от так:

ip rule add from all lookup main
ip addr flush dev rndis0
ip addr add 192.168.137.100/24 brd + dev rndis0

С пк могу его пингануть и обратно тоже. Но на этом всё заканчивается(

Если произведу теже самые настройки, но через интерфейс - wifi -> ещё -> usb модем сравниваю настройки ifconfig - индентичны, но если делать изк онсоли - инета нет, через интерфейс - интернет есть. Подскажите, что может быть за параметр или настройка?

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

Спасибо! Теперь осталось только через терминал прописать dns С этим можете подсказать. Команду добавления/изменения dns. Не могу найти, без правки .conf файла.

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

сделал так: setprop net.dns1 8.8.8.8 остальные ns сервера, по подобию - работает.

Спасибо!

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