LinuxForum.Fans
Тема

Не получается скомпилировать драйвер для wi-fi адаптера

Автор: lone_wolf 27 сообщений 1508 просмотров
07.11.2017 00:01 · отредактировано #426223

Имеем адаптер TP-LINK TL-WN722N v2 c чипом Realtek RTL8188EUS, так же имеем openSUSE 42.3 Leap
Делаем следующее качаем драйвер с офсайта (драйвер идет максимум на 3.19.3), распаковываем, скачал и распаковываем рядом patch с github (это для ядер 4....) и делаем:

Показать
[console]:~/tmp/rtl8188EUS> sudo patch -p1 < ../a.diff
[sudo] пароль для root:
patching file hal/hal_com_phycfg.c
patching file include/ieee80211.h
patching file include/osdep_service_linux.h
Hunk #1 FAILED at 28 (different line endings).
1 out of 1 hunk FAILED -- saving rejects to file include/osdep_service_linux.h.rej
patching file include/rtw_debug.h
patching file os_dep/linux/ioctl_cfg80211.c
Hunk #1 FAILED at 75 (different line endings).
Hunk #2 FAILED at 84 (different line endings).
Hunk #3 FAILED at 201 (different line endings).
Hunk #4 FAILED at 236 (different line endings).
Hunk #5 FAILED at 261 (different line endings).
Hunk #6 FAILED at 336 (different line endings).
Hunk #7 FAILED at 463 (different line endings).
Hunk #8 FAILED at 497 (different line endings).
Hunk #9 FAILED at 643 (different line endings).
Hunk #10 FAILED at 678 (different line endings).
Hunk #11 FAILED at 818 (different line endings).
Hunk #12 FAILED at 904 (different line endings).
Hunk #13 FAILED at 1763 (different line endings).
Hunk #14 FAILED at 1950 (different line endings).
Hunk #15 FAILED at 1964 (different line endings).
Hunk #16 FAILED at 3497 (different line endings).
Hunk #17 FAILED at 3505 (different line endings).
Hunk #18 FAILED at 3550 (different line endings).
Hunk #19 FAILED at 3887 (different line endings).
Hunk #20 FAILED at 4186 (different line endings).
Hunk #21 FAILED at 4407 (different line endings).
Hunk #22 FAILED at 4447 (different line endings).
Hunk #23 FAILED at 4480 (different line endings).
Hunk #24 FAILED at 5868 (different line endings).
Hunk #25 FAILED at 5892 (different line endings).
Hunk #26 FAILED at 5937 (different line endings).
Hunk #27 FAILED at 6028 (different line endings).
Hunk #28 FAILED at 6219 (different line endings).
28 out of 28 hunks FAILED -- saving rejects to file os_dep/linux/ioctl_cfg80211.c.rej
patching file os_dep/linux/rtw_android.c
patching file os_dep/linux/wifi_regd.c
patch unexpectedly ends in middle of line
Hunk #9 succeeded at 404 with fuzz 1.
[/console]

понятное дело что компиляция не идет.
Без патча имеем следующую картину:

Показать
[console]~/tmp/rtl8188EUS> sudo make
"******************************************"
"NO SKRC,we will use default KSRC"
"******************************************"
make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/4.4.92-31-default/build M=/home/igor/tmp/rtl8188EUS modules
make[1]: вход в каталог «/lib/modules/4.4.92-31-default/build»
make[1]: *** Нет правила для сборки цели «modules». Останов.
make[1]: выход из каталога «/lib/modules/4.4.92-31-default/build»
Makefile:1367: ошибка выполнения рецепта для цели «modules»
make: *** [modules] Ошибка 2
[/console]

Может где то есть уже скопиленый нормальный драйвер? или кто знает подскажите как вообще скомпилировать эту редиску.

07.11.2017 01:01 #426226

DiabloPC, Спасибо, посмотрю *DRINK*

07.11.2017 08:45 · отредактировано #426231

В патче поправьте концы строк сообразно исходникам. Помогут dos2unix или даже sed:
sed -i -e 's,\r,,' a.diff
Ну или в текстовом редакторе открыть, Сохранить как - Окончания строк: UNIX.

