LINUX.ORG.RU

Не могу установить драйвер для BCM43465

 brcm80211, ,


1

1

Доброго времени суток.

Не могу установить драйвер для модуля wifi Broadcom BCM43465 [14e4:43c3] (rev 03).
Для устройств Broadcom существует несколько реализаций OSS драйвера: brcmfmac, brcmsmac, b43, b43legacy и другие.
Согласно описанию, драйвер для устройства PCI Device ID = 14e4:43c3 является частью brcmfmac и входит в ядро, начиная с ядра «Supported in 4.4+».

Однако, при подгрузке модуля: modprobe brcmfmac и выводе dmesg я наблюдаю следующий выхлоп:

[90947.975125] usbcore: registered new interface driver brcmfmac
[90948.080848] brcmfmac: brcmf_fw_alloc_request: Unknown chip BCM43465/3
[90948.080870] brcmfmac: brcmf_pcie_probe: failed 14e4:43c3
[90948.081024] brcmfmac: probe of 0000:03:00.0 failed with error -12

Новый сетевой интерфейс не создается.
Команда iw list информации по установленному модулю не выдает.

Вывод lspci -vvnnd 14e4: представлен по следующей ссылке.

Дистрибутив: Debian GNU/Linux 11 (bullseye) установленные пакеты:

iw/stable,now 5.9-3 amd64
firmware-brcm80211/stable,now 20210315-3 all
firmware-misc-nonfree/stable,now 20210315-3 all
firmware-linux/stable,now 20210315-3 all
firmware-linux-free/stable,now 20200122-1 all
firmware-linux-nonfree/stable,now 20210315-3 all
★★★★★

Ответ на: комментарий от iliyap

Во втором поле (revmask) биты 0-3 нулевые.

Как понять, про первые 3 бита?
Если перевести 0xFFFFFFF0 из указанной строки в двоичный вид, то получится
1111 1111 1111 1111 1111 1111 1111 0000
А здесь целых 4 бита равны 0. Но при этом у человека по ссылке модуль BCM43465/4 прекрасно работает с драйвером brcmfmac.

ivanlex ★★★★★
() автор топика
Последнее исправление: ivanlex (всего исправлений: 1)
Ответ на: комментарий от ivanlex

Биты принято нумеровать с нуля. Биты 0-3 это четыре младших бита. Ревизии от rev0 до rev3 не поддерживаются, rev4 поддерживается.

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

Что более интересно, текст этих файлов в разных репозиториях различается. К примеру:
на github BRCMF_FW_NVRAM_ENTRY
на bootlin.com BRCMF_FW_ENTRY
но строка и там и там - 64.
Эти отличия на что-нибудь влияют?

ivanlex ★★★★★
() автор топика
Последнее исправление: ivanlex (всего исправлений: 1)
Ответ на: комментарий от ivanlex

Вот тут https://www.aliexpress.com/i/32951234273.html какой-то чех в отзыве пишет, что rev3 использует прошивку 4366B.

У меня встречный вопрос. Чип 4x4, для точки доступа, а не для клиентского адаптера. Полно клиентского оборудования 2x2 с отличной поддержкой в мейнлайне линукса. Зачем гнаться за 4x4? Это ж имеет смысл только если точка доступа тоже 4x4. Твой Keenetic II это 2x2.

iliyap ★★★★★
()
Последнее исправление: iliyap (всего исправлений: 1)
Ответ на: комментарий от ivanlex

У твоей ссылки на гитхаб последний коммит от 2017 года. В мейнлайне этот макрос уже переименовали. Если таки будешь упорствовать и пересобирать ядро, используй такой же макрос, как в соседних строчках твоей версии ядра.

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

Спасибо за консультации.
Подскажи пжл как получить исходники с указанного тобой портала, и как их потом скомпилировать в подходящий для работы модуль. Помоги советом. Спасибо.

ivanlex ★★★★★
() автор топика
Ответ на: комментарий от ivanlex

В минипк наверняка вставлен обычный клиентский 2x2 модуль (например, intel 3165) и сделана точка доступа hostapd. Тут нет смысла в 4x4 на клиенте. Хотя, может ты планируешь поменять адаптеры местами…

iliyap ★★★★★
()
Последнее исправление: iliyap (всего исправлений: 1)
Ответ на: комментарий от ivanlex

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

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

