Beim Upgrade auf 7.1.1-1-siduction-amd64 steigt bei diesem Kernel der build von initramfs wie folgt aus:
Building initial module broadcom-sta/6.30.223.271 for 7.1.1-1-siduction-amd64
The kernel is built without module signing facility, modules won't be signed
Building module(s)...(bad exit status: 2)
Failed command:
make -j4 KERNELRELEASE=7.1.1-1-siduction-amd64 KVER=7.1.1-1-siduction-amd64
Error! Bad return status for module build on kernel: 7.1.1-1-siduction-amd64 (x86_64)
Consult /var/lib/dkms/broadcom-sta/6.30.223.271/build/make.log for more information.
dpkg: Fehler beim Bearbeiten des Paketes broadcom-sta-dkms (--configure):
»altes postinst-Betreuerskript des Paketes broadcom-sta-dkms«-Unterprozess mit Exit-Status 10 fehlgeschlagen
Trigger für initramfs-tools (0.151) werden verarbeitet ...
update-initramfs: Generating /boot/initrd.img-7.1.1-1-siduction-amd64
Fehler traten auf beim Bearbeiten von:
broadcom-sta-dkms
Beim Kernel davor (7.0.12-1-siduction-amd64) noch problemlos.
Das log hilft mir auch nicht wirklich weiter:
root@macbookair:/var/lib/dkms/broadcom-sta/6.30.223.271/7.0.12-1-siduction-amd64/x86_64/log# cat make.log
DKMS (dkms-3.2.2) make.log for broadcom-sta/6.30.223.271 for kernel 7.0.12-1-siduction-amd64 (x86_64)
So 21. Jun 15:09:43 CEST 2026
Building module(s)
# command: make -j4 KERNELRELEASE=7.0.12-1-siduction-amd64 KVER=7.0.12-1-siduction-amd64
CFG80211 API is prefered for this kernel version
Makefile:91: Neither CFG80211 nor Wireless Extension is enabled in kernel
KBUILD_NOPEDANTIC=1 make -C /lib/modules/7.0.12-1-siduction-amd64/build M=`pwd`
make[1]: Verzeichnis ,,/usr/src/linux-headers-7.0.12-1-siduction-amd64" wird betreten
make[2]: Verzeichnis ,,/var/lib/dkms/broadcom-sta/6.30.223.271/build" wird betreten
warning: the compiler differs from the one used to build the kernel
The kernel was built by: gcc-15 (Debian 15.2.0-17) 15.2.0
You are using: gcc-15 (Debian 15.3.0-1) 15.3.0
warning: pahole version differs from the one used to build the kernel
The kernel was built with: 131
You are using: 0
CFG80211 API is prefered for this kernel version
Using CFG80211 API
Kernel architecture is X86_64
CC [M] src/shared/linux_osl.o
CC [M] src/wl/sys/wl_linux.o
CC [M] src/wl/sys/wl_iw.o
CC [M] src/wl/sys/wl_cfg80211_hybrid.o
LD [M] wl.o
CFG80211 API is prefered for this kernel version
Using CFG80211 API
Kernel architecture is X86_64
MODPOST Module.symvers
CC [M] wl.mod.o
CC [M] .module-common.o
LD [M] wl.ko
make[2]: Verzeichnis ,,/var/lib/dkms/broadcom-sta/6.30.223.271/build" wird verlassen
make[1]: Verzeichnis ,,/usr/src/linux-headers-7.0.12-1-siduction-amd64" wird verlassen
# exit code: 0
# elapsed time: 00:00:04
Jemand eine Idee dazu? Das entsprechende Modul fehlt dann bei dem Kernel und die Netzwerkkarte wird natürlich nicht erkannt.
Hat jemand eine Idee dazu?
Grüße
Reiner
Though it's not very comforting, here is the reason why it fails:
Line 83 of broadcom-sta-dkms_6.30.223.271-29_amd64.deb's file
./usr/src/broadcom-sta-6.30.223.271/src/wl/sys/wl_cfg80211_hybrid.c reads:
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)
static s32
wl_cfg80211_get_station(struct wiphy *wiphy, struct net_device *dev,
u8 *mac, struct station_info *sinfo)
#else
static s32
83: wl_cfg80211_get_station(struct wiphy *wiphy, struct net_device *dev,
const u8 *mac, struct station_info *sinfo)
#endifSo parameter dev points to structure net_device. In line 1859 of the same file
we initialize wl_cfg80211_ops of static structure cfg80211_ops as:
static struct cfg80211_ops wl_cfg80211_ops = {
.change_virtual_intf = wl_cfg80211_change_iface,
.scan = wl_cfg80211_scan,
.set_wiphy_params = wl_cfg80211_set_wiphy_params,
.join_ibss = wl_cfg80211_join_ibss,
.leave_ibss = wl_cfg80211_leave_ibss,
1859: .get_station = wl_cfg80211_get_station,...
}So we have to look for static structure cfg80211_ops, which is defined in
file /usr/src/linux-headers-7.0.12-1-siduction-amd64/include/net/cfg80211.h
of linux kernel 7.0.12-1 in lines 4901 and 4962 as
4901: struct cfg80211_ops {...
4962: int (*get_station)(struct wiphy *wiphy, struct net_device *dev,
const u8 *mac, struct station_info *sinfo);
...}However, linux kernel 7.1.1-1-siduction-amd64 in file
/usr/src/linux-headers-7.1.1-1-siduction-amd64/include/net/cfg80211.h
defines it as
5080: struct cfg80211_ops {...
5150: int (*get_station)(struct wiphy *wiphy, struct wireless_dev *wdev,
const u8 *mac, struct station_info *sinfo);
...}in lines 5080 and 5150. So according to broadcom its second parameter is always of
type struct net_device. But this is only compatible with kernel 7.0.12-1, since
kernel 7.1.1-1 defines it of struct wireless_dev, which is completely different.
This is not an easy fix, because subsequent code must be rewritten to accommodate
for the changes. It is possible, though, but very time consuming for a hobbyist.
So I suggest you wait for an update from broadcom-sta.
> This is not an easy fix [...]
Maybe it is after all...
--- a/wl_cfg80211_hybrid.c 2025-11-09 07:49:03.000000000 +0100
+++ b/wl_cfg80211_hybrid.c 2026-06-22 00:16:34.333612980 +0200
@@ -1366,6 +1366,16 @@ wl_cfg80211_add_key(struct wiphy *wiphy,
return err;
}
+static s32 my_driver_add_key(struct wiphy *wiphy, struct wireless_dev *wdev,
+ int link_id, u8 key_index, bool pairwise, const u8 *mac_addr,
+ struct key_params *params)
+{
+ struct net_device *netdev = wdev->netdev;
+ if (!netdev) return -ENODEV;
+
+ return wl_cfg80211_add_key(wiphy, netdev, link_id, key_index, pairwise, mac_addr, params);
+}
+
#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)
static s32
wl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *dev,
@@ -1413,6 +1423,15 @@ wl_cfg80211_del_key(struct wiphy *wiphy,
return err;
}
+static s32 my_driver_del_key(struct wiphy *wiphy, struct wireless_dev *wdev,
+ int link_id, u8 key_index, bool pairwise, const u8 *mac_addr)
+{
+ struct net_device *netdev = wdev->netdev;
+ if (!netdev) return -ENODEV;
+
+ return wl_cfg80211_del_key(wiphy, netdev, link_id, key_index, pairwise, mac_addr);
+}
+
#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0)
static s32
wl_cfg80211_get_key(struct wiphy *wiphy, struct net_device *dev,
@@ -1486,6 +1505,16 @@ wl_cfg80211_get_key(struct wiphy *wiphy,
return err;
}
+static s32 my_driver_get_key(struct wiphy *wiphy, struct wireless_dev *wdev,
+ int link_id, u8 key_index, bool pairwise, const u8 *mac_addr,
+ void *cookie, void (*callback) (void *cookie, struct key_params * params))
+{
+ struct net_device *netdev = wdev->netdev;
+ if (!netdev) return -ENODEV;
+
+ return wl_cfg80211_get_key(wiphy, netdev, link_id, key_index, pairwise, mac_addr, cookie, callback);
+}
+
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)
static s32
wl_cfg80211_get_station(struct wiphy *wiphy, struct net_device *dev,
@@ -1541,6 +1570,21 @@ wl_cfg80211_get_station(struct wiphy *wi
return err;
}
+// New Kernel 7.1+ API footprint
+static s32 my_driver_get_station(struct wiphy *wiphy, struct wireless_dev *wdev,
+ const u8 *mac_addr, struct station_info *sinfo)
+{
+ // Extract the net_device pointer from the new wdev parameter
+ struct net_device *netdev = wdev->netdev;
+
+ if (!netdev)
+ return -ENODEV;
+
+ // Pass the old netdev structure right into your existing legacy driver logic
+ return wl_cfg80211_get_station(wiphy, netdev, mac_addr, sinfo);
+}
+
+
static s32
wl_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *dev,
bool enabled, s32 timeout)
@@ -1856,12 +1900,12 @@ static struct cfg80211_ops wl_cfg80211_o
.set_wiphy_params = wl_cfg80211_set_wiphy_params,
.join_ibss = wl_cfg80211_join_ibss,
.leave_ibss = wl_cfg80211_leave_ibss,
- .get_station = wl_cfg80211_get_station,
+ .get_station = my_driver_get_station,
.set_tx_power = wl_cfg80211_set_tx_power,
.get_tx_power = wl_cfg80211_get_tx_power,
- .add_key = wl_cfg80211_add_key,
- .del_key = wl_cfg80211_del_key,
- .get_key = wl_cfg80211_get_key,
+ .add_key = my_driver_add_key,
+ .del_key = my_driver_del_key,
+ .get_key = my_driver_get_key,
.set_default_key = wl_cfg80211_config_default_key,
.set_power_mgmt = wl_cfg80211_set_power_mgmt,
.connect = wl_cfg80211_connect,At the time being it compiles against kernel 7.1.1-1 only (no time to include ifdefs for other kernels, yet).
So I suggest you keep a copy of original /usr/src/wl/sys/wl_cfg80211_hybrid.c of
broadcom-sta-dkms_6.30.223.271-29_amd64.deb. Change to /usr/src/wl/sys, apply the patch:
$ patch -p1 < /tmp/patch
(You save the above code as /tmp/patch first)
Then you reconfigure the module build via:
$ sudo dpkg-reconfigure linux-image-7.1.1-1-siduction-amd64
I own no broadcom wireless card, so maybe you can report back whether it works.
HTH
PS.: also check:
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1136423>