Skip to content

Instantly share code, notes, and snippets.

@xiaket
Last active March 29, 2025 06:40
Show Gist options
  • Save xiaket/30d7a94e8b81c224fc09e78c8ca532fb to your computer and use it in GitHub Desktop.
Save xiaket/30d7a94e8b81c224fc09e78c8ca532fb to your computer and use it in GitHub Desktop.
Script to build broadcom-wl driver on Chimera Linux
#!/bin/bash
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=broadcom-wl
VERSION=${VERSION:-6.30.223.271}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
KERNEL=${KERNEL:-$( uname -r )}
IFNAME=${IFNAME:-wlan}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
fi
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
case "$ARCH" in
i?86)
SRCNAM=hybrid-v35-nodebug-pcoem
;;
x86_64)
SRCNAM=hybrid-v35_64-nodebug-pcoem
;;
*)
echo "$ARCH is not supported..."
exit 1
;;
esac
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
mkdir $PRGNAM-$VERSION
cd $PRGNAM-$VERSION
tar xvf $CWD/$SRCNAM-$( echo $VERSION | tr . _ ).tar.gz
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
-o -perm 511 \) -exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
patch -p2 < $CWD/patches/000-remove-time_date-macros.patch || exit 1
patch -p1 < $CWD/patches/001-null-pointer-fix.patch || exit 1
patch -p1 < $CWD/patches/002-rdtscl.patch || exit 1
patch -p1 < $CWD/patches/003-linux47.patch || exit 1
patch -p1 < $CWD/patches/004-linux48.patch || exit 1
patch -p1 < $CWD/patches/005-debian-fix-kernel-warnings.patch || exit 1
patch -p1 < $CWD/patches/006-linux411.patch || exit 1
patch -p1 < $CWD/patches/007-linux412.patch || exit 1
patch -p1 < $CWD/patches/008-linux415.patch || exit 1
patch -p1 < $CWD/patches/009-fix_mac_profile_discrepancy.patch || exit 1
patch -p1 < $CWD/patches/010-linux56.patch || exit 1
patch -p1 < $CWD/patches/011-linux59.patch || exit 1
patch -p1 < $CWD/patches/012-linux517.patch || exit 1
patch -p1 < $CWD/patches/013-linux518.patch || exit 1
patch -p1 < $CWD/patches/014-linux414.patch || exit 1
patch -p1 < $CWD/patches/015-linux600.patch || exit 1
patch -p1 < $CWD/patches/016-linux601.patch || exit 1
patch -p1 < $CWD/patches/017-linux612.patch || exit 1
patch -p1 < $CWD/patches/018-linux613.patch || exit 1
# See https://lkml.org/lkml/2019/3/1/643
sed -i bak 's/get_ds()/KERNEL_DS/g' src/wl/sys/wl_iw.c
sed -i bak 's/get_ds()/KERNEL_DS/g' src/wl/sys/wl_cfg80211_hybrid.c
env -u ARCH make -C /usr/src/linux-headers-$KERNEL M=$(pwd) clean
env -u ARCH make -C /usr/src/linux-headers-$KERNEL M=$(pwd)
mkdir -p /lib/modules/$KERNEL/extra
cp ${PKG}/wl.ko /lib/modules/$KERNEL/extra
modprobe -r b43 bcma brcm80211
modprobe wl
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment