It seems that Keychron firmware needs to have 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)