Не работает WiFi на чипе bcm43142

Почему-то поддержка этой карты реализована ТОЛЬКО в пропиетарном драйвере broadcom-sta, который доступен для загрузки как с официального сайта производителя сетевой карты. Забегая наперёд, скажу, что нужный модуль (wl.ko) всё-таки есть в пакетах в репозитории Ubuntu, но установка не совсем очевидна.

Тестовый стенд: Ubuntu 14

Нам нужен пакет wireless-bcm43142-dkms. Хорошо, что его уже добавили в репозиторий.

# apt-get install -y wireless-bcm43142-dkms

Но при установка мы получим ошибки. Детальное разбирательство показало, что ошибка кроется в копиляции модуля. Если запустить вручную компиляцию, то получим такие ошибки:

/home/carmona/hybrid_wl/src/wl/sys/wl_linux.c: In function ‘wl_tkip_printstats’:
/home/carmona/hybrid_wl/src/wl/sys/wl_linux.c:3246:7: warning: passing argument 1 of ‘wl->tkipmodops->print_stats’ from incompatible pointer type [enabled by default]
wl->tkip_bcast_data[idx]);
^
/home/carmona/hybrid_wl/src/wl/sys/wl_linux.c:3246:7: note: expected ‘struct seq_file *’ but argument is of type ‘char *’
/home/carmona/hybrid_wl/src/wl/sys/wl_linux.c:3249:4: warning: passing argument 1 of ‘wl->tkipmodops->print_stats’ from incompatible pointer type [enabled by default]
wl->tkipmodops->print_stats(debug_buf, wl->tkip_ucast_data);
^
/home/carmona/hybrid_wl/src/wl/sys/wl_linux.c:3249:4: note: expected ‘struct seq_file *’ but argument is of type ‘char *’
/home/carmona/hybrid_wl/src/wl/sys/wl_linux.c: In function ‘wl_reg_proc_entry’:
/home/carmona/hybrid_wl/src/wl/sys/wl_linux.c:3470:2: error: implicit declaration of function ‘create_proc_entry’ [-Werror=implicit-function-declaration]
if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) {
^
/home/carmona/hybrid_wl/src/wl/sys/wl_linux.c:3470:22: warning: assignment makes pointer from integer without a cast [enabled by default]
if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) {
^
/home/carmona/hybrid_wl/src/wl/sys/wl_linux.c:3475:16: error: dereferencing pointer to incomplete type
wl->proc_entry->read_proc = wl_proc_read;

Решение оказалось простым: доустановить пакет bcmwl-kernel-source:

# apt-get install bcmwl-kernel-source

Почему нельзя включить этот пакет в зависимости – неясно. После этого установка пакета wireless-bcm43142-dkms проходит нормально и нужный модуль сразу инсталлится и подгружается.

Примечание.

Если вы получили ошибку

fatal error: asm/system.h: No such file or directory

то ваша версия пакета wireless-bcm43142-dkms слишком старая, и её нужно пропатчить в ручном режиме. О том, как это сделать, написано здесь

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *