Нужен совет

Информация из первых уст

Наши авторы

Иван Парфенов

Кирилл Анофриев

Павел Егоров

Анна Киросова

Как восстановить электронную книгу

Есть способ для программного восстановления электронных книг - портативных медиа плееров. Способ работает на книгах фирм Effire, Ritmix, Texet, Teclast и др китайского производства. 
 

Подключение внешнего Wi-Fi адаптера к планшету на андроид 4

#!/system/bin/sh

 

ip link set wlan0 down

iwconfig wlan0 channel auto

iwconfig wlan0 Bit 54Mb/s

iwconfig wlan0 essid 'SSID name'

sleep 10

 

Подключение внешнего Wi-Fi адаптера к планшету на андроид 4

Совсем недавно я стал обладателем 7" планшета с 4-м андройдом на борту - IconBit Matrix (он же Ainol Aurora II). Планшет имеет встроенный Wi-Fi модуль на чипе RTL8188CU и минималистическую антенну. Захотелось увеличить дальность приема Wi-Fi при помощи внешнего USB Wi-Fi адаптера G-Sky (GS-27USB) на чипе RTL8187 с внешней антенной. И это у меня получилось.

Итак, исходные данные:

  • Планшет на процессоре Allwinner A10 (Cortex A8), USB-OTG, прошивка ConRom v5 (v6) - Android 4.0.4, ядро линукс 3.0.8 (+).
  • USB WiFi адаптер GS-27USB на чипе RTL8187
  • Минимальные навыки работы в линукс

Чтобы планшет понял, что в него втыкают usb Wifi адаптер, ему нужен драйвер этого устройства. Так вышло, что драйвера под чипсет rtl8187 в стандартной комплектации прошивки планшета нету, поэтому его пришлось скомпилировать из исходников самому. Причем в линуксе :). Т.К. я не силен в этом, то пришлось изучать много нового материала, благо все есть в сети. 

Итак, нам нужен линукс. Если вы пользуетесь Windows, то на помощь придет виртуальная машина VirtualBox. Она бесплатная, русифицированная и имеет минимум настроек. Скачиваем дистрибутив 32-bit Ubuntu 12.04 LTS CD в виде iso-образа и подключаем его к виртуальной машине. Далее устанавливаем дистрибутив. Обязательно ставим все обновления, после чего переходим к следующей части.

Мы компилируем драйвер для RTL8187 для планшета на процессоре ARM из под линукса в вируальной машине. Как вам фраза? :) Собственно нужны исходники этого драйвера и инструмент для компиляции.

Исходники RTL8187 находятся в одной из папок исходников ядра линукса, которые можно скачать например тут (по кнопке ZIP). Кросс-компилятор toolchain я использовал вот этот (527Мб), но можно попробывать поискать по-меньше. Да, еще понадобится установить пакет ncurses-devel по рекомендациям из статьи.

Распаковываем скачанные архивы в домашний каталог и запускаем терминал.

Дальше работаем в терминале (командной строке).

export ARCH=arm

export CROSS_COMPILE=~/[папка toolchains]/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-

на конце должен стоять дефис
Дальше идем в каталог с исходниками ядра и набираем команду
make help
среди длинного списка ищем нечто похожее на xxx_defconfig - для нашего случая это sun4i_crane_defconfig и набираем новую команду:
make sun4i_crane_defconfig
после чего запускаем конфигурацию ядра:
make menuconfig

должно появиться графическое окно с многочисленными настройками. Нас интересуют только несколько из них.

Сначала заходим в Networking support -> Wireless -> отмечаем пробелом "М" напротив Generic IEEE 802.11 Networking stack (mac80211) 

Затем идем в самое начало -> Device Drivers -> Misc Devices -> EEPROM support -> отмечаем пробелом "М" напротив EEPROM 93CX6 support

Наконец снова идем в начало -> Device Drivers -> Network device support -> Wireless LAN -> отмечаем пробелом "М" напротив Realtek 8187 and 8187B USB support

Теперь выходим с сохранением конфигурации и ищем в корне исходников файл makefile, открываем его блокнотом и ищем строчку CFLAGS_MODULE   =

после знака равенства добавляем -fno-pic, чтобы получилось так:

CFLAGS_MODULE   = -fno-pic

Дальше набираем 

make modules_prepare

И компилируем наше ядро вместе с модулями:

make (просто пишем make без ничего).

После удачного сообщения о конце компиляции ищем в каталоге с исходниками следующие модули: mac80211.ko, eeprom_93cx6.ko, rtl8187.ko

Полдела сделано. Копируем модули на системный раздел планшета и проверяем их установку командой insmod из под рута:

  • insmod eeprom_93cx6.ko
  • insmod mac80211.ko
  • insmod rtl8187.ko

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

Теперь, когда модули загружены можно подключать USB Wi-Fi адаптер и смотреть вывод команды dmesg - в конце вывода должно быть что-то типа ieee80211 phy0 ... rtl8187vB ... wireless switch is on

Теперь адаптер подключен, драйвер установлен - нужно настроить Wi-Fi сеть. Делается это при помощи утилит ifconfig и iwmulticall (скачивается отдельно). Да, и родной Wi-Fi модуль должен быть отключен, иначе увидите бесконечное включение-отключение поиска сетей. Ниже я привел пару скриптов, которые автоматизирует настройку сети Wi Fi на андройд:

symlink.sh

#!/system/bin/sh

 

ln -s /system/xbin/iwmulticall iwconfig

ln -s /system/xbin/iwmulticall iwlist

wifi_mod.sh

#!/system/bin/sh

 

insmod eeprom_93cx6.ko

insmod mac80211.ko

insmod rtl8187.ko

iwcon.sh

#!/system/bin/sh

 

ip link set wlan0 down

iwconfig wlan0 channel auto

iwconfig wlan0 Bit 54Mb/s

iwconfig wlan0 essid 'SSID name'

sleep 10

ip link set wlan0 up

dhcpcd wlan0

ip addr show wlan0

Если на точке доступа не настроен DHCP (автоматическая раздача IP), то вместо dhcpcd wlan0 можно написать следующие команды:

busybox ifconfig wlan0 192.168.0.5 netmask 255.255.255.0 up

busybox route add default gw 192.168.0.1 dev wlan0 

Если вы не знаете название сетей в зоне действия, то просканировать их можно из терминала командой

iwlist wlan0 scanning 

После сообщения об успешном присваивании IP можно идти в любимую Оперу или чат и наслаждаться серфингом в интернете.

Теперь об ограничениях. Данный способ подходит только для подключения к небезопасным Wi-Fi сетям (без шифрования). Для подключения к защищенным сетям нужно использовать команду wpa_supplicant, но об этом в другой раз.

Для описанной в самом начале конфигурации оборудования выкладываю скомпилированные модули тут.

Добавлено позже: подключиться к зашифрованным Wi Fi сетям тоже реально. Способ решения приведен здесь.