Asus z790-v bluetooth help, bluetooth is enabled but doesn't find any results

I have a
ASUS Z790-V Prime WiFi motherboard and
Bluetooth says it is enabled but I cannot find any bluetooth devices. Wifi does work.

This is the result of systemctl status bluetooth


bluetooth.service - Bluetooth service
     Loaded: loaded (/etc/systemd/system/bluetooth.service; enabled; preset: ignored)
    Drop-In: /nix/store/4b8zyi2pamcn8sah87pq2gmdb2ws0fkg-system-units/bluetooth.service.d
             └─overrides.conf
     Active: active (running) since Wed 2025-01-01 18:00:48 CST; 8min ago
 Invocation: d88668254b60497ab34df12e7eefc05f
       Docs: man:bluetoothd(8)
   Main PID: 54715 (bluetoothd)
     Status: "Running"
         IP: 0B in, 0B out
         IO: 0B read, 4K written
      Tasks: 1 (limit: 38147)
     Memory: 984K (peak: 2.1M)
        CPU: 39ms
     CGroup: /system.slice/bluetooth.service
             └─54715 /nix/store/840xr1020qsnhn8v6x6bljpymfwanqfq-bluez-5.78/libexec/bluetooth/bluetoothd -f /etc/bluetooth/main.conf

Jan 01 18:00:48 nixos bluetoothd[54715]: Endpoint registered: sender=:1.57 path=/MediaEndpoint/A2DPSource/aptx_ll_1
Jan 01 18:00:48 nixos bluetoothd[54715]: Endpoint registered: sender=:1.57 path=/MediaEndpoint/A2DPSource/aptx_ll_0
Jan 01 18:00:48 nixos bluetoothd[54715]: Endpoint registered: sender=:1.57 path=/MediaEndpoint/A2DPSource/aptx_ll_duplex_1
Jan 01 18:00:48 nixos bluetoothd[54715]: Endpoint registered: sender=:1.57 path=/MediaEndpoint/A2DPSource/aptx_ll_duplex_0
Jan 01 18:00:48 nixos bluetoothd[54715]: Endpoint registered: sender=:1.57 path=/MediaEndpoint/A2DPSource/faststream
Jan 01 18:00:48 nixos bluetoothd[54715]: Endpoint registered: sender=:1.57 path=/MediaEndpoint/A2DPSource/faststream_duplex
Jan 01 18:00:48 nixos bluetoothd[54715]: Endpoint registered: sender=:1.57 path=/MediaEndpoint/A2DPSink/opus_05
Jan 01 18:00:48 nixos bluetoothd[54715]: Endpoint registered: sender=:1.57 path=/MediaEndpoint/A2DPSource/opus_05
Jan 01 18:00:48 nixos bluetoothd[54715]: Endpoint registered: sender=:1.57 path=/MediaEndpoint/A2DPSink/opus_05_duplex
Jan 01 18:00:48 nixos bluetoothd[54715]: Endpoint registered: sender=:1.57 path=/MediaEndpoint/A2DPSource/opus_05_duplex

This is the output of lsusb

Bus 001 Device 008: ID 0489:e112 Foxconn / Hon Hai Bluetooth Radio

This is the output of inxi --bluetooth -xxx

Bluetooth:
  Device-1: Foxconn / Hon Hai Bluetooth Radio driver: btusb v: 0.8 type: USB
    rev: 1.0 speed: 12 Mb/s lanes: 1 bus-ID: 1-14:8 chip-ID: 0489:e112
    class-ID: e001 serial: 00e04c000001
  Report: hciconfig ID: hci0 rfk-id: 0 state: up address: 58:CD:C9:70:6D:1E
    bt-v: 5.3 lmp-v: 12 sub-v: 8851 hci-v: 12 rev: b class-ID: 7c0104

This is output of lspci for network

09:00.0 Network controller: Realtek Semiconductor Co., Ltd. Device b851

and this is the output of inxi -nxxxz

