15 августа 2010 в 14:11

Получаем интернет по USB с компьютера на Android

image
После покупки HTC Hero у меня возник вопрос: как получать интернет на коммуникаторе через компьютер? С моим предыдущим коммуникатором Toshiba G900 под управлением WindowsMobile 6 было все просто: установил «центр мобильных устройств», и на коммуникаторе появился интернет. «Эта функция не нужна», — скажите вы, ведь сейчас много точек доступа Wi-Fi, через которые можно подключиться двумя кликами. Но вот лично у меня нет Wi-Fi точки (есть ноутбук, но Android не обнаруживает Ad-hoс сети). Поэтому я был огорчен отсутствием этой функции. Все мои попытки найти мануалы на эту темы — не увенчались успехом. Поэтому я решил это сам.
Внимание: Для работы ножен root пользователь.

Установка сети между коммуникатором и компьютером


Тут есть два способа:
  • Встроенный USB Tether (у аппаратов с Sence и может быть каких еще
  • USB Tether реализуемый сторонним софтом.

В данной статье я буду рассматривать второй способ, так как он более универсален.
И так, нам нужна программа Wired Tether, скачать которую можно, нажав на QR код, или же считав его с телефона:
(268 КБ)
После нажатия на экран в программе Wired Tether, в Windows появляется новое сетевое соединение с коммуникатором, и полученными по DHCP настройками:
image
У меня к примеру, сеть коммуникатора — Android USB, а соединение с интернетом для общего доступа — Internet. В дальнейшем я буду использовать эти обозначения.
Отключаем соединение Internet, в свойствах подключения делаем его доступным для Android USB:
image
Идем в настройки Android USB и меняем его IP и маску на 172.20.23.253 / 255.255.255.252, а остальное делаем пустыми:
image
Цель ручного изменения IP адреса — это убрать шлюз по умолчанию.
Пробуем Ping коммуникатор (он под ip — 172.20.23.254)
C:\Users\MainNika>ping 172.20.23.254
Обмен пакетами с 172.20.23.254 по с 32 байтами данных:
Ответ от 172.20.23.254: число байт=32 время<1мс TTL=128


Настраиваем коммуникатор


Для удобства работы со скриптами, возьмем программу GScript Lite:
(56.4 КБ)

Создаем в программе GScript Lite новый скрипт, с пишем туда:
ifconfig rmnet0 down
ifconfig usb0 up
route add default gw 172.20.23.253 dev usb0
setprop net.dns1 8.8.8.8




8.8.8.8 — это DNS сервер от google. Я люблю его использовать, поэтому использую его и тут. Использовать можно любой DNS сервер, который вы желаете.

Настройка закончена, можно тестировать:
  1. Подключаем USB
  2. Включаем программу Wired Tether, включаем соединение
  3. Включаем GScript Lite, выполняем созданный нами скрипт
  4. ???
  5. PROFIT!

Ну и чтобы убедиться, зайдем на 2ip.ru:
image
Чтобы отключить, достаточно перезапустить мобильное подключение.
Все. Теперь можно вдоволь полазить в маркете, Скачать оттуда гору полезного и не только софта.

upd: Тем, кто не может совладать с настройкой роутинга на Windows, могу посоветовать WinRoute от Kerio. Через него тоже работает, и вся настройка его заключается в указании сети, подключенной к интернету. Скриншот

upd2: Переписал статью, стало универсально и без проблем. Спасибо «Corwin» за указание ошибки в скрипте, приводящей к «invalid argument»
+45
242069
157
MainNika 8,5

комментарии (87)

НЛО прилетело и опубликовало эту надпись здесь
0
MainNika, #
Ну, я не откажусь, только не 500 рублей.
–1
Chamie, #
А почему именно его? пыщ
–1
Chamie, #
И да — «ска́жете вы»
0
StirolXXX, #
0
Chamie, #
Что бы уж сразу не так?
–1
StirolXXX, #
Заданным характеристикам не соответствует ни одна модель. :D
0
VIST, #
0
StirolXXX, #
Ай, та эта железка для дома — точно что слишком…

А вот дома 11н да еще за такую цену…
0
widowmaker, #
неплохая железка, купил себе и не жалею
производительности хватает, торренты тянет на 11.3Мб, между компами 300-500Мбит по лану, про скорость вайфай ничего не могу сказать
+1
shoguevara, #
Главное 300й не бери!)
0
turbo_exe, #
кстати, почему?
0
shoguevara, #
Ужасно глючный — адекватной заводской прошивки ни одной. Модель, насколько я знаю, вообще снята с производства, хотя прошивки еще типа «пишут»…
У меня стоит дома такой — достался на халяву, потому что прежний владелец не смог с ним справиться.
С трудом и танцами с бубном залил на него dd-wrt. Стал гораздо стабильнее, но тырнет быстрее 10 Мбит/с по вафляйке не раздает, несмотря на скорость подключения 54 Мб/с(что для меня не совсем критично, потому что у меня как раз 10Мб/с интернет).
Процы не оч мощные, да и памяти не оч много… Короче, с ним больше геморроя, чем удобств.
Если, как у меня, на халяву — берите! В обратном же случае — ну его…
0
shoguevara, #
Кстати, на самой стабильной и «родных» прошивок, при подключении по вайфаю от 2х устройств раздача интернета по воздуху затыкается намертво.
0
shogunkub, #
Ну не у всех же инет 10 Мбит/с :) У меня лично в замкадье ADSL 3072/512, мне этого DIR-300 за глаза хватало. Правда с dd-wrt(про танцы с бубном не согласен, не так уж она сложно заливается, на сайте dd-wrt четкая инструкция есть)
0
shoguevara, #
Дык, там же надо этот короткий промежуток ловить, када роутер в сервисном режиме. Не знаю, что там сейчас, но мне инструкция с сайта не подошла — гуглить пришлось. Но все, слава богу, закончилось удачно и я его не брикнул, что у меня оч хорошо и часто с разными железками случается)))
0
Kakysha, #
а почему андроид не видит ad-hoc сети?
+1
MainNika, #
Связано с версией андройда — не реализовано. Видит начиная только с версии 2.2. Для Hero есть кастомные 2.2, но без интерфейса htc sence, что мне не нравится.
+2
melervand, #
так если у Вас рутованный телефон — не легче конфиги поправить, чтобы он начал видеть ad-hoc? или эта штука прокатывала только со старыми прошивками?

