2025-10-26 18:06:53 +01:00
#!/bin/sh
#
# Build and Setup nexmon with monitor mode patch
#
# Load utility functions
. ./functions.sh
if [ " $ENABLE_NEXMON " = true ] && [ " $ENABLE_WIRELESS " = true ] ; then
# Copy existing nexmon sources into chroot directory
if [ -n " $NEXMONSRC_DIR " ] && [ -d " $NEXMONSRC_DIR " ] ; then
# Copy local U-Boot sources
cp -r " ${ NEXMONSRC_DIR } " " ${ R } /tmp "
else
# Create temporary directory for nexmon sources
temp_dir = $( as_nobody mktemp -d)
# Fetch nexmon sources
as_nobody git -C " ${ temp_dir } " clone " ${ NEXMON_URL } "
# Copy downloaded nexmon sources
mv " ${ temp_dir } /nexmon " " ${ R } " /tmp/
# Set permissions of the nexmon sources
chown -R root:root " ${ R } " /tmp/nexmon
# Remove temporary directory for nexmon sources
rm -fr " ${ temp_dir } "
fi
# Set script Root
export NEXMON_ROOT = " ${ R } " /tmp/nexmon
# Build nexmon firmware outside the build system, if we can.
cd " ${ NEXMON_ROOT } " || exit
# Make ancient isl build
cd buildtools/isl-0.10 || exit
./configure
make
cd ../.. || exit
# Disable statistics
touch DISABLE_STATISTICS
# Setup Enviroment: see https://github.com/NoobieDog/nexmon/blob/master/setup_env.sh
export KERNEL = " ${ KERNEL_IMAGE } "
export ARCH = arm
export SUBARCH = arm
export CC = " ${ NEXMON_ROOT } " /buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-x86/bin/arm-none-eabi-
export CC = " ${ CC } " gcc
export CCPLUGIN = " ${ NEXMON_ROOT } " /buildtools/gcc-nexmon-plugin/nexmon.so
export ZLIBFLATE = "zlib-flate -compress"
export Q = @
export NEXMON_SETUP_ENV = 1
export HOSTUNAME = $( uname -s)
export PLATFORMUNAME = $( uname -m)
# Make nexmon
make
# build patches
if [ " $RPI_MODEL " = 0 ] || [ " $RPI_MODEL " = 3 ] ; then
cd " ${ NEXMON_ROOT } " /patches/bcm43430a1/7_45_41_46/nexmon || exit
sed -i -e 's/all:.*/all: $(RAM_FILE)/g' ${ NEXMON_ROOT } /patches/bcm43430a1/7_45_41_46/nexmon/Makefile
make clean
# We do this so we don't have to install the ancient isl version into /usr/local/lib on systems.
LD_LIBRARY_PATH = " ${ NEXMON_ROOT } " /buildtools/isl-0.10/.libs make ARCH = " ${ KERNEL_ARCH } " CC = " ${ NEXMON_ROOT } " /buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-x86/bin/arm-none-eabi-
# copy RPi0W & RPi3 firmware
2026-01-01 10:32:36 +01:00
cp " ${ WLAN_FIRMWARE_DIR } " /brcmfmac43430-sdio.bin " ${ WLAN_FIRMWARE_DIR } " /brcmfmac43430-sdio.org.bin
2025-10-26 18:06:53 +01:00
cp " ${ NEXMON_ROOT } " /patches/bcm43430a1/7_45_41_46/nexmon/brcmfmac43430-sdio.bin " ${ WLAN_FIRMWARE_DIR } " /brcmfmac43430-sdio.nexmon.bin
cp -f " ${ NEXMON_ROOT } " /patches/bcm43430a1/7_45_41_46/nexmon/brcmfmac43430-sdio.bin " ${ WLAN_FIRMWARE_DIR } " /brcmfmac43430-sdio.bin
fi
if [ " $RPI_MODEL " = 3P ] || [ " $RPI_MODEL " = 4 ] ; then
cd " ${ NEXMON_ROOT } " /patches/bcm43455c0/7_45_154/nexmon || exit
sed -i -e 's/all:.*/all: $(RAM_FILE)/g' ${ NEXMON_ROOT } /patches/bcm43455c0/7_45_154/nexmon/Makefile
make clean
# We do this so we don't have to install the ancient isl version into /usr/local/lib on systems.
LD_LIBRARY_PATH = ${ NEXMON_ROOT } /buildtools/isl-0.10/.libs make ARCH = " ${ KERNEL_ARCH } " CC = " ${ NEXMON_ROOT } " /buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-x86/bin/arm-none-eabi-
# RPi3B+ firmware
2026-01-01 10:32:36 +01:00
cp " ${ WLAN_FIRMWARE_DIR } " /brcmfmac43455-sdio.bin " ${ WLAN_FIRMWARE_DIR } " /brcmfmac43455-sdio.org.bin
2025-10-26 18:06:53 +01:00
cp " ${ NEXMON_ROOT } " /patches/bcm43455c0/7_45_154/nexmon/brcmfmac43455-sdio.bin " ${ WLAN_FIRMWARE_DIR } " /brcmfmac43455-sdio.nexmon.bin
cp -f " ${ NEXMON_ROOT } " /patches/bcm43455c0/7_45_154/nexmon/brcmfmac43455-sdio.bin " ${ WLAN_FIRMWARE_DIR } " /brcmfmac43455-sdio.bin
fi
#Revert to previous directory
cd " ${ WORKDIR } " || exit
# Remove nexmon sources
rm -fr " ${ NEXMON_ROOT } "
fi