Tina_Linux_Wi-Fi_Руководство по разработке
Tina_Linux_Wi-Fi_Руководство по разработке

Tina Linux Руководство по разработке Wi-Fi

1 Предисловие

1.1 Введение в документ

Представляет трансплантацию драйверов Wi-Fi на платформе Allwinner, представляет структуру управления Wi-Fi Tina, включая часто задаваемые вопросы о станциях, точках доступа и Wi-Fi.

1.2 Целевые читатели

Он подходит для клиентов, которым подходит платформа Tina, и коллег, интересующихся Tina Wi-Fi.

1.3 Область применения

Программная платформа Allwinner Tina версии v3.0 и выше. Аппаратная платформа Allwinner серии R (R6, R11, R16, R18, R30, R40, R328, R331, R329, R818, R528…). Аппаратная платформа Allwinner серии MR (MR133, MR813…). Аппаратная платформа Allwinner серии H (H133…). Аппаратная платформа Allwinner серии V (V853…).

2 Знакомство с Wi-Fi

2.1 Несколько режимов работы Wi-Fi

В настоящее время Wi-Fi на платформе Tina вообще может находиться в трёх режимах работы, а именно СТАНЦИЯ, Точка доступа и МОНИТОР. • СТАНЦИЯ: Терминал, подключенный к беспроводной сети. Большинство беспроводных сетевых карт находятся в этом режиме по умолчанию, и это также часто используемый режим. • AP: точка беспроводного доступа, часто называемая точкой доступа, например функция маршрутизатора. • МОНИТОР: Также известный как режим мониторинга неразборчивых устройств, все пакеты данных передаются на хост без фильтрации.

2.2 Структура программного обеспечения Tina Wi-Fi

Рисунок 2-1: Структурная диаграмма программного обеспечения Tina

• wifimanager-v2.0: в дополнение к функциям wifimanager-v1.0 (используется в режиме STATION, обеспечивая сканирование соединений Wi-Fi и другие функции), он также включает в себя softap (функция запуска точки доступа) и smartlink (конфигурация нескольких сетей). режимов) одно приложение объединяет несколько функций Wi-Fi, что делает его удобным в использовании и управлении для клиентов. • wpa_supplicant: инструмент настройки беспроводной сети с открытым исходным кодом, в основном используемый для поддержки беспроводных протоколов WEP, WPA/WPA2 и WAPI и аутентификации с шифрованием. Фактическое содержание работы заключается во взаимодействии с драйвером через сокет для передачи данных пользователю. • hostapd: представляет собой демон-процесс пользовательского режима для точек доступа и серверов аутентификации. • монитор: приложение обработки Wi-Fi в режиме беспорядочного прослушивания устройств.

2.3 Знакомство с распространенными командами Wi-Fi

2.3.1 режим станции

Подробности см. в руководстве по разработке Tina_linux_wifimanger2.0_.

Перед выполнением следующей команды убедитесь, что фоновый процесс wifi_deamon запущен. Если он не запущен, сначала запустите фоновый процесс wifi_deamon.

Язык кода:javascript
копировать
wifi -o sta Откройте wifimanager с помощью stamodel
wifi -s Сканировать окружающие сети
wifi -c ssid [passwd] Подключиться к указанной сети в зашифрованном или незашифрованном виде.
wifi -d Отключите подключенную сеть
wifi -l [all] Список сохраненных сетей
wifi -a [enable/disable] Повторно подключить отключенную сеть
wifi -r [ssid/all] Удалить сохраненную указанную сеть
Язык кода:javascript
копировать
Примечание:
ssid имя сети
passwd секретный ключ
2.3.2 режим ап

Перед выполнением следующей команды убедитесь, что фоновый процесс wifi_deamon запущен. Если он не запущен, сначала запустите фоновый процесс wifi_deamon.

Язык кода:javascript
копировать
wifi -o ap [ssid] [passwd] Откройте wifimanager с помощью apmodel
wifi -l Получение списка информации о персонале, подключенной к точке доступа
Язык кода:javascript
копировать
Примечание:
ssid имя сети
passwd секретный ключ
apmodelistationmodel не может сосуществовать в разных модулях. Подробности см. в разделе 5.
2.3.3 режим монитора

Перед выполнением следующей команды убедитесь, что фоновый процесс wifi_deamon запущен. Если он не запущен, сначала запустите фоновый процесс wifi_deamon.

Язык кода:javascript
копировать
wifi -o monitor Открыть wifimanager с моделью монитора
Язык кода:javascript
копировать
Примечание:
Нет
2.3.4 Дополнительные возможности

Перед выполнением следующей команды убедитесь, что фоновый процесс wifi_deamon запущен. Если он не запущен, сначала запустите фоновый процесс wifi_deamon.

Язык кода:javascript
копировать
wifi -f Закрыть диспетчер Wi-Fi
wifi -p [softap/ble/xconfig/soundwave] Используйте softap/ble/xconfig/soundwave для настройки сети.
wifi -D [error/warn/info/debug/dump/exce] Установить уровень печати
wifi -g Получить информацию о Mac-адресе
wifi -m [macaddr] Установить MAC-адрес
wifi -h Распечатать инструкции wifimanager
Язык кода:javascript
копировать
Примечание:
Модель сетевого распределения поддерживается не всеми модулями, это зависит от конкретного модуля.
Настройки Mac-адреса можно установить только временно.

3 Трансплантация модуля Wi-Fi

Рисунок 3-1: Упрощенная схема соединения между основным элементом управления и оборудованием Wi-Fi.

