Невозможно скомпилировать драйвер RealTek RTL8188CE на Ubuntu 13.10

Невозможно скомпилировать драйвер RealTek RTL8188CE на Ubuntu 13.10

Я пытаюсь скомпилировать драйверы Realtek на своем компьютере и получаю следующие ошибки:

make -C /lib/modules/3.11.0-12-generic/build M=/home/david/Downloads/rtl8188ce-linux-driver modules
make[1]: Entering directory `/usr/src/linux-headers-3.11.0-12-generic'
  CC [M]  /home/david/Downloads/rtl8188ce-linux-driver/base.o
/home/david/Downloads/rtl8188ce-linux-driver/base.c: In function ‘rtl_action_proc’:
/home/david/Downloads/rtl8188ce-linux-driver/base.c:885:32: error: ‘struct ieee80211_conf’ has no member named ‘channel’
       rx_status.freq = hw->conf.channel->center_freq;
                                ^
/home/david/Downloads/rtl8188ce-linux-driver/base.c:886:32: error: ‘struct ieee80211_conf’ has no member named ‘channel’
       rx_status.band = hw->conf.channel->band;
                                ^
/home/david/Downloads/rtl8188ce-linux-driver/base.c: In function ‘rtl_send_smps_action’:
/home/david/Downloads/rtl8188ce-linux-driver/base.c:1451:24: error: ‘struct ieee80211_conf’ has no member named ‘channel’
   info->band = hw->conf.channel->band;
                        ^
make[2]: *** [/home/david/Downloads/rtl8188ce-linux-driver/base.o] Error 1
make[1]: *** [_module_/home/david/Downloads/rtl8188ce-linux-driver] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.11.0-12-generic'
make: *** [all] Error 2

Как я могу это исправить?

решение1

Видимо, заголовки Linux достаточно изменились с 13.04, чтобы сломать этот драйвер. После многих дней работы я наконец исправил проблемы компиляции и заставил драйвер работать. Вы можете найти исправленный драйвер вместе с подробным описанием всех моих изменений по сравнению с оригинальной версией, выпущенной Realtek, в моем репозитории Github здесь: https://github.com/FreedomBen/rtl8188ce-linux-driver

Для тех, кому интересно, самыми большими изменениями стали удаление create_proc_entry()и других связанных функций, которые помещают отладочную информацию в /procкаталог. Я еще не преобразовал код для использования функций замены, поэтому на данный момент отладочная информация не будет сообщаться. Однако это никак не влияет на производительность драйвера.

Другим большим изменением стала реструктуризацияstruct ieee80211_hw,struct ieee80211_conf, и добавлениеstruct cfg80211_chan_defкоторый заменил то, что раньше было channelчленом ieee80211_conf.

Также есть новая вспомогательная функцияcfg80211_get_chandef_type()для получения типа канала вместо старого прямого метода.

решение2

rtl8188ce больше не поддерживается в ядре 3.9 и выше.

У меня была такая же карта WIFI для настольного компьютера.

Лучшая карта с поддержкой открытого исходного кода, которую я сейчас использую, — это Atheros.

  • Вариант №1 — использовать «Ubuntu 12.04 LTS», так как он поддерживает rtl8188ce через драйвер rtl8192ce.

  • Вариант №2: проведите исследование карт Wi-Fi, которые поддерживают ядра с открытым исходным кодом.

  • Вариант №3: после проведения исследования используйте карту, которая будет работать с последней версией ядра 3.12 и выше.

После моего опыта с Realtek я больше не буду их использовать, так как rtl8188ce — плохая карта для Windows и Linux.

Связанный контент