different line endings -- различные окончания строк. Либо в исходнике \n, а в патче, соответственно, \r\n (рецепт выше именно про это, патчик на Windows сохраняли, отсюда и виндейские окончания строк), либо наоборот (тогда менять окончания в исходниках).

07.11.2017 09:47 #426233

bormant, Принял, спасибо. Как доберусь до домашнего ноута попробую.

07.11.2017 21:03 · отредактировано #426246

lone_wolf,
в архиве с драйвером 2 кривых файла (концы строк в стиле DOS/Windows \r\n), лечить до наложения патча так:[console]$ unzip /tmp/rtl8188EUS_linux_v4.3.0.8_13968.20150417.zip
$ cd rtl8188EUS_linux_v4.3.0.8_13968.20150417
$ sed -i -e 's,\r,,' include/osdep_service_linux.h os_dep/linux/ioctl_cfg80211.c
[/console]
Поправить патч (нет перевода строки в конце) и применить:[console]$ echo >> /tmp/a.diff
$ patch -p1 --verbose < /tmp/a.diff
[/console]
Добавлено: 07.11.2017 20:57:20

Кстати, VID:PID у него какие (см. вывод lsusb, он же USB, да?)? Современным ядром штатно точно не поддерживается?
lsusb -t
не показывает, что устройство подхватил какой-то драйвер?

Добавлено: 07.11.2017 21:03:05

Вот тут есть
https://cateee.net/lkddb/web-lkddb/R8188EU.html

vendor: 0bda ("Realtek Semiconductor Corp."), product: 8179 ("RTL8188EUS 802.11n Wireless Network Adapter")

Это не он?
Если он, должен подхватываться модулем r8188eu.ko.

07.11.2017 22:42 · отредактировано #426252
"bormant" написал:
Кстати, VID:PID у него какие (см. вывод lsusb, он же USB, да?)? Современным ядром штатно точно не поддерживается?

Вот 2357:010c
Да USB модуль
Не поддерживается, хотя может я не прав.
Ну в данный момент я установил модуль rtl8188ee (нашел через поиск пакетов openSUSE данный мне DiabloPC), и он с горем пополам заработал, но NetworkManager его в упор не видит, хотя по команде ip link я его вижу как wlan1, может ядро и сразу поддерживало, просто я из за network manager подумал что не поддерживает.

Но компиляция в любом случае мне интересна, ибо не тут так на другой системе может не быть модуля ядра и придется компилить (я в любом случае попробую скомпилировать, используя советы выше).
Не ну как вариант попробую на другом компе поставить OpenSUSE и есче раз посмотреть через lsusb -t, а так же отключу network manager, и попробую через консоль законектиться к сети какой нибудь.

07.11.2017 23:06 #426253

"lone_wolf" написал:
NetworkManager его в упор не видит,
Графическая приблуда aka апплет не видит? А что говорит nmcli d ??
Добавлено: 7th Nov 2017 11:06:03 pm

а какое ядро?? стоковое 4.4?
07.11.2017 23:57 #426254
"DiabloPC" написал:
Графическая приблуда aka апплет не видит? А что говорит nmcli d ??

графическая не видит
консольная nmcli d тоже не видит:

Показать
[console]:~> nmcli d
УСТРОЙСТВО ТИП СОСТОЯНИЕ СОЕДИНЕНИЕ
eth0 ethernet подключено Wired connection 1
wlan0 wifi отключено --
lo loopback без управления --

~> ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 2c:60:0c:0c:17:9e brd ff:ff:ff:ff:ff:ff
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
link/ether 34:de:1a:51:f5:ea brd ff:ff:ff:ff:ff:ff
5: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether c0:25:e9:18:44:c7 brd ff:ff:ff:ff:ff:ff
[/console]

Да ядро стоковое 4.4.92-31-default
Добавлено: 07.11.2017 22:57:28

Только что попробовал скомпилировать не получилось, патч накладывается нормально без ошибок, а вот компиляция по старому 1 и тоже:

