External Trigger Wake for Inky Frame 7.3" Spectra6 (2025)

Hello! I’m a big time newbie so sorry if I get the lingo wrong! I’ve got the newest inky frame and I’ve made some changes to main.py and created “custom_photo.py to display images. Everything is working great including sleep timer and wake from front buttons but I can’t get the external trigger to work. I’d really like to use the EXT Trigger feature on the expansion header by attaching my own button accessible from the back.

I’ve troubleshooted the physical button I’d like to use by wiring it to the A0 pin to confirm it’s working on 3.3V (high during button press). I can see the state of that pin in Thonny but not EXT Trigger. Here are my observations when I have the button wired to EXT Trigger:

When Inky Frame has initially been supplied power (via battery) but not gone to sleep yet:

  1. front buttons will trigger main.py and my custom image refresh
  2. EXT trigger does nothing

When Inky Frame is in deep sleep (on battery):

  1. front buttons will trigger a refresh
  2. EXT trigger does nothing
  3. RESET followed by front button press triggers refresh
  4. RESET followed by EXT Trigger does nothing

Thank you for your help!!

The external trigger is connected to a shift register and directly to the power-up hardware. You must have a low-high transition that is long enough high for the system to boot and take over.

When running, you can query the value of the external trigger by reading the shift register. I am not sure if this is exposed in MicroPython. A quick look at the source code tells me only the buttons are exposed.

I’ve done some additional troubleshooting

I wrote a script to read the raw shift register and found my EXT Trigger button is able to reach the shift register. However, there is a mapping bug in the firmware.

Input Actual Bit Firmware Expects
Button A 0 7
Button B 1 6
Button C 2 5
Button D 3 4
Button E 4 3
EXT TRIGGER 6 1

The bit order is reversed. This explains why woken_by_ext_trigger() always returns False when holding by EXT Trigger button — it checks bit 1, but EXT TRIGGER is on bit 6.

However, regardless of the mapping issue I’d think the device would still wake when pressing the EXT Trigger button?

I am not so sure about the bits. pimoroni-pico/drivers/inky73/inky73.hpp at main · pimoroni/pimoroni-pico · GitHub has:

    enum Button : uint8_t {
      BUTTON_A = 1,
      BUTTON_B = 2,
      BUTTON_C = 4,
      BUTTON_D = 8,
      BUTTON_E = 16
    };

so this matches your “Actual Bit” column.

Yes it should, if it holds the value long enough high. From the power-control side of things, the ext-trigger is not treated differently as compared with the normal buttons.

I was looking at the firmware here for “inky frame” inky-frame/modules/inky_frame.py at v1.26.1 · pimoroni/inky-frame · GitHub

Is that the wrong place? I was able to further confirm the mis-mapping by getting a TRUE response from woken_by_ext_trigger() by pressing front button “B”

I think you found the correct place. Very confusing, but it seems they had it right for the old version of the Inky-Frame.

So the next step would be for you to open an issue in the repo. And maybe mail support, since Pimoroni does not really seem to monitor the issues on Github.

1 Like

will do on issue report on repo… but sounds like my main issue with the lack of wake from the button might be hardware related?

I’ve tried holding my EXT button for many seconds but I get no sign of life from the frame. I know the hold is registering 3.3v continuously and confirmed I can see the shift register reflects the button hold for as long as I depress it.

Honestly I don’t have to intentionally hold the front buttons at all and the thing springs to life. So not sure what’s going on with the EXT Trigger. Maybe hardware issue on the board along this path:

Really strange. The ext-trigger should behave the same as the buttons. As soon as the trigger goes high, VSYS_EN is high and the processor boots. At this stage the firmware should set HOLD_VSYS_EN and this would keep power on.

So this is also something to open an issue on.