Google — «htc hero ad-hoc»
0
Naps, #
У меня Ликвид, пошивка 2.1. Где мне надо править конфиги что бы он видео ad-hoc сети?
+1
MainNika, #
Получилось вот по такому ману www.soligard.com/technology/how-to-connect-htc-hero-to-ad-hoc-wifi-network/
Спасибо melervand.
Только не захотело работать со статическими ip. Пришлось поднимать на ноуте еще и dhcp3-server.

+1
thevery, #
откуда инфа про 2.2?
+1
MainNika, #
Услышал в одной конференции. Поверил. После вашего комментария посмотрел список изменений — оказалось не добавили. Теперь буду знать.
+1
thevery, #
если б исправили или хотя бы собрались — обновили бы баг:
code.google.com/p/android/issues/detail?id=82
0
PsySonic, #
Может 2.2 еще и прокси с аутентификацией научили, может знаете?
0
shoguevara, #
Можно чуть больше на вафляй карточку — юзать ее как АП.
+3
turich, #
Есть, вроде, программа Connectify (Win7 only), которая позволяет раздавать интернет через Wi-Fi. Но у меня она как-то не работает… а было бы хорошей альтернативой, ибо здесь используется рутованный девайс.
Но все равно спасибо за инструкцию.
+2
lashtal, #
Все такие программы основаны на hosted network в win 7, надежнее включать руками:
netsh wlan set hostednetwork mode=allow ssid=name key=pass
netsh wlan start hostednetwork
и потом расшарить инет через свойства адаптера…
0
Aidos, #
Есть еще способ поднять виртуальную точку доступа в XP — research.microsoft.com/en-us/um/redmond/projects/virtualwifi/software.htm
0
MainNika, #
Программа Connectfly позволяет создать на Win7 опять же Ad-hoc точку доступа, которую Андройд-девайс не увидит (увидит при манипуляциях с бубном как написали в комментариях выше). Опять же, все действия этой программы можно в несколько кликов сделать и в стандартных настройках Win7, или же в стандартном в Linux Network Manager.
Поправьте меня если не так, ибо я только прочитал описание программы, но не использовал ее.
0
IIIyT, #
Connectify создаёт access-point на wpa2-psk. Всё делается в пару кликов, ничего сложного. Два ноута, PSP и Samsung Spica поймали сеть без проблем. С одним только но, в последней версии сеть ловится, коннектится но шара на инет не работает. Разработчики признали проблему и дали возможность скачать старую версию у кого есть такие проблемы.
0
shogunkub, #
У меня была такая проблема, дело в том, что в последней версии разработчики используют сторонние средства, вместо ICS, и встроенный бранмауэр это дело блокирует. Как только выключил его на внутреннюю сеть — всё сразу забегало. Legend прекрасно работает, и шнурков не надо. Правда ноут у меня с Intel 5150, и чтобы расшарить WiMAX — надо еще один Wi-Fi адаптер использовать, т.к. со встроенным — WiMAX и Wi-Fi одновременно не работают…
+1
vburlak, #
Эхх) сразу видно)) бывший пользователь Portege G900 ^_^
Такой low-level способ =)
0
Tixon, #
Плюсанул карму, перенесите в блог Андроида по возможности.
+1
MainNika, #
Спасибо, как будет возможно — обязательно
0
Mithgol, #
При переходе с Windows Mobile на Android (подобно описанному вон там, например) пользователю более всего недостаёт именно возможности подключить мобильник к компьютеру и получать Интернет с компьютера этим наиболее естественным способом, то есть не быть вынужденным засорять эфир энергией WiFi-радиоволн, а подчас и тратить деньги на аппаратное обеспечение, которое без этого оказалось бы не нужным.