Показать
[console]igor@linux-jwn1:~> cd /tmp/rtl8188EUS_linux_v4.3.0.8_13968.20150417/
igor@linux-jwn1:/tmp/rtl8188EUS_linux_v4.3.0.8_13968.20150417> sudo sed -i -e 's,\r,,' include/osdep_service_linux.h os_dep/linux/ioctl_cfg80211.c
igor@linux-jwn1:/tmp/rtl8188EUS_linux_v4.3.0.8_13968.20150417> sudo echo >> /tmp/a.diff
igor@linux-jwn1:/tmp/rtl8188EUS_linux_v4.3.0.8_13968.20150417> sudo patch -p1 --verbose < /tmp/a.diff
Hmm... Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff --git a/hal/hal_com_phycfg.c b/hal/hal_com_phycfg.c
|index 8bb2747..16a85bf 100644
|--- a/hal/hal_com_phycfg.c
|+++ b/hal/hal_com_phycfg.c
--------------------------
patching file hal/hal_com_phycfg.c
Using Plan A...
Hunk #1 succeeded at 2575.
Hunk #2 succeeded at 2597.
Hunk #3 succeeded at 2696.
Hunk #4 succeeded at 3149.
Hunk #5 succeeded at 3212.
Hunk #6 succeeded at 3348.
Hunk #7 succeeded at 3626.
Hunk #8 succeeded at 3995.
Hmm... The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff --git a/include/ieee80211.h b/include/ieee80211.h
|index fc293c4..8493002 100644
|--- a/include/ieee80211.h
|+++ b/include/ieee80211.h
--------------------------
patching file include/ieee80211.h
Using Plan A...
Hunk #1 succeeded at 1525.
Hmm... The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff --git a/include/osdep_service_linux.h b/include/osdep_service_linux.h
|index b45c848..b54fec2 100644
|--- a/include/osdep_service_linux.h
|+++ b/include/osdep_service_linux.h
--------------------------
patching file include/osdep_service_linux.h
Using Plan A...
Hunk #1 succeeded at 28.
Hmm... The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff --git a/include/rtw_debug.h b/include/rtw_debug.h
|index bf36357..2fd4153 100644
|--- a/include/rtw_debug.h
|+++ b/include/rtw_debug.h
--------------------------
patching file include/rtw_debug.h
Using Plan A...
Hunk #1 succeeded at 227.
Hunk #2 succeeded at 237.
Hmm... The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c
|index f839ee3..b6e5e65 100644
|--- a/os_dep/linux/ioctl_cfg80211.c
|+++ b/os_dep/linux/ioctl_cfg80211.c
--------------------------
patching file os_dep/linux/ioctl_cfg80211.c
Using Plan A...
Hunk #1 succeeded at 75.
Hunk #2 succeeded at 84.
Hunk #3 succeeded at 201.
Hunk #4 succeeded at 236.
Hunk #5 succeeded at 261.
Hunk #6 succeeded at 336.
Hunk #7 succeeded at 463.
Hunk #8 succeeded at 497.
Hunk #9 succeeded at 643.
Hunk #10 succeeded at 678.
Hunk #11 succeeded at 818.
Hunk #12 succeeded at 904.
Hunk #13 succeeded at 1763.
Hunk #14 succeeded at 1950.
Hunk #15 succeeded at 1965.
Hunk #16 succeeded at 3498.
Hunk #17 succeeded at 3505.
Hunk #18 succeeded at 3550.
Hunk #19 succeeded at 3887.
Hunk #20 succeeded at 4187.
Hunk #21 succeeded at 4409.
Hunk #22 succeeded at 4449.
Hunk #23 succeeded at 4482.
Hunk #24 succeeded at 5870.
Hunk #25 succeeded at 5894.
Hunk #26 succeeded at 5939.
Hunk #27 succeeded at 6030.
Hunk #28 succeeded at 6221.
Hmm... The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff --git a/os_dep/linux/rtw_android.c b/os_dep/linux/rtw_android.c
|index a807602..d2afeb1 100644
|--- a/os_dep/linux/rtw_android.c
|+++ b/os_dep/linux/rtw_android.c
--------------------------
patching file os_dep/linux/rtw_android.c
Using Plan A...
Hunk #1 succeeded at 286.
Hunk #2 succeeded at 508.
Hmm... The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|diff --git a/os_dep/linux/wifi_regd.c b/os_dep/linux/wifi_regd.c
|index 2831ff1..6222670 100644
|--- a/os_dep/linux/wifi_regd.c
|+++ b/os_dep/linux/wifi_regd.c
--------------------------
patching file os_dep/linux/wifi_regd.c
Using Plan A...
Hunk #1 succeeded at 143.
Hunk #2 succeeded at 151.
Hunk #3 succeeded at 205.
Hunk #4 succeeded at 258.
Hunk #5 succeeded at 303.
Hunk #6 succeeded at 334.
Hunk #7 succeeded at 353.
Hunk #8 succeeded at 387.
Hunk #9 succeeded at 404.
done
igor@linux-jwn1:/tmp/rtl8188EUS_linux_v4.3.0.8_13968.20150417> sudo make
"******************************************"
"NO SKRC,we will use default KSRC"
"******************************************"
make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/4.4.92-31-default/build M=/tmp/rtl8188EUS_linux_v4.3.0.8_13968.20150417 modules
make[1]: вход в каталог «/lib/modules/4.4.92-31-default/build»
make[1]: *** Нет правила для сборки цели «modules». Останов.
make[1]: выход из каталога «/lib/modules/4.4.92-31-default/build»
Makefile:1367: ошибка выполнения рецепта для цели «modules»
make: *** [modules] Ошибка 2
igor@linux-jwn1:/tmp/rtl8188EUS_linux_v4.3.0.8_13968.20150417>[/console]
08.11.2017 08:04 · отредактировано #426257

