BCM4339 的 Nexus 5 无线驱动程序
Nexus 5 Wireless driver for BCM4339
我想使用 Nexus 5 处理接入点 (AP) 和省电模式 (PSM) 行为,它有一个 BCM4339无线芯片组。
目前,有 4 个驱动程序(1 个实验性)可用于 Broadcom 芯片组:
- broadcom-iw(专有)。 固件,因此无法更改。
- brcm80211(基于 broadcom 开源 mac80211)。 不支持 AP 模式。
- b43(逆向工程)。 最佳选择,因为它支持 AP、省电模式 (PSM)、主模式(或监控模式)。
- bcmon(基于 brcm80211 的实验性驱动程序)。 支持AP和监控模式,可修改为支持省电模式。
由于关于这个特定芯片组的文档有点模糊,我的问题是:
- Nexus 5 上使用的 "default" 无线驱动程序是什么?
- b43 是否受 BCM4339 支持?根据此页面,Broadcom - BCM43xx, it should, but it is not listed on this page B43 - Known PCI devices。
- 如果确实支持b43,切换到b43驱动程序的步骤是什么?
编辑: 我发现我的芯片组有一个 SDIO 接口,所以使用的驱动程序是 FullMAC 驱动程序 (brcmfmac)。如果我理解正确,这意味着我无法对其进行任何修改,因为 MAC 层是在硬件中编码的......任何人都可以证实这一点?还有其他选择吗?
回答我自己的问题:
BCM4339(Nexus 5 内部的芯片)有一个 SDIO 接口,这意味着它有一个在 HARDWARE 中实现的驱动程序(这些设备通常命名为 HardMAC 设备)。
支持BCM4339的驱动是brcmfmac(驱动的SoftMAC版本是brcmfsmac).此驱动程序不可修改,因为它是专有固件。
如果你想修改源代码(为了实验),你不能用这个芯片来做。您将需要另一个无线芯片组(最好是 Atheros 芯片组,由开源驱动程序 ath9k 支持。
我的选择是将 USB 网络适配器添加到我的 Android 设备并使用其上的 Atheros 芯片组。我通过驱动程序 ath9k.
编程修改
据我所知,TI芯片组还允许您修改源代码(用于实验)。 Atheros 也做你提到的工作。
尽管 BCM4339 是全MAC 或硬MAC 芯片,它处理所有 PHY 和 MAC 层处理中包含的 ARM Cortex-R4 处理器BCM4339 片上系统,可以更改该微控制器上的固件 运行。
为此,我们开发了一个 C-based 补丁框架,允许用 C 语言为原始固件编写补丁。我们用它来启用 BCM4339 的监控模式。如果您对该项目感兴趣,请在 https://seemoo.tu-darmstadt.de/nexmon
查看我们的 nexmon 项目
我想使用 Nexus 5 处理接入点 (AP) 和省电模式 (PSM) 行为,它有一个 BCM4339无线芯片组。
目前,有 4 个驱动程序(1 个实验性)可用于 Broadcom 芯片组:
- broadcom-iw(专有)。 固件,因此无法更改。
- brcm80211(基于 broadcom 开源 mac80211)。 不支持 AP 模式。
- b43(逆向工程)。 最佳选择,因为它支持 AP、省电模式 (PSM)、主模式(或监控模式)。
- bcmon(基于 brcm80211 的实验性驱动程序)。 支持AP和监控模式,可修改为支持省电模式。
由于关于这个特定芯片组的文档有点模糊,我的问题是:
- Nexus 5 上使用的 "default" 无线驱动程序是什么?
- b43 是否受 BCM4339 支持?根据此页面,Broadcom - BCM43xx, it should, but it is not listed on this page B43 - Known PCI devices。
- 如果确实支持b43,切换到b43驱动程序的步骤是什么?
编辑: 我发现我的芯片组有一个 SDIO 接口,所以使用的驱动程序是 FullMAC 驱动程序 (brcmfmac)。如果我理解正确,这意味着我无法对其进行任何修改,因为 MAC 层是在硬件中编码的......任何人都可以证实这一点?还有其他选择吗?
回答我自己的问题:
BCM4339(Nexus 5 内部的芯片)有一个 SDIO 接口,这意味着它有一个在 HARDWARE 中实现的驱动程序(这些设备通常命名为 HardMAC 设备)。
支持BCM4339的驱动是brcmfmac(驱动的SoftMAC版本是brcmfsmac).此驱动程序不可修改,因为它是专有固件。
如果你想修改源代码(为了实验),你不能用这个芯片来做。您将需要另一个无线芯片组(最好是 Atheros 芯片组,由开源驱动程序 ath9k 支持。
我的选择是将 USB 网络适配器添加到我的 Android 设备并使用其上的 Atheros 芯片组。我通过驱动程序 ath9k.
编程修改据我所知,TI芯片组还允许您修改源代码(用于实验)。 Atheros 也做你提到的工作。
尽管 BCM4339 是全MAC 或硬MAC 芯片,它处理所有 PHY 和 MAC 层处理中包含的 ARM Cortex-R4 处理器BCM4339 片上系统,可以更改该微控制器上的固件 运行。
为此,我们开发了一个 C-based 补丁框架,允许用 C 语言为原始固件编写补丁。我们用它来启用 BCM4339 的监控模式。如果您对该项目感兴趣,请在 https://seemoo.tu-darmstadt.de/nexmon
查看我们的 nexmon 项目