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

Идеята за реализиране на идея с помощта на външен безжичен Wi-Fi адаптер или „свирка“, която поддържа желания режим на монитор, се срина десетки пъти поради нови и нови грешки и загуба на вяра, че това изобщо е възможно, но прерасна в тази статия.
И така, как да свържете външен Wi-Fi адаптер към устройство с Android или състезание с препятствия "вмъкнато - netcfg wlan0 up": Трябва да има:
- Android телефон
- OTG поддръжка и самата OTG
- терминален емулатор
- КОРЕН
- Източници на ядрото
FAQ - структурата изглежда така:

- Samsung GT-P5100 Galaxy Tab 2 10.1, Android 4.2.2
- OTG "30-пинов - USB"
- Терминален емулатор за Android
- КОРЕН
- Източници на стандартното ядро 3.0.31-1919150 от уебсайта на Samsung
- Адаптер TP-LINK TL-WN722N, базиран на чипсет AR9271
- ath9k_htc/htc_9271.fw
- Дистрибуция на Ubuntu 15.04 във VMware
- 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 ще каже следното:


Прекомпилирам отново модулите и продължавам напред.
3. LED
При зареждане наath9k_htc.koиmac80211.koвъзникват следните грешки, заmac80211.koтова са:
Иath9k_htc.koима това:
Първият просто премахва иконата[*]в графичната конфигурация на ядрото срещуПоддръжка на мрежа → Безжична връзка → Разрешаване на светодиодни задействанияиДрайвери на устройства → Поддръжка на светодиоди.
А във втория точно тази икона е замразена и не може да бъде премахната. Това означава, че при избора на моя адаптер автоматично се избира "поддръжката" на светодиода, която не може да бъде премахната. Разбира се, това е моят случай:


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

… 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носи щастие за първи път. Задавам режим на монитор за появилия се мрежов интерфейс и го повдигам. Успех!


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

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