WiFi адаптер през OTG

през

Идеята за реализиране на идея с помощта на външен безжичен Wi-Fi адаптер или „свирка“, която поддържа желания режим на монитор, се срина десетки пъти поради нови и нови грешки и загуба на вяра, че това изобщо е възможно, но прерасна в тази статия.

И така, как да свържете външен Wi-Fi адаптер към устройство с Android или състезание с препятствия "вмъкнато - netcfg wlan0 up": Трябва да има:

  1. Android телефон
  2. OTG поддръжка и самата OTG
  3. терминален емулатор
  4. КОРЕН
  5. Източници на ядрото

FAQ - структурата изглежда така:

адаптер

  • Външен Wi-Fi адаптер ("свирка")
  • Неговият фърмуер
  • Linux дистрибуция
  • ADB (не е задължително, но е по-удобно)
  • Моят случай:

    1. Samsung GT-P5100 Galaxy Tab 2 10.1, Android 4.2.2
    2. OTG "30-пинов - USB"
    3. Терминален емулатор за Android
    4. КОРЕН
    5. Източници на стандартното ядро ​​3.0.31-1919150 от уебсайта на Samsung
    6. Адаптер TP-LINK TL-WN722N, базиран на чипсет AR9271
    7. ath9k_htc/htc_9271.fw
    8. Дистрибуция на Ubuntu 15.04 във VMware
    9. android-tools-adb
    Аз ще започна. Но имайте предвид, че всичко по-долу се счита за горния набор и алгоритъмът най-вероятно не е универсален, но отклонениятаса незначителни.

    Първата стъпка е да получите фърмуера на вашия адаптер. Вкарвам адаптера в компютъра и изпълнявам командата dmesg. Намирам:

    След това инсталирам ADB:

    apt-get инсталирайте android-tools-adb

    Третата стъпка е да изтеглите инструменталната верига (компилатор за ARM) от тук. Има голям архив, трябва ми само папката android-platform_prebuilt-android-sdk-adt_r20-0-ga4062cc.zip\android-platform_prebuilt-a4062cc\linux-x86\toolchain\arm-eabi-4.4.3, коятоРазопаковам на произволно място.

    Първо пиша в терминала:

    След това отивам в терминала до директорията с източниците на ядрото, изтеглени по-рано, пиша

    направете помощ и получавам много информация, сред която трябва да намеря нещо, завършващо на_defconfig, имам това:

    И накрая, стартирам конфигурацията на графичното ядро:

    Появява се следният прозорец:

    адаптер

    Следвам маршрутите:

      Мрежова поддръжка → Безжична връзка Отивам доGeneric IEEE 802.11 Networking stack (mac80211)и натискам интервала, като гледам как иконатаMсе появява преди този елемент

    Драйвери на устройства -> Поддръжка на мрежови устройства → Безжична LAN ЗададохMза моя чипсет, в моя случай -Atheros Wireless CardsСлед това отивам в този раздел и вътре маркирам елемента, от който се нуждая, със същия интервал и подписвамM.

    адаптер

    спестявам. Връщам се към терминала и ако сте го затворили, тогава и към изходната директория и първо изпълнявам make modules_prepare и след това просто make. Резултатът ще изисква изчакване. Моят последен комплект:

    adb start-server adb shell su

    Преглеждам кои модули вече има с командата lsmod и ги разтоварвам всички, ако е възможно, с командата за име на модул rmmod

    След това отивам в директорията с горните модули:

    cd /sdcard/вашият път/

    Можете да проверите дали те присъстват с командата ls.

    Зареждам ги с командата за име на модул insmod в тази и само тази последователност (в противен случай просто няма да се зареди, давайки грешка):

    ath.ko ath9k_hw.ko ath9k_common.ko mac80211.ko ath9k_htc.ko

    III. Препятствия

    Естествено, първата грешка възниква на първия етап.

    Вижте какво казва буферът за съобщения за товаядрото чрез изпълнение на командата dmesg:

    Версиите не съвпадат.3.0.31не е3.0.31-1919150.

    Отварям същияMakefileв изходния код на ядрото и най-отгоре на файла намирам:

    ВЕРСИЯ = 3 НИВО НА КРЕПКА = 0 ПОДНИВО = 31 ЕКСТРАВЕРЦИЯ = ИМЕ = Подла невестулка

    ВЕРСИЯ = 3 НИВО НА КРЕПКА = 0 ПОДНИВО = 31 ЕКСТРАВЕРЦИЯ = -1919150 ИМЕ = Подла невестулка

    И спестявам. Последният етап ще се извърши в директорията/include/config, където във файлаkernel.releaseще променя3.0.31на3.0.31-1919150Отново make modules_prepare , make и продължете към предишния параграф.

    Зареждане наmac80211.koотново. Имам грешка за това кой dmesg ще каже следното:

    wifi

    адаптер

    Прекомпилирам отново модулите и продължавам напред.

    3. LED

    При зареждане наath9k_htc.koиmac80211.koвъзникват следните грешки, заmac80211.koтова са:

    Иath9k_htc.koима това:

    Първият просто премахва иконата[*]в графичната конфигурация на ядрото срещуПоддръжка на мрежа → Безжична връзка → Разрешаване на светодиодни задействанияиДрайвери на устройства → Поддръжка на светодиоди.

    А във втория точно тази икона е замразена и не може да бъде премахната. Това означава, че при избора на моя адаптер автоматично се избира "поддръжката" на светодиода, която не може да бъде премахната. Разбира се, това е моят случай:

    през

    през

    Бутонът за помощ заДрайвери на устройства → LED поддръжкапоказва следната информация в раздела:

    wifi

    … config ATH9K_HTC tristate „Поддръжка на базирани на Atheros HTC безжични карти“ зависи от USB && MAC80211 изберете ATH9K_HW изберете MAC80211_LEDS изберете LEDS_CLASS изберете NEW_LEDS изберете ATH9K_COMMON .

    … конфигATH9K_HTC tristate "Поддръжка на базирани на Atheros HTC безжични карти" зависи от USB && MAC80211 изберете ATH9K_HW изберете ATH9K_COMMON .

    и запазете. Сега можете да премахнете отметката от:

    адаптер

    Тук параграфът изчезна напълно:

    през

    Отново и отново прекомпилиране, нови модули и т.н.

    4. Версия на фърмуера

    … [ 7582.477874] C0 [ khubd] ath9k_htc 1-1:1.0: ath9k_htc: Моля, надстройте до FW версия 1.3 .

    през

    Просто изтегляме друг фърмуер, но вече необходимата версия, и го поставяме на мястото на предишния.

    Сега не би трябвало да има проблеми. Изключвам родния си Wi-Fi, всички модули са заредени, фърмуерът на необходимата версия. Слагам адаптера иnetcfgноси щастие за първи път. Задавам режим на монитор за появилия се мрежов интерфейс и го повдигам. Успех!

    през

    wifi

    Е, вече знаете как и защо често се използва режимът на монитора. Благодаря за вниманието!

    адаптер

    И тук можете да получите грант за тестов период на Yandex.Cloud. Необходимо е само да въведете "Habr" в полето "секретна парола".