HoRNDIS: драйвер USB-модема для Mac OS X

Перевод статьи HoRNDIS: USB tethering driver for Mac OS X, автор - Joshua Wise

HoRNDIS (произносится: «хоррендус») - это драйвер для Mac OS X, который позволяет вам использовать usb тетеринг на Android-устройстве для получения доступа в Интернет. Он работает с Mac OS X версии 10.6.8 (Snow Leopard) - 10.12 и протестирован на большом количестве телефонов. Вы должны быть осторожны со всеми драйверами, которые устанавливаете на компьютер; тем не менее, HoRNDIS тщательно протестирован. Поэтому вы можете полноценно работать с ним на персональных компьютерах.

HoRNDIS реализуется как kext, а не как программа пользовательского пространства, которая открывает устройство TAP или TUN; Это означает, что HoRNDIS не конфликтует с другими kext-файлами TAP / TUN, которые вы, возможно, установили (например, OpenVPN, Tunnelblick или Cisco VPN). Драйвер реализует проприетарный протокол Microsoft RNDIS, который является единственным протоколом, поддерживаемым встроенными устройствами Android; хотя пользователи Linux и Windows уже несколько лет пользуются родными драйверами RNDIS, Mac OS X поддерживает только устройства CDC Ethernet)

Главным преимуществом HoRNDIS над другими модемами является то, что он использует первоклассную поддерживаемую функцию в прошивке телефона. Другие решения принимают либо стек Wi-Fi телефона без знания операционной системы Android, либо создают IP-стек эмуляции в пользовательском пространстве на телефоне; Во многих случаях встроенная поддержка USB-модема может быть более стабильной, надежной и быстрой.

Загрузка и установка HoRNDIS

HoRNDIS доступен в исходном коде со страницы проекта на GitHub и в двоичной форме на этом сайте. Для быстрого запуска:

  1. Загрузите последний бинарный пакет и откройте его в папке «Загрузки». Следуйте инструкциям в программе установки.
  2. Если установка будет продолжена без ошибок, по ее завершению подключите свой телефон к Mac по USB.
  3. Войдите в меню настроек на телефоне.
  4. В разделе соединений ниже Wi-Fi и Bluetooth выберите «Ещё ...».
  5. Выберите «Тетеринг и точки доступа.
  6. Установите флажок «USB-модем». Он должен мигать один раз, а затем полностью проверяться. В некоторых версиях OS X может появиться диалоговое окно с предложением настроить устройство; Следуйте его инструкциям. Чтобы убедиться, что устройство подключено, запустите программу «Системные настройки» и выберите «Сеть»; Вы должны увидеть свой телефон в поле слева. Если повезет, вы сможете отключить Wi-Fi на своем Mac и просматривать Интернет через сетевое подключение вашего телефона.

Примечание для 32-разрядных машин

В предыдущих версиях HoRNDIS требовалось 64-битное ядро. Если при установке HoRNDIS вы получите сообщение об ошибке поддержки 64-битной версии, попробуйте еще раз с пакетом версии 3 (или новее).

Примечания к различным версиям Mac OS X

Mac OS X 10.9 (Mavericks) и 10.10 (Yosemite) поддерживаются HoRNDIS, но есть некоторые ошибки. Если вы обновили более раннюю версию OS X, то обнаружите, что телефоны реплицируются в вашей панели управления сетью.

Один из способов обхода - очистка файлов конфигурации сети. Сделайте резервную копию  /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist и /Library/Preferences/SystemConfiguration/preferences.plist, а затем переместите или удалите их. (Обратите внимание, что это приведет к удалению пользовательской конфигурации сети). Я до сих пор не знаю, что вызывает эту проблему, и поэтому у меня нет более "красивого" обходного пути.

В версии Mac OS X 10.11 (и выше) перезаписан USB-стек, в нем больше проблем с совместимостью, чем 10.10 и ниже. К сожалению, Apple не опубликовала документацию для интерфейсов USB нового типа, представленных в 10.11, поэтому HoRNDIS использует только USB-интерфейсы, доступные в Mac OS 10.10 и ниже. Таким образом, в новейших  версиях OS X могут возникнуть трудности с подключением определенных устройств.

Удаление HoRNDIS