Network:
  Device-1: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet
    vendor: ASUSTeK RTL8111H driver: r8169 v: kernel pcie: speed: 2.5 GT/s
    lanes: 1 port: 5000 bus-ID: 08:00.0 chip-ID: 10ec:8168 class-ID: 0200
  IF: eno1 state: up speed: 1000 Mbps duplex: full mac: <filter>
  Device-2: Realtek vendor: Foxconn driver: rtw89_8851be v: kernel pcie:
    speed: 2.5 GT/s lanes: 1 port: 4000 bus-ID: 09:00.0 chip-ID: 10ec:b851
    class-ID: 0280
  IF: wlp9s0 state: up mac: <filter>

What I have tried so far

This is a windows and NixOS dual boot on separate hard drives. Windows originally did not find any devices on bluetooth until I installed the bluetooth drivers from Asus’s website. After that, bluetooth could find devices on Windows

I have tried using the built in KDE bluetooth app, blueman, and bluetoothctl in the command line. They all act like bluetooth is enabled but can’t find anything.

From the results above it seems like the wifi chip for my motherboard is the Realtek 851b or 8851be and the correct driver is loaded for it rtw89_8851be

It seems possible that the problem is that the current driver loaded only supports the wifi part of hte chip, and there is actually no bluetooth support. Could this be the case? I’d appreciate any help

Post your nixos config, specifically sections pertaining to BT.

Typically, you need to enable BT with pipewire and enable some extra stuff in pipewire plumbing for it to work correctly.

Check this out: Bluetooth - NixOS Wiki

I had reviewed that article but at your suggestion I tried using pulseaudio instead of pipewire with the “enabling extra codecs” section and I also added the options from “enabling A2DP sink”. It doesn’t work with Pulseaudio and the a2dp sink, so I switched back to pipewire

With that said, here are the sections of BT that are relevant, I think:

  # bluetooth
  hardware.bluetooth.enable = true; # enables support for Bluetooth
  hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot
  hardware.bluetooth.settings = {
    General = {
      Enable = "Source, Sink, Media, Socket";
      };
    };
  services.blueman.enable = true;
 # Enable sound with pipewire.
  hardware.pulseaudio = {
    enable = false;
    #package = pkgs.pulseaudioFull;
    };

  security.rtkit.enable = true;
  services.pipewire = {
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = true;
    pulse.enable = true;
    # If you want to use JACK applications, uncomment this
    #jack.enable = true;

    # use the example session manager (no others are packaged yet so this is enabled by default,
    # no need to redefine it in your config for now)
    #media-session.enable = true;
  };

later,
(my understanding is that unfree packages gives access to more firmware too)

  # enable unfree packages for steam
nixpkgs.config.allowUnfree = true; 

I think i see the problem. Your missing the blueman pipewire plumbing.

Stick this in your config:

