RV3028 BreakoutRTC - Pico 2W + Breakout Garden - device not recognised

Problem: RV3028 RTC Breakout not recognised in Breakout Garden (BG) with Pico 2W and latest standard Pimoroni firmware. All new components purchased August 2026.

Checks: RV3028 shows up in an i2c.scan() at address 0x52 (82). AI generated test code works with the RV3028; module tested in other BG I2C slots and on another BG, none work.

Search: an internet search suggested that the Pimoroni BreakoutRTC module may be supporting an earlier version of the RTC chip on a different I2C address

Question: Has any one else encountered the same problem, and is there a Pimoroni fix?

Yes, I purchased two RV3028 RTC Breakout boards in the birthday sale and both of them show up in an i2c scan at address 0x52, but neither of them is found when I try to initialise them using the Micropython version of set_time.py.

I also have some older RV3028 breakout boards which work fine on the same i2c address.

I sent an enquiry to Pimoroni Support yesterday and received an acknowledgement, but no further response yet.

I have an older RV3028 plugged into a Pico Breakout Garden Base.

import machine
sda=machine.Pin(4) #20 Explorer 4 Breakout
scl=machine.Pin(5) #21 Explorer 5 Breakout
i2c=machine.I2C(0,sda=sda, scl=scl, freq=400000)
 
print('Scan i2c bus...')
devices = i2c.scan()
 
if len(devices) == 0:
  print("No i2c device !")
else:
  print('i2c devices found:',len(devices))
 
  for device in devices:  
    print("Decimal address: ",device," | Hex address: ",hex(device))

gets me

MPY: soft reboot
Scan i2c bus...
i2c devices found: 1
Decimal address:  82  | Hex address:  0x52

And

# This example grabs the time/date from your Pico's RTC and uses it to set the time on your RV3028 RTC breakout
# Your Pico/RP2040 board will only know the correct time if you're running this script through Thonny!

from pimoroni_i2c import PimoroniI2C
from breakout_rtc import BreakoutRTC
import machine

PINS_BREAKOUT_GARDEN = {"sda": 4, "scl": 5}  # i2c pins 4, 5 for Breakout Garden
PINS_PICO_EXPLORER = {"sda": 20, "scl": 21}  # Default i2c pins for Pico Explorer

rtcpico = machine.RTC()
i2c = PimoroniI2C(**PINS_BREAKOUT_GARDEN)
rtcbreakout = BreakoutRTC(i2c)

# this sets up the battery switching mode on your breakout
rtcbreakout.setup()

print(f"Getting time from Pico RTC/Thonny: {rtcpico.datetime()}")
year, month, day, weekday, hour, minute, second, microsecond = rtcpico.datetime()

print("Setting the breakout RTC!")
rtcbreakout.set_time(second, minute, hour, weekday, day, month, year)

print(f"New breakout time: {rtcbreakout.string_date()} {rtcbreakout.string_time()}")


gets me

MPY: soft reboot
Getting time from Pico RTC/Thonny: (2026, 8, 5, 2, 8, 3, 41, 0)
Setting the breakout RTC!
New breakout time: 05/08/2026 08:03:41

My Pico 2W was flashed with Pimoroni’s
rpi_pico2_w-v1.26.1-micropython.uf2

The current set time file is looking for address 52.
My set time is using
i2c = PimoroniI2C(**PINS_BREAKOUT_GARDEN)
I’d double check that your’s is too.

I’ve just tried a new board and I’m getting the same - will do some digging!

If you have an affected board and still have the packaging please could you let me know the batch number? Close up photos of the board might be helpful too.

Thanks, Hel.

I’m not sure which the batch number is, but there is a barcode that says 0-606034-879188 and little round labels that say 892 on one and 893 on the other.

Round labels are the batch ones, thanks!

I’m having trouble getting photos off my camera, and my phone camera is not good enough, but the numbers on the 3028 chip are:

M609C4 3028

in case that helps.

Thanks!

I think I’ve figured it out - it’s a problem specific to our C++/MicroPython driver so didn’t show up on our tests as production test breakouts using big Raspberry Pis.

Turns out newer RV3028 chips have a different hardware identification number (0x44 instead of 0x33) so we’ll need to update the driver to accommodate this.

I created an issue here if you want to follow it: RV3028: `BreakoutRTC: breakout not found when initialising` · Issue #1135 · pimoroni/pimoroni-pico · GitHub
and some fixed builds here (just RP2040 boards at the moment):
rv3028: add new chip ID/version · pimoroni/pimoroni-pico@73bfb7f · GitHub

My ‘faulty’ unit is batch number 893, purchased 3/8/26

Excellent, thanks very much, Hel.

I will be waiting for the Pico Plus 2W driver. Can you let us know how to install the driver when it becomes available, please.

It will be included in a new uf2 file that you flash to your Pico 2W.
And it will likely show up here.

I think team software are hoping for an updated version of MicroPython to drop before they do a new release, but you should now be able to download a pre-release RP2350 build with the RV3028 fix in from here.

(I think you’ll need to be logged in with a Github account to see the download links).

Thanks very much @hel and @alphanumeric. I’ll give the new version a try shortly.

I worked around my original problem by downloading the new 2040 picow uf2, once I realised I had to be logged in to Github before I could see it, and flashed it on to an old I75W. Then I swapped an old RV3028 from the I75W with a new one, and it worked fine.

Oops, tagging @Vortrax as well - apologies, I’d missed it was your post originally!

Fixed RP2040 builds are available here and RP2350 builds here.