Debian on MacBook Air – fixing Wifi after system update

Fix: Broadcom Wi-Fi “Module wl Not Found” on Debian After Kernel Update

I’m running Debian on a MacBook Wi-Fi stopped working after a system update. Found out, that this happens because a new kernel was installed, but the Broadcom driver failed to “rebuild” itself for that new version.

When running sudo modprobe wl results in:
modprobe: FATAL: Module wl not found in directory /lib/modules/...

Yes, an LLM fixed it and it’s working again. Sue me, but getting my Linux running again and perhaps sharing the working solution here will help others.

The Solution: Sync Your Headers

The DKMS (Dynamic Kernel Module Support) system needs the specific “headers” for your new kernel to compile the driver. Without them, the driver won’t build.

  1. Install the missing headers:Bashsudo apt update sudo apt install linux-headers-$(uname -r)
  2. Trigger the rebuild:Once the headers are installed, tell DKMS to look for missing modules and build them:Bashsudo dkms autoinstall
  3. Load the driver:Now you can manually load the module without the error:Bashsudo modprobe wl

Pro Tip: To prevent this in the future, ensure you have the linux-headers-amd64 (or your specific architecture) meta-package installed. This ensures that every time your kernel updates, the matching headers are pulled in automatically.

The reason it matters is that linux-headers-$(uname -r) only installs headers for your current kernel. When the next update rolls around, you’ll be right back in the same spot. Installing the meta-package ensures the headers stay updated alongside the kernel.

Here is how you set that up so you never have to manual-fix this again:

The “Permanent” Fix

Run this command to install the meta-package:

sudo apt install linux-headers-amd64

Why this works:

  • The Meta-Package: linux-headers-amd64 isn’t a set of files itself; it’s a “pointer.”
  • Automatic Sync: Every time Debian updates your kernel (e.g., from version $6.1$ to $6.2$), this package automatically pulls the matching headers for that new version.
  • DKMS Trigger: Because the headers are present during the update, DKMS will automatically rebuild your Broadcom wl module in the background before you even reboot.

By adding this, your Wi-Fi should “just work” after every future update.

Yacy on the Banana Pi – reducing CPU-load

I’ve spent the last week on trying to get YaCy working on my Banana Pi. If you don’t know what YaCy is, please read up on it because projects like YaCy are going to be important in the future!

The problem I was having was that the Banana Pi just kept turning itself off and none of the logs made any sense to me. Then it hit me: it is probably just getting too hot.

I’m running Linux 3.4.104-bananian on armv7l on the original Banana Pi. It’s the smallest and quickest distribution I’ve found.

When researching about tuning YaCys performance most of the articles were dealing with increasing YaCys performance and using every last CPU cycle it can.

So I had to dig a little deeper and unfortunately, the performance settings page isn’t well documented. At least not for an amateur like myself.

YaCy Performance Settings of Queues and Processes

The most important settings that worked for me in order to reduce the CPU-load when running the YaCy crawlers are:

PPM – this one is set to 6000 when installing YaCy. I’ve tried setting that to half then to a quarter etc. etc. But really I had to go all the way down to 15 pages per minute. This setting is on the Crawler Monitor page. It will obviously take _a lot_ longer to index a site and I will see in a couple of weeks how well this holds up for the pages I’m indexing.

Adjusting the settings on the “Performance Settings” page (see screenshot above) helped to reduce CPU load. This was the part that was not quite clear and there are so many parameters that I was scared I was going to break something. Alas, the BPi is now running since 2 hours and the temperature hovers around 44º C. This is the command to see the temperature:

cat /sys/devices/platform/sunxi-i2c.0/i2c-0/0-0034/temp1_input

The main reason for me to run YaCy at all is, that I wanted it to only index a few webpages that I regularly need to research. This way I can get pretty clean results without having to deal with content farm and SEOed websites. And I can even access it when I’m out of the house. Although the speed obviously isn’t really that great.