It seems that the Keychron firmware needs to have a very specific sequence of actions in order for bluetooth to work.

This is how it should be in the exact order via the bluetooth manager on linux :

  • Remove the keyboard from known bluetooth devices if it's there.
  • Hold Fn+[1-3] to start pairing with the keyboard
  • In blueman-manager press "Search" (or type scan on in bluetoothctl)
  • DO NOT CONNECT THE DEVICE, pair it instead. Right click on device in blueman-manager and select "Pair" (or type pair <mac> in bluetoothctl)
  • Pairing takes a couple of seconds after which keyboard disconnects. Wait until it fully disconnects
  • Now, connect the keyboard. Double click it in blueman-manager (or connect <mac> in bluetootctl)
  • After keyboard is connected, make it "trusted". Right click the device in blueman-manager and select "Trusted" (or trust <mac> in bluetoothctl)