Условия для работы модуля Wi-Fi, как показано на рисунке выше, должны соответствовать следующим условиям: • Источник питания: обычно существует два источника питания, среди которых VCC-Wi-Fi является основным источником питания, а VCCIO-Wi-Fi — источником питания подтягивающего ввода-вывода. • Включить: для правильной работы WL-REG-ON необходимо установить на высокий уровень. • SDIO: связь с SOC осуществляется через USB, SDIO и т. д. Здесь в качестве примера мы возьмем SDIO, где SDIO 0–3 — это 4 линии данных SDIO. • Пробуждение ведущего устройства: когда система находится в спящем режиме, модуль Wi-Fi может разбудить ведущего устройства посредством прерывания через WL-WAKE-AP. Некоторые модули также используют этот контакт в качестве прерывания для ведущего устройства для получения данных. • Тактовый сигнал 24/26 МГц. • Сигнал 32,768 к Гц: зависит от модуля. Некоторые модули внутренне разделены входом clk (5), а некоторые требуют отдельного внешнего входа сигнала.

При трансплантации модуля Wi-Fi основное внимание уделяется вышеуказанным условиям. Для вышеуказанных условий работы allwinner предоставил соответствующие драйверы в соответствии с моделью драйвера устройства шины, вам нужно только настроить драйвер в соответствии с каждой платформой.

Просто настройте устройство на компьютере. Помимо dts (ядро Linux-3.4 не имеет dts), устройство allwinner также можно настроить через sys_config.fex. Обычно приоритет sys_config.fex выше, чем dts.

В этом случае настройте sys_config.fex напрямую.

проиллюстрировать:

Язык кода:javascript
копировать
- Путь к sys_config.fex в Tina3.5.0 и более ранних версиях: tina/target/allwinner/xxx(cowbell_perf1)/configs/
- Путь к sys_config.fex в Tina3.5.1 и более поздних версиях: tina/device/config/chips/xxx(r328)/configs/xxx(perf1)/
- Путь к dts в Tina3.5.0 и более ранних версиях: tina/lichee/linux-xxx/arch/arm/boot/dts/
- Путь к dts для Tina3.5.1 и более поздних версий: tina/device/config/chips/xxx(r328)/configs/xxx(perf1)/board.dts

Устройство Linux 3.4 (конфигурация sys_config.fex)

Язык кода:javascript
копировать
[rf_para]
module_num = 10 /*Используется для различения моделей модулей: по умолчанию 8~10*/
module_power1 = "axp22_dldo1" /*Дерево мощности, используемое power1: dld01*/
module_power1_vol = 3300000 /*Напряжение дерева мощности, используемое power1, установлено на 3,3 В*/
module_power2 = "axp22_dldo2" /*Дерево мощности, используемое power2: dld02*/
module_power2_vol = 3300000 /*Напряжение дерева мощности, используемое power2, установлено на 3,3 В*/
module_power3 = "axp22_aldo3" /*Дерево мощности, используемое power3: dld03*/
module_power3_vol = 3300000 /*Напряжение дерева мощности, используемое power3, установлено на 3,3 В*/
/*Вот и все — это конфигурация, работающая от pmu. Если питание осуществляется напрямую, ее можно опустить*/.
power_switch =
chip_en = /*Включение питания, используется для включения питания с использованием верхней и нижней точек gpio*/
lpo_use_apclk = "losc_out" /*Включение часов 32 к Гц*/
[wifi_para]
wifi_used = 1 /*Использовать ли Wi-Fi*/
wifi_sdc_id = 1 /*sdio, используемый Wi-Fi номер карты*/
wl_reg_on = port:PL06<1><default><default><0> /*Включаем gpio, используемый контактом*/
wl_host_wake = port:PL07<4><default><default><0> /*Gpio, используемый для пробуждения мастера*/
[mmc1_para]
sdc_used = 1
sdc_detmode = 4
sdc_buswidth = 4
sdc_clk = port:PG00<2><1><1><default> /*номер GPIO, используемый sdio*/
sdc_cmd = port:PG01<2><1><1><default>
sdc_d0 = port:PG02<2><1><1><default>
sdc_d1 = port:PG03<2><1><1><default>
sdc_d2 = port:PG04<2><1><1><default>
sdc_d3 = port:PG05<2><1><1><default>
sdc_det =
sdc_use_wp = 0
sdc_wp =
sdc_isio = 1
sdc_regulator = "none"

Путь к драйверу Linux 3.4, для получения подробной информации обратитесь к следующему пути к коду

Язык кода:javascript
копировать
tina/lichee/linux-3.4/drivers/misc/rf_pm

linux3.4 или более поздняя версия, устройство (конфигурация sys_config.fex)

Язык кода:javascript
копировать
[sdc1]
sdc1_used = 1
bus-width = 4
sdc1_clk = port:PG00<2><1><3><default>
sdc1_cmd = port:PG01<2><1><3><default>
sdc1_d0 = port:PG02<2><1><3><default>
sdc1_d1 = port:PG03<2><1><3><default>
sdc1_d2 = port:PG04<2><1><3><default>
sdc1_d3 = port:PG05<2><1><3><default>
sd-uhs-sdr50 =
sd-uhs-ddr50 =
sd-uhs-sdr104 =
cap-sdio-irq =
keep-power-in-suspend =
ignore-pm-notify =
max-frequency = 150000000 /*Максимальная частота сканирования карты, используемая sdio*/
mix-frequency = 150000000
[wlan]
wlan_used = 1
compatible = "allwinner,sunxi-wlan"
clocks = "losc_out"
wlan_power_num = 2 /*Использовать блок питания PMU, количество используемых блоков питания*/
wlan_power1 = "vcc-wifi1" /*Используйте источник питания PMU, используется отметка power1*/
wlan_power2 = "vcc-wifi2" /*Используйте источник питания PMU, используйте метку power2*/
wlan_io_regulator = "vcc-io-wifi" /*Использовать источник питания PMU, использовать флаг io*/
/*Вышеуказанные 4 строки обозначают элемент конфигурации, использующий источник питания PMU, соответствующий следующему параметру регулятора. Если вы не используете источник питания PMU, вы можете игнорировать его. */
wlan_busnum = 1
wlan_regon = port:PE06<1><1><1><0>
wlan_hostwake = port:PE05<6><default><default><default>
[regulator0]
compatible = "axp221s-regulator"
regulator_count = 20
......
regulator2 = "axp221s_dcdc2 none vdd-cpua"
regulator3 = "axp221s_dcdc3 none vdd-sys vdd-gpu"
regulator4 = "axp221s_dcdc4 none"
regulator5 = "axp221s_dcdc5 none vcc-dram"
regulator6 = "axp221s_rtc none vcc-rtc"
regulator7 = "axp221s_aldo1 none vcc-25 csi-avdd"
regulator8 = "axp221s_aldo2 none vcc-ephy0"
regulator9 = "axp221s_aldo3 none avcc vcc-pll"
regulator10 = "axp221s_dldo1 none vcc-io-wifi vcc-pg " /*io power Подождите dld01*/
regulator11 = "axp221s_dldo2 none vcc-wifi1" /*power1 Подождите dld02*/
regulator12 = "axp221s_dldo3 none vcc-wifi2" /*power2 Подождите dld03*/
regulator13 = "axp221s_dldo4 none vdd-sata-25 vcc-pf"
regulator14 = "axp221s_eldo1 none vcc-pe csi-iovcc"