В том числе поэтому MainNika получил от меня приглашение на Хабрахабр: его статья, его рецепт — куда лучше тех многих и многих (и бесконечно тупых!…) обсуждений на форумах (легко находимых простым погугливанием), в которых либо используются эзотерические способы, требующие иметь на компьютере непременно Linux (да ещё иногда и работать на нём из-под рута), либо восторженно являются клинические дегенераты с инструкциями о раздаче Интернета с мобильника на компьютер (тогда как просили о совершенно противоположном).

Правда, к сожалению, этот рецепт всё равно не идеален, потому что под рутом приходится сидеть — пускай и не на компе, но всё же на мобильнике. Однако, наверное, в обычном (непорутованном, свежекупленном) андроидомобильнике желаемого достигнуть не удастся, потому что ifconfig, или route add, или setprop выполнить не удастся, или не сработает приложение, делающее всё то же самое.

И если это действительно так, то неминуемо возникают самые мрачные сомнения в чистоте намерений Google при создании Android: не было ли материальной заинтересованности в создании именно такой ситуации, в которой вдали от Wi-Fi пользователю приходится пользоваться недешёвой сотовой связью? А если не было материальной заинтересованности, то неужели в Google сидят остолопы, которые не в состоянии всобачить в свою систему аналог функции конкурента? Или здесь мы опять имеем дело с пренеприятным влиянием эффекта патентования функций, так что раздача Интернета на мобильник сделалася «интеллектуальной собственностью» Корпорации Майкрософт в Штатах, в которых действуют «софтверные патенты»?

Остаётся лишь угрюмо гадать; сам я, увы, не знаю, какой ответ правильный.
–1
MainNika, #
Спасибо.
–2
Mithgol, #
Пожалуйста.
+3
thevery, #
а просто эта фича кроме русских практически не нужна, как мне кажется…
0
bolk, #
Или здесь мы опять имеем дело с пренеприятным влиянием эффекта патентования функций, так что раздача Интернета на мобильник сделалася «интеллектуальной собственностью» Корпорации Майкрософт в Штатах, в которых действуют «софтверные патенты»?

