树莓派安装nexmon固件补丁步骤

树莓派安装nexmon固件补丁步骤

nexmon是什么?

Nexmon是针对Broadcom / Cypress WiFi芯片的基于C的固件补丁程序框架,使用户能够编写自己的固件补丁程序,例如,启用带有radiotap头部和帧注入的监听模式。Nexmon的这些补丁可以提供树莓派默认驱动程序不支持的其他功能,其中主要是将内置的WiFi芯片置于监听模式。监听模式可以监听无线信道上的流量。更多信息可以去https://github.com/seemoo-lab/nexmon了解

准备工作

  1. 在开始安装Nexmon固件补丁之前,需要先升级一下树莓派系统以确保运行的是树莓派最新的版本,运行以下命令:

    sudo apt-get update

    sudo apt-get upgrade

    然后重启系统:

    sudo reboot

  2. Nexmon的安装依赖特定内核版本,需要查看树莓派的内核版本,运行以下命令:

    uname -r

    主要是确保版本是4.94.14还是4.19

  3. 现在安装编译Nexmon内核补丁所需要的包,在此之前先改为root用户:

    sudo su

    然后运行以下命令:

    apt install git libgmp3-dev gawk qpdf bison flex make raspberrypi-kernel-headers

  4. 现在就可以下载Nexmon了,可以直接下载,使用如下命令:

    git clone https://github.com/seemoo-lab/nexmon.git

    但是GitHub服务器在国外,这玩意有好几百兆,再加上树莓派的性能并不太强,导致下载速度极慢,所以可以先在自己电脑上下好,然后传到树莓派上。

安装固件

以下命令大多需要root权限,方便起见,以root用户运行。

  1. 检查一个需要的链接文件libisl.so.10是否存在:

    stat /usr/lib/arm-linux-gnueabihf/libisl.so.10

    如果不存在,则需按照步骤2创建该文件,否则按照步骤3继续操作。

    不存在返回结果:

    stat: cannot stat '/usr/lib/arm-linux-gnueabihf/libisl.so.10': No such file or directory

  2. 需要从Nexmon提供的源代码中编译一个新版本

    1. 进入Nexmon中的isl buildtools目录:

      cd /home/pi/nexmon/buildtools/isl-0.10

    2. 运行configure脚本为之后的编译准备isl链接文件

      ./configure

    3. 编译:

      make

    4. 安装:

      make install

    5. 创建软链接,相当于Windows下快捷方式

      ln -s /usr/local/lib/libisl.so /usr/lib/arm-linux-gnueabihf/libisl.so.10

  3. 配置环境变量

    cd /home/pi/nexmon

    source setup_env.sh

  4. 编译,生成为内核的各种版本打补丁所需的文件

    make

  5. 进入相应的补丁文件夹。树莓派3及以下的WiFi芯片都是bcm43430a1,树莓派3B+及以上WiFi芯片都是bcm43455c0

    cd home/pi/nexmon/patches/bcm43430a1/7_45_41_46/nexmon/ / home/pi/nexmon/patches/bcm43455c0/<7_45_154 or 7_45_189>/nexmon/

  6. 生成打补丁之后的固件

    make

    注:此处可能遇到一个编译错误:error while loading shared libraries: libmpfr.so.4: cannot open shared object file: No such file or directory

    原因是需要的链接文件不存在。

    解决方法:ln -s /usr/lib/arm-linux-gnueabihf/libmpfr.so.6 /usr/lib/arm-linux-gnueabihf/libmpfr.so.4

  7. 对当前固件备份

    make backup-firmware

  8. 安装固件。该命令会换出当前运行的固件

    make install-firmware

  9. 编译并安装Nexmon的工具

    cd /home/pi/nexmon/utilities/nexutil

    make

    make install

  10. 重启

替换驱动

  1. 获取默认驱动的位置

    modinfo brcmfmac

    此命令可以得到关于驱动的很多信息,驱动的位置显示在第一行,例如:

    kerneldirectory: /lib/modules/4.14.98-v7+/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/

  2. 为了使新安装的固件在启动时加载,需要替换brcmfac驱动,同样的需要先对原来的驱动进行备份已便以后恢复为默认驱动

    mv /brcmfmac.ko /brcmfmac.ko.orig

    其中****为步骤1中默认驱动的路径

  3. 接下来就要替换驱动了,需要保证Nexmon中提供的内核版本与默认内核版本一致,进入之前生成补丁的文件夹,里面有类似这样的几个文件夹:

    brcmfmac_4.9.y-nexmon

    brcmfmac_4.14.y-nexmon

    brcmfmac_4.19.y-nexmon

    进入相应内核版本的文件夹下,找到brcmfmac.ko文件,并复制到默认驱动的位置上。类似于如下命令:

    cp /home/pi/nexmon/patches/bcm43455c0/7_45_154/nexmon/brcmfmac_4.19.y-nexmon/brcmfmac.ko /

  4. 替换驱动后还需重新生成模块列表,以确保新的驱动被加载

    depmod -a

  5. 重启

验证

验证是否成功的一个方法就是看监控模式是否被支持,即接口列表中是否存在monitor选项。

  1. 获取wlan接口的物理ID,一般是phy0

    iw dev

  2. 查看Supported interfaces modes: 下是否有 monitor

    iw phy0 info

    注意替换phy0

    该命令会获取关于该接口的所有信息,只需查找Supported interfaces modes一项即可,如果有monitor就表明Nexmon固件补丁安装成功,树莓派可以进入监控模式。

你可能感兴趣的:(经验分享,raspberry,pi)