Просто подскажите драйверу r8188eu, что эта пара vid:pid тоже его (если он еще не в курсе):[console]echo 2357 010c > /sys/bus/usb/drivers/r8188eu/new_id
[/console]
Добавлено: 08.11.2017 08:04:12

Если iwconfig и lsusb -t подтвердят подхват устройства, а NM по-прежнему его не увидит, вероятно, поможет:
/etc/NetworkManager/NetworkManager.conf:

text
[device]
wifi.scan-rand-mac-address=no
08.11.2017 12:01 #426260

"lone_wolf" написал:
Да ядро стоковое 4.4.92-31-default
Прикрути отсюда:
text
zypper ar http://download.opensuse.org/repositories/home:/Ledest:/kernel:/lts/openSUSE_Leap_42.3/home:Ledest:kernel:lts.repo
zypper in kernel-default-4.9.60-1.1 

Там этот модуль по дефолту имеется.

[console]# ls /lib/modules/4.9.60-1-default/kernel/drivers/net/wireless/realtek/rtlwifi
btcoexist rtl8192c rtl8192cu rtl8192ee rtl8723ae rtl8723com rtl_pci.ko rtlwifi.ko
rtl8188ee rtl8192ce rtl8192de rtl8192se rtl8723be rtl8821ae rtl_usb.ko
[/console]

08.11.2017 16:03 · отредактировано #426262

DiabloPC, Ок, спасибо
Добавлено: 08.11.2017 14:17:46

Эм мужики простите слоупока, только что переустановил на ноуте ОС чтоб было всё чисто и не что не мешало эксперименту на стоковом ядре 4.4.92-31-default драйвер rtl8188ee присутсвтвует:
[console]igor@linux-o9mp:~> ls /lib/modules/4.4.92-31-default/kernel/drivers/net/wireless/realtek/rtlwifi
btcoexist rtl8192ce rtl8192ee rtl8723be rtl_pci.ko
rtl8188ee rtl8192cu rtl8192se rtl8723com rtl_usb.ko
rtl8192c rtl8192de rtl8723ae rtl8821ae rtlwifi.ko
[/console]
И да команды ip link; iwconfig; lsusb -t видят мой usb-wifi модуль:

Показать
[console]igor@linux-o9mp:~> ip link
...........
5: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether c0:25:e9:18:44:c7 brd ff:ff:ff:ff:ff:ff

igor@linux-o9mp:~> sudo iwconfig
lo no wireless extensions.

wlan1 unassociated Nickname:"<WIFI@REALTEK>"
Mode:Auto Frequency=2.412 GHz Access Point: Not-Associated
Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

.................................

