Bluetooth support for Librem 5

HKS = Hardware Kill-Switch (the physical toggles on the side of the phone; one of them controls Wi-Fi and Bluetooth.)

1 Like

:stuck_out_tongue_winking_eye: arhg…anyway it doesn’t work. I have all the 3 switche in on position. And in the setting it doesn’t allow me to change the icon to ‘on’ also becasue shows ‘No Bluetooth found’

Take same screenshot BUT now with all HKS off? I need to see if Phosh it detecting h.k.s on off.
So the WLAN(wifi) it working? just the WPAN(bt) not?

HI Carlos, problem solved and I’m an idiot’. Someone already wrote to support an wrote above in the thread how to fix it. I didn’t see it.
Repeated below
run these commands
(one by one) in terminal:

first command:


second command:

sudo mv RS9116_NLINK_WLAN_BT_IMAGE.rps /lib/firmware

reboot the phone.

…if that helped. If yes, you can later safely delete this
firmware with this command:

sudo rm /lib/firmware/RS9116_NLINK_WLAN_BT_IMAGE.rps


Yes, exactly.

but you had to download some non-free firmware!

1 Like

I just tried the recommended commands from MV71 and it worked! When PureOS restarted, Bluetooth on the Librem 5 immediately activated itself. So I tried to pair it with my Wileyfox Android and this was also successful. Finally I tried to transfer two files, .jpg and .pdf from Librem 5 to Wileyfox and again it worked. Many thanks to those who helped me.

Running these commands does not help me. I still see direct firmware load failed with error -2 in dmesg, and no bluetooth… Any ideas?

…it seems you are right… Why did they not say me this?

  1. First here, my SOLUTION for Byzantium (and Amber) to the problem with BT
    (tested on 3 different Librem 5 with different out of the box BT problems):
    The file RS9116_NLINK_WLAN_BT_IMAGE.rps we find indicated in the forum is the
    newest firmware version of the repo (now the, but does not
    really fit the Librem 5. I had to find the working version, for me the
    1.2.20. So :
    It is a bit like Bluetooth support for Librem 5 but I give here more details about how to and why it should work.
  • download the repository OR
  • copy and rename the chosen version (for me the 1.2.20) to
    RS9116_NLINK_WLAN_BT_IMAGE.rps in the folder /lib/firmware (should
    Note that has only this version in the repository…
  • check with sudo vi /etc/modprobe.d/librem5-devkit.conf
  • For firmware below version 2.x., then for our “1.2.20”, you have to
    find twice dev_oper_mod= 13, not 5. 5 only fits firmware version
    from 2.x.
  • reboot and test. It should work immediately or not. If not, try another
    file (do not forget to change the dev_oper_mod according to the
    firmware version! you’ve chosen)
  • on reboot and BT initialization, the file gets flashed to hardware, and deleted
    from /lib/firmware. This looks to be normal.
  • Controlling the firmware install with sudo dmesg | grep redpine, we
    must read only once ''FW Version : version " and “operating mod : 13 (WI-FI STA + BT DUAL”, and no errors (except “Failed to open file RS9116…rps”, that is normal because it is only done on manual firmware change)
  1. Second, HOW I PROCEEDED, except the hours/days of searching a solutioon:
    I own 3 librem 5 Evergreen, bought at purism, and received in two deliveries: 2 end of June 2021, and one more in October 2021) with 3 different out of the box BT problems, so I could verify the solution here, which I did not find complete on this forum:

I encountered following problems :

With pre-installed Amber on 2 different L5, named as L5-1 and L5-2 here; received together in June 2021) :

  • state 1: out of the box, everything was fine for connecting a BT mouse and a
    keyboard (L5-1), OR not working (L5-2 : bluetooth icon could be set on or off, but that was all)
  • state 2, after a certain update : not working any more (L5-1) : Phone crashes (shutdown) after bluetooth connection to device, OR still not working (L5-2)
  • state 3, through manual staged amber update : solved L5-1 OR still not working (L5-2).
  • state 4: through normal later amber update : L5-1 is still working, the L5-2 still not.