Драйвер Linux 3.4 или более поздней версии. Подробную информацию см. по следующему пути к коду.

Язык кода:javascript
копировать
tina/lichee/linux-XXX/drivers/misc/sunxi-rf

3.1 Этапы трансплантации модулей

Ниже обобщаются шаги по портированию нового модуля на платформу Tina.

3.1.1 Измените драйвер Wi-Fi, предоставленный производителем модуля.

Драйвер, предоставляемый фабрикой модулей, адаптирован к платформе Tina. Основные изменения заключаются в вызове включения и выключения питания, функциях сканирования карт, предоставляемых платформой Tina, изменении пути загрузки прошивки, настройке Kconfig и.

Makefile и т. д.

Ниже описаны функции, предоставляемые платформой Tina для драйвера Linux 3.4, который немного отличается от других ядер.

linux 3.4

Язык кода:javascript
копировать
#include <mach/sys_config.h>
#include <linux/gpio.h>
/*
* Функциональные функции: карта сканирования Sdio
*Идентификатор параметра: Номер карты, (sdio 0 or 1 ...)
*Вставка параметров: 0, вставьте карту и отсканируйте карту; 1. Вытащите карту.
* Возвращаемое значение: Нет
*/
extern void sunxi_mci_rescan_card(unsigned id, unsigned insert);
/*
* Функциональные функции: Модуль Wi-Fi включен и включен.
*Параметр включен: 0, питание включено; 1, питание выключено.
* Возвращаемое значение: никто
*/
extern void wifi_pm_power(int on);

Linux 3.4 или выше

Язык кода:javascript
копировать
#include <linux/mmc/host.h>
#include <linux/sunxi-gpio.h>
#include <linux/power/aw_pm.h>
/*
* Функциональные функции: Получите номер используемой карты Sdio, соответствующий wlan_busnum в sysconfig.fex.
* Возвращаемое значение: sdio номер карты
*/
extern int sunxi_wlan_get_bus_index(void);
/*
* Функциональные функции: sdio Сканировать карту
*Идентификатор параметра: Номер карты, (sdio 0 or 1 ...)
* Возвращаемое значение: никто
*/
extern void sunxi_mmc_rescan_card(unsigned ids);
/*
* Функциональные функции: Модуль Wi-Fi включен и включен.
*Параметр включен: 0, питание включено; 1, питание выключено.
* Возвращаемое значение: никто
*/
extern void sunxi_wlan_set_power(bool on);
/*
* Функциональные функции:получатьgpio wlan hostwake Номер прерывания, запрошенный выводом
*параметр: void
* Возвращаемое значение:irq number
*проиллюстрировать: Для некоторых модулей главный элемент управления получает данные через hostwake. Вывод генерирует прерывание для запуска,
* Следовательно, основной стороне управления необходимо предоставить номер прерывания.
*/
extern int sunxi_wlan_get_oob_irq(void);
/*
* Функциональные функции:получатьhost wake вывод устанавливает флаг прерывания
*параметр: void
* Возвращаемое значение: irq flag
*/
extern int sunxi_wlan_get_oob_irq_flags(void);

Первый шаг — поместить драйвер Wi-Fi в linux-4.9/drivers/net/wireless и заполнить соответствующие функции включения, сканирования карты и другие функции.

Драйвер для Linux 3.4 см. по адресу:

модуль esp8089:

Язык кода:javascript
копировать
tina/lichee/linux-3.4/drivers/net/wireless/esp8089/sdio_stub.c

модуль xr819:

Язык кода:javascript
копировать
tina/lichee/linux-3.4/drivers/net/wireless/xradio/wlan/platform.c

Linux 3.4 или выше Пожалуйста, обратитесь к драйверу:

Язык кода:javascript
копировать
tina/lichee/linux-4.9/drivers/net/wireless/rtl8723ds/platform/platform_ARM_SUNnI_sdio.c

Второй шаг — увеличение конфигурации меню и компиляция ядра. Вам нужно лишь изменить следующие места.

Язык кода:javascript
копировать
tina/lichee/linux-4.9/drivers/net/wireless/Kconfig
example:
+source "drivers/net/wireless/xr829/Kconfig"
Язык кода:javascript
копировать
tina/lichee/linux-4.9/drivers/net/wireless/Makefile
example:
+obj-$(CONFIG_XR829_WLAN) += xr829/

После завершения настройки можно выполнить make kernel_menuconfig и выбрать его. При компиляции будет скомпилирован указанный драйвер.