services.pipewire.wireplumber.extraConfig.bluetoothEnhancements = {
  "monitor.bluez.properties" = {
      "bluez5.enable-sbc-xq" = true;
      "bluez5.enable-msbc" = false;
      "bluez5.enable-hw-volume" = true;
      "bluez5.auto-connect" = [ "a2dp_sink" ];
      "bluez5.roles" = [ "a2dp_sink" "a2dp_source" ];

Heres a snip from my config, i also have built in wifi on a very similar mobo

hardware.bluetooth.enable = true;
hardware.bluetooth.settings = {General = {Enable = "Source,Sink,Media,Socket";};};
hardware.bluetooth.powerOnBoot = true;


security.rtkit.enable = true;
services.pipewire = {
  enable = true;
  alsa.enable = true;
  alsa.support32Bit = true;
  pulse.enable = true;
  jack.enable = true;
};

services.pipewire.wireplumber.extraConfig.bluetoothEnhancements = {
  "monitor.bluez.properties" = {
      "bluez5.enable-sbc-xq" = true;
      "bluez5.enable-msbc" = false;
      "bluez5.enable-hw-volume" = true;
      "bluez5.auto-connect" = [ "a2dp_sink" ];
      "bluez5.roles" = [ "a2dp_sink" "a2dp_source" ];
  };
};

Note that both pulse and pipewire are enabled, i found this was needed for it to work correctly.

Post all the output you get from this. Also, if you have a bluetooth scanner, i suggest trying to see if you can see mac addresses and signal strength from BT devices. This will at least confirm that the BT module is communicating on the correct frequencies

EDIT: Heres one if you dont have/know of one, pkgs.bluewalker

Okay this is the changed part of my config file. I tried using
nixos-rebuild switch --use-remote-sudo
but bluetooth still finds nothing. I also tried rebooting and the same. Config file for reference:

  services.pipewire = {
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = true;
    pulse.enable = true;
    # If you want to use JACK applications, uncomment this
    jack.enable = true;

    # use the example session manager (no others are packaged yet so this is enabled by default,
    # no need to redefine it in your config for now)
    #media-session.enable = true;
  };
  # extra config from Mephist0phel3s
  services.pipewire.wireplumber.extraConfig.bluetoothEnhancements = {
      "monitor.bluez.properties" = {
        "bluez5.enable-sbc-xq" = true;
        "bluez5.enable-msbc" = false;
        "bluez5.enable-hw-volume" = true;
        "bluez5.auto-connect" = [ "a2dp_sink" ];
        "bluez5.roles" = [ "a2dp_sink" "a2dp_source" ];
      };
  };

Also I tried using bluewalker, not 100% I am using it right but here is what I got:

[user@nixos:~]$ sudo bluewalker -device hci0 -active

Found 0 devices:

[user@nixos:~]$ 

which makes it seem like I’m doing something wrong or it isn’t even working at all

and I guess just to add, I have at least two devices in pairing mode that should be showing up

Whats the output of dmesg and journctl, im smelling a kernel driver bug

Okay here is dmesg

and here is journalctl -r -n 3000 after a reboot

and finally journalctl -r -n 1000 after toggling bluetooth off and on just to show it off.

Hope this helps, let me know if you need anything else. I really appreciate the help…I was somewhat sure from my research that my card just had no driver built into the linux kernel

dmesg does see the BT and reads it successfully. So the hardware isnt faulty.

Missing some BT modules but nothing that would indicate a potential issue.

Some log lines also state a signal that isnt constant which is what i would expect from antenna that are actually working so your hardware is solid.

I need you to run some commands for me and post the output.
First, i need you to run the command to power off the BT module and prepare it for injection.

sudo btmgmt --index hci0 power off

After, run:

sudo bluewalker -active -device hci0

And dump all the entire output here

[user@nixos:~]$ sudo btmgmt --index hci0 power off
[sudo] password for user: 
hci0 Set Powered complete, settings: bondable ssp br/edr le secure-conn cis-central cis-peripheral iso-broadcaster sync-receiver 

[user@nixos:~]$ sudo bluewalker -active -device hci0

Found 0 devices:

[user@nixos:~]$ sudo bluewalker -active -device hci0
Error: Error while opening RAW HCI socket: device or resource busy
Are you running as root and have you run sudo btmgmt --index hci0 power off?

[user@nixos:~]$ sudo btmgmt --index hci0 power off
hci0 Set Powered complete, settings: bondable ssp br/edr le secure-conn cis-central cis-peripheral iso-broadcaster sync-receiver 

[user@nixos:~]$ sudo bluewalker -active -device hci0

Found 0 devices:

[user@nixos:~]$ 

same result

What kernel version are you running?

Better yet, post your entire nixos config, im now 90% sure its a kernel bug

Yup, found the bug.

Lines 2530-2533

Jan 02 08:21:36 nixos dbus-daemon[1689]: [system] Rejected send message, 1 matched rules; type=“method_call”, sender=“:1.2” (uid=0 pid=1688 comm=“/nix/store/840xr1020qsnhn8v6x6bljpymfwanqfq-bluez-” label=“kernel”) interface=“org.bluez.GattProfile1” member=“Release” error name=“(unset)” requested_reply=“0” destination=“:1.58” (uid=1000 pid=2284 comm=“/nix/store/flwi3pbnf40l20px0kl09nn3vdc5x8ag-wirepl” label=“kernel”)

Jan 02 08:21:36 nixos dbus-daemon[1689]: [system] Rejected send message, 0 matched rules; type=“error”, sender=“:1.57” (uid=1000 pid=2284 comm=“/nix/store/flwi3pbnf40l20px0kl09nn3vdc5x8ag-wirepl” label=“kernel”) interface=“(unset)” member=“(unset)” error name=“org.bluez.MediaEndpoint1.Error.NotImplemented” requested_reply=“0” destination=“:1.2” (uid=0 pid=1688 comm=“/nix/store/840xr1020qsnhn8v6x6bljpymfwanqfq-bluez-” label=“kernel”)

Jan 02 08:21:36 nixos dbus-daemon[1689]: [system] Rejected send message, 0 matched rules; type=“error”, sender=“:1.57” (uid=1000 pid=2284 comm=“/nix/store/flwi3pbnf40l20px0kl09nn3vdc5x8ag-wirepl” label=“kernel”) interface=“(unset)” member=“(unset)” error name=“org.bluez.MediaEndpoint1.Error.NotImplemented” requested_reply=“0” destination=“:1.2” (uid=0 pid=1688 comm=“/nix/store/840xr1020qsnhn8v6x6bljpymfwanqfq-bluez-” label=“kernel”)

and lines 911-918

Jan 02 08:22:27 nixos bluetoothd[1664]: Bluetooth management interface 1.22 initialized

Jan 02 08:22:27 nixos bluetoothd[1664]: src/plugin.c:init_plugin() System does not support asha plugin

Jan 02 08:22:27 nixos bluetoothd[1664]: src/plugin.c:init_plugin() System does not support csip plugin

Jan 02 08:22:27 nixos bluetoothd[1664]: src/plugin.c:init_plugin() System does not support ccp plugin

Jan 02 08:22:27 nixos bluetoothd[1664]: src/plugin.c:init_plugin() System does not support micp plugin

Jan 02 08:22:27 nixos bluetoothd[1664]: profiles/audio/micp.c:micp_init() D-Bus experimental not enabled

Jan 02 08:22:27 nixos bluetoothd[1664]: src/plugin.c:init_plugin() System does not support vcp plugin

Jan 02 08:22:27 nixos bluetoothd[1664]: src/plugin.c:init_plugin() System does not support mcp plugin

Jan 02 08:22:27 nixos bluetoothd[1664]: src/plugin.c:init_plugin() System does not support bass plugin

Jan 02 08:22:27 nixos bluetoothd[1664]: src/plugin.c:init_plugin() System does not support bap plugin

Also, this data + what you described led me to this:
https://www.reddit.com/r/NixOS/comments/1flrl66/bluetooth_stopped_working_without_new_build/
Also having the exact problem you are, kernel update borked it and bluez needed a rollback for it to work. Couldnt find a bug report open for it so do what you want with that.

The proposed and apparent solution is this:

  hardware.bluetooth.package = pkgs.bluez.overrideAttrs (finalAttrs: previousAttrs: rec {
    version = "5.78";

    src = pkgs.fetchurl {
      url = "mirror://kernel/linux/bluetooth/bluez-${version}.tar.xz";
      sha256 = "sha256-gw/tGRXF03W43g9eb0X83qDcxf9f+z0x227Q8A1zxeM=";
    };

    patches = [];

    buildInputs = previousAttrs.buildInputs ++ [
      pkgs.python3Packages.pygments
    ];
  });

Then run a rebuild, try again

EDIT: I vaguely recall having an issue like this a while back but i took a different route to fix it. I was already running a custom kernel version so i just pinned the kernel version i knew worked well for what i like and do.
Heres that solution:
NOTE: This will replace your current linux kernel with the zen kernel, before doing a kernel swap at least glance through this wilki page:
https://nixos.wiki/wiki/Linux_kernel

boot.kernelPackages = let
  linux_zen_pkg = { fetchurl, buildLinux, ...}@args:

  buildLinux (args // rec{
        version = "6.8.9-zen1";
      modDirVersion = version;

      src = pkgs.fetchurl {
        url =
          "https://github.com/zen-kernel/zen-kernel/archive/refs/tags/v6.8.9-zen1.tar.gz";
        sha256 =
          "57tpFS1dQndrFClwk6GUjdpObHjN7hAdBn6sdgULMiw=";
      };
    } // (args.argsOverride or { }));
  linux_zen = pkgs.callPackage linux_zen_pkg { };
in pkgs.recurseIntoAttrs (pkgs.linuxPackagesFor linux_zen);

The result of uname -r is/was

6.6.67

This is my configuration.nix - after trying the two solutions you suggested. I left the different version of bluez active. I used to use linux-zen on my arch machine and I would probably wind up using it on NIX so I really didn’t mind switching to Zen. I turned off that kernel for now, mostly because it makes nix-rebuild take forever.

Results of the two solutions:

  1. I tried the kernel you suggested - it did not make the bluetooth work, even after a restart.
  2. I disabled that kernel and moved to try the solution in that reddit thread (it is still applied). Also didn’t find devices after a restart.

For both instances I tried using Bluewalker and I got 0 results.
Anecdotally it seems like I was getting more down via the Bluez GUI, but I can’t guarantee that isn’t my imagination.

Here is journalctl -r -n 15000 after trying the two solutions if it is of any use

I tried the two different solutions around 17:30, for reference.

Definitely open to trying anything else you want me to try, I really appreciate the effort so far to try and pin down a bug - I will try and spend some time this weekend actually reporting the bug to pay it forward.

Do you think it would be worth moving myself back to older versions of NIX until bluetooth works, on the theory that it might have worked at some point?

Also I turned on the linux-zen kernel again…it only takes a long time to rebuild once. Needless to say, trying both solutions at once does not make BT work

Not typically advisable, security being quoted alot for that reason.

I see another thing that could be messing with it, i seen some lines in the prior journal logs that indicated something of a collision between blueman and bluez.
My thought process is that the kernel driver itself seems to be functional. Antenna functional. Power on and power off functional, it responds to commands but just doesnt display anything it finds if its even finding anything. So something between the driver getting loaded into kernel and the handoff to freedesktop is getting borked.
After boot, the kernel hands off command of the driver to blueman and kde desktop. Maybe one is trying to supersede the other.

Edit these:
Add this:

hardware.enableAllFirmware = true;

disable blueman

 services.blueman.enable = false;

During my research, i seen some mentions of restarting the desktop display manager fixed the issue which seems to confirm the idea that its getting borked during hand off. Then again you arent getting dbus exception errors so maybe thats just a coincidence

  hardware.pulseaudio = {
    enable = false;
    #package = pkgs.pulseaudioFull;
    };

Remove this snip of code, or comment it out. Wireplumber does feature interfacing with PA, but that really only works when wireplumber is in charge. So activating PA at hardware level might be creating some problems, disabling it at hardware level seems like it would fuck with:

  services.pipewire = {
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = true;
    pulse.enable = true; # <<< Pulse is enabled here
    # If you want to use JACK applications, uncomment this
    jack.enable = true;

    # use the example session manager (no others are packaged yet so this is enabled by default,
    # no need to redefine it in your config for now)
    #media-session.enable = true;
  };

i also found this post, some similarities with your situation. Bluetooth troubles - #19 by DockterTeagle but this guys using a controller so it might not translate perfectly.
But this comment in particular:Bluetooth troubles - #6 by tealtydes is what makes me thing its related as you are both getting thrown a key error along with the missing plugins. (whos missing them? dunno)

Also, apparently setting this:

xdg.autostart.enable = true;

seemed to have a positive effect on integration with freedesktop so this is something worth trying to see if it fixes the problem.

There were also a few scattered mentions of bluetooth being managed by multiple parties, which could be the conflict we are looking for. If system and freedesktop try to command it at the same time, locking up would be the result in many cases.

We can easiliy see if this is the case by running:

$ hciconfig --all

It should vomit a ton of shit, if it does cool thats what we want
After, run this so we can see what the the bluetooth controller is and if its working and responding as expected.

$ bluetoothctl show

After this: run

$ rfkill list

and dump the output here

I also did a bunch of reading into the policy statements of BT with bluez and the policy and baked in drivers with the kernel and didnt see anything that could potentially be the issue. Drivers are baked and built with the kernel, you are also running a kernel version older than 6.9 or 6.10 which are the known problem children.

I took the time to redo part of your config:
Try this config and see if BT wants to work, or if it spits out anything different:

{ config, pkgs, ... }:

{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
    ];

  # Bootloader.
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;

##CLEAN ME --Mephist0phel3s recommended Linux Zen to solve bluetooth, no worky
  ##boot.kernelPackages = let
  ##linux_zen_pkg = { fetchurl, buildLinux, ...}@args:

  ##buildLinux (args // rec{
        ##version = "6.8.9-zen1";
      ##modDirVersion = version;

      ##src = pkgs.fetchurl {
       ## url =
         ## "https://github.com/zen-kernel/zen-kernel/archive/refs/tags/v6.8.9-zen1.tar.gz";
        ##sha256 =
         ## "57tpFS1dQndrFClwk6GUjdpObHjN7hAdBn6sdgULMiw=";
      ##};
    ##} // (args.argsOverride or { }));
  ##linux_zen = pkgs.callPackage linux_zen_pkg { };
##in pkgs.recurseIntoAttrs (pkgs.linuxPackagesFor linux_zen);

  boot.initrd.luks.devices."redacted".device = "redacted";
  boot.initrd.kernelModules = [ "amdgpu" ];
  networking.hostName = "nixos"; # Define your hostname.
  # networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant.

  # Configure network proxy if necessary
  # networking.proxy.default = "http://user:password@proxy:port/";
  # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";

  # Enable networking
  networking.networkmanager.enable = true;
 
  # bluetooth override from https://www.reddit.com/r/NixOS/comments/1flrl66/bluetooth_stopped_working_without_new_build/
  hardware.bluetooth.package = pkgs.bluez.overrideAttrs (finalAttrs: previousAttrs: rec {
    version = "5.78";

    src = pkgs.fetchurl {
      url = "mirror://kernel/linux/bluetooth/bluez-${version}.tar.xz";
      sha256 = "sha256-gw/tGRXF03W43g9eb0X83qDcxf9f+z0x227Q8A1zxeM=";
    };

    patches = [];

    buildInputs = previousAttrs.buildInputs ++ [
      pkgs.python3Packages.pygments
    ];
  });
  #bluetooth
  hardware.bluetooth.enable = true; # enables support for Bluetooth
  hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot
  hardware.bluetooth.settings = {
        General = {
        Enable = "Source, Sink, Media, Socket";
            };
        };
#  services.blueman.enable = true; #blueman + bluez apparently causes collisions
  

  # Set your time zone.
  time.timeZone = "America/Chicago";

  # Select internationalisation properties.
  i18n.defaultLocale = "en_US.UTF-8";

  i18n.extraLocaleSettings = {
    LC_ADDRESS = "en_US.UTF-8";
    LC_IDENTIFICATION = "en_US.UTF-8";
    LC_MEASUREMENT = "en_US.UTF-8";
    LC_MONETARY = "en_US.UTF-8";
    LC_NAME = "en_US.UTF-8";
    LC_NUMERIC = "en_US.UTF-8";
    LC_PAPER = "en_US.UTF-8";
    LC_TELEPHONE = "en_US.UTF-8";
    LC_TIME = "en_US.UTF-8";
  };

  #Wayland has a fun thing called xwayland which allows x11 to run wrapped in wayland. Best of both worlds, this should fix some other x11 related bugs in your logbook
  services.xserver.enable = true; 
  
  services.displayManager.sddm.wayland.enable = true;
  services.displayManager.sddm.enable = true;
  services.desktopManager.plasma6.enable = true;

   services.xserver.xkb = {
    layout = "us";
    variant = "";
   };

  # Enable CUPS to print documents.
  services.printing.enable = true;


  
# We dont want to indicate any hardware control with pipewire in charge
#  hardware.pulseaudio = {
#    enable = false;
    #package = pkgs.pulseaudioFull;
#    };

  security.rtkit.enable = true;
  services.pipewire = {
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = true;
    pulse.enable = true;
    # If you want to use JACK applications, uncomment this
    jack.enable = true;

    # use the example session manager (no others are packaged yet so this is enabled by default,
    # no need to redefine it in your config for now)
    #media-session.enable = true;
  };
  # extra config from Mephist0phel3s
  services.pipewire.wireplumber.extraConfig.bluetoothEnhancements = {
      "monitor.bluez.properties" = {
        "bluez5.enable-sbc-xq" = true;
        "bluez5.enable-msbc" = false;
        "bluez5.enable-hw-volume" = true;
        "bluez5.auto-connect" = [ "a2dp_sink" ];
        "bluez5.roles" = [ "a2dp_sink" "a2dp_source" ];
      };
  };

  # Enable touchpad support (enabled default in most desktopManager).
  # services.xserver.libinput.enable = true;

  # Define a user account. Don't forget to set a password with ‘passwd’.
  users.users.user = {
    isNormalUser = true;
    description = "Naive";
    extraGroups = [ "networkmanager" "wheel" ];
    packages = with pkgs; [
      kdePackages.kate
    #  thunderbird
    ];
  };

  # Install firefox.
programs.firefox = {
  enable = true;
  package = pkgs.librewolf;
  policies = {
    DisableTelemetry = true;
    DisableFirefoxStudies = true;
    Preferences = {
      "cookiebanners.service.mode.privateBrowsing" = 2; # Block cookie banners in private browsing
      "cookiebanners.service.mode" = 2; # Block cookie banners
      "privacy.donottrackheader.enabled" = true;
      "privacy.fingerprintingProtection" = true;
      "privacy.resistFingerprinting" = true;
      "privacy.trackingprotection.emailtracking.enabled" = true;
      "privacy.trackingprotection.enabled" = true;
      "privacy.trackingprotection.fingerprinting.enabled" = true;
      "privacy.trackingprotection.socialtracking.enabled" = true;
    };
    ExtensionSettings = {
      "uBlock0@raymondhill.net" = {
        install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
        installation_mode = "force_installed";
      };
    };
  };
};
  # enable unfree packages for steam
nixpkgs.config.allowUnfree = true; 
  # enable steam
programs.steam = {
  enable = true;
  remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
  dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
  localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
};
  environment.systemPackages = with pkgs; [
  vim
  
  pkgs.lshw
  pkgs.pciutils #adds lspci command
  pkgs.inxi
  pkgs.usbutils  
  pkgs.bluewalker
  pkgs.protontricks
  pkgs.bluez
  pkgs.bluez-alsa
  pkgs.bluez-tools
  
  ];

.
  system.stateVersion = "24.11"; # Did you read the comment?


}

According to the linux kernel documentation, the BT version installed and built is the correct version.
According to default BT policy here

/etc/bluetooth/main.conf
autoenable and power on at boot are default true values so no problem there.

Also, i noticed too the driver and kernel module thats built for your kernel is in fact the bluez pkg. So blueman + bluez might be causing the problem here

No worries bruh, happy to help

Hi again,

I spent some time going through the posts you linked and trying basically everything from them, including setting enabling all firmware to true and also just basically copying that guys entire BT config (I reverted back)
In every case BT was the same after reboot.

I also had been redacting some info in my config and then trying to reconcile your config I totally broke my system because I spelled my user wrong. I am just not going to redact anymore lol, that was a pain

Here is my current config

and the results of the commands you asked for


[naive@nixos:~]$ hciconfig --all
hci0:   Type: Primary  Bus: USB
        BD Address: 58:CD:C9:70:6D:1E  ACL MTU: 1021:8  SCO MTU: 255:12
        UP RUNNING 
        RX bytes:965 acl:0 sco:0 events:87 errors:0
        TX bytes:6007 acl:0 sco:0 commands:87 errors:0
        Features: 0xff 0xff 0xff 0xfe 0xdb 0xfd 0x7b 0x87
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
        Link policy: RSWITCH HOLD SNIFF PARK 
        Link mode: PERIPHERAL ACCEPT 
        Name: 'nixos'
        Class: 0x1c0104
        Service Classes: Rendering, Capturing, Object Transfer
        Device Class: Computer, Desktop workstation
        HCI Version: 5.3 (0xc)  Revision: 0xb
        LMP Version: 5.3 (0xc)  Subversion: 0x8851
        Manufacturer: Realtek Semiconductor Corporation (93)


[naive@nixos:~]$ bluetoothctl show
Controller 58:CD:C9:70:6D:1E (public)
        Manufacturer: 0x005d (93)
        Version: 0x0c (12)
        Name: nixos
        Alias: nixos
        Class: 0x001c0104 (1835268)
        Powered: yes
        PowerState: on
        Discoverable: no
        DiscoverableTimeout: 0x000000b4 (180)
        Pairable: yes
        UUID: A/V Remote Control        (0000110e-0000-1000-8000-00805f9b34fb)
        UUID: Audio Source              (0000110a-0000-1000-8000-00805f9b34fb)
        UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)
        UUID: Audio Sink                (0000110b-0000-1000-8000-00805f9b34fb)
        UUID: Message Notification Se.. (00001133-0000-1000-8000-00805f9b34fb)
        UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
        UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)
        UUID: Phonebook Access Server   (0000112f-0000-1000-8000-00805f9b34fb)
        UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
        UUID: OBEX File Transfer        (00001106-0000-1000-8000-00805f9b34fb)
        UUID: Device Information        (0000180a-0000-1000-8000-00805f9b34fb)
        UUID: Vendor specific           (03b80e5a-ede8-4b33-a751-6ce34ec4c700)
        UUID: Message Access Server     (00001132-0000-1000-8000-00805f9b34fb)
        UUID: OBEX Object Push          (00001105-0000-1000-8000-00805f9b34fb)
        UUID: IrMC Sync                 (00001104-0000-1000-8000-00805f9b34fb)
        Modalias: usb:v1D6Bp0246d054E
        Discovering: no
        Roles: central
        Roles: peripheral
Advertising Features:
        ActiveInstances: 0x00 (0)
        SupportedInstances: 0x05 (5)
        SupportedIncludes: tx-power
        SupportedIncludes: appearance
        SupportedIncludes: local-name
        SupportedSecondaryChannels: 1M
        SupportedSecondaryChannels: 2M
        SupportedSecondaryChannels: Coded
        SupportedCapabilities.MinTxPower: 0xffffffa6 (-90)
        SupportedCapabilities.MaxTxPower: 0x0000 (0)
        SupportedCapabilities.MaxAdvLen: 0xfb (251)
        SupportedCapabilities.MaxScnRspLen: 0xfb (251)
        SupportedFeatures: CanSetTxPower
        SupportedFeatures: HardwareOffload

[naive@nixos:~]$ rkfill list
rkfill: command not found

[naive@nixos:~]$ rfkill list
0: hci0: Bluetooth
        Soft blocked: no
        Hard blocked: no
1: phy0: Wireless LAN
        Soft blocked: no
        Hard blocked: no

and as is tradition

[naive@nixos:~]$ sudo btmgmt --index hci0 power off
hci0 type 7 discovering off
hci0 Set Powered complete, settings: bondable ssp br/edr le secure-conn cis-central cis-peripheral iso-broadcaster sync-receiver 

[naive@nixos:~]$ sudo bluewalker -active -device hci0

Found 0 devices:

Let me know if you have any other ideas, thanks!