Остаётся лишь угрюмо гадать; сам я, увы, не знаю, какой ответ правильный.
Зато я знаю какой ответ правильный. Следите за руками: открываю на своём андроидфоне «Настройки», перехожу «Беспроводные сети» → «Режим модема» и вижу «USB-модем», это именно то, что мы ищем.

Андроид 2.2
+1
bolk, #
Ага, каюсь. Это делает совершенно противоположное. Минусуйте, чего уж. Тут не принято прощать ошибки.
–1
Mithgol, #
Можете быть покойны: у меня не достаточно кармы для того, чтобы голосовать.
+3
Aux, #
Во-первых, под рутом сидеть вы не будете. В андроиде с рутованием появляется аналог sudo, то есть кто просит рута, тот его получит, если ВЫ разрешите. По-дефолту весь софт продолжает работать как и прежде. Так что не надо тут сказки придумывать про «сидим из под рута», оок?

Второе — инет на моб через USB это какое-то извращение никому кроме Россиян не нужное. USB кабель штука короткая, комп у меня под столом. И что? Мне лезть под стол за инетом для телефона, когда я могу спокойно лазить по инету с компа? Ололо! А если инет на телефоне действительно нужен, то во всех нормальных странах у людей дома есть WiFi, а за пределами дома — хороший тарифный план на траффик, который шёл вместе с телефоном.

Проблема абсолютно надумана крайне ограниченной группой людей, поэтому никто такую фишку и не сделал. В iPhone тоже так низя, но НИКТО не ноет. Там даже тетеринга нет у AT&T и тоже никто не ноет, хотя вот это — действительно архинужная вещь.
–2
darked, #
Ну, для меня очень актуальное решение!
Wifi я не хочу ставить!!! Так как у меня совсем маленький ребёнок и мне не хочется ставить ещё один источник излучения дома. Конечно, многие могут сказать что источников и кроме вафли вокруг полно: сотовый, микроволновка, ЛЭП… согласен, но собственноручно ставить ещё один не хочу! Понимаю, излучение вафли вещь холиварная, по ентому делу я консультировался с другом, он тоже компутерный гик, маньяк на лиукс и при этом закончил мед. академию, сейчас в интернатуре и работает в МЧС. И его словам я доверяю больше нежели многим статьям и комментариям в форумах!

Ну, это был немного оффтоп, а по сути, я давно искал подобное решение именно через кабель. Так что автору большое спасибо!!!
+2
Aux, #
Забота о ребёнке — это отлично! Вот только риски вами выбраны неверные. Спросите у любого хирурга и он вам подтвердит, что лёгкие некурящего жителя крупного города пропитаны вредными веществами не меньше, чем у курящего. На фоне этого воздействия на организм человека все волны WiFi просто меркнут. Вы можете обложить ребёнка десятком работающих рутеров и он пострадает за месяц меньше, чем за час гуляния на «свежем» воздухе. Лучше на всё лето вывозить ребёнка в деревню на действительно свежий воздух, чем отказывать себе в рутере.

Подумайте на досуге о том, что проблему вы решаете не с той стороны.

P.S. Солнце — главный источник всяко-разных излучений повышенной мощности. Мощность Солнечного излучения нагревает планету, как видите сейчас в Москве 30+ градусов. Попробуйте рутерами нагреть ночью комнату хотя бы на градус и посчитайте какое их количество вам потребуется. Базовые знания физики мне подсказывают, что в комнату такое количество не влезет.
0
darked, #
Согласен насчёт «свежего» воздуха, но я живу далеко не большом городе! В этом плане свежий воздух местами и правда свежий, лес недалеко. Ребёнка стараюсь вывозить на природу — в лес, на озеро.
Все компутерные штуки с интернетом, ноутбуком, даже домашний телефон ;) вынес в самую дальнюю комнату от места игр и где спит ребёнок.