Язык кода:javascript
копировать
Device Drivers --->
    [*] Network device support --->
        [*] Network device support --->
            [*] Wireless LAN --->
            	[] ххх-модуль
3.1.2 Добавление конфигурации make munconfig

Этот шаг в основном копирует файлы ko и встроенное ПО, скомпилированные в ядре, в файловую систему. Первое — настройка прошивки. Файл прошивки обычно хранится следующим образом с именем файла модуля, и необходимо добавить файл mk, чтобы он был виден в make munconfig.

Язык кода:javascript
копировать
модуль tina/package/firmware/linux-firmware/XXX
tina/package/firmware/linux-firmware/XXXmodule/XXX.mk
example:
tina/package/firmware/linux-firmware/xr829
make munuconfig
Firmware --->
< > xr829-firmware..................................... Xradio xr829 firmware

Второе — настроить ko.

Язык кода:javascript
копировать
схема tina/target/allwinner/xxx/modules.mk
example:
Tina-3.5.0и раньше:
tina/target/allwinner/cowbell-perf1/modules.mk
Tina-3.5.1и далее:
tina/target/allwinner/r328s2-perf1/modules.mk
make munuconfig
    Kernel modules --->
        Wireless Drivers --->
        	XXX модуль
3.1.3 Настройка sys_config.fex

Это уже объяснялось ранее, см. описание в начале Главы 3.

3.1.4 Проверка

Согласно предыдущей конфигурации, make kernel_menuconfig выбирает соответствующий модуль, а опция make menuconfig соответствует прошивку и модули одновременно заставьте munconfig заново выбрать следующее, и вы сможете это проверить.

Язык кода:javascript
копировать
make menuconfig
    Allwinner --->
        wireless --->
            <*> wifimanager-v2.0................................... Tina wifimanager-v2.0
            <*> wifimanager-v2.0-demo..................... Tina wifimanager-v2.0 app demo

Проверить команду

Язык кода:javascript
копировать
Проверятьмодуль Загружать ли:lsmod
Удаление модуля: rmmod
ps Проверьте, запустился ли фоновый процесс wifi_deamon. Если нет, сначала запустите фоновый процесс wifi_deamon.
Подключить команду маршрутизации: wifi -c ssid passwd
Сканирование окружающих точек доступа: Wi-Fi -s

3.1.5 Пример портирования модуля

Возьмем в качестве примера RTL8723DS:

  1. Получить информацию 1.1 Рекомендуется получить последнюю версию полной информации от оригинального производителя RTL, включая драйверы, документы и инструменты. (Вы также можете получить драйверы из других адаптированных версий ядра)
  2. адаптация ядра
Язык кода:javascript
копировать
2.1 Скопируйте весь SDK драйвера в tina/lichee/linux-xxx/drivers/net/wireless/
Драйвер 2.2 переименован в rtl8723ds.
2.3 Измените файл KconfigиMake в каталоге tina/lichee/linux-xxx/drivers/net/wireless/.
Kconfig:
+source "drivers/net/wireless/rtl8723ds/Kconfig"
Makefile:
+obj-$(CONFIG_RTL8723DS) += rtl8723ds/ (Примечание: имена здесь должны совпадать)
2.4 Измените собственный код драйвера
2.4.1 Makefile драйвера (tina/lichee/linux-xxx/drivers/net/wireless/rtl8723ds/Makefile)
+CONFIG_RTW_ANDROID = 0 (# CONFIG_RTW_ANDROID - 0: no Android, 4/5/6/7/8/9/10 : Android
version)
+CONFIG_PLATFORM_I386_PC = n
+CONFIG_PLATFORM_ARM_SUNxI = y
2.4.2 Заменить платформу приспособлениеsunxi документом (tina/lichee/linux-xxx/drivers/net/wireless/rtl8723ds/platform)
Можно получить из других уже установленных модов: Platform_ARM_SUNxI_sdio.c

Адаптация модуля Тины

Язык кода:javascript
копировать
3.1. Копирование конфигурации модуля из любого другого поддерживаемого решения IC.
define KernelPackage/net-rtl8723ds
SUBMENU:=$(WIRELESS_MENU) //make Положение меню Menuconfig обычно не меняется.
TITLE:=RTL8723DS support (staging) //make подсказки менюконфигурации
DEPENDS:= +r8723ds-firmware +@IPV6 +@USES_REALTEK +@PACKAGE_realtek-rftest +
@PACKAGE_rtk_hciattach //Добавляем зависимость tina, которую можно понимать как select
FILES:=$(LINUX_DIR)/drivers/net/wireless/rtl8723ds/8723ds.ko
KCONFIG:=\ //Добавляем зависимости ядра, чтобы понять выбор бита
...
AUTOLOAD:=$(call AutoProbe,8723ds)
endef
define KernelPackage/net-rtl8723ds/description //make Описание менюконфигурации
Kernel modules for RealTek RTL8723DS support
endef
$(eval $(call KernelPackage,net-rtl8723ds))
полный модуль
Примечание. Рекомендуется добавить его непосредственно в общую Конфигурацию платформы: tina/target/allwinner/xxx-common/modules.mk.
3.2.firmwareиз Конфигурация
/package/firmware/linux-firmware/rtl8723ds/ //Обновление документа прошивки (если доступна последняя версия) при обновлении драйвера
3.3.sys_config.fex/board.dtsиз Конфигурация
rfkill: rfkill@0 {
compatible = "allwinner,sunxi-rfkill";
chip_en;
power_en;
status = "okay";
wlan: wlan@0 {
compatible = "allwinner,sunxi-wlan";
pinctrl-0 = <&wlan_pins_a>;
pinctrl-names = "default";
clock-names = "32k-fanout1";
clocks = <&ccu CLK_FANOUT1_OUT>;
wlan_busnum = <0x1>;
wlan_regon = <&pio PE 17 GPIO_ACTIVE_HIGH>;
wlan_hostwake = <&pio PG 10 GPIO_ACTIVE_HIGH>;
/*wlan_power = "VCC-3V3";*/
/*wlan_power_vol = <3300000>;*/
/*interrupt-parent = <&pio>;
interrupts = < PG 10 IRQ_TYPE_LEVEL_HIGH>;*/
wakeup-source;
};
...
}
  1. Общая компиляция и программирование
  2. Устранение неполадок с проверкой
