Bluetooth keyboard and mouse slow to connect

Fresh install of Manjaro and my bluetooth mouse and keyboard do connect on the login screen, but it can take 30+ seconds. I’ve got a Logitech M720 mouse and a Logitech K850 keyboard and both or either will struggle to connect once I get to the login screen - very occasionally I’ll get lucky and they’ll both just connect instantly. I did not have this problem on an old Ubuntu install.

What I see:

  1. Boot computer (reboot or boot from off, doesn’t matter)
  2. On login screen bluetooth icon will flicker on/off while indicator on mouse or keyboard flashes to show that it is connecting.
  3. Connection will fail, flickering will stop for a second, then another attempt to connect will begin.
  4. 2 and 3 might repeat 4 or 5 times before a successful connection is made.
  5. Remaining device goes through the same process to eventually pair.

Any suggestions for how to diagnose/fix would be appreciated. Thanks!

(Possibly related, the mouse will occasionally become quite laggy. I’ve tried reducing the conn_min_latency to 6 to fix this, but no result.)

Edit
Realised that I also encounter the same bahaviour when logged in if I turn off the mouse or keyboard and turn back on. Occasionally the bluetooth will stop working altogether. When it’s working, systemctl status bluetooth.service gives

● bluetooth.service - Bluetooth service
     Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: disabled)
     Active: active (running) since Tue 2022-01-18 12:43:28 AEDT; 11s ago
       Docs: man:bluetoothd(8)
   Main PID: 23772 (bluetoothd)
     Status: "Running"
      Tasks: 1 (limit: 76874)
     Memory: 1.5M
        CPU: 18ms
     CGroup: /system.slice/bluetooth.service
             └─23772 /usr/lib/bluetooth/bluetoothd

Jan 18 12:43:28 daniel-desktop bluetoothd[23772]: Starting SDP server
Jan 18 12:43:28 daniel-desktop bluetoothd[23772]: Bluetooth management interface 1.21 initialized
Jan 18 12:43:28 daniel-desktop bluetoothd[23772]: Endpoint registered: sender=:1.169 path=/MediaEndpoint/A2DPSink/sbc
Jan 18 12:43:28 daniel-desktop bluetoothd[23772]: Endpoint registered: sender=:1.169 path=/MediaEndpoint/A2DPSource/sbc
Jan 18 12:43:28 daniel-desktop bluetoothd[23772]: Endpoint registered: sender=:1.169 path=/MediaEndpoint/A2DPSink/sbc_xq_453
Jan 18 12:43:28 daniel-desktop bluetoothd[23772]: Endpoint registered: sender=:1.169 path=/MediaEndpoint/A2DPSource/sbc_xq_4>
Jan 18 12:43:28 daniel-desktop bluetoothd[23772]: Endpoint registered: sender=:1.169 path=/MediaEndpoint/A2DPSink/sbc_xq_512
Jan 18 12:43:28 daniel-desktop bluetoothd[23772]: Endpoint registered: sender=:1.169 path=/MediaEndpoint/A2DPSource/sbc_xq_5>
Jan 18 12:43:28 daniel-desktop bluetoothd[23772]: Endpoint registered: sender=:1.169 path=/MediaEndpoint/A2DPSink/sbc_xq_552
Jan 18 12:43:28 daniel-desktop bluetoothd[23772]: Endpoint registered: sender=:1.169 path=/MediaEndpoint/A2DPSource/sbc_xq_5>

If it crashes I get the message

Failed to set mode: Blocked through rfkill (0x12)

I can then restart with

sudo rfkill unblock bluetooth
sudo systemctl restart bluetooth

After restarting the bluetooth I’ve also run into this output from systemctl status bluetooth.service

● bluetooth.service - Bluetooth service
     Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: disabled)
     Active: active (running) since Tue 2022-01-18 12:39:41 AEDT; 1min 11s ago
       Docs: man:bluetoothd(8)
   Main PID: 23432 (bluetoothd)
     Status: "Running"
      Tasks: 1 (limit: 76874)
     Memory: 972.0K
        CPU: 99ms
     CGroup: /system.slice/bluetooth.service
             └─23432 /usr/lib/bluetooth/bluetoothd

Jan 18 12:39:41 daniel-desktop bluetoothd[23432]: Bluetooth management interface 1.21 initialized
Jan 18 12:39:41 daniel-desktop bluetoothd[23432]: Failed to set privacy: Rejected (0x0b)
Jan 18 12:39:42 daniel-desktop bluetoothd[23432]: Endpoint registered: sender=:1.169 path=/MediaEndpoint/A2DPSink/sbc
Jan 18 12:39:42 daniel-desktop bluetoothd[23432]: Endpoint registered: sender=:1.169 path=/MediaEndpoint/A2DPSource/sbc
Jan 18 12:39:42 daniel-desktop bluetoothd[23432]: Endpoint registered: sender=:1.169 path=/MediaEndpoint/A2DPSink/sbc_xq_453
Jan 18 12:39:42 daniel-desktop bluetoothd[23432]: Endpoint registered: sender=:1.169 path=/MediaEndpoint/A2DPSource/sbc_xq_4>
Jan 18 12:39:42 daniel-desktop bluetoothd[23432]: Endpoint registered: sender=:1.169 path=/MediaEndpoint/A2DPSink/sbc_xq_512
Jan 18 12:39:42 daniel-desktop bluetoothd[23432]: Endpoint registered: sender=:1.169 path=/MediaEndpoint/A2DPSource/sbc_xq_5>
Jan 18 12:39:42 daniel-desktop bluetoothd[23432]: Endpoint registered: sender=:1.169 path=/MediaEndpoint/A2DPSink/sbc_xq_552
Jan 18 12:39:42 daniel-desktop bluetoothd[23432]: Endpoint registered: sender=:1.169 path=/MediaEndpoint/A2DPSource/sbc_xq_5>

which can be fixed by restarting again.

Any thoughts?