Да и мне инет то нужен на телефоне буквально обновить программы и погоду на телефоне, минут на 10, поэтому покупка WiFi — это как по воробьям из пушки. Опять же, нужность вафли — тоже вещь персональная!
0
Aux, #
Чтобы поставить софт инет в телефоне не нужен — ставьте через USB и всё. А погода не так много жрёт — раз в сутки можно и инет на телефоне включать. Да и вообще, не пользуя мобильный инет, вы теряете все плюсы андроида.
0
HDg, #
вчера специально тестировал Fancy Widget. одно обновление погоды — в районе 20-30кб будет
0
mention, #
Кто-нить уже успел проверить данный способ? А, то я уже своего Legend собираюсь обратно прошивать до версии 2.1. В 2.2. не нашел общего интернета.
0
MainNika, #
Видимо «Общий интернет» — реализация от HTC. А 2.2 он же без HTC фич типа Sence и т.п.
0
mention, #
Да все верно, хочу вернуться к 2.1. вот только сыкотно, а заработает ли?
0
MainNika, #
У меня же работает :) И в статье я показал скриншоты это доказывающие.
0
mention, #
А тебя помучать можно в аське если что? :-)
+1
MainNika, #
Да ок. Что знаю, тем помогу.
0
mention, #
После долгих мучений заработало! Правда пришлось использовать Kerio.
0
mention, #
Все хорошо, вот только с Маркета не качает!
–1
bolk, #
«Настройки» → «Беспроводные сети» → «Режим модема»
0
Butylski, #
да уж )) не ищем легких путей. хотя оригинально, если нет роутера.
взял на заметку.
0
DikUl, #
Интересно, а в природе существуют средства которыми можно то же самое реализовать подключая Symbian к Jolicloud через bluetooth?
0
stari4ek, #
«Кстати, консоль ADB из комплекта Android SDK у меня автоматически подключается под пользователем root, насколько это связано с тем, что у меня он разблокирован — я не знаю, попробуйте — whoami. В Android root пользователь с uid=0»
все root-ованые прошивки в рамдисковом default.prop прописывают ro.secure=0, что и дает данный «эффект»:
— adb shell выполняется от суперпользователя
— adb remount выполняет перемонтирование с чтение/запись
— и много чего еще

Про ad-hoc сказали выше.
0
EvilX, #
Откройте для себя программу Connectify. Делает нормальный hot-spot из Windows системы. Давно пользуюсь — проблем не замечено.
0
mention, #
не работает с WinXP
0
Nidaylokn, #
У меня на семерке с Galaxy Spica 2.1 тоже не работает. Но я лучше роутер куплю, чем буду юзать тырнет через камель в 50 сантиметров (как у спики).
0
MainNika, #
У меня от компьютера 3м удлинитель до кровати, далее стоит USB-концентратор со своим питанием, к которому подключаю вторую мышку, чтобы переключать фильмы не вставая с кровати, плеер, слушаю музыку когда спать ложусь в одно время с зарядкой, и коммуникатор, шнурком 1.5м, читаю интернет когда лег спать. Не вижу в этой системе неудобства.
0
MainNika, #
На ноутбуке использую Linux. Потому что мне так удобнее. А Connectify Win7 Only. Под Win7 только десктоп.
0
shogunkub, #
В Linux наверняка есть что-то аналогичное.
0
EvilX, #
Такого же простого под Linux нет, но мануалов полно.
+3
ulego, #
Есть еще не совсем нормальный способ (ppp поверх adb), необходимо adb shell и компьютер с линукс, подключенный к интернет:
На компьютере в консоли:

adb forward tcp:12000 tcp:12000
sysctl net.ipv4.ip_forward=1
iptables -t nat -I POSTROUTING -s 192.168.0.254 -j MASQUERADE -o eth0

Затем в adb shell на андроиде:

ip r del default
pppd nodetach noauth pty «nc -l -p 12000» defaultroute

Затем опять на компьютере:
pppd nodetach noauth nodeflate pty «nc localhost 12000» ipparam vpn 192.168.0.16:192.168.0.254

И на андроиде:
route add default gw 192.168.0.254 dev ppp0

