Пользователь
0,0
рейтинг
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»
Никита Токарчук @MainNika
карма
16,2
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

[подробнее]
Реклама

Самое читаемое

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

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

                  А вот дома 11н да еще за такую цену…
          • 0
            неплохая железка, купил себе и не жалею
            производительности хватает, торренты тянет на 11.3Мб, между компами 300-500Мбит по лану, про скорость вайфай ничего не могу сказать
      • +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
      Спасибо.
      • –2
        Пожалуйста.
    • +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

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