Не совсем так. Мой миниПК - это и есть роутер.
intel 3165 который шел в комплекте с миниПК - был демонтирован, так как на чипах intel с поддержкой ac невозможно создать сеть 5GHz - все каналы заблокированы производителем и модуль можно использовать только для подключения к существующим сетям.

Взамен вынутого модуля был установлен MT7612 - с ним всё нормально, за исключением одного «но». Он не поддерживает ширину каналов 160MHz, только 80MHz. Так что 4х4 здесь не причем (хотя приятный бонус).

При этом у меня два ноута, с ax200 и ax210, которые поддерживают 160MHz.

И именно поэтому, в миниПК, который я использую как роутер, я и поставил BCM43465, который, согласно документации - должен поддерживать 160MHz, но который не заработал. Отсюда одно огорчение.

ivanlex ★★★★★
() автор топика
Ответ на: комментарий от iliyap

Не хотелось бы всё ядро пересобирать. Я думал можно как то только brcmfmac пересобрать, что бы получился новый модуль с поддержкой этой карты.

Опыта по пересборке ядер нет совсем. Как то раньше готовыми пакетами обходился.

ivanlex ★★★★★
() автор топика
Ответ на: комментарий от anonymous

А зачем?
Первое правило: работает - не тронь.

ivanlex ★★★★★
() автор топика
Ответ на: комментарий от ivanlex

Я в дебиане не силён. Попробуй так:

  1. Определи версию пакета ядра: dpkg -l linux-image-$(uname -r). Должен вывести что-то типа ii linux-image-4.19.0-17-amd64 4.19.194-3. Здесь linux-image-4.19.0-17-amd64 это имя пакета, 4.19.194-3 это версия пакета.
  2. Скачай исходники wget http://deb.debian.org/debian/pool/main/l/linux/linux_4.19.194.orig.tar.xz. Здесь должна быть версия пакета ядра до последнего -.
  3. Распакуй исходники ядра: tar -xJf linux_4.19.194.orig.tar.xz
  4. Перейди в распакованный каталог: cd linux-4.19.194
  5. Скопируй дистрибутивный конфиг: cp /boot/config-$(uname -r) .config
  6. Отконфигурируй исходники ядра по конфигу: make olddefconfig
  7. Собери свой модуль: make drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
  8. Внеси изменения в исходники модуля и пересобери его. Если будут ошибки компиляции, они явно от твоих изменений.
  9. Скопируй модуль: sudo cp drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
iliyap ★★★★★
()
Ответ на: комментарий от gl85

У меня на роутере Debian. Завелось из коробки.
Что делать в wrt дистрибутивах - не знаю. Возможно нужно поставить некий пакет, содержащий модуль для работы адаптера.

ivanlex ★★★★★
() автор топика
Ответ на: комментарий от ivanlex

Добрый вечер. А можете показать свой etc/config/wireless ? не могу настроить mt7612 на работу в двойном режиме 2.4/5Ггц. Спасибо.

gl85
()
Ответ на: комментарий от gl85

У меня на роутере Debian.
Файл /etc/config/wireless не существует.
Я не в курсе, что бы MT7612 поддерживал одновременную работу сразу в двух диапазонах 2.4/5GHz.

Вроде MT7615 поддерживает одновременную работу в двух диапазонах, он и определяется в системе как два pci устройства, одно настраивается на работу у диапазоне 2.4GHz, второе на работу в диапазоне 5GHz.
Но MT7612 определяется как одно единственное устройство. Можно ли его заставить работать одновременно у двух диапазонах - мне не известно.

ivanlex ★★★★★
() автор топика
Последнее исправление: ivanlex (всего исправлений: 1)
8 января 2023 г.
Ответ на: комментарий от iliyap

Для сборки потребовалось установить дополнительные пакеты:
apt install flex bison libssl-dev bc libelf-dev
После сборки пакеты больше не нужны и их можно удалить.

Спасибо за консультацию.

Извини, что припозднился с ответом. Но в тот момент не было времени заниматься данным экспериментом. И не на чем. Нужен был рабочий роутер, и в тот момент времени модулем беспроводной связи выступал MT7612E.

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

Было бы замечательно теперь всё это обернуть в DKMS, что бы не собирать модуль при каждом обновлении ядра. Но вот только знаний моих пока для этого не достаточно. При наличии свободного времени займусь изучением данного вопроса.

Еще раз спасибо.

ivanlex ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.