Ruuvi firmware update fails (GATT timeout)

Ruuvi update fails. It’s an old tag, maybe 2018(?) Two-button B+R procedure to start FW update seems to work, but nRF Connect (iPhone) always claims the tag is disconnected.

Trying the update on an Android tablet + Ruuvi Station app informs us “GATT timeout” after a while.

The firmware does work, as I get sensor readings from the tag, but updating seems impossible.

Without resorting to hardware reprogramming, is there a way to make the update happen? Old device, definitely not covered by warranty any more.

Video of the problem available if you’re interested:

B )

Hello,

On older tags most common reason for failed update is old battery. The update is hard on the battery, so a battery that can tun normal operation might fail on update.

Old tag also require and SDK update, Ruuvi Station app can do it automatically. Alternatively you can update with nRF Connect by using SDK Update package

iPhone is probably in connected mode to RuuviTag, remove that connection.

I’'m on Android 11, similar failure, no avail.

On Ruuvi Station Android app, firmware upgrade simply fails. No explanation given.

On nRF Connect app Android app, similar result with tons of details.
Debug log:

A 11:41:47.456 [DFU] Command object sent (CRC = 67EA5470)
V 11:41:47.456 [DFU] Writing to characteristic 8ec90001-f315-4f60-9fb8-838830daea50
D 11:41:47.456 [DFU] gatt.writeCharacteristic(8ec90001-f315-4f60-9fb8-838830daea50)
D 11:41:53.456 [Callback] Connection state changed with status: 8 and new state: DISCONNECTED (0)
E 11:41:53.456 Error 8 (0x8): GATT CONN TIMEOUT
I 11:41:53.456 Disconnected
E 11:41:53.456 [DFU] Error (0x85): GATT ERROR
D 11:41:53.468 [DFU] gatt.refresh() (hidden)
D 11:41:53.468 [DFU] gatt.disconnect()
D 11:41:53.468 [DFU] gatt.close()
D 11:41:53.468 [DFU] wait(600)
D 11:41:53.485 [Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
D 11:41:53.489 [DFU] [Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
D 11:41:54.060 gatt.close()
D 11:41:54.061 wait(200)
V 11:41:54.262 Connecting to

According to my records, this tag was put into use during 2020. Just to make sure, there is enough oompf in the lithium-ion battery, I replaced the CR2477 with a new one. No change.

My tag has year 2019 in it making it an “old” two-button model with R/B-buttons.

Is there anything else I can attempt?
Sledge hammer? Vodka to suppress the tears of frustration? Competing product?

Vodka is known to help to many different symptoms and sledge hammer will release the old firmware out of device.

Do you know what is the old firmware version (should be possible to read with NFC for example)? Is it working currently without issues?

I think this is the root cause:

Something changed in Android making Bluetooth-connection not work.

The issue you linked is related to iOS code, if you’re using Android we’re looking at something else. It is helpful if you can read the tag firmware version with NFC