forum.xda-developers.com/showthread.php?t=522498
0
MainNika, #
Интересно, это возможно сделать с помощью coLinux, перенаправить USB подключение на него?
Этот способ хорош для разработчиков, как я понял тут USB соединение в режиме дебага продолжает работать.
0
HDg, #
если у кого не работает Connectify, пробуйте Virtual Router. У меня заработало
virtualrouter.codeplex.com/
+1
AVET, #
Опять пляски с бубном… жаль, думал под Андроид выпустили готовое решение…
0
p909, #
у меня на Nexus One (2.2.1) на route add default gw 192.168.100.100 пишет invalid argument
0
MainNika, #
busybox версии 1.18 с маркета?
+1
p909, #
да
0
MainNika, #
Ко мне уже в джаббер по этому поводу обращались. Если честно, не знаю даже откуда 1.18 появился. На сайте разработчика busybox 1.17.3 stable последняя. В этом 1.18 очень много функций не работает, будь то chmod или route.
Вам нужно даунгрейдить busybox.
0
MainNika, #
Вам нужно скачать запакованный tar'ом бинарник busybox'a 1.17.2: dl.dropbox.com/u/3971799/busybox.tar
Скопировать на флешку.
Если Вы используете adb то ввести команду:
adb remount
если просто терминал на девайcе:
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
Далее, не важно в терминале или adb:
cd sdcard
cp busybox.tar /system/xbin
cd /system/xbin
tar xf busybox.tar

Распакуется файл busybox1
И нужно обязательно проверить работоспособность(в основном права на запуск):
./busybox1
Вы должны увидеть:
BusyBox v1.17.2 (2010-09-05 04:15:58 CDT) multi-call binary.
Copyright © 1998-2009 Erik Andersen, Rob Landley, Denys Vlasenko
and others. Licensed under GPLv2.
See source distribution for full notice.

Если все ОК, то устанавливаем:
cp busybox1 busybox
./busybox --install /system/bin
rm busybox.tar
rm busybox1


Вот так получается:
image

0
MainNika, #
Переписал статью, перепишите скрипт как теперь.
0
WolfBespredel, #
Так и не появилось готовых решений без скриптов и тд?
+1
brutaler, #
Как сделать похожее, но с Ubuntu?
+1
MainNika, #
Если Tether работает то
ifconfig usbnet0 192.168.0.4 up
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sysctl net.ipv4.ip_forward=1

Где usbnet0 — сеть с андройдом
192.168.0.4 — ip компьютера в этой сети
eth0 — сеть с выходом в интернет

Остальное все должно совпадать.
+1
brutaler, #
К сожаление у меня комп не видит никаких новых интерфейсов после подключения к нему телефона по usb и включения на телефоне tether.

Возможно потому, что в настройках нет такой функции что бы работать как модем.
Телефон motorola xt720, перепрошитый на android 2.2.

Читал что можно это как то программно исправить, есть ли решение на этот случай?
0
MainNika, #
Если программа говорит «Unsupported kernel», то я не знаю. Я думаю это из-за специфичного для каждого устройства конфига ядра — во многих отключают эту функцию.
0
brutaler, #
Под виндой все прекрасно работает. А под линуксом не видет ничего что бы могло быть usbnet0
0
MainNika, #
Ну это другое дело.
dmesg? ifconfig -a?
0
brutaler, #
dmesg и ifconfig -a не меняются
0
brutaler, #
вот что появлеется после подключения телефона
usb 1-8: new high speed USB device using ehci_hcd and address 11
usb 5-1: new full speed USB device using uhci_hcd and address 14
usb 5-1: device descriptor read/64, error -71
usb 5-1: device descriptor read/64, error -71
usb 5-1: new full speed USB device using uhci_hcd and address 15
usb 5-1: device descriptor read/64, error -71
usb 5-1: device descriptor read/64, error -71
usb 5-1: new full speed USB device using uhci_hcd and address 16
usb 5-1: device not accepting address 16, error -71
usb 5-1: new full speed USB device using uhci_hcd and address 17
usb 5-1: device not accepting address 17, error -71
hub 5-0:1.0: unable to enumerate USB device on port 1
usb 1-8: usbfs: process 1546 (gvfs-gphoto2-vo) did not claim interface 0 before use

0
MainNika, #
Можно попробовать удалить модуль
modprobe -r uhci_hcd
Если будет работать, то в режиме usb 1.1

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.