With Byzantium (the BT nightmare), 3 errors cases :

  1. L5-3 (received in October 2021 had pre-installed Byzantium on it) : BT icon was not responding to click, always turned off position in the notification panel, and in the menu : grey switch off not reacting to click. (!!!)
  2. L5-1 and L5-2 : after flashing Byzantium, BT icon is switchable, but not searching., not starting.
    searching wheel in BT settings, it turns without finding my mouse/keyoard not
    working any more (with my mouse and keyboard). Did all things from forums without success (Bluetooth : no keyboard, no mouse recognized) and gave up.
  3. After reflashing firmware with the indicated file in the forum (i.e the latest firmware version) or full reinstalling the driver (see below) : L5-2 got a change : : BT was starting but not finding mouse/keyboard (searching turning wheel), but connecting my android phone and other desktop computer without problem (!).
  • What did not work:
    • reflashing Amber or Byzantium, Back to Amber, the BT did not work any more
    • copying the firmwarre file in /lib/firmware, as described in the
    • changing dev_oper_mod to 5 or 13, and reverse
    • reinstalling redpine firmware as described in
    • Controlling the firmware with sudo dmesg | grep redpine gave me a bit understanding till i found the solution with the good file (the 1.2.20 firmware version), after trying all versions.
  • with firmware 1.2.20 + dev_oper_mod=13, all my devices are connected perfectly

  • with a later firmware + dev_oper_mod=5, can only connect devices like phones or computer

  • depending on the mix between;

    • the preinstalled or flashed pureos image version (brings the file /etc/modprobe.d/librem5-devkit.conf, so the dev_oper_mod to 5 (Byzantium) or 13 (Amber),
    • AND the firmware file .rps that was first flashed by the production of the device through the repo /lib/firmware (depends on the batch of your device and is changed only by a manuall procedure),
    • we get different levels of errors, that we can see with sudo dmesg | grep redpine (see upper the good log)
  • I wonder why purism does not deliver the pureos image with the right file /etc/modprobe.d/librem5-devkit.conf, AND the right file in /lib/firmware that could be flashed on the first restart after flashing or someway else.

I hope that this will work for many of you. I will modify my post if it is needed. Good luck !!!

PS: Wifi was almost always ok from the begiining, but during my tests, I had different bugs with the wifi too like not connecting to network, or not restarting/reconnecting after reboot, or disconnecting after some minutes needing wifi reboot but disconnected again…, but once I solved the BT problems, wifi worked worked like a charm too.


Thanks for the extensive write-up. for me, version 2.5 (with dev_oper_mod=5) works with my Jabra headset. Note, I tried it only in a test setting (i.e. connecting, and then testing the speakers), not in any real-world setting (i.e. placing calls).

However, the actual reason for me to get BT working well, is so that I can connect to the bluetooth in my car, for making calls. However, when connecting, the car asks me to give the same pin as I give in the phone, but the phone doesn’t seem to give me any option to type in any pin. It simply says that it is paired, with the message “connected”, then “disconnected”, and then periodically (every few seconds) tries to connect again.

How would I go about pairing it with the BT (phone profile) device in my car?

1 Like

Try from the newest file and then one to one the older versions. Or reversed, from the 1.2.20 devmod 13. Do not forget to change the devmod from version 2.0… Find all versions in the indicated repo. And let us know wich one works for you.

Thought I’d try out today with oper_mod 13. I couldn’t find infinitime in the bluetooth gui. But using the address and bluetoothctl I got it connected. Also connected my jabre ear buds. Watchmate picks it up and is reporting information properly. Playing music with Amberol and can even skip songs with the watch. The music playback skips like mad though :frowning: Overall though it’s super cool and love having the watch connected to the Librem 5! Would be awesome to see navigation working between them one day too :slight_smile:


With 2.x.x.x. and above, you need to put oper__mod = 5

I did start with oper__mod = 5 but that mode doesn’t use BLE, so it’s unable to connect to my watch. Maybe I’ll play some more with it again and see if that’s still true.

Thanks to know, it is progress with firmware. Does WiFi work correctly even with oper_mod 13?

Seems to. Connected to my wifi. Web works fine. Doesn’t look to be dropping. If you’d like a particular test just let me know and I can try to do it.

1 Like

Since I can not connect to my car’s BT, I checked my L5 and dmesg | grep redpine says I have

[16782.763078] redpine_91x: FW Version :
[16782.763083] redpine_91x: RSI FW Version : 0000.
[16782.763089] redpine_91x: Driver Version : RS9116.NB0.NL.GNU.LNX.OSD.
[16782.763093] redpine_91x: Operating mode : 5 [Wi-Fi STA + BT EDR]
[16782.763097] redpine_91x: Firmware file : RS9116_NLINK_WLAN_BT_IMAGE.rps

I checked the file /etc/modprobe.d/librem5-devkit.conf
and it says dev_oper_mod=5 in two places:

# blacklist mainline driver (rsi):
blacklist rsi_91x
blacklist rsi_sdio
options rsi_91x load_flash_fw=1 feature_bitmap_9116=1 antenna_sel=3
options rsi_sdio dev_oper_mode=5

# blacklist vendor driver (redpine):
# blacklist redpine_91x
# blacklist redpine_sdio

# wlan_rf_power_mode values: 0x00 default, 0x11 medium, 0x22 low power
options redpine_91x dev_oper_mode=5 rsi_zone_enabled=1 antenna_diversity=1 wlan_rf_power_mode=0x00

# blacklist magnetometer as long as we don't use it
blacklist st_magn
blacklist st_magn_i2c
blacklist st_magn_spi

What is better to do? Change the opmode to 13 or switch to ?

I tried all versions, with dev_oper_mod=5 and dev_opermod=13. The latest version, works but only for bluetooth audio. None of the versions with neither of the oper_mods can connect to my car with the phone profile. Any ideas on how I can proceed?

I tried to flash the 2.51.11 version but flashing fails. So I am stuck with 1.2.20. The messages in dmesg of the failure to flash are:

[ 14.086724] redpine_91x: rsi_probe: ***** 9116 Module *****
[ 14.086841] redpine_91x: redpine_hal_device_init: oper_mode = 13, coex_mode = 2
[ 14.088018] redpine_91x: Received Board Version Number: 10
[ 14.089084] redpine_91x: rsi_load_firmware: Loading file RS9116_NLINK_WLAN_BT_IMAGE.rps
[ 14.090634] redpine_91x: FW Length = 82051 bytes
[ 14.090643] redpine_91x: ================================================
[ 14.090647] redpine_91x: ================ RSI Version Info ==============
[ 14.090650] redpine_91x: ================================================
[ 14.090653] redpine_91x: FW Version :
[ 14.090659] redpine_91x: RSI FW Version : 6f62.6e.65.3b.7261
[ 14.090665] redpine_91x: Driver Version : RS9116.NB0.NL.GNU.LNX.OSD.
[ 14.090668] redpine_91x: Operating mode : 13 [Wi-Fi STA + BT DUAL]
[ 14.090673] redpine_91x: Firmware file : RS9116_NLINK_WLAN_BT_IMAGE.rps
[ 14.090677] redpine_91x: ================================================
[ 14.269639] redpine_91x: device firmware doesn’t match proceed to upgrade …
[ 14.269659] redpine_91x: *** rsi_check_crc failed - will try reflash ***
[ 14.285046] redpine_91x: Burn Command Pass… Upgrading the firmware
[ 14.285054] redpine_91x: auto_fw_upgrade: Flash Start Address is not multiple of 4K
[ 14.285059] redpine_91x: Firmware upgrade failed - attempt RAM load
[ 14.285062] redpine_91x: Ram file magic 0x3a2f size 81987
[ 14.285067] redpine_91x: Bad ram FW magic
[ 14.285070] redpine_91x: ##### Firmware loading failed #####
[ 14.285097] redpine_91x: redpine_hal_device_init: Failed to load TA instructions
[ 14.285102] redpine_91x: rsi_probe: Failed in device init
[ 20.451005] redpine_91x: redpine_set_clr_tx_intention,357: Wait event failed
[ 20.451035] redpine_91x: rsi_tx_scheduler_thread,628: Failed to get tx_access
[ 26.590535] redpine_91x: redpine_set_clr_tx_intention,357: Wait event failed
[ 26.590571] redpine_91x: rsi_coex_scheduler_thread,112: Failed to get tx_access
[ 26.590632] redpine_91x: rsi_probe: Failed in probe…Exiting