3.1.6 Краткое описание трансплантации модулей

Основные моменты следующие: • Измените драйвер, предоставленный производителем модуля, и заполните соответствующие функции включения, сканирования карты и другие функции. • Добавлены параметры make kernel_menuconfig и make menuconfig, включающие прошивку, makefile, ko. • Настройте sys_config.fex. • проверять.

Текущие версии ядра Linux платформы Tina включают linux_3.4, linux_3.10, linux_4.4, linux_4.9 и linux_5.4. По историческим причинам весьма вероятно, что конфигурации между версиями ядра несколько различаются. в основном отражается на устройстве: sys_config.fex и драйвере: sunxi-rf. Пользователи могут обратиться к соответствующим версиям ядра для справки при портировании модуля.

Тина-3.5.0 и ранее:

Название продукта

Версия ядра

sys_config.fex

R16

Linux-3.4

tina/target/allwinner/astarparrot/configs/sysconfig.fex

R18

Linux-4.4

tina/target/allwinner/tulip_d1/configs/sysconfig.fex

R328

Linux-4.9

tina/target/allwinner/cowbell_demo/configs/sysconfig.fex

Тина-3.5.1 и новее:

Название продукта

Версия ядра

Конфигурационный файл

R16

Linux-3.4

tina/device/config/chips/r16/configs/parrot/sys_config.fex

R18

Linux-4.4

tina/device/configs/chips/r18/configs/d1/sys_config.fex

R328

Linux4.9

tina/device/config/chips/r328s2/configs/perf1/sys_config.fex(board.dts)

R528

Linux-5.4

tina/device/config/chips/r528/configs/evb1/sys_config.fex(board.dts)

3.2 Модули, портированные на платформу Tina

На платформу Tina портировано несколько модулей Wi-Fi. Список поддержки выглядит следующим образом:

Язык кода:javascript
копировать
BCM : AP6212,AP6212A,AP6255,AP6256,AP6335ждать.
Realtek: RTL8723DS(linux 3.4/4.9/5.4),RTL8821cs(linux 4.9/5.4),RTL8822cs(linux 4.9),RTL8189FTV(linux4.9)
Xradio : XR819(linux 3.4/4.4/4.9),xr829(linux 3.4/4.4/4.9/5.4)
Esp : esp8089(linux 3.4)
.....

Для вышеперечисленных пересаженных модулей в большинстве случаев пользователям достаточно выбрать соответствующие конфигурации в kernel_menuconfig и menuconfig. Если он выбран в соответствующем менюконфигурации, то все равно не работает.

Если это работает, выполните действия, описанные в разделе 3.1, чтобы устранить причину. В то же время, если некоторые решения могут не отображать соответствующие модули ядра в make менюconfig, это связано с тем, что

Он не добавляется в файл groups.mk и может быть добавлен методом, описанным в разделе 3.1.2.

Ниже перечислены параметры kernel_menuconfig и menuconfig для каждого модуля.

3.2.1 Модули серии BCM

сделать конфигурацию kernel_menuconfig

Язык кода:javascript
копировать
Device Drivers --->
	Network device support --->
		Wireless LAN --->
			<M> Broadcom FullMAC wireless cards support
                (/lib/firmware/fw_bcmdhd.bin) Firmware path
                (/lib/firmware/nvram.txt) NVRAM path
PS: BCMсерия модулей,Например, AP6212,AP6255,AP6256... все используют один и тот же драйвер

сделать конфигурацию меню

Язык кода:javascript
копировать
Kernel modules--->
	Wireless Drivers--->
	<*> kmod-net-broadcom
Firmware--->
	<*> ap6212-firmware. ---Выберите в соответствии с моделью модуля
3.2.2 Модули серии XR

(1)XR819 сделать конфигурацию kernel_menuconfig

Язык кода:javascript
копировать
Device Drivers --->
	Network device support --->
		Wireless LAN --->
			<M> XR819 WLAN support --->
		/*or*/<M> XRadio WLAN support --->

сделать конфигурацию меню

Язык кода:javascript
копировать
Kernel modules--->
	Wireless Drivers--->
		<*> kmod-net-broadcom
Firmware--->
	<*> xr819-firmware..................................... Xradio xr819 firmware

(2)XR829 сделать конфигурацию kernel_menuconfig

Язык кода:javascript
копировать
Device Drivers --->
	Network device support --->
	Wireless LAN --->
	<M> XR829 WLAN support --->

сделать конфигурацию меню

Язык кода:javascript
копировать
Kernel modules--->
Wireless Drivers--->
<*> kmod-net-xr829................................... xr829 support (staging)
Firmware--->
<*> xr829-firmware..................................... Xradio xr829 firmware
3.2.3 Модули серии REALTEK

(1)RTK8723DS сделать конфигурацию kernel_menuconfig

Язык кода:javascript
копировать
Device Drivers --->
	Network device support --->
	Wireless LAN --->
	<M> Realtek 8723D SDIO or SPI WiFi

сделать конфигурацию меню

Язык кода:javascript
копировать
Kernel modules--->
    Wireless Drivers--->
    	<*> kmod-net-rtl8723ds........................... RTL8723DS support (staging)
Firmware--->
	<*> r8723ds-firmware.............................. RealTek RTL8723DS firmware

(2)RTK8822CS сделать конфигурацию kernel_menuconfig

Язык кода:javascript
копировать
Device Drivers --->
    Network device support --->
    	Wireless LAN --->
    		<M> Realtek 8822C SDIO WiFi

