Pi Zero 2W + Notecarrier-Pi HAT — Failed to reset Notecard on Raspbian Trixie

  1. SKU: NOTE-WBNAN

  2. OS: Raspbian Trixie 32-bit

    here are the All settings in our firmware/config.txt based on our debugging searches.

    [all]
    enable_uart=0
    dtoverlay=imx219
    dtoverlay=disable-bt
    dtparam=i2c_arm=on,i2c_arm_baudrate=100000
    dtoverlay=i2c-gpio,bus=3,i2c_gpio_sda=2,i2c_gpio_scl=3

    The notecard works fine via USB playground but we cannot get past the reset

    here is our script with the UID removed

    test script used:
    import notecard
    from notecard import hub, note
    from periphery import I2C

    productUID = “”
    port = I2C(“/dev/i2c-1”)
    nCard = notecard.OpenI2C(port, 0, 0, debug=True)

    rsp = hub.set(nCard, product=productUID, mode=“continuous”)
    print(“hub.set:”, rsp)

    rsp = note.add(nCard, file=“test.qo”, body={“test”: “hello from pi”})
    print(“note.add:”, rsp)

    script return:
    Resetting Notecard I2C communications.
    [Errno 110] I2C transfer: Connection timed out
    Notecard not responding to newline during reset.
    Retrying reset…
    [Errno 110] I2C transfer: Connection timed out
    [Errno 110] I2C transfer: Connection timed out
    [Errno 110] I2C transfer: Connection timed out
    [Errno 110] I2C transfer: Connection timed out
    [Errno 110] I2C transfer: Connection timed out
    [Errno 110] I2C transfer: Connection timed out
    [Errno 110] I2C transfer: Connection timed out
    [Errno 110] I2C transfer: Connection timed out
    [Errno 110] I2C transfer: Connection timed out
    Traceback (most recent call last):
    File “/home/rpi_rem-admin/scripts/test_notecard.py”, line 7, in
    nCard = notecard.OpenI2C(port, 0, 0, debug=True)
    File “/home/rpi_rem-admin/.local/lib/python3.13/site-packages/notecard/notecard.py”, line 925, in init
    self.Reset()
    ~~~~~~~~~~^^
    File “/home/rpi_rem-admin/.local/lib/python3.13/site-packages/notecard/notecard.py”, line 833, in Reset
    raise Exception(‘Failed to reset Notecard.’)
    Exception: Failed to reset Notecard.

Hi @marcus_nerdicus and welcome to the Blues community!

I don’t think I would’ve spotted this without some help from AI, but it appears these two lines fight for the same physical pins:

dtparam=i2c_arm=on,i2c_arm_baudrate=100000          ← hardware I2C on GPIO 2/3 (/dev/i2c-1)
dtoverlay=i2c-gpio,bus=3,i2c_gpio_sda=2,i2c_gpio_scl=3   ← bit-banged I2C on the SAME GPIO 2/3

On the Pi Zero 2W, GPIO 2 = SDA1 and GPIO 3 = SCL1. The i2c-gpio overlay grabs those pins for bus 3, which prevents the hardware I2C controller from driving them.

So…it looks like the simplest fix is to drop the i2c-gpio overlay and just use hardware I2C.

Hope that helps!

Rob

Rob,

Thank you for the quick response. Very much appreciated.

I removed the i2c-gpio overlay as suggested.

Config is now clean with just dtparam=i2c_arm=on,i2c_arm_baudrate=100000.

However, back to the … Notecard not responding to newline and Errno 110 (Connection timed out) on /dev/i2c-1 — same error as before. This appears to be the Pi Zero hardware I2C clock-stretching issue. Tried my test script with and without sudo — same result.

What is the recommended fix for clock-stretching with Notecarrier-Pi HAT on Pi Zero 2W running Trixie?

Thanks again,
Mark

Hi @marcus_nerdicus,

In this scenario I always default to using UART instead of I2C. It just works and you avoid the clock-stretching madness. If you want to try this, it’s pretty simple:

  1. Turn your Notecarrier Pi over and toggle the SERIAL TXRX dip switch to ON (and make sure UART is enabled on your Pi of course).
  2. Follow this example for how to use UART in place of I2C with note-python.

Thanks,
Rob

Rob,

I did try the serial route early on with no luck. However, I will try again using the example you provided. Thanks again for the quick responses to my post.

Mark