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

    image

    Статья актуальна на 2010 год, современные Android могут проделывать такое одной «галочкой» в настройках

    После покупки 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»
    Метки:
    Поделиться публикацией
    Комментарии 87
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Ну, я не откажусь, только не 500 рублей.
        • –1
          А почему именно его? пыщ
        • +1
          Главное 300й не бери!)
          • 0
            кстати, почему?
            • 0
              Ужасно глючный — адекватной заводской прошивки ни одной. Модель, насколько я знаю, вообще снята с производства, хотя прошивки еще типа «пишут»…
              У меня стоит дома такой — достался на халяву, потому что прежний владелец не смог с ним справиться.
              С трудом и танцами с бубном залил на него dd-wrt. Стал гораздо стабильнее, но тырнет быстрее 10 Мбит/с по вафляйке не раздает, несмотря на скорость подключения 54 Мб/с(что для меня не совсем критично, потому что у меня как раз 10Мб/с интернет).
              Процы не оч мощные, да и памяти не оч много… Короче, с ним больше геморроя, чем удобств.
              Если, как у меня, на халяву — берите! В обратном же случае — ну его…
              • 0
                Кстати, на самой стабильной и «родных» прошивок, при подключении по вайфаю от 2х устройств раздача интернета по воздуху затыкается намертво.
                • 0
                  Ну не у всех же инет 10 Мбит/с :) У меня лично в замкадье ADSL 3072/512, мне этого DIR-300 за глаза хватало. Правда с dd-wrt(про танцы с бубном не согласен, не так уж она сложно заливается, на сайте dd-wrt четкая инструкция есть)
                  • 0
                    Дык, там же надо этот короткий промежуток ловить, када роутер в сервисном режиме. Не знаю, что там сейчас, но мне инструкция с сайта не подошла — гуглить пришлось. Но все, слава богу, закончилось удачно и я его не брикнул, что у меня оч хорошо и часто с разными железками случается)))
          • 0
            а почему андроид не видит ad-hoc сети?
            • +1
              Связано с версией андройда — не реализовано. Видит начиная только с версии 2.2. Для Hero есть кастомные 2.2, но без интерфейса htc sence, что мне не нравится.
              • +2
                так если у Вас рутованный телефон — не легче конфиги поправить, чтобы он начал видеть ad-hoc? или эта штука прокатывала только со старыми прошивками?

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

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

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

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

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

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

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

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

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

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

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

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

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

                                        Про ad-hoc сказали выше.
                                        • 0
                                          Откройте для себя программу Connectify. Делает нормальный hot-spot из Windows системы. Давно пользуюсь — проблем не замечено.
                                          • 0
                                            не работает с WinXP
                                            • НЛО прилетело и опубликовало эту надпись здесь
                                              • 0
                                                У меня от компьютера 3м удлинитель до кровати, далее стоит USB-концентратор со своим питанием, к которому подключаю вторую мышку, чтобы переключать фильмы не вставая с кровати, плеер, слушаю музыку когда спать ложусь в одно время с зарядкой, и коммуникатор, шнурком 1.5м, читаю интернет когда лег спать. Не вижу в этой системе неудобства.
                                            • 0
                                              На ноутбуке использую Linux. Потому что мне так удобнее. А Connectify Win7 Only. Под Win7 только десктоп.
                                              • 0
                                                В Linux наверняка есть что-то аналогичное.
                                                • 0
                                                  Такого же простого под Linux нет, но мануалов полно.
                                              • +3
                                                Есть еще не совсем нормальный способ (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
                                                  Интересно, это возможно сделать с помощью coLinux, перенаправить USB подключение на него?
                                                  Этот способ хорош для разработчиков, как я понял тут USB соединение в режиме дебага продолжает работать.
                                                • 0
                                                  если у кого не работает Connectify, пробуйте Virtual Router. У меня заработало
                                                  virtualrouter.codeplex.com/
                                                  • +1
                                                    Опять пляски с бубном… жаль, думал под Андроид выпустили готовое решение…
                                                    • 0
                                                      у меня на Nexus One (2.2.1) на route add default gw 192.168.100.100 пишет invalid argument
                                                      • 0
                                                        busybox версии 1.18 с маркета?
                                                        • +1
                                                          да
                                                          • 0
                                                            Ко мне уже в джаббер по этому поводу обращались. Если честно, не знаю даже откуда 1.18 появился. На сайте разработчика busybox 1.17.3 stable последняя. В этом 1.18 очень много функций не работает, будь то chmod или route.
                                                            Вам нужно даунгрейдить busybox.
                                                            • 0
                                                              Вам нужно скачать запакованный 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
                                                            Переписал статью, перепишите скрипт как теперь.
                                                          • 0
                                                            Так и не появилось готовых решений без скриптов и тд?
                                                            • +1
                                                              Как сделать похожее, но с Ubuntu?
                                                              • +1
                                                                Если 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
                                                                  К сожаление у меня комп не видит никаких новых интерфейсов после подключения к нему телефона по usb и включения на телефоне tether.

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

                                                                  Читал что можно это как то программно исправить, есть ли решение на этот случай?
                                                                  • 0
                                                                    Если программа говорит «Unsupported kernel», то я не знаю. Я думаю это из-за специфичного для каждого устройства конфига ядра — во многих отключают эту функцию.
                                                                    • 0
                                                                      Под виндой все прекрасно работает. А под линуксом не видет ничего что бы могло быть usbnet0
                                                                      • 0
                                                                        Ну это другое дело.
                                                                        dmesg? ifconfig -a?
                                                                        • 0
                                                                          dmesg и ifconfig -a не меняются
                                                                          • 0
                                                                            вот что появлеется после подключения телефона
                                                                            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
                                                                              Можно попробовать удалить модуль
                                                                              modprobe -r uhci_hcd
                                                                              Если будет работать, то в режиме usb 1.1

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