This project provides a fully offline installation bundle for enabling WiFi on systems using the Broadcom BCM4360 802.11ac wireless adapter, particularly on:
- MacBook Pro (2013β2015 era)
- Linux Mint systems running newer Ubuntu-based kernels (e.g., 6.x series)
- Environments without immediate internet access
It solves a very specific but common problem:
No WiFi after installing Linux β cannot install WiFi drivers because there is no internet
When installing Linux Mint (or similar distributions) on hardware with Broadcom wireless chips:
-
The required driver (
bcmwl-kernel-source) is proprietary -
It is not included by default
-
Installation requires:
- DKMS
- Kernel headers
- Compiler toolchain (
gcc,make) - Multiple system libraries
Without internet access, this creates a dependency deadlock:
- You need WiFi to install the driver
- You need the driver to get WiFi
This repository contains a pre-downloaded set of .deb packages that includes:
-
Broadcom driver:
bcmwl-kernel-source
-
Build system:
dkmsbuild-essential(and dependencies)
-
Kernel compatibility:
linux-headers-<matching version>
-
Required libraries:
libc6-dev,linux-libc-dev, etc.
All dependencies are resolved ahead of time using an Ubuntu 24.04 environment.
wireless-driver/
βββ bcmwl-kernel-source_*.deb
βββ dkms_*.deb
βββ gcc_*.deb
βββ make_*.deb
βββ linux-headers-6.14.0-37-*.deb
βββ libc6-dev_*.deb
βββ linux-libc-dev_*.deb
βββ (additional dependency packages)
Move the wireless-driver folder onto the target system (via USB).
Open a terminal and run:
cd ~/wireless-driver
sudo dpkg -i *.debsudo apt --fix-broken installsudo modprobe wlsudo reboot- WiFi interface appears
- Network manager detects available networks
- System connects normally
Installing a single driver actually required:
- Compiler toolchains
- Kernel-specific headers
- Matching system libraries
The driver wasnβt the hard part β the ecosystem around it was.
- Newer kernels (6.x) introduce instability with proprietary drivers
- Matching headers exactly to
uname -ris non-negotiable - Even with correct installation, driver behavior can vary by kernel version
This process required:
- Understanding
.debpackage relationships - Using tools like
apt-rdepends - Reconstructing an install environment manually
This is fundamentally different from typical package installs.
Attempting to resolve Ubuntu dependencies from a Debian-based system caused failures.
The solution:
- Use a matching Ubuntu environment (WSL 24.04) to build the package set
In hindsight, the simplest solution would have been:
- USB tethering a phone β install driver in one command
But solving it offline provided deeper system-level understanding.
- Air-gapped systems
- Fresh Linux installs without network access
- MacBook Linux setups with Broadcom chips
- Learning Linux package/dependency internals
-
This bundle is kernel-specific (
6.14.0-37-generic) -
May require regeneration for other kernel versions
-
Broadcom drivers can break after kernel updates:
sudo dkms autoinstall
This bundle is kernel-specific (6.14.0-37-generic), which means it will not work universally across all systems.
However, you can recreate a compatible offline bundle for your own system using Windows Subsystem for Linux (WSL).
Windows Subsystem for Linux allows you to run a full Linux environment inside Windows.
This is useful because:
- You can match the exact Ubuntu version your target machine uses
- You can download packages with all dependencies automatically
- You avoid manual dependency hunting
Open PowerShell and run:
wsl --install -d Ubuntu-24.04Launch it after installation completes.
mkdir ~/wireless-driver
cd ~/wireless-driversudo apt updateReplace the kernel version with your own:
apt download bcmwl-kernel-source dkms build-essential linux-headers-$(uname -r)Install helper tool:
sudo apt install apt-rdepends -yThen run:
apt-rdepends bcmwl-kernel-source dkms build-essential linux-headers-$(uname -r) \
| grep -v "^ " \
| sort -u \
| grep -vE "libc-dev|kldutils" \
| xargs -n 1 apt downloadThis will download:
- Compiler toolchain (
gcc,make) - Kernel headers
- All required libraries
- Every dependency needed for offline installation
Your files will be located at:
\\wsl$\Ubuntu-24.04\home\<your-username>\wireless-driver
Copy this folder to a USB drive.
On the offline system:
cd ~/wireless-driver
sudo dpkg -i *.deb
sudo apt --fix-broken installThen load the driver:
sudo modprobe wlReboot:
sudo reboot-
The kernel version determines everything
-
WSL lets you mirror the exact environment needed
-
This approach scales to:
- Different kernel versions
- Different Ubuntu/Mint releases
- Other offline driver or package installs
Use this method when:
- You donβt have internet access on the target machine
- USB tethering isnβt available
- You want a repeatable, portable install bundle
-
Always verify kernel version with:
uname -r
-
Ensure WSL Ubuntu version matches your target system (e.g., 22.04 vs 24.04)
-
Regenerate the bundle if your kernel changes
This turns a one-time fix into a reusable offline installation workflow for Linux systems.
This project turned a frustrating limitation into a deeper understanding of:
- Linux package systems
- Kernel-module relationships
- Real-world debugging workflows
Itβs a reminder that sometimes the βhard wayβ teaches you what the βeasy wayβ hides.