Reset Nano Every - Toggling RTS and DTR doesn't do it

What signals do I need to send to reset the Nano Every?

I switched a project from an Uno to a Nano Every. I'm using pySerial in Python 3.7. In its FAQ, it says it toggles RTS and DTR when it opens the port. This works fine on the Uno. When I put the Nano Every in, it does not reset. I found an AVRFreaks forum post that says toggling DTR at 1200 baud works. The following code resets the Uno after the sleep, but the Nano Every does nothing.

ser = serial.Serial()
ser.port = 'COM8'
ser.baudrate = 1200

I found a workaround that works for my project: resetting from within the sketch.

Here is a post on this form, and here is a post on Arduino StackExchange.

Note that the method using a digital I/O pin wired to the RESET pin is not advised by the chip manufacturer, Atmel. Also note that a few things do not get reset by these methods.

Here's the snippet I used (#10 on this forum and method 2 on StackExchange):

asm("jmp 0");

The context for this in my project is that I have the PC program and Arduino do a short handshake over serial. If the Arduino receives no response in 5 seconds, it starts over.

That works but the ideal way is to use the WDT as long as you observe the caveats as outlined here .

No experience with the Nano Every. But it's my understanding that it basically works the same as e.g. Leonardo.

In that case, there is no need for DTR or others. Opening the port at 1200 baud and closing it should do the reset.

If you enable 'verbose output during upload' in file -> preferences in the IDE, you can more or less see this. I suspect you will see a line stating something like "Performing reset at 1200 baud" (no board at hand to test).
You can test this with a terminal program (e.g. realterm under windows).

A bit late to the party, I'm afraid, but I thought I'd add this. Since the Nano Every uses a MegaAvr, there's a program-accessible cold-start reset in the chip. You'd use it like this:

CPU_CCP = CCP_IOREG_gc; // take off the safety
RSTCTRL.SWRR = RSTCTRL_SWRE_bm; // perform the reset

Unlike asm ("jmp 0") or toggling the serial wire, this is a true cold-start, taking the chip itself and all its on-board peripherals through a complete reset, just like the watchdog does. But unlike the watchdog, it happens instantly.

IMHO, this is probably the best way to reset the chip.

(The only thing it doesn't do is activate the reset pin on the board, so you can't use it to reset peripherals as you would from the reset button).

Hope this helps.