Настройка wi-fi RTL8188ce на Ubuntu 12.04 (1й шаг настройки сервера)

Первая часть из цикла, как я настраивал сервер

Ты помнишь как все начиналось(с)

Это часть руководства для общественного пользования, много публицистики.

Для тех, кому надо решение, сразу по ссылке

По счастливому стечению обстоятельств, досталось мне в пользование интересное устройство Lenovo Q190. Неттоп с селероном на борту, 2мя гигами и wifi модулем, да еще и очень компактного размера, чуть больше чем мой домашний роутер.

Агрегат покупался сразу из расчета, что он станет моим домашним роутером, т.к. имеет wi-fi модуль, а самое главное его назначение — это работа в качестве vpn-сервера для резервного, а иногда и основного Интрнет канала для офиса.

Настройка началась с установки Ubuntu 12.04, т.к. это линукс, и к тому же у меня на ноутбуке тоже стоит такая же версия ОС, выбрал я ее по соображениям LTS, я консервативный IT’шник. Как установить ubuntu не буду рассказывать, проще может быть только утренний поход в туалет.. Хотя нет, ubuntu поставить проще =)

После установки ждал неприятный сюрприз, wi-fi модуль не желал определяться. И так и сяк — никак. Пришлось вскрыть коробку, чтобы определить что же за плата стоит в неттопе

Мне повезло в сервере стояла wi-fi модуль который был произведен Realtek, модуль этот имеет маркировку RTL8188ee. Гугление почти сразу дало результат, что да, в ubuntu оно не работает без дополнительных телодвижений, но в версии ядра linux выше 3.10 проблема устранена. А что нам стоит поставить новое ядро? Взял и поставил иии.. И ничего, не работает. Как так? Читаем дальше.

Ааа! Надо драйвер поставить вот отсюда, скачал для версии RTL8188ce, там сборка для нескольких версий wi-fi модулей в том числе и для ee. Попробовал сделать make, make install, но лезет ошибка. Не создается драйвер.

Внимательно почитав описание драйвера понял, что надо бы и впредь сначала читать, а только потом делать. Драйвер подходит только для ядра, версия которого ниже 3.10. Ну как смогли поставить ядро так и удалим его, дабы первую версию (3.8) не успел удалить.

Удалил лишние ядра, к тому моменту их наплодилось уже порядка 4х, я тестировал, мне можно. Запускаю сборку драйвера и снова ошибка

$ make install
make -C /lib/modules/3.11.6-031106-generic/build M=/home/ildar-server/test/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013 modules
make[1]: Вход в каталог `/usr/src/linux-headers-3.11.6-031106-generic'
CC [M]  /home/ildar-server/test/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.o
In file included from /home/ildar-server/test/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c:39:0:
/home/ildar-server/test/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/pci.h:247:15: ошибка: expected «=», «,», «;», «asm» or «__attribute__» before «rtl_pci_probe»
/home/ildar-server/test/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c: В функции «rtl_action_proc»:
/home/ildar-server/test/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c:885:32: ошибка: «struct ieee80211_conf» не содержит элемента с именем «channel»
/home/ildar-server/test/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c:886:32: ошибка: «struct ieee80211_conf» не содержит элемента с именем «channel»
/home/ildar-server/test/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c: В функции «rtl_send_smps_action»:
/home/ildar-server/test/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.c:1451:24: ошибка: «struct ieee80211_conf» не содержит элемента с именем «channel»
make[2]: *** [/home/ildar-server/test/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013/base.o] Ошибка 1
make[1]: *** [_module_/home/ildar-server/test/rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0012.0207.2013] Ошибка 2
make[1]: Выход из каталога `/usr/src/linux-headers-3.11.6-031106-generic'
make: *** [all] Ошибка 2

Не силен я в чтении логов, поэтому гуглить.

И вновь продолжается бой! Та-да-да-да

К сожалению и в нерусских языках я тоже слабоват, переводчик мне помог в чтении зарубежных форумов, где проблема имеет достаточно широкое освещение. Вот там я и понял, что кажись дело труба, даже уже намеревался поменять модуль на любой другой, который сам заведется, благо сам модуль установлен по аналогии с ноутбучным, в pci-e слот. Но потом попалась мне ветка на форуме, а именн 5й пост в этой ветке, где предложили решение.

В файл pci.h, который лежит в корне распакованного архива с драйверами, нужно добавить 4 строки

#ifndef __devinit
#define __devinit
#define __devinitdata
#endif

Затем надо докачать несколько пакетов и запустить установку

sudo apt-get install gcc build-essential
# нужно перейти в директорию где лежат файлы драйвера 
# и выполнить все как написано
cd /dir_driver
sudo make clean
sudo make
sudo make install

После этого я перезагрузился для верности, и wi-fi определился в NetworkManager’e. Моему счастью не было предела

В следующей части расскажу как я настраивал сеть и VPN-соединение

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *