44-nexmon_monitor_patch.sh
106 lines
| 3.9 KiB
| application/x-sh
|
BashLexer
/ bootstrap.d / 44-nexmon_monitor_patch.sh
Unknown
|
r457 | #!/bin/sh | |
Unknown
|
r444 | # | |
Unknown
|
r449 | # Build and Setup nexmon with monitor mode patch | |
Unknown
|
r444 | # | |
# Load utility functions | |||
. ./functions.sh | |||
Unknown
|
r446 | if [ "$ENABLE_NEXMON" = true ] && [ "$ENABLE_WIRELESS" = true ]; then | |
Unknown
|
r445 | ||
# 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 | |||
Unknown
|
r446 | ||
# Set script Root | |||
Unknown
|
r458 | export NEXMON_ROOT="${R}"/tmp/nexmon | |
Unknown
|
r445 | ||
# Remove temporary directory for nexmon sources | |||
rm -fr "${temp_dir}" | |||
Unknown
|
r446 | # Build nexmon firmware outside the build system, if we can. | |
Unknown
|
r457 | cd "${NEXMON_ROOT}" || exit | |
Unknown
|
r446 | ||
# Disable statistics | |||
touch DISABLE_STATISTICS | |||
# Setup Enviroment: see https://github.com/NoobieDog/nexmon/blob/master/setup_env.sh | |||
Unknown
|
r450 | #ARCH="${KERNEL_ARCH}" | |
#SUBARCH="${KERNEL_ARCH}" | |||
Unknown
|
r458 | 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 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) | |||
Unknown
|
r457 | #. ./setup_env.sh | |
Unknown
|
r446 | ||
# Make nexmon | |||
make | |||
# Make ancient isl build | |||
Unknown
|
r457 | cd buildtools/isl-0.10 || exit | |
Unknown
|
r455 | CC="${CC}"gcc | |
Unknown
|
r446 | ./configure | |
make | |||
Unknown
|
r445 | ||
Unknown
|
r446 | # build patches | |
if [ "$RPI_MODEL" = 0 ] || [ "$RPI_MODEL" = 3 ] ; then | |||
Unknown
|
r457 | cd "${NEXMON_ROOT}"/patches/bcm43430a1/7_45_41_46/nexmon || exit | |
Unknown
|
r446 | make clean | |
# We do this so we don't have to install the ancient isl version into /usr/local/lib on systems. | |||
Unknown
|
r457 | 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- | |
Unknown
|
r446 | ||
# copy RPi0W & RPi3 firmware | |||
Unknown
|
r450 | mv "${WLAN_FIRMWARE_DIR}"/brcmfmac43430-sdio.bin "${WLAN_FIRMWARE_DIR}"/brcmfmac43430-sdio.org.bin | |
Unknown
|
r457 | 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 | |||
Unknown
|
r446 | fi | |
if [ "$RPI_MODEL" = 3P ] ; then | |||
Unknown
|
r457 | cd "${NEXMON_ROOT}"/patches/bcm43455c0/7_45_154/nexmon || exit | |
Unknown
|
r446 | make clean | |
# We do this so we don't have to install the ancient isl version into /usr/local/lib on systems. | |||
Unknown
|
r457 | 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- | |
Unknown
|
r446 | ||
# RPi3B+ firmware | |||
Unknown
|
r450 | mv "${WLAN_FIRMWARE_DIR}"/brcmfmac43455-sdio.bin "${WLAN_FIRMWARE_DIR}"/brcmfmac43455-sdio.org.bin | |
Unknown
|
r457 | 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 | |||
Unknown
|
r446 | fi | |
Unknown
|
r454 | ||
Unknown
|
r458 | # Install kernel module | |
"${LIB_DIR}"/modules/${KERNEL_VERSION}/ | |||
Unknown
|
r454 | #Revert to previous directory | |
Unknown
|
r457 | cd "${WORKDIR}" || exit | |
Unknown
|
r454 | ||
Unknown
|
r446 | fi | |
Unknown
|
r458 | ||
## To make the RPi load the modified driver after reboot | |||
# Find the path of the default driver at reboot | |||
# e.g. '/lib/modules/4.14.71-v7+/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko' | |||
PATH_OF_DEFAULT_DRIVER_AT_REBOOT=$(modinfo brcmfmac | grep -m 1 -oP "^filename:(\s*?)(.*)$" | sed -e 's/^filename:\(\s*\)\(.*\)$/\2/g') | |||
# Backup the original driver | |||
mv $PATH_OF_DEFAULT_DRIVER_AT_REBOOT "$PATH_OF_DEFAULT_DRIVER_AT_REBOOT.orig" | |||
# Copy the modified driver (Kernel 4.14) | |||
if is_pizero ; then | |||
cp ./patches/bcm43430a1/7_45_41_46/nexmon/brcmfmac_4.14.y-nexmon/brcmfmac.ko $PATH_OF_DEFAULT_DRIVER_AT_REBOOT | |||
else | |||
cp ./patches/bcm43455c0/7_45_154/nexmon/brcmfmac_4.14.y-nexmon/brcmfmac.ko $PATH_OF_DEFAULT_DRIVER_AT_REBOOT | |||
fi | |||
# Probe all modules and generate new dependency | |||
depmod -a |