Skip to content

Hermes v1.2 — watch, link health, break, script replay

Choose a tag to compare

@at0m-b0mb at0m-b0mb released this 20 Jul 15:35
· 1 commit to main since this release

Five additions, all aimed at the live session — the part of the workflow earlier versions still left you doing by hand.

Drop hermes.fap onto your Flipper at SD Card / apps / GPIO /, then open Apps → GPIO → Hermes.

Watch for a string, and look away

A slow boot is a bad thing to babysit. Ctrl palette → Watch for… arms a string; when it appears in the stream, the Flipper buzzes and flashes — so you can set login: (or Password, or a panic string you are hunting) and go do something else.

An armed watch shows as an inverted strip along the bottom with a live hit count, so you can confirm at a glance it is live. Matching is case-insensitive and works even when the pattern straddles two DMA chunks or is wrapped in colour codes — it watches the raw stream, not the cooked screen. The matcher is KMP with a precomputed failure table, unit-tested against overlaps and byte-at-a-time delivery.

Link health

The console status bar now shows ERR n — hardware framing, parity and noise errors counted since the link opened. A count that climbs with the traffic is the surest sign the framing is wrong even though the rate is right. (Overruns stay excluded — those are the Flipper being slow, not the line being wrong.)

Send break

Some bootloaders, and the Linux magic SysRq, listen for a UART break — the line held low past the end of a frame. That is a deliberate framing violation, so it cannot be sent as a byte. Ctrl palette → Send break takes the TX pin off the UART, holds it low by hand for 25 ms, and hands it back idle-high, without disturbing RX.

Script replay

Ctrl palette → Run script… picks a .txt off the SD card and sends it line by line — a login, a set of U-Boot commands, a recovery sequence you would otherwise peck out one Flipper-keyboard character at a time. Lines are paced ~250 ms apart, blank lines and # comments are skipped, and playback runs off the UI tick so the target replies keep scrolling in between. Progress shows as SCRIPT n/m. A commented example_login.txt is in the repo to copy across and adapt.

Notes

None of these block the GUI thread — they run off the UI tick or a brief bounded hold, so the boot log keeps rendering throughout. An armed watch shrinks the terminal from six rows to five to make room for its strip; the terminal genuinely gives up the row rather than being drawn over.

GND first, always. 3.3V logic only. RS-232 swings ±12V and will destroy your Flipper — use a MAX3232. Detection releases the TX pin, and the console only transmits what you ask it to. For your own boards, or ones you are authorised to test.

Verified

Release API 87.1 and dev API 88.0 both green in CI, alongside two host test suites (the autobaud fit and the trigger matcher) under ASan/UBSan.