Нужна Помощь!! Подключение 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.
ifconfiglo 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 который сам должен скачать подходящую версию драйвера. У меня он ругнулся на отстутствие адаптера и ничего не скачал, может у тебя получится.