blob: cf023e15d196471594162cdf40354649039fb05e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#!/usr/bin/env bash
set -euo pipefail
# Builds and loads the Broadcom BCM4360 wl driver on a Ubuntu live ISO.
# Must be run with access to the debs downloaded by mac-drivers.sh.
# gcc/make/binutils are extracted from the downloaded debs — not assumed pre-installed.
#
# Usage: bash install-wl.sh
DEBS_DIR="$(dirname "$0")"
KERNEL_VERSION="$(uname -r)"
if [[ ! -d "$DEBS_DIR" ]]; then
echo "ERROR: $DEBS_DIR is not a directory" >&2
exit 1
fi
echo "Extracting packages to / (overlayfs — changes are in RAM, lost on reboot)..."
for deb in "$DEBS_DIR"/*.deb; do
echo " $(basename "$deb")"
sudo dpkg -x "$deb" /
done
SRC_DIR=$(find /usr/src -maxdepth 1 -name "broadcom-sta-*" -type d 2>/dev/null | head -1)
if [[ -z "$SRC_DIR" ]]; then
echo "ERROR: broadcom-sta source not found in /usr/src/ after extraction" >&2
exit 1
fi
if [[ ! -d "/lib/modules/$KERNEL_VERSION/build" ]]; then
echo "ERROR: /lib/modules/$KERNEL_VERSION/build not found" >&2
echo " Expected linux-headers-$KERNEL_VERSION to be extracted" >&2
exit 1
fi
echo "Building wl.ko for kernel $KERNEL_VERSION from $SRC_DIR..."
sudo KBUILD_NOPEDANTIC=1 make \
-C "/lib/modules/$KERNEL_VERSION/build" \
M="$SRC_DIR" \
-j1
echo "Unloading conflicting modules..."
sudo rmmod wl 2>/dev/null || true
for mod in b43 ssb bcma brcmfmac brcmutil; do
sudo rmmod "$mod" 2>/dev/null || true
done
echo "Loading wl.ko..."
sudo insmod "$SRC_DIR/wl.ko"
sudo rfkill unblock all
echo "Done."
|