The media in this post is not displayed to visitors. To view it, please log in.

There’s a line in a [Weird Al] (no relation) song that says, “I upgrade my system at least twice a day…” I know how that is. I primarily use a rolling distro, OpenSuse Tumbleweed, and if I’m having a problem that I’m too lazy to run down, it is extremely tempting to do an upgrade and see if it just happens to fix the problem.
Of course, the problem is often caused by a previous upgrade. Recently, I’ve been having a lot of trouble with the NVIDIA proprietary drivers, so I updated them yet again. After a huge amount of effort to sort out the video problems, I found that the latest kernel didn’t like my MediaTek Bluetooth adapter, which is built into the motherboard’s WiFi chipset.
This post isn’t about how to fix your Bluetooth problem. You probably don’t have the same setup I do, and even if you do, it will be sorted out in a week or two anyway. But how I temporarily fixed this issue is worth documenting. The details are going to apply to Tumbleweed and this particular adapter, but the general approach should work anywhere with any sort of kernel module problem.
My Own Fault
Part of my problem is my own fault, of course. I have a complex disk setup and do not use the recommended btrfs root file system. That means I can’t do the snapshot thing where I can just undo a bad upgrade. If I did, then sure, I should just roll back and wait for an upstream fix.
I do have “normal” backups, but they are not always totally up to date. Worse, I have found that for things like NVIDIA, the user stuff and the kernel module stuff have to match up. That makes it very hard to roll back a kernel with older modules. The modules themselves live with the kernel, but the user space stuff gets pushed out. Or, if you uninstall things, it uninstalls it for all kernels.
Truthfully, NVIDIA and others like that should keep all the user space stuff in a kernel-specific place, and then symlink it at boot to /usr/bin or wherever. But they don’t. In the end, I didn’t want to go through the trouble of rolling things back and decided to push ahead.
Modular
I did a quick search and found a four-day-old post that had the same error message I was getting and mentioned a patch to the kernel module source — literally just two lines needed changing in the btmtk module.
Of course, the trick is how to do that. If you’ve done kernel module development, you are probably all set up for it. If not, how to proceed will vary by distro. For Tumbleweed, something like:
sudo zypper in -t pattern devel_kernel
sudo zypper in kernel-source kernel-default-devel kernel-syms gcc make bc flex bison openssl-devel dwarves
For other distros, you need the current kernel’s source code and the same sort of build tools. For example, for Ubuntu and probably other Debian-based distros:
sudo apt update
sudo apt install build-essential linux-headers-$(uname -r) linux-source bc flex bison libssl-dev libelf-dev dwarves rsync
Then you’d still need to unpack the source tarball.
For Tumbleweed, you don’t need to unpack, but I did want to get it somewhere in my user directory:
mkdir -p ~/kernel-local
# Note: trailing slashes matter here!
rsync -a --delete /usr/src/linux/ ~/kernel-local/linux-btmtk/
cd ~/kernel-local/linux-btmtk
Either way, you need to get the running kernel’s configurations into the linux-btmtk directory:
cp /lib/modules/$(uname -r)/build/.config .
cp /lib/modules/$(uname -r)/build/Module.symvers . 2>/dev/null || true
The Patch
The next step is to find the btmtk.c file and patch it. In my case, I needed to find this code: case BTMTK_WMT_FUNC_CTRL: if (!skb_pull_data(data->evt_skb, sizeof(wmt_evt_funcc->status))) { err = -EINVAL; goto err_free_skb; }
and replace the error return/goto with:
status = BTMTK_WMT_ON_UNDONE;
break;
The Build
Now you just have to build and install the module:
make olddefconfig
make modules_prepare
make M=drivers/bluetooth modules
If you want to use multiple CPUs, put a -j=X line on make (e.g,. -j=8 to use eight cores). This will take a minute.
You’ll wind up with a drivers/bluetooth/btmtk.ko file. Your first instinct will be to simply copy it over the old one. Resist that urge. Instead, try this:
sudo mkdir -p /lib/modules/$(uname -r)/updates/drivers/bluetooth
sudo cp drivers/bluetooth/btmtk.ko /lib/modules/$(uname -r)/updates/drivers/bluetooth/
sudo depmod -a
Run It!
If you want to verify things, try:
modinfo -n btmtk
It should show your module and not the stock one. You could try to avoid rebooting by stopping the Bluetooth service, tearing down btusb and btmtk, and then reloading them along with the service. But, yeah, just reboot.
If your distro is different, you might have to modify these instructions a bit. Of course, you also need to know how to fix the bad module, too. Naturally, if you update the kernel, you might have to repeat it all unless your problem has been fixed. Then again, you could set up the module in DKMS to rebuild every time, but I wouldn’t unless you really thought this was going to be a long-term problem.
Once you have all this set up, you could also build your own kernel. That’s another set of headaches, but it can be worth it if you need special setups. Want to write your own modules? We’ve done that.
hackaday.com/2026/05/26/linux-…
𐌐𐌀Ꝋ𐌋Ꝋ
in reply to privacypratica.it • • •Ho dato un'occhiata ai browser consigliati alla fine dell'articolo ma per quanto riguarda Fennec...
privacypratica.it
in reply to 𐌐𐌀Ꝋ𐌋Ꝋ • • •informapirata ⁂
in reply to privacypratica.it • • •continuerò a consigliare Brave (ma anche a usarlo sul telefono) perché è l'unico browser che riesce a essere usabile per il grande pubblico e che protegge di default contro il tracciamento pubblicitario.
Brave devi vederlo come un funnel: la camera di compensazione attraverso cui possono transitare grandi numeri di utenti interessati alla privacy abituati a Chrome per andare verso Firefox, LibreWolf o TOR
Un po' come Telegram per uscire da WhatsApp
@linuxeasy @lealternative
bradipo
in reply to informapirata ⁂ • • •privacypratica.it
in reply to bradipo • • •Vivaldi — Spyware Watchdog
spyware.neocities.orgreshared this
informapirata ⁂, Gazzetta del Cadavere, Majden 🍉🎗🎨🥋👠☮️ e RFanciola reshared this.
informapirata ⁂
in reply to privacypratica.it • • •al di là di questo, brave è effettivamente facilissimo da usare, praticamente è Chrome, oltre al fatto che ha una base di utenti che è circa trenta volte quella di Vivaldi. Il paragone che ho fatto con telegram non me lo sono inventato adesso ma è proprio che i due software, Brave e Telegram, sono identici sotto tantissimi punti di vista. Sia per quelli positivi legati all'ergonomia sia per quelli negativi legati all'architettura e al progetto
@bradipo @linuxeasy @lealternative
Julian Del Vecchio
in reply to informapirata ⁂ • • •informapirata ⁂
in reply to Julian Del Vecchio • • •@redflegias ma non c'è alcuna discussione nel merito. È solo che l'affermazione per cui bisogna diffidare di chi consiglia Brave per la privacy è sbagliata. Perché non dipende né dal consiglio, né da chi lo dà, ma dipende soprattutto da chi è il destinatario del consiglio
@privacypratica @bradipo @linuxeasy @lealternative
Julian Del Vecchio
in reply to informapirata ⁂ • • •informapirata ⁂ reshared this.
privacypratica.it
in reply to informapirata ⁂ • • •informapirata ⁂ reshared this.
informapirata ⁂
in reply to privacypratica.it • • •questo è certo 😅
@redflegias @bradipo @linuxeasy @lealternative
bradipo
in reply to privacypratica.it • • •filippodb ⁂
in reply to bradipo • • •@bradipo premesso che effettivamente se qualcuno vuole qualcosa di noprofit e più etico c'è librewolf che funziona benissimo e batte tutti nei test: privacytests.org./
Ma dire che brave non è efficace nella protezione è un po' esagerato visto che è elencato fra i browser più sicuri: privacyguides.org/en/tools/#pr…
e lo stesso firefox sta copiando il suo sistema di protezione: hdblog.it/linux/articoli/n6563…
che poi abbia i suoi punti critici..
Ad-Free Privacy Tool/Service Recommendations - Privacy Guides
Privacy Guidesreshared this
informapirata ⁂ e Marco Bresciani reshared this.
privacypratica.it
in reply to filippodb ⁂ • • •Trash Panda
in reply to filippodb ⁂ • • •I suoi problemi sono due:
1: La gente che c'è dietro non è il massimo per quanto riguarda la moralità.
2: È basato su chromium, il che a parte una questione di preferenza è un problema perchè non fa altro che incrementare il monopolio di youtube sul web.
privacypratica.it
in reply to Trash Panda • • •Trash Panda
in reply to privacypratica.it • • •privacypratica.it
in reply to informapirata ⁂ • • •informapirata ⁂
in reply to privacypratica.it • • •> Credo che lo sforzo nel passare direttamente alla soluzione "definitiva" sia minimo.
Fosse minimo, non ci sarebbe così tanta gente che torna indietro a Chrome appena cambia dispositivo e non fa neanche la fatica di reinstallarsi il browser alternativo che aveva iniziato a usare.
Quanto a Firefox, tutti quegli utenti sono dovuti a ragioni storiche. Del resto, se non sbaglio, è stato quasi sempre il secondo browser più utilizzato della storia
Fabrizio
in reply to privacypratica.it • • •informapirata ⁂ reshared this.
Marco Bresciani
in reply to Fabrizio • • •Interessante. Io sono con Ironfox e TrackerControl.
Avevo provato ReThinkDNS ma mi sembrava troppo pesante...
@privacypratica @linuxeasy @informapirata @lealternative
privacypratica.it
Unknown parent • • •privacypratica.it
in reply to privacypratica.it • • •