Nexus 5 Беспроводной драйвер для BCM4339
Я хочу работать с точкой доступа (AP) и режимом энергосбережения (PSM) с Nexus 5, который имеет беспроводной чипсет BCM4339.
В настоящее время для чипсетов Broadcom доступно 4 драйвера (1 экспериментальный):
- Broadcom-IW (проприетарный). Прошивка, поэтому без изменений невозможно.
- brcm80211 (Broadcom с открытым исходным кодом на основе Mac80211). Нет поддержки режима AP.
- B43 (реверс-инжиниринг). Лучший выбор, потому что он поддерживает AP, режим энергосбережения (PSM), режим Master (или режим мониторинга).
- bcmon (экспериментальный драйвер на основе brcm80211). Поддерживает AP и режим монитора, может быть изменен для поддержки режима энергосбережения.
Поскольку документация относительно этого конкретного набора микросхем довольно размыта, у меня следующие вопросы:
- Какой беспроводной драйвер по умолчанию используется в Nexus 5?
- B43 поддерживается BCM4339? Согласно этой странице Broadcom - BCM43xx, так и должно быть, но ее нет в списке на этой странице. B43 - Известные устройства PCI.
- Если b43 действительно поддерживается, какова процедура переключения на драйвер b43?
РЕДАКТИРОВАТЬ: я обнаружил, что мой чипсет имеет интерфейс SDIO, поэтому используется драйвер FullMAC (brcmfmac). Если я правильно понимаю, это означает, что я не могу вносить в него какие-либо изменения, поскольку уровень MAC закодирован в аппаратном обеспечении... Кто-нибудь это подтвердит? Есть альтернативы?
3 ответа
Несмотря на то, что BCM4339 является чипом FullMAC или HardMAC, который обрабатывает всю обработку уровня PHY и MAC в процессоре ARM Cortex-R4, который включен в систему BCM4339 на микросхеме, можно изменить микропрограмму, работающую на этом микроконтроллере.
Для этого мы разработали структуру исправлений на основе C, которая позволяет записывать исправления в исходную прошивку на C. Мы использовали ее для включения режима мониторинга на BCM4339. Если вы заинтересованы в этом проекте, ознакомьтесь с нашим проектом nexmon по адресу https://seemoo.tu-darmstadt.de/nexmon
Насколько я знаю, чипсеты TI также позволяют изменять исходный код (для экспериментов). Atheros также делает работу, как вы упомянули.
Чтобы ответить на мои собственные вопросы:
BCM4339 (микросхема внутри Nexus 5) имеет интерфейс SDIO, что означает, что в нем реализован драйвер, установленный в аппаратном обеспечении (эти устройства обычно называются устройствами HardMAC).
Драйвером, поддерживающим BCM4339, является brcmfmac (версия драйвера SoftMAC - brcmfsmac). Этот драйвер НЕ модифицируется, потому что это проприетарная прошивка.
Если вы хотите изменить исходный код (для экспериментов), вы НЕ МОЖЕТЕ делать это с этим чипом. Вам потребуется еще один беспроводной чипсет (предпочтительно чипсет Atheros, поддерживаемый драйвером с открытым исходным кодом ath9k).
Моим вариантом было добавить сетевой адаптер USB к моему устройству Android и использовать присутствующий на нем чипсет Atheros. Я запрограммировал модификации через драйвер ath9k.