Если по какой-то причине вам нужно удалить HoRNDIS, вы можете просто перетащить расширение в корзину. В Finder перейдите в меню «Перейти» и выберите «Перейти в папку ...»; В этом случае введите /System/Library/Extensions. Найдите «HoRNDIS.kext» и перетащите его в Корзину. При появлении запроса введите пароль. Сделайте то же самое для «HoRNDIS.kext», который также находится в /Library/Extensions. Затем перезагрузите Mac, чтобы убедиться, что он выгружен.

Получение и создание источника

Источник доступен на GitHub; Он лицензируется в соответствии с GNU General Purpose License, версия 3. Для сборки исходного кода вам понадобится Xcode 4.0+; Для создания версии, которая будет работать под управлением Snow Leopard, вам также понадобится установленный Snow Leopard SDK. К сожалению, SDK Snow Leopard трудно найти; Вам нужно будет найти его где-нибудь в Интернете и вручную установить в папку Xcode SDK. (Для большинства приложений все в порядке, чтобы создать новый SDK, а для модуля ядра волшебные трюки с виртуальными виртуальными таблицами требуют компиляции против самого низкого общего знаменателя.)

Простого запуска xcodebuild в каталоге checkout должно быть достаточно для сборки kext. Если вы хотите упаковать пакет, вы можете запустить make, чтобы собрать пакет в каталоге build/ (хотя, пожалуйста, не публикуйте выпущенные версии, как если бы они были официальными!).

Благодарности

На плечах гигантов я стою. Мое спасибо Apple за то, что у меня есть хотя бы некоторый образец кода IOKit (хотя последний раз, когда он был успешно построен, был 10.2.x); Это было достойное начало, чтобы понять, как я могу это структурировать. Существенное спасибо David Brownell, который написал драйвер rndishost для Linux; Некоторые части HoRNDIS были перенесены из этой работы. Дэвид Браундел также написал драйвер frndis, который позволяет устройствам Android / Linux вести себя как устройства RNDIS; Чтение этого источника помогло понять, почему HoRNDIS не работал на ранних стадиях. (К сожалению, Дэвид Браунелл скончался в апреле 2011 года. Спасибо за всю вашу напряженную работу, Дэвид, дайте вам покой.)

Спасибо также тем, кто помог протестировать HoRNDIS до того, как я ее выпустил, а также всех других людей со времен проекта unrEVOked, без которых я, скорее всего, не был бы вовлечен в разработку Android.

Поддержка и контакты

После трехлетнего срока пребывания в должности, я ищу нового помощника для HoRNDIS. У меня больше нет времени, чтобы содержать HoRNDIS на должном уровне. Если вы считаете, что у вас есть навыки, необходимые для сопровождения этого программного обеспечения, сообщите мне об этом.

Будучи свободным программным обеспечением, HoRNDIS поставляется без гарантии. (Более подробно об этом читайте в лицензии). Тем не менее, я надеюсь, что это вам поможет; Если это не так, и вы можете помочь в отладке, я бы хотел услышать от вас.

Для обратной связи, пожалуйста, свяжитесь со мной!

Не нашли ответ на свой вопрос? Возможно, вы найдете решение проблемы на нашем канале в Youtube! Здесь мы собрали небольшие, но эффективные инструкции. Смотрите и подписывайтесь на наш youtube-канал!

Смотреть на Youtube

Руководства и обзоры

1 Что нужно восстановить?

Видео

MP4, AVI и HD видео хранятся на телефоне и / или по ошибке удаляются вместе с фотографиями и другими медиафайлами.

Контакты

Номера телефонов друзей и знакомых из приложения «Контакты Android», журналы вызовов; Восстановление SIM-карты.

Фото

Удалены файлы JPG / PNG из Галереи Android; фото, загруженные на мобильный, файлы повреждены после восстановления.

Смс и сообщения

Чаты WhatsApp и Facebook, текстовые сообщения в соцсетях, информация на сим-карте

2 Где пропали файлы?

На sd-карте

Фотографии и документы хранятся на SD-картах. Часто на них случайно удаляются файлы

На телефоне

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

На USB флешке

Эти небольшие устройства хранения данных часто выходят из строя или на них появляются ошибки чтения.

На HDD или SSD

Несмотря на то, что настольные платформы становятся все менее популярными, проблема потери файлов всегда оставалась.