Skip to main content

In the wizard

Text fields validate as you type. Enum fields are arrow-key choices, so you can’t misspell one.

While running

Pausing stops transmission but doesn’t bank rate credit, so resuming never releases a burst. And an unlimited rate stays unlimited under +/-, since scaling it would silently change which limit binds. Limits also clamp at 1, so repeated - can never reach zero, which would mean “unlimited”.

After a run

r re-resolves the next-hop MAC, which is what you want if the far end has moved. It skips the review screen, but not a confirmation that’s genuinely needed. Because the XDP program stays attached, r restarts in about two seconds instead of waiting out another link bounce.

Reading the dashboard

The interface line reports what the kernel actually granted, not what was requested: native versus generic, zero-copy versus copy. It also tells you whether this run reused an existing attachment (XDP already attached) or paid for a new one (link back in 8.4s). Rates sit at the top of each counter column because they’re what you watch. Totals sit below. The sparkline shows the last 30-ish seconds, newest on the right. TX and RX share one scale, so a receiver taking a tenth of the traffic looks obviously different from one keeping up. A zero value draws · rather than a block, so “nothing happened” is visually distinct from “a trickle”. On a short terminal the graph is dropped rather than the footer.

Saved settings

Wireblast remembers what you ran, so the next sudo wireblast starts prefilled. Set $WIREBLAST_HOME to move them. Both are written atomically, and a corrupt or unreadable file just means “no history” rather than an error. When they’re written: every time a run starts from the TUI. --no-tui neither reads nor writes them, so scripted runs depend only on their flags. Flags win. Saved settings prefill; any flag you actually passed overrides. A value that merely equals its default doesn’t count as a choice, only flags you typed. Clear them with:

What is deliberately not remembered

Consent is never remembered. --yes and --allow-match-all are always dropped, and a saved --rx-mode all is downgraded to none.Carrying a previous “yes” forward is exactly what those confirmations exist to prevent. And a later, unrelated run silently arriving with “take every packet from the kernel” already selected is a surprise nobody wants. Narrower receive modes are useful to remember, and are kept.
--no-tui and --start aren’t remembered either, since they’re about how you launched it, not what you ran. Neither is the graph mode: it’s a display preference, not part of the run.

The help overlay

? from anywhere shows the keys, plus a short explanation of L1 and L2 and a few things worth knowing:
  • --packet-size is the whole Ethernet frame, including the 4-byte FCS.
  • Rates are aggregate across every queue, not per queue.
  • Transmit-only is the default: nothing is taken away from the kernel.
  • The two graph rows share one scale, so TX and RX can be compared directly.
  • The XDP program stays attached between runs, so r restarts instantly. It’s reattached only if you change the interface, queue count or receive mode, and detached when you quit.