Нужна Помощь!! Подключение Wi-Fi TP-Link TL-WN725N V2 к Raspberri Pi Zero на Raspbian 4.4.11+ #888
-
В русскоязычном интернете по этой проблеме нет информации, а в англоязычном, информации для решения проблемы недостаточно.
Проблему затрудняет то, что на Raspberri Pi ZERO отсутствует проводной интернет, и для того, чтобы настроить двайвер беспроводного донгла, приходится пользоваться персональным компьютером и флэшкой.
Проблему также осложняет то, что с официального сайта Raspberri Pi всегда можно скачать только последнюю версию ОС
Статья, которой я пользовался:
www.raspberrypi.org/forums/viewtopic.php?f=28&t=62371&hilit=WN725NНемного на русском:
ur7hbq.blogspot.ru/2015/01/tl-wn725n-v2-8188eu-raspberry-pi-update.htmlИтак, что я делал:
uname -a Linux raspberrypi 4.4.11+ #888 Mon May 23 20:02:58 BST 2016 armv6l GNU/Linux
Значит качаю двайвер для моей версии по ссылке:
dl.dropboxusercontent.com/u/80256631/8188eu-4.4.11-888.tar.gz
Устанавливаю:
sudo install -p -m 644 8188eu.ko /lib/modules/4.4.11+/kernel/drivers/net/wireless/ sudo insmod /lib/modules/4.4.11+/kernel/drivers/net/wireless/8188eu.ko
и получаю ошибку:
insmod: ERROR: could not insert module /lib/modules/4.4.11+/kernel/drivers/net/wireless/8188eu.ko: Invalid module format
Ну думаю, наверное драйвер скомпилирован для другой версии малины.
Иду сюда:
github.com/twd2/TL-WN725N-V2-Driver-for-Linux
Качаю исходник, компилирую:
make all
Получаю ошибку:
make ARCH=arm CROSS_COMPILE= -C /lib/modules/4.4.11+/build M=/home/pi/Desktop/rtl8188eu-master modules make[1]: *** /lib/modules/4.4.11+/build: No such file or directory. Stop. Makefile:147: recipe for target 'modules' failed make: *** [modules] Error 2
Думаю, наверное отсутсвует папка build по указанному пути, делаю папку, компилирую заново, получаю ошибку:
\make ARCH=arm CROSS_COMPILE= -C /lib/modules/4.4.11+/build M=/home/pi/Desktop/rtl8188eu-master modules make[1]: Entering directory '/lib/modules/4.4.11+/build' make[1]: *** No rule to make target 'modules'. Stop. make[1]: Leaving directory '/lib/modules/4.4.11+/build' Makefile:147: recipe for target 'modules' failed make: *** [modules] Error 2
При попытке нагуглить по проблемые rule to make tarket, он отсылает в такие дебри C++… Причем самое странное что в интернете англоязычном у всех все работает чуть ли не из коробки. Подскажите пожалуйста куда копать?
Спасибо!!!
P.S. на всякий случай:
lsusb Bus 001 Device 004: ID 0bda:8179 Realtek Semiconductor Corp. ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:512 errors:0 dropped:0 overruns:0 frame:0 TX packets:512 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:41472 (40.5 KiB) TX bytes:41472 (40.5 KiB)
-
make ARCH=arm CROSS_COMPILE= -C /lib/modules/4.4.11+/build M=/home/pi/Desktop/rtl8188eu-master modules make[1]: *** /lib/modules/4.4.11+/build: No such file or directory. Stop. Makefile:147: recipe for target 'modules' failed make: *** [modules] Error 2
Это говорит о том что нужно поставить заголовочные файлы для твоей версии ядра.
apt-get install raspberrypi-kernel-headers
после этого папка /lib/modules/<kernel-version>/build появится.Попробовал у себя, Rpi B+:
pi@raspberrypi /usr/src/linux-headers-4.4.9+/arch $ uname -a Linux raspberrypi 4.4.9+ #884 Fri May 6 17:25:37 BST 2016 armv6l GNU/Linux
Cборка завершается ошибкой:
pi@raspberrypi ~/TL-WN725N-V2-Driver-for-Linux $ make make ARCH=armv6l CROSS_COMPILE= -C /lib/modules/4.4.9+/build M=/home/pi/TL-WN725N-V2-Driver-for-Linux make[1]: Entering directory '/usr/src/linux-headers-4.4.9+' Makefile:606: arch/armv6l/Makefile: No such file or directory make[1]: *** No rule to make target 'arch/armv6l/Makefile'. Stop. make[1]: Leaving directory '/usr/src/linux-headers-4.4.9+' Makefile:582: recipe for target 'modules' failed make: *** [modules] Error 2
Не может найти файл arch/armv6l/Makefile в папке '/usr/src/linux-headers-4.4.9+'. Там действительно такого файла нет. Похоже какая-то хитрость в скрипте Makefile для определения архитектуры процессора есть.
Здесь советуют сделать либо так
make ARCH=arm либо так (номер версии у тебя будет другой, отличный то 4.4.9+):cd /usr/src/linux-headers-4.4.9+/arch sudo ln -s arm armv6l cd ~/TL-WN725N-V2-Driver-for-Linux/ make
Но тебе это вроде не потребуется, т.к. в строке компиляции у тебя и так уже присутствует ARCH=arm.
После этого сборка идет, но в конце завершается ошибкой, что-то не так в исходниках драйвера.
Итак, ошибка номер рас:CC [M] /home/pi/TL-WN725N-V2-Driver-for-Linux/os_dep/linux/usb_intf.o /home/pi/TL-WN725N-V2-Driver-for-Linux/os_dep/linux/usb_intf.c: In function ‘rtw_drv_entry’: /home/pi/TL-WN725N-V2-Driver-for-Linux/os_dep/linux/usb_intf.c:1535:34: error: macro "__DATE__" might prevent reproducible builds [-Werror=date-time] DBG_871X("build time: %s %s\n", __DATE__, __TIME__); ^ /home/pi/TL-WN725N-V2-Driver-for-Linux/os_dep/linux/usb_intf.c:1535:44: error: macro "__TIME__" might prevent reproducible builds [-Werror=date-time] DBG_871X("build time: %s %s\n", __DATE__, __TIME__); ^
Компилятор ругается на макросы DATE и TIME.
В чем точно дело я не знаю, но можно эти строки в исходниках поправить. Для этого открываем файл /home/pi/TL-WN725N-V2-Driver-for-Linux/os_dep/linux/usb_intf.c и меняем следющую строкуDBG_871X("build time: %s %s\n", __DATE__, __TIME__); наDBG_871X("build time: %s %s\n","2016-06-22", "22:00:36");
Это костыль конечно, но влиять на работу драйвера не будет.
Запускаем сборку снова. Теперь появляется следующая ошибка:CC [M] /home/pi/TL-WN725N-V2-Driver-for-Linux/os_dep/linux/rtw_android.o /home/pi/TL-WN725N-V2-Driver-for-Linux/os_dep/linux/rtw_android.c: In function ‘rtw_android_cmdstr_to_num’: /home/pi/TL-WN725N-V2-Driver-for-Linux/os_dep/linux/rtw_android.c:230:3: error: implicit declaration of function ‘strnicmp’ [-Werror=implicit-function-declaration] if(0 == strnicmp(cmdstr , android_wifi_cmd_str[cmd_num], strlen(android_wifi_cmd_str[cmd_num])) ) ^ cc1: some warnings being treated as errors scripts/Makefile.build:258: recipe for target '/home/pi/TL-WN725N-V2-Driver-for-Linux/os_dep/linux/rtw_android.o' failed
Теперь компилятор не может найти функцию strnicmp.
Решение нашлось здесь: правим в файле **/home/pi/TL-WN725N-V2-Driver-for-Linux/os_dep/linux/rtw_android.**c строку
if(0 == strnicmp(cmdstr , android_wifi_cmd_str[cmd_num], strlen(android_wifi_cmd_str[cmd_num])) ) на такую #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) if(!strncasecmp(cmdstr , android_wifi_cmd_str[cmd_num], strlen(android_wifi_cmd_str[cmd_num])) ) #else if(0 == strnicmp(cmdstr , android_wifi_cmd_str[cmd_num], strlen(android_wifi_cmd_str[cmd_num])) ) #endif
После этого снова запускаем сборку командой make. У меня после этого драйвер скомпилировался.
Установить его можно командойsudo make install
-
Пробовал с дропбокса скачивать файлы для своей версии ядра, результат такой же как и у тебя — при попытке загрузить модуль ругается на формат файла.
Вот так выглядит скомпилированный мной модульpi@raspberrypi ~/TL-WN725N-V2-Driver-for-Linux $ file 8188eu.ko 8188eu.ko: ELF 32-bit LSB relocatable, ARM, EABI5 version 1 (SYSV), BuildID[sha1]=9af26ac15901038c105c1e7de7e898937187f1cc, not stripped
а вто так скачанный:
pi@raspberrypi ~/TL-WN725N-V2-Driver-for-Linux $ file ../8188eu/8188eu.ko ../8188eu/8188eu.ko: ELF 32-bit LSB relocatable, ARM, EABI5 version 1 (SYSV), BuildID[sha1]=23180437f351ee6c55aa7d512e95bed4d3b6bd98, not stripped
Я лично отличий не вижу (если линуксотды есть — пусть подскажут как еще сравнить).
При попытке загрузить скаченный модуль:pi@raspberrypi ~/TL-WN725N-V2-Driver-for-Linux $ sudo insmod ../8188eu/8188eu.ko insmod: ERROR: could not insert module ../8188eu/8188eu.ko: Invalid module format
когда загружаю сомпилироованный модуль:
pi@raspberrypi ~/TL-WN725N-V2-Driver-for-Linux $ sudo insmod 8188eu.ko pi@raspberrypi ~/TL-WN725N-V2-Driver-for-Linux $ lsmod Module Size Used by 8188eu 590226 0 cfg80211 499234 0 rfkill 21397 2 cfg80211 8192cu 555405 0 snd_bcm2835 23163 0 snd_pcm 95441 1 snd_bcm2835 snd_timer 22396 1 snd_pcm snd 68368 3 snd_bcm2835,snd_timer,snd_pcm spi_bcm2835 8032 0 bcm2835_gpiomem 3823 0 bcm2835_wdt 4133 0 uio_pdrv_genirq 3718 0 uio 10230 1 uio_pdrv_genirq ipv6 367575 26 pi@raspberrypi ~/TL-WN725N-V2-Driver-for-Linux $
Также по твоей ссылке автор предлагает скачать скрипт wget https://dl.dropboxusercontent.com/u/80256631/install-wifi.tar.gz
tar xzf install-wifi.tar.gz который сам должен скачать подходящую версию драйвера. У меня он ругнулся на отстутствие адаптера и ничего не скачал, может у тебя получится.