Вопрос или проблема
Я пытаюсь установить WiFi-адаптер brostrend ac3 1200 mbps на свой настольный компьютер и сталкиваюсь с проблемами во время установки. Я пытаюсь установить драйверы, но они еще не доступны в Ubuntu. При попытке скомпилировать модуль ядра я получаю следующую ошибку:
root@chris-pc:~# cd rtl8812AU_8821AU_linux
root@chris-pc:~/rtl8812AU_8821AU_linux# make
make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/3.13.0-119-generic/build M=/root/rtl8812AU_8821AU_linux modules
make[1]: Entering directory `/usr/src/linux-headers-3.13.0-119-generic'
CC [M] /root/rtl8812AU_8821AU_linux/os_dep/linux/os_intfs.o
/root/rtl8812AU_8821AU_linux/os_dep/linux/os_intfs.c:809:2: error: initialization from incompatible pointer type [-Werror]
.ndo_select_queue = rtw_select_queue,
^
/root/rtl8812AU_8821AU_linux/os_dep/linux/os_intfs.c:809:2: error: (near initialization for ‘rtw_netdev_ops.ndo_select_queue’) [-Werror]
cc1: all warnings being treated as errors
make[2]: *** [/root/rtl8812AU_8821AU_linux/os_dep/linux/os_intfs.o] Error 1
make[1]: *** [_module_/root/rtl8812AU_8821AU_linux] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-119-generic'
make: *** [modules] Error 2
root@chris-pc:~/rtl8812AU_8821AU_linux#
Есть предложения?
Я предлагаю попробовать этот пакет; с работающим интернет-соединением через Ethernet, с помощью модема или любым другим доступным способом:
sudo apt-get update
sudo apt-get install git
git clone https://github.com/bits3rpent/rtl8812AU_8821AU_linux.git
cd rtl8812AU_8821AU_linux
make
sudo make install
sudo modprobe rtl8812au
Ответ или решение
Теория
Установка драйверов для оборудования Linux, особенно для нестандартных Wi-Fi адаптеров, таких как Brostrend AC3, может сталкиваться с определенными трудностями. Совместимость драйверов с различными версиями ядра Linux – одна из частых причин ошибок. В данном случае, вы сталкиваетесь с проблемой во время компиляции модуля ядра для Wi-Fi адаптера на Ubuntu. Ошибка в компиляции указывает на несоответствие между определенными структурами данных в драйвере и интерфейсом, ожидаемым вашим текущим ядром Linux.
Драйверы Wi-Fi на основе чипсета Realtek, такие как RTL8812AU/8821AU, часто предоставляются сообществом через репозитории на GitHub, и их интеграция может потребовать компиляции из исходного кода. Процесс компиляции требует наличия соответствующих заголовочных файлов ядра и инструментов сборки, таких как gcc и make.
Пример
В предоставленном вами примере ошибки компиляции заметно, что указано "ошибка инициализации от несовместимого типа указателя" в файле os_intfs.c
. Это указывает на то, что структура кода драйвера не совместима с API функций вашего ядра.
Неправильная инициализация функции ndo_select_queue
предполагает, что между версией ядра и исходным кодом драйвера есть разночтения. Это может происходить, когда структура или функция ядра изменена в более новых версиях, а исходный код драйвера не был обновлен с учетом этих изменений.
Применение
Шаг 1: Проверка версии ядра
Первым делом убедитесь, что у вас установлена последняя версия ядра, которая совместима с драйвером, который вы используете. Вы можете проверить текущую версию ядра с помощью команды:
uname -r
Шаг 2: Установка необходимых пакетов
Убедитесь, что все необходимые пакеты для компиляции исходного кода установлены:
sudo apt-get update
sudo apt-get install build-essential linux-headers-$(uname -r) git
Шаг 3: Клонирование рабочего репозитория
Попробуйте использовать альтернативный репозиторий GitHub для драйвера, который может поддерживать ваше ядро. Например, здесь представлен репозиторий:
git clone https://github.com/bits3rpent/rtl8812AU_8821AU_linux.git
cd rtl8812AU_8821AU_linux
Шаг 4: Компиляция драйвера
Затем вам нужно будет перекомпилировать драйвер:
make
Если ошибки продолжат возникать, попробуйте посмотреть в issues на GitHub проекте или поискать патчи в интернете, которые могут решить проблему совместимости.
Шаг 5: Установка и активация модуля
После успешной компиляции драйвера установите его:
sudo make install
sudo modprobe rtl8812au
Шаг 6: Диагностика и тестирование
Проверьте, виден ли адаптер командой iwconfig
или ifconfig
. Если адаптер виден, попытайтесь подключиться к сети и проверьте, работает ли подключение к Интернету стабильно.
Дополнительные рекомендации
Если приведенные выше шаги не решают проблему, возможно, стоит попробовать обновить операционную систему. Также можно связаться с поддержкой производителя адаптера для получения актуальных драйверов или рекомендаций.
Понимание взаимодействия между версиями ядра и исходным кодом является ключевым для решения подобных сложностей. Такие задачи требуют тщательной диагностики и иногда экспериментов с различными версиями драйвера и ядра. Сохраняйте терпение, и если потребуется, обратитесь за поддержкой к интернет-сообществам или форумах для Linux пользователей, таких как Ubuntu Forums или Stack Overflow.
Следуя данной методике, вы должны быть в состоянии устранить возникшие проблемы и успешно установить ваш Wi-Fi адаптер Brostrend AC3 на операционной системе Ubuntu.