сделать конфигурацию меню

Язык кода:javascript
копировать
Kernel modules--->
	Wireless Drivers--->
		<*> kmod-net-rtl8822cs........................... RTL8723CS support (staging)
Firmware--->
		<*> rtl8821cs-firmware............................ RealTek RTL8821CS firmware

(3)RTK8189FTV сделать конфигурацию kernel_menuconfig

Язык кода:javascript
копировать
Device Drivers --->
	Network device support --->
		Wireless LAN --->
			<M> Realtek 8189F SDIO WiFi

сделать конфигурацию меню

Язык кода:javascript
копировать
Kernel modules--->
	Wireless Drivers--->
		<*> kmod-net-rtl8189fs........................... RTL8189FS support (staging)
Примечание: RTL8189FTV В tina Конфигурация прошивка Конфигурация не требуется.
3.2.4 Модули серии ESP

(1)ESP8089 сделать конфигурацию kernel_menuconfig

Язык кода:javascript
копировать
Device Drivers --->
	Network device support --->
		Wireless LAN --->
			<*> Eagle WLAN driver

сделать конфигурацию меню

Язык кода:javascript
копировать
Kernel modules--->
	Wireless Drivers--->
		<*> kmod-esp8089................................... esp8089 support (staging)
Firmware--->
		<*> esp8089-firmware........................................ esp8089 firmware

3.3 Список поддерживаемых модулей основной платформы Tina

Аппаратная платформа

Поддержка модов

Версия ядра

R6

XR819

linux3.10

R7/R11

XR819

linux3.4

R16

AP6210/AP6212/AP6181/8723BS

linux3.4

R18

AP6212/AP6236/AP6255

linux4.4

R30

AP6181/AP6212/AP6234/AP6330/8723BS

linux4.4

R40

AP6212

linux3.10

R58

AP6212/AP6181/8723BS

linux3.4

R311

AP6212/AP6181/8723BS

linux4.9

R328

XR829/8723DS (одна антенна)

linux4.9

R329

XR829/8723DS (одинарная и двойная антенны)

linux4.9

R331/R332/R333

8723DS (одна антенна)

linux4.9

R818

XR829/8723DS (одинарная и двойная антенны)/8189FTV/8821CS(Одинарные и двойные антенны)

linux4.9

MR133

AP6212/AP6181/8723BS

linux4.9

MR813

XR829/8723DS (одинарная и двойная антенны)/8189FTV

linux4.9

T7

AP6210/AP6212/AP6234

linux4.9

R528

RTL8723ds(одиночный)/RTL8821cs/xr829

linux5.4

V853

XR829/XR819s/RTL8189FS

linux4.9

4 Знакомство с менеджером Wi-Fi

wifimanager был обновлен до wifimanager2.0, для wifimanager2.0 есть отдельный документ, пожалуйста, обратитесь к подробному описанию wifimanager2.0.

Tina_linux_wifimanger2.0_ Руководство по разработке

5 Введение в Softap

Функция softap интегрирована в wifimanager2.0, для которого имеется отдельный документ. Подробное описание wifimanager2.0 см.

Tina_linux_wifimanger2.0_ Руководство по разработке

6 часто задаваемых вопросов

6.1 Проблемы компиляции

6.1.1 переменная wowlan не найдена
  1. Феномен:
Язык кода:javascript
копировать
drivers/net/wireless/xr829/umac/main.c:870:17: error: 'struct wiphy' has no member named 'wowlan'
if ((hw->wiphy->wowlan->flags || hw->wiphy->wowlan->n_patterns)
  1. причина: Переменная-член wowlan контролируется CONFIG_PM и не включается. Зависимость пробуждения от сна.
  2. Решение:
Язык кода:javascript
копировать
В конфигурации ядра
-Power management options --->
Device power management core functionality
6.1.2 xxx.ko не найден

Феномен:

Язык кода:javascript
копировать
sunxi_wlan_get_bus_index...xradio_core.ko undefined!

причина: Недостаток Конфигурацияmisc。

Решение: В конфигурации ядра

Язык кода:javascript
копировать
m kernel_menuconfig-->
   Device drivers-->
   	Misc devices-->
   		Allwinner rfkill driver
6.1.3 mmc_xxx undefined
  1. Феномен:
Язык кода:javascript
копировать
drivers/built-in.o: In function scan_device_store':
lichee/linux-4.9/drivers/misc/sunxi-rf/sunxi-wlan.c:309: undefined reference
tosunxi_mmc_rescan_card'
lichee/linux-4.9/drivers/misc/sunxi-rf/sunxi-wlan.c:309:(.text+0x5fc40): relocation
truncated to fit:
R_AARCH64_CALL26 against undefined symbol `sunxi_mmc_rescan_card'
  1. причина: Нет Конфигурацияmmc。
  2. решение
Язык кода:javascript
копировать
Device Drivers --->
	<*> MMC/SD/SDIO card support --->
	<*> Allwinner sunxi SD/MMC Host Controller support
6.1.4 Отсутствующие зависимые библиотеки

Феномен:

Язык кода:javascript
копировать
Package kmod-net-xr829 is missing dependencies for the following libraries:
cfg80211.ko
mmc_core.ko
sunxi-wlan.ko

причина: Зависимые библиотеки должны быть скомпилированы в ядро ​​и не могут быть скомпилированы в модули.

решение.

Язык кода:javascript
копировать
В конфигурации ядраследующеемодульчас,Конфигурация — y
CONFIG_RFKILL = у
CONFIG_CFG80211=у
CONFIG_MMC=y
CONFIG_MAC80211=у

6.2 Проблема с загрузкой драйверов

6.2.1 Когда модуль Broadcom R16 подключен к Интернету, появляется сообщение: Нет такого устройства.
  1. Феномен:
Язык кода:javascript
копировать
root@TinaLinux:/# wifi_add_network_test ssid passwd 1

*********************************

***Start wifi connect ap test!***

*********************************

wpa_suppplicant not running!
Cannot create "/data/misc/wifi/entropy.bin": No such file or directory
Wi-Fi entropy file was not created
ifconfig: SIOCGIFFLAGS: No such device
event_label 0x0
wifi on failed!
wifi on failed event 0xf001
  1. причина:
Язык кода:javascript
копировать
Выбор прошивки не соответствует, что приводит к сбою загрузки при загрузке драйвера.

- lsmod проверяет, нормально ли загрузился драйвер
- dmesg Проверьте журнал загрузки и найдите:
  [ 22.336336] dhdsdio_download_code_file: Open firmware file failed /lib/firmware/
  fw_bcm43438a1.bin
  [ 22.346331] _dhdsdio_download_firmware: dongle image file download failed
  Указывает на отсутствие прошивки (здесь имеется в виду отсутствие fw_bcm43438a1.bin)
  Наконец я обнаружил, что в конфигурации прошивки выбран ap6212. Обычно следует использовать ap6212a.
  1. решение
Язык кода:javascript
копировать
tinaКонфигурация правильной прошивки
firmware --->
└─> <*> ap6212a-firmware............................... Broadcom AP6212A firmware
6.2.2 Модуль R329_XR829 ifconfig отображает: Нет такого устройства.

Феномен:

Язык кода:javascript
копировать
ifconfig: SIOCGIFFLAGS: No such device

причина:

Язык кода:javascript
копировать
несоответствие выбора прошивки。

- lsmod проверяет, нормально ли загружен драйвер.
- dmesg Проверьте журнал загрузки и найдите:
  [ 195.966066] [XRADIO_ERR] xradio_load_firmware: Wait for wakeup:device is not responding.
  XR829 заменен кварцевым генератором 40M.

решение

Язык кода:javascript
копировать
tinaКонфигурация выбор прошивки кварцевого генератора 40М
firmware --->
	[*] xr829 with 40M sdd
6.2.3 MR133_XR829 can’t open /etc/wifi/xr_wifi.conf, failed

1.Феномен:

Драйвер lsmod загружается неправильно.

причина:

Язык кода:javascript
копировать
Используйте dmesg для просмотра журнала:
[ 6.802331] [XRADIO_ERR] can't open /etc/wifi/xr_wifi.conf, failed(-30)
[ 6.802338] [XRADIO_ERR] Access_file failed, path:/etc/wifi/xr_wifi.conf!
[ 6.914044] sunxi-mmc sdc1: no vqmmc,Check if there is regulator
[ 7.028376] [XRADIO_ERR] xradio_load_firmware: Wait_for_wakeup: can't read control
register.
busnumКонфигурация неправильная, на принципиальной схеме используется sdc0.

2.решение

Язык кода:javascript
копировать
board.dtsсередина При настройке
номер шины = 0;
6.2.4 Краткое описание проблем с загрузкой драйверов
6.2.4.1 Проблемы конфигурации
Язык кода:javascript
копировать
1. Драйвер ядра, Тина modules, Tina Три прошивки должны корректно соответствовать одному и тому же модулю.
2. Обратите внимание на написание модулей.мк под общим.
3. Конфигурация Sdio должна выбрать соответствующий номер шины в соответствии со принципиальной схемой.
Может вызвать:
1.Сканировать карта не удалась.
2. Не удалось загрузить прошивку.
В итоге драйвер не загружается.
6.2.4.2 Проблемы с электропитанием
Язык кода:javascript
копировать
Проверьте источники питания VCC_WIFI и VCC_IO_WIFI.
Различные модули имеют определенные требования к времени подачи питания. Например, RTL8723ds требует одновременного подключения двух каналов питания. Для решений с AXP необходимо обращать внимание на время подачи питания, особенно на время включения.
1. Аппаратное обеспечение: в первую очередь проверьте схему электропитания двух цепей, чтобы убедиться, что они питаются от одной и той же цепи. Если они питаются отдельно, необходимо учитывать синхронизацию двух цепей электропитания.
НапримерDCDC1--->VCC_WIFI,LDOA--->VCC_IO_WIFI,ТакDCDC1иLDOAизчас Заказ надо учитывать。
2. Что касается программного обеспечения, то это в основном конфигурация sysconfig.fex или boart.dts. Нужна ли отдельная конфигурация для отдельного источника питания?
Например: аппаратная конструкция R818 питается от двух отдельных цепей.
Может вызвать:
1.Сканировать карта не удалась.
2. Не удалось загрузить прошивку.
3.sdio_clk не имеет часов.
С 4,32к конкурировать невозможно.
В итоге драйвер не загружается.
6.2.4.3 проблема с sdio
Язык кода:javascript
копировать
1.sdio busnumНеправильная конфигурация.
2. Неправильный способ управления WL-REG-ON. Например:
Появляется модуль XR819
[SBUS_ERR] sdio probe timeout!
[XRADIO_ERR] sbus_sdio_init_failed
Этот вопрос в основном касается карты сканирования Sdioнеудача,Это связано с последовательностью включения sdio.,Доступно наdrivers/net/wireless/xradio/wlan/platform.cсередина
Задержка добавляется после функции xradio_wlan_power sunxi_wlan_set_power(on).
RLT8723ds сначала требует метода high-low-high.
Может вызвать:
1.Сканировать карта не удалась.
2. Не удалось загрузить прошивку.
3.sdio_clk не имеет часов.
Кварцевый генератор 4.32k не вибрирует.
5. Метод WL-REG-ONникто нормально подтягивается.
В итоге драйвер не загружается.

6.3 Проблема с сетевой картой wlan0

6.3.1 R818_RTL8723ds ifconfig wlan0 up: No such device

1.Феномен:

Язык кода:javascript
копировать
ifconfig: SIOCGIFFLAGS: No such device

2.причина:

Язык кода:javascript
копировать
- lsmod проверяет, нормально ли загружен драйвер.
- Проверка журнала с помощью dmesg не выявила исключений.
- Проверьте sdio_clk, regon_on, 32к, все нормально.
- Оба блока питания в норме.
- Сравнивая аппаратное обеспечение других платформ, мы обнаружили, что,Способ питания другой.,Две цепи электричества используют отдельные источники питания.,В то же время необходимо включить Consulting RTL.

3.решение Изменения в оборудовании: VCC_WIFI/VCC_IO_WIFI питаются от одного и того же источника питания.

6.3.2 R328_RTL8723ds не может запустить wlan0 автоматически

1.Феномен:

Язык кода:javascript
копировать
Сценарий запуска /etc/init.d/wpa_supplicant автоматически запустит wlan0.
Но каждый раз, когда я его запускаю, он не запускается, и тогда я вручную ifconfig wlan0 вверх это нормально.

2.причина:

Язык кода:javascript
копировать
Вывод AP-WAKE_BT подключен к подтягивающему резистору.,Ввод тестовой модели.

3.решение Аппаратно удалите подтягивающий резистор.

6.3.3 Краткое описание проблем с сетевой картой, начиная с wlan0

Все проблемы, возникающие при сбое запуска wlan0, связаны с аппаратным обеспечением. Если его невозможно загрузить самостоятельно, обычно используйте ifconfig wlan0 up, чтобы сначала загрузить его вручную, и проверьте запросы на печать. Показывать. В то же время пусть аппаратное обеспечение поможет проверить источник питания и некоторые подтягивающие и понижающие резисторы ввода-вывода.

6.4 проблемы с обслуживанием соискателей

6.4.1 Невозможно найти файл wpa_suplicant.conf

1.Феномен: Не удалось запустить соискатель

Язык кода:javascript
копировать
- PS обнаружил, что процесса соискателя нет.
- Поэтому вручную выполните wpa_supplicant. -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B
  намекать:
  Failed to open config file '/etc/wpa_supplicant.conf', error: No such file or directory
  Failed to read or parse configuration '/etc/wpa_supplicant.conf'.

2.причина: Ошибка пути.

3.решение

Язык кода:javascript
копировать
Обычный путь tina обычно находится в /etc/wifi/wpa_supplicant.conf.
Установите правильный путь в пакете wifimanage и сохраните согласованность сценария запуска.

6.5 Проблемы с использованием wifimanager

6.5.1 Появляется при подключении к Интернету: сеть не существует!

1.Феномен:

Язык кода:javascript
копировать
wifi_connect_ap_test ssid passwd
network not exist!

2.причина:

Язык кода:javascript
копировать
- lsmod проверяет, нормально ли загружен драйвер.
- Ifconfig проверяет, что wlan0 работает нормально.
- ps, чтобы убедиться, что служба соискателя запустилась нормально.
- Сканируйте сеть с помощью wifi_scan_results_test.
root@TinaLinux:/# wifi_scan_results_test
*********************************
***Start scan!***
*********************************
bssid / frequency / signal level / flags / ssid
******************************
Wifi get_scan_results: Success!
******************************
Сканирования сети не обнаружено.

3.решение Обычно сигналов слишком много, а встроенной антенны нет. Попробуйте добавить внешнюю антенну.

6.6 Проблемы со службой сетевых приложений верхнего уровня

6.6.1 MR133_XR829 стресс-тест ping: тайм-аут опроса

1.Феномен:

Язык кода:javascript
копировать
Стресс-тест Ping, тайм-аут опроса появляется через некоторое время.

2.причина:

Язык кода:javascript
копировать
Производительность сети при проверке связи неудовлетворительна. Интранет подключенной компании может иметь некоторые неизвестные ограничения.

3.решение

Язык кода:javascript
копировать
Попробуйте подключиться к другому роутеру для проверки.

wpa_supplicant.conf -B Автор: Не удалось открыть файл конфигурации «/etc/wpa_supplicant.conf», ошибка: такого файла или каталога нет. Не удалось прочитать или проанализировать конфигурацию «/etc/wpa_supplicant.conf».

Язык кода:javascript
копировать
2.причина:
Ошибка пути.

3.решение

Обычный путь tina обычно находится в /etc/wifi/wpa_supplicant.conf. Установите правильный путь в пакете wifimanage и сохраните согласованность сценария запуска.

Язык кода:javascript
копировать
### 6.5 Проблемы с использованием wifimanager

#### 6.5.1 Появляется при подключении к Интернету: сеть не существует!

1.Феномен:

wifi_connect_ap_test ssid passwd network not exist!

Язык кода:javascript
копировать
2.причина:
  • lsmod проверяет, нормально ли загружен драйвер.
  • Ifconfig проверяет, что wlan0 работает нормально.
  • ps, чтобы убедиться, что служба соискателя запустилась нормально.
  • Сканируйте сеть с помощью wifi_scan_results_test. root@TinaLinux:/# wifi_scan_results_test

Start scan!


bssid / frequency / signal level / flags / ssid


Wifi get_scan_results: Success!


Сканирования сети не обнаружено.

Язык кода:javascript
копировать
3.решение
Обычно сигналов слишком много, а встроенной антенны нет. Попробуйте добавить внешнюю антенну.

### 6.6 Проблемы со службой сетевых приложений верхнего уровня

#### 6.6.1 MR133_XR829 стресс-тест ping: тайм-аут опроса

1.Феномен:

Стресс-тест Ping, тайм-аут опроса появляется через некоторое время.

Язык кода:javascript
копировать
2.причина:

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

Язык кода:javascript
копировать
3.решение

Попробуйте подключиться к другому роутеру для проверки.

Язык кода:javascript
копировать
boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose