I can connect to Bluetooth once I log in. But I need Bluetooth (keyboard) to login. My Bluetooth adaptor is plugged into my PCs front USB port. I have the following in my config:
Powers on Bluetooth at boot.
hardware.bluetooth.powerOnBoot = true;
Enables Bluetooth
hardware.bluetooth.enable = true;
I am using KDE Plasma, which means the login manager is SDDM.
# ========================
# 📶 Bluetooth Configuration
# ========================
# Enable Bluetooth support
hardware.bluetooth.enable = true;
# Ensure Bluetooth is powered on when the system starts
hardware.bluetooth.powerOnBoot = true;
# Enable the Bluetooth service (systemd bluetooth service)
systemd.services.bluetooth = {
enable = true;
description = "Bluetooth service";
wantedBy = [ "basic.target" ]; # Start Bluetooth very early in the boot process
after = [ "sysinit.target" ]; # Bluetooth should be started after the system initialization
before = [ "network.target" "multi-user.target" "graphical.target" ]; # Start Bluetooth before networking, multi-user, and graphical services
};
My computer is an old Dell Precision T3610 and in the front of that case, I have a USB Bluetooth Adaptor. I believe the USB Bluetooth adaptor uses Realtek chipset. The actual keyboard is an Apple Bluetooth keyboard. It is model A1843 is that makes a difference.
I have no problem using my keyboard once logged in. The issue is logging in after a reboot (when greeted with SDDM). To login, I just connect a wire, but I would like to be wireless the whole time if possible.
# ========================
# 📶 Bluetooth Configuration
# ========================
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
settings = {
General = {
Name = "tempest"; # Used my pc's name
ControllerMode = "dual";
FastConnectable = "true";
Experimental = "true";
};
Policy = { AutoEnable = "true"; };
# 1 is enabled and is enabled by default
LE = { EnableAdvMonInterleaveScan = "1"; };
};
};
# Enable the Bluetooth service (systemd bluetooth service)
systemd.services.bluetooth = {
enable = true;
description = "Bluetooth service";
wantedBy = [ "basic.target" ]; # Start Bluetooth very early in the boot process
after = [ "sysinit.target" ]; # Bluetooth should be started after the system initialization
before = [ "network.target" "multi-user.target" "graphical.target" ]; # Start Bluetooth before networking, multi-user, and graphical services
};
I have not tested it without my little changes that make sure Bluetooth loads first. But seeing how persistent SDDM in the past was too loading, and since it works, I’ll use it like this (as above).
I am marking your post as the solution. – Thank you!