igor@linux-o9mp:~> lsusb -t
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/8p, 480M
|__ Port 2: Dev 5, If 0, Class=Vendor Specific Class, Driver=r8188eu, 480M
|__ Port 5: Dev 2, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 5: Dev 2, If 1, Class=Wireless, Driver=btusb, 12M
|__ Port 6: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 6: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
[/console]

Добавлено: 08.11.2017 15:03:41

Насчет NetworkManager тут все довольно таки интересно, в общем втыкаем wifi модуль в usb порт и что мы видим, правильно ничего, как в графике так и в nmcli. Но мы не сдаемся мы идем в YaST открываем сетевые настройки и на вкладке "Общие параметры" меняем "Параметры установки сети" с NetworkManager на Wicked. Затем идем на вкладку "Обзор" и там выбираем наш много страдательный wifi модуль, и конфигурим его выставляя сетевые настройки. Тем самым у нас создаётся конфиг файл, и затем мы опять меняем на вкладке "Общие параметры" меняем "Параметры установки сети" с Wicked на NetworkManager. И о чудо NetworkManager начинает видеть и взаимодействовать с нашим wifi модулем (так как в /etc/sysconfig/network/ появляется конфиг файл нашего wifi модуля).

08.11.2017 16:12 #426265

lone_wolf, :D Как же все тривиально..
Кста, а мож вообще нужно было просто systemctl restart NetworkManager.service
И что мне подсказует что не один ты слоупок?.. :D

08.11.2017 16:20 #426267
"DiabloPC" написал:
Кста, а мож вообще нужно было просто systemctl restart NetworkManager.service

неее без конфига не срабатывает, пробовал не раз *SCRATCH*

"DiabloPC" написал:
И что мне подсказует что не один ты слоупок?.. 

Ну тут каждый решит сам для себя *DRINK*

08.11.2017 16:22 #426268

"lone_wolf" написал:
неее без конфига не срабатывает, пробовал не раз 
Странно однако получается, wicked создает конфиг, а НМ нет....
08.11.2017 16:28 #426269
"DiabloPC" написал:
Странно однако получается, wicked созд
"DiabloPC" написал:
Странно однако получается, wicked создает конфиг, а НМ нет....

Ну тут я подозреваю следующее, так как при установке системы мой usb wifi модуль я не подключал, вот и нет конфига. А вот родная встроенная wifi нормально, конфиг созданный лежит в /etc/sysconfig/network/.

08.11.2017 16:32 #426270

"lone_wolf" написал:
Ну тут я подозреваю следующее, так как при установке системы мой usb wifi модуль я не подключал, вот и нет конфига
Да Х3, я недавно менял модуль, причем с интела на атерос - нормально подхватился......
08.11.2017 16:40 #426271
"DiabloPC" написал:
Да Х3, я недавно менял модуль, причем с интела на атерос - нормально подхватился......

Чуть позже достану ноут, удалю конфиг созданный wicked, подоткну usb модуль, и перезапущу network manager, и посмотрю что будет, может и создаст.

08.11.2017 16:45 #426272

Кста: в /etc/sysconfig/network/ нету вообще ничего относящегося к конкретной карточке

[console]# ls -l /etc/sysconfig/network
total 68
-rw-r--r-- 1 root root 9692 Oct 22 01:12 config
-rw-r--r-- 1 root root 11464 Oct 22 01:12 dhcp
-rw------- 1 root root 147 Jul 11 19:25 ifcfg-lo
-rw-r--r-- 1 root root 21738 May 10 02:42 ifcfg.template
drwxr-xr-x 2 root root 4096 Oct 25 23:36 if-down.d
drwxr-xr-x 2 root root 4096 Nov 7 13:50 if-up.d
drwx------ 2 root root 4096 May 10 02:26 providers
drwxr-xr-x 2 root root 4096 Nov 7 13:50 scripts
[/console]

08.11.2017 17:22 #426281

lone_wolf,
про Driver=r8188eu я, выходит, угадал:)
Может и про NM угадал? То, что ниже, было выполнено?

"bormant" написал:
Если iwconfig и lsusb -t подтвердят подхват устройства, а NM по-прежнему его не увидит, вероятно, поможет:
/etc/NetworkManager/NetworkManager.conf:
text
[device]
wifi.scan-rand-mac-address=no

Войдите или зарегистрируйтесь, чтобы ответить.