-------------------------------------
2021-09-14
В августовском обновлении системы пришло новое ядро 5.10.32. С ним драйвер из указанного ниже репозитория Гитхаба не собирается. Очень надеюсь, что автор репозитория модифицирует код под новое ядро. Пока приведенная ниже схема не работает (на этапе компиляции).
Это обновление принесло и еще одну проблему - сломался SSH-доступ к OSMC. Даже чистая установка не исправляет проблему. А без доступа по SSH драйвер можно собирать только локально подключив клавиатуру, монитор и кабель с интернетом.
Поэтому перешел на LibreElec. В нем драйверы Realtek есть в базе, и автор не грозится их удалить. Есть у системы и свои особенности, например, слабые возможности командной строки. Отключена команда apt-get. Нельзя доставить пакеты, например, редактор vim.
-------------------------------------
Моя Малинка дала сбой. Перестала загружаться. Печальный смайлик и дальше всё. Логи ясности не внесли. Не нашел даже подходящей строки для поиска в Гугле. Абстрактные запросы тоже ничего не дали. fsck криминала не нашел. Принял решение обновить систему. Пришлось побороться с неразрешенными зависимостями и невозмжностью обновить некоторые файла. Склоняюсь к тому, что либо флешка уже начала дохнуть, либо файловая система накопила ошибки от периодических выключений без "мягкого" выключения.
Не относится напрямую к настройке Wi-Fi. как запустить fsck для корневого раздела:
1. Можно сделать файл в корне и перегрузить устройство:
osmc@osmc:~$ sudo touch /forcefsck
osmc@osmc:~$ sudo reboot
2. Подправить /etc/fstab, заменив для раздела 0 на 1:
osmc@osmc:~$ sudo nano /etc/fstab
osmc@osmc:~$ /dev/mmcblk0p1 /boot vfat defaults,noatime 0 0
osmc@osmc:~$ /dev/mmcblk0p2 / ext4 defaults,noatime 0 1
Теперь к основной теме статьи. Тут я писал, что в новом ядре для OSMC 4.19 был удален драйвер для чипов беспроводных адаптеров Realtek. Тогда моим предложением было откатиться на старую версию ядра 4.14. Но в этот раз у меня такой возможности не было. Система была полностью обновлена.
Итак. Подключаем Raspberry к проводной сети.
Точка старта. Общий ход сборки и установки драйвера:
https://discourse.osmc.tv/t/usb-wifi-device-wth-rtl8812au-chipset-is-not-working/84070
Прямое следование инструкции мне не помогло.
1. Устанавливаем необходимые пакеты:
osmc@osmc:~$ sudo apt-get install rbp2-headers-$(uname -r)
osmc@osmc:~$ sudo apt-get install rbp2-source-$(uname -r)
osmc@osmc:~$ sudo apt install libc6-dev libc-dev make binutils
osmc@osmc:~$ sudo apt install gcc
osmc@osmc:~$ sudo apt install git
osmc@osmc:~$ sudo apt install usbutils
osmc@osmc:~$ apt-get install build-essential dkms
Одной командой поставить не получилось. Система писала, что не ясно, какой GCC ставит
2. Выясняем, какой драйвер нам нужен. В моем адаптере чип RTL8192EU. Именно для него и надо искать драйвер
osmc@osmc:~$ lsusb
Bus 001 Device 005: ID 05ac:0256 Apple, Inc.
Bus 001 Device 004: ID 0bda:818b Realtek Semiconductor Corp. RTL8192EU 802.11b/g/n WLAN Adapter
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
3. Делаем каталог, в котором будем работать:
osmc@osmc:~$ cd ~
osmc@osmc:~$ mkdir ~/realtek
osmc@osmc:~$ cd ~/realtek
4. Теперь ищем и копируем драйвер. У автора исходной статьи был адаптер на чипе RTL8812AU. По его ссылке лежит драйвер, работающий именно с этим чипом. Я не обратил на это внимание, собрал драйвер, и у меня ничего не заработало. Потратил время на поиск причины.
Да, можно открыть Makefile и отредактировать его, выбрав сборку драйвера для другого чипа. Но в моем случае это приводило к ошибке сборки. Поэтому рекомендую просто искать правильный драйвер. Моя ссылка поиска (ключевые слова “RTL8192E linux arm”)
https://github.com/search?q=RTL8192E+linux+arm
Прежде чем собирать драйвер, изучите Makefile, чтобы не тратить время на сборки впустую:
а. Должен быть выбран правильный чип. Только напротив него должен стоять "y":
CONFIG_MULTIDRV = n
CONFIG_RTL8188E = n
CONFIG_RTL8812A = n
CONFIG_RTL8821A = n
CONFIG_RTL8192E = y
CONFIG_RTL8723B = n
CONFIG_RTL8814A = n
CONFIG_RTL8723C = n
CONFIG_RTL8188F = n
CONFIG_RTL8188GTV = n
CONFIG_RTL8822B = n
CONFIG_RTL8723D = n
CONFIG_RTL8821C = n
CONFIG_RTL8710B = n
CONFIG_RTL8192F = n
Если выбран другой чип в настройках, вы можете его изменить, но нет гарантии, что драйвер собереться, исходники, по моему опыту, не универсальные и собираются только для опеределенных чипов.
б. Проверяем тип интерфейса, в моем случае это USB:
######################### Interface ###########################
CONFIG_USB_HCI = y
CONFIG_PCI_HCI = n
CONFIG_SDIO_HCI = n
CONFIG_GSPI_HCI = n
в. Платформа, для которой будет сборка: | ||||||
###################### Platform Related #######################
CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ARM_RPI = y
CONFIG_PLATFORM_ANDROID_X86 = n
CONFIG_PLATFORM_ANDROID_INTEL_X86 = n
CONFIG_PLATFORM_JB_X86 = n
CONFIG_PLATFORM_ARM_S3C2K4 = n
CONFIG_PLATFORM_ARM_PXA2XX = n
CONFIG_PLATFORM_ARM_S3C6K4 = n
CONFIG_PLATFORM_MIPS_RMI = n
CONFIG_PLATFORM_RTD2880B = n
CONFIG_PLATFORM_MIPS_AR9132 = n
CONFIG_PLATFORM_RTK_DMP = n
CONFIG_PLATFORM_MIPS_PLM = n
CONFIG_PLATFORM_MSTAR389 = n
CONFIG_PLATFORM_MT53XX = n
CONFIG_PLATFORM_ARM_MX51_241H = n
CONFIG_PLATFORM_FS_MX61 = n
CONFIG_PLATFORM_ACTIONS_ATJ227X = n
CONFIG_PLATFORM_TEGRA3_CARDHU = n
CONFIG_PLATFORM_TEGRA4_DALMORE = n
CONFIG_PLATFORM_ARM_TCC8900 = n
CONFIG_PLATFORM_ARM_TCC8920 = n
CONFIG_PLATFORM_ARM_TCC8920_JB42 = n
CONFIG_PLATFORM_ARM_TCC8930_JB42 = n
CONFIG_PLATFORM_ARM_RK2818 = n
CONFIG_PLATFORM_ARM_RK3066 = n
CONFIG_PLATFORM_ARM_RK3188 = n
CONFIG_PLATFORM_ARM_URBETTER = n
CONFIG_PLATFORM_ARM_TI_PANDA = n
CONFIG_PLATFORM_MIPS_JZ4760 = n
CONFIG_PLATFORM_DMP_PHILIPS = n
CONFIG_PLATFORM_MSTAR_TITANIA12 = n
CONFIG_PLATFORM_MSTAR = n
CONFIG_PLATFORM_SZEBOOK = n
CONFIG_PLATFORM_ARM_SUNxI = n
CONFIG_PLATFORM_ARM_SUN6I = n
CONFIG_PLATFORM_ARM_SUN7I = n
CONFIG_PLATFORM_ARM_SUN8I_W3P1 = n
CONFIG_PLATFORM_ARM_SUN8I_W5P1 = n
CONFIG_PLATFORM_ACTIONS_ATM702X = n
CONFIG_PLATFORM_ACTIONS_ATV5201 = n
CONFIG_PLATFORM_ACTIONS_ATM705X = n
CONFIG_PLATFORM_ARM_SUN50IW1P1 = n
CONFIG_PLATFORM_ARM_RTD299X = n
CONFIG_PLATFORM_ARM_LGE = n
CONFIG_PLATFORM_ARM_SPREADTRUM_6820 = n
CONFIG_PLATFORM_ARM_SPREADTRUM_8810 = n
CONFIG_PLATFORM_ARM_WMT = n
CONFIG_PLATFORM_TI_DM365 = n
CONFIG_PLATFORM_MOZART = n
CONFIG_PLATFORM_RTK119X = n
CONFIG_PLATFORM_RTK119X_AM = n
CONFIG_PLATFORM_RTK129X = n
CONFIG_PLATFORM_RTK390X = n
CONFIG_PLATFORM_NOVATEK_NT72668 = n
CONFIG_PLATFORM_HISILICON = n
CONFIG_PLATFORM_HISILICON_HI3798 = n
CONFIG_PLATFORM_NV_TK1 = n
CONFIG_PLATFORM_NV_TK1_UBUNTU = n
CONFIG_PLATFORM_RTL8197D = n
CONFIG_PLATFORM_AML_S905 = n
CONFIG_PLATFORM_ZTE_ZX296716 = n
В некоторых репозиториях, найденных на GitHub, не было нужной мне платформы "ARM_RPI" (Raspberry PI 2)
Итак, мне подошел репозиторий https://github.com/lord2y/rtl8192eu-arm-linux-driver. Копируем его себе:
osmc@osmc:~$ git clone https://github.com/lord2y/rtl8192eu-arm-linux-driver
5. Нужно сделать ссылку на заголовки ядра:
osmc@osmc:~$ sudo ln -s /usr/src/rbp2-headers-$(uname -r) /lib/modules/$(uname -r)/build
6. Этот пункт потребуется, если будет та же ошибка, что у автора исходной инструкции (я не переделывал его вывод команды, на смысл это не влияет):
osmc@osmc:~/ rtl8812au$ make
make ARCH=arm CROSS_COMPILE= -C /lib/modules/4.19.55-6-osmc/build M=/home/osmc/rtl8812au modules
make[1]: Entering directory '/usr/src/rbp2-headers-4.19.55-6-osmc'
CC [M] /home/osmc/rtl8812au/core/rtw_cmd.o
In file included from ./include/linux/compat.h:16:0,
from ./include/linux/ethtool.h:17,
from ./include/linux/netdevice.h:41,
from /home/osmc/rtl8812au/include/osdep_service_linux.h:35,
from /home/osmc/rtl8812au/include/osdep_service.h:41,
from /home/osmc/rtl8812au/include/drv_types.h:32,
from /home/osmc/rtl8812au/core/rtw_cmd.c:22:
./include/linux/if.h:28:54: fatal error: sys/socket.h: No such file or directory
#include <sys/socket.h> /* for struct sockaddr. */
^
compilation terminated.
Ошибка в наличие файла заголовков socket.h. Если это произошло, то надо скачать исходники ядра с kernal.org.
Нужно выбрать правильную версию исходников. В моем случае ядро 4.19.122. Проверить можно командой "uname -r".
osmc@osmc:~/ cd ~/realtek
osmc@osmc:~/ wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.122.tar.xz
osmc@osmc:~/ tar xf linux-4.19.122.tar.xz
Убираем старый каталог ../include/linux и копируем туда содержимое соответствующего каталога распакованного архива.
osmc@osmc:~/ sudo mv /usr/src/rbp2-headers-4.19.122-2-osmc/include/linux/ /usr/src/rbp2-headers-4.19.122-2-osmc/include/linux-bak
osmc@osmc:~/ sudo cp -ar linux-4.19.122/include/linux /usr/src/rbp2-headers-4.19.122-2-osmc/include/
Проверяем, что всё на месте:
osmc@osmc:~/ ls /usr/src/rbp2-headers-4.19.122-2-osmc/include/linux
7. Итак, наконец, сборка. Подробная инструкция есть в репозитории https://github.com/lord2y/rtl8192eu-arm-linux-driver:
osmc@osmc:~/ cd ~/realtek/rtl8192eu-arm-linux-driver/
osmc@osmc:~/ ls
osmc@osmc:~/ less Makefile
osmc@osmc:~/ make ARCH=arm
osmc@osmc:~/ make install
osmc@osmc:~/ sudo make install
Процедура сборки занимает некоторое время.
8. Проверяем, что модуль ядра поставился:
osmc@osmc:~$ lsmod |grep 8192
8192eu 1445888 0
cfg80211 651264 1 8192eu
snd 81920 3 snd_timer,snd_bcm2835,snd_pcm
Обновление
---
Если в предыдущем выводе только последняя строка, то надо выполнить
osmc@osmc:~$ modprobe 8192eu
---
Проверяем, что появился новый интерфейс в ifconfig:
osmc@osmc:~$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.102 netmask 255.255.255.0 broadcast 192.168.1.1
ether b8:27:eb:01:e6:26 txqueuelen 1000 (Ethernet)
RX packets 1921 bytes 282385 (275.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1087 bytes 206934 (202.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 144 bytes 7228 (7.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 144 bytes 7228 (7.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.3 netmask 255.255.255.0 broadcast 192.168.1.1
ether 40:a5:ef:07:da:44 txqueuelen 1000 (Ethernet)
RX packets 38 bytes 6940 (6.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 63 bytes 16454 (16.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
9. Если всё хорошо, драйвер установился и наша карта заработала, надо настроить автоматическую пересборку модуля при обновлении ядра.
Удаляем модули:
osmc@osmc:~$ dkms uninstall rtl8192eu/1.0
osmc@osmc:~$ dkms remove rtl8192eu/1.0 --all
И заново собираем через dkms. Первая команда копирует код в дерево, вторая собирает и устанавливает модуль ядра:
osmc@osmc:~$ dkms add .
osmc@osmc:~$ dkms install rtl8192eu/1.0
10. Можно из консоли подключиться к точке доступа для окончательной проверки работоспособности собранного драйвера:
https://gist.github.com/kylemanna/6930087
Сканируем сети:
osmc@osmc:~$ sudo connmanctl scan wifi
Scan completed for wifi
Обновление
---
Во второй раз у меня выскочила такая ошибка
Error /net/connman/technology/wifi No carrier
Лечение найдено тут
able wifi
osmc@osmc:~$ sudo connmanctl technologies
osmc@osmc:~$ sudo rfkill unblock wifi
osmc@osmc:~$ sudo ip link set wlan0 up
osmc@osmc:~$ sudo connmanctl
> disable wifi
> enable wifi
> agent on
Программа rfkill скорее всего не установлена. Ее надо установить через apt get
После этого повторяем команду
osmc@osmc:~$ sudo connmanctl scan wifi
Scan completed for wifi
---
Смотрим, что нашли:
osmc@osmc:~$ sudo connmanctl services
*AO Wired ethernet_b827eb01e626_cable
Mgts10 wifi_40a5ef07da44_4d6774733130_managed_psk
MGTS_GPON_BEDD wifi_40a5ef07da44_4d4754535f47504f4e5f42454444_managed_psk
MGTS_GPON_0777 wifi_40a5ef07da44_4d4754535f47504f4e5f30383235_managed_psk
NETGEAR wifi_40a5ef07da44_4e455447454152_managed_psk
Keenetic-8888 wifi_40a5ef07da44_4b65656e657469632d33393234_managed_psk
MGTS_16 wifi_40a5ef07da44_4d4754535f3136_managed_psk
MGTS_GPON_9999 wifi_40a5ef07da44_4d4754535f47504f4e5f38353136_managed_ps
Смотрим информацию какой-нибудь сети:
osmc@osmc:~$ sudo connmanctl services wifi_40a5ef07da44_4d6774733130_managed_psk
/net/connman/service/wifi_40a5ef07da44_4d6774733130_managed_psk
Type = wifi
Security = [ psk ]
State = idle
Strength = 68
Favorite = False
Immutable = False
AutoConnect = False
Name = Mgts10
Ethernet = [ Method=auto, Interface=wlan0, Address=40:A5:EF:07:DA:44, MTU=1500 ]
IPv4 = [ ]
IPv4.Configuration = [ Method=dhcp ]
IPv6 = [ ]
IPv6.Configuration = [ Method=off ]
Nameservers = [ ]
Nameservers.Configuration = [ ]
Timeservers = [ ]
Timeservers.Configuration = [ ]
Domains = [ ]
Domains.Configuration = [ ]
Proxy = [ ]
Proxy.Configuration = [ ]
mDNS = False
mDNS.Configuration = False
Provider = [ ]
osmc@osmc:~$
Редактируем настройки подключения к выбранной сети:
osmc@osmc:~$ sudo nano /var/lib/connman/wifi_40a5ef07da44_4d6774733130_managed_psk.config
[wifi_40a5ef07da44_4d6774733130_managed_psk]
Type = wifi
Name = wifi_40a5ef07da44_4d6774733130_managed_psk
Passphrase = <passphrase>
Подключаемся:
osmc@osmc:~$ connmanctl connect wifi_40a5ef07da44_4d6774733130_managed_psk
Connected wifi_40a5ef07da44_4d6774733130_managed_psk
11. Всё можно идти в графический интерфейс и настраивать систему.
Если есть вопросы, пишите, если что-то пошло не так, вы нашли как это исправить, тем более пишите.
P.S.
Скомпилированные драйверы под разные ядра. К сожалению, с текущим 5.10.32-2-osmc у меня не завелся. Ссылка на будущее.
http://downloads.fars-robotics.net/wifi-drivers/8192eu-drivers/
Найдено тут.
Комментариев нет:
Отправить комментарий