For the wifi, the current kernel is missing a way to disable rf-kill.
The patch I currently have applied is the following:
diff --git a/drivers/net/wireless/ath/ath12k/core.c b/drivers/net/wireless/ath/ath12k/core.c
index 4ed608ba3c30..2db54dfb1560 100644
--- a/drivers/net/wireless/ath/ath12k/core.c
+++ b/drivers/net/wireless/ath/ath12k/core.c
@@ -80,6 +80,9 @@ static int ath12k_core_rfkill_config(struct ath12k_base *ab)
if (ath12k_acpi_get_disable_rfkill(ab))
return 0;
+ if (of_property_read_bool(ab->dev->of_node, "disable-rfkill"))
+ return 0;
+
for (i = 0; i < ab->num_radios; i++) {
ar = ab->pdevs[i].ar;
The SP11 dts already contain the correct disable-rfkill statement, it is just missing in the driver. I think it didn’t made it into the 7.0.0 kernel change proposal from Dwhinham and Jerome de Bretagne.
For the bluetooth, it is working, only missing a MAC address at boot, the following change are required:
Change the MAC address to the MAC address of the WIFI using the value from windows, same for the bluetooth adapter
New file to be created (/etc/udev/rules.d/99-fix_mac_addresses.rules):
ACTION=="add", SUBSYSTEM=="net", KERNELS=="0004:01:00.0", \
RUN+="/usr/bin/ip link set dev wlP4p1s0 address C4:CB:76:B2:XX:XX"
ACTION=="add", SUBSYSTEM=="bluetooth", ENV{DEVTYPE}=="host" \
ENV{DEVPATH}=="*/serial[0-9]*/serial[0-9]*/bluetooth/hci[0-9]*", \
TAG+="systemd", ENV{SYSTEMD_WANTS}="hci-btaddress@%k.service"
For the wifi MAC address, you can check with lspci that the KERNELS parameter is correct.
Then add the systemd file (/usr/lib/systemd/system/hci-btaddress@.service):
[Unit]
Description=HCI bluetooth address fix
[Service]
Type=simple
ExecStart=/bin/bash -c 'sleep 5; cat /root/start_blue | btmgmt; cat /root/start_blue2 | btmgmt;'
start_blue
info
power off
public-addr C4:CB:76:B2:XX:XX
info
exit
start_blue2
public-addr C4:CB:76:B2:XX:XX
exit
It should be possible to do it simply on the command line but had to do lots of trial and errors to get mgmt to correctly change the MAC address of the BT device.
I am cleaning up firmware-extract to see if I can make it work correctly