Release highlights
What is new in 6.6.8
Features
- Two editions, SPU Free and SPU Pro, and no more Pro trial: A direct download is SPU Free from its first launch, with no 30-day Pro trial, and SPU Free has no time limit. A trial still running when you upgrade to this version carries on until 30 days after installation, then SPU returns to SPU Free. SPU Pro comes from a purchase: a license key (personal or enterprise, for a term) or a Mac App Store subscription
- Multiple connections, bridges and settings sync are free: Adding connections, bridging ports, opening projects with several ports or bridges and account settings sync no longer need SPU Pro. The other Pro features become allowances: SPU Free has an allowance each time SPU starts, says so once when it is used up (buy, enter a license key, or not now) and starts again the next time SPU starts; receiving data is never affected
- Free and Pro (Modbus, file transfer, send history): The Modbus frame builder inserts and copies 5 frames in all each time SPU starts; X/YMODEM makes 3 transfers each time SPU starts, of files up to 128 KB each, sending or receiving (YMODEM refuses a larger file by its header, XMODEM stops past the limit and keeps what arrived as a
.partial), and a transfer that fails its handshake or moves no data does not count; send history keeps the latest 10 entries and 1 KB per port (SPU Pro: 1,000 entries and 100 KB), and older entries go to an archive rather than being deleted, merge back when SPU Pro arrives and can be exported as text; a sequence's Repeat, until stopped included, makes at most 3 passes in Free - SPU Free usage in the status bar: SPU Free in the status bar lists how much of each allowance this launch has used and has left. When an allowance on the receiving side (auto reply, plot, decoding, script time) runs out, one combined non-modal notice bar says so without interrupting. The status bar warns 7 days before an SPU Pro license expires, and once it has, one note says which features are back to allowances
- Auto reply: let SPU play the device: Tools > Auto Reply... (or the receive view's context menu) gives a port rules that answer matching data by themselves, so host software can be developed with no device at hand —
AT+VER?answered with+VER:1.2.0, a Modbus 03 request with a frame of registers. Patterns are text (with\r\nand\xHHescapes), hex (??for any byte), wildcard or regex, and match across split reads; a TCP server or UDP port matches each client apart and answers only the one that asked. A reply is text or hex, with an optional checksum and delay; an empty reply swallows the match, a port-wide Play Dead switch keeps matching and counting but sends nothing, and each rule can answer only every Nth time, drop a random share or stop after a number of matches. The editor's Try It box shows which rule a pasted input hits and the bytes it would send; a badge at the top of the receive view shows the state and opens the editor. Rules are saved with the.spu, and no reply is inserted during a file transfer - Free and Pro (auto reply): Free runs the first 3 enabled rules of each port and sends 10 replies in all each time SPU starts, then pauses replying while receiving carries on; SPU Pro has no limit
- Remote serial port to local TCP server: Remote Serial Port to Local TCP Server... in the Cloud menu and the Live Sync popup serves an RFC 2217 client or Live Relay port as a TCP server on this computer, so other programs and virtual COM drivers can use the remote serial port. By default it passes RFC 2217 through: a client's baud rate, data size, parity, stop bits, flow control and DTR / RTS / Break go to the remote port as they are, and the remote's answers and modem lines come back; plain TCP is an option. Suggested ports start at 3000; other computers may connect by default (addresses can be restricted), one client at a time
- Check for updates: SPU checks for a newer release once in the background after it starts and says so in the status bar; Help > Check for Updates... checks any time. Mac App Store and Microsoft Store builds are updated by their stores and do not show it
- Escape sequences in the send box: With Escape Sequences ticked in Settings > Send, text can carry control bytes as
\r\n\t\0\e\xHH\\and so on;\xHHis that byte as it is, not passed through the send encoding. A malformed escape refuses the whole frame with the reason in the status bar, never guessing a byte. Off by default; saved with projects and settings sync - Command library and command panel: Keep everyday commands in a library, grouped, as buttons on the command panel on the right of the window (Tools > Command Library..., View > Command Panel); a click sends to the focused connection, and a command can have a shortcut such as Ctrl+1 that works anywhere in the window. A command is text (always reading
\r\n\xHHescapes) or hex (parsed strictly: a typo is an error, never a silent00), with its own line ending (text only) and checksum or the connection's send settings; the editor shows the bytes it will send. The library belongs to the project: it is saved with the.spu; with no project open it is kept on this computer, File > New starts from it, and opening someone else's project never overwrites it. The panel starts hidden and opens by itself the first time commands are added. The command panel is complete in Free - Sequences: send, wait, check the reply: Build a sequence in the library from Send, Wait, Expect, Label and Repeat steps and run it on the focused connection with one click. Expect uses auto reply's text, hex (
??for any byte), wildcard and regex matching over the data received since the last Send, and a match uses up the bytes it covers; a timeout fails the run, or is recorded and the run goes on. Repeat goes back to a label for N passes in all or until stopped. The whole sequence is checked before its first byte goes out, naming the step that is wrong. While it runs, a strip above the receive view shows the progress with a Stop button; at the end it keeps the verdict — passed, failed at step N and why, or stopped at step N — and each Expect's result is noted in the receive view. Closing the connection or starting a file transfer stops a sequence .spucmdcommand files: Export the whole library as one file for a colleague or a customer; importing merges it, numbering any name already in use- Real-time plot: Draw the numbers a device prints as live curves — for motor tuning, sensor calibration and contest boards (Tools > Plot, or Plot in the receive view's context menu). The plot sits above the receive view and can pop out into its own window. Three formats: Text (one sample per line, separated by commas, spaces or tabs, reading VOFA+ FireWater's
prefix:1,2,3and the Arduino Serial Plotter'stemp:21.5 hum:40, whose labels name the channels; ordinary log lines in between are ignored), VOFA+ JustFloat (little-endian floats with the00 00 80 7Ftail, resynchronising after lost bytes) and a regular expression (named groups name the channels). The horizontal axis counts samples or arrival time; the wheel zooms, dragging pans and pauses, a double click returns to live, and hovering reads every channel. The legend is a statistics table — last, mean, min, max, peak-to-peak and standard deviation over what is in view — where channels are hidden and renamed. Export to CSV (with a BOM, so Excel opens non-ASCII channel names) and PNG; A/B measuring cursors read the differences and 1/dt. Tens of thousands of points stay smooth and spikes are never thinned away; nothing is parsed while the plot is closed. Settings are saved per port in the.spu - Selection export and session export: Select data in the receive view and use Copy Selection As in its context menu for a C array (
const uint8_t name[] = {...};with a length macro orsizeofcomment and a source comment, ready to compile), a hex dump (offset, hex and ASCII) or hex bytes; Save Selection As... writes a.c,.txtor.binfile, with the array name, bytes per line and length style remembered. What is exported is the bytes behind the selection, not the text on screen: byte-exact in Hex view, exact for ASCII and UTF-8 in text view, and whole frames for other encodings, which the status bar says. File > Export Session... (or the receive view's context menu) writes what the focused port, or every port merged in time order, sent and received this session as CSV (with a BOM for Excel and a guard against formula injection), JSON Lines (for scripts and, later, replay) or text, optionally only what came after the last Clear. The session record takes every byte where it is sent and received, so PAUSE, the display format and Clear do not affect it and a session can be exported even when logging was off; each port keeps 2 to 8 MB, 32 MB in all at most. File > Export Sequence Report... saves the focused port's recent sequence runs step by step as a table or JSON - Diagnostic pack: Help > Export Diagnostic Pack... puts what support needs into one
.zip: app and system versions, the serial port list, Live Sync status, the project (paths under your home folder shown as ~, share and guest names left out), each port's settings and traffic (everything you sent included), sequence reports, bridge settings and the end of their captures, plus a README in English and Chinese and a manifest for programs. It is collected from a whitelist: the licence key, activation data, the account, the machine ID (CID), MAC address, CPU ID and user and computer names never go in, and send history is unchecked by default. Nothing is uploaded: you decide who gets the file - Free and Pro: Free runs 3 sequences per session (per launch of SPU) and the first 5 steps of each (asking before running only those), and can import and run
.spucmdfiles; exporting.spucmdfiles, unlimited runs and unlimited steps need SPU Pro. The plot draws the first 2 channels for 120 seconds per session in Free (then holds its last frame); CSV export and the measuring cursors need SPU Pro. Selection exports and sequence reports are free; Export Session carries the most recent 500 records per port in Free, and a diagnostic pack the most recent 256 KB of data per port with no limit on how often; SPU Pro exports the whole session record - Protocol decode view: A collapsible Frames panel under the receive view (right-click the receive view > Protocol Decode, or View > Protocol Decode Panel) lists the traffic as frames: Modbus RTU, ASCII and TCP are cut into frames with their CRC / LRC checked, requests and responses are paired with the round-trip time, and function codes, exceptions, registers and coils are explained one by one, each register with both its PDU address and its 40001-style reference, so nobody has to do the off-by-one in their head. RTU is framed by its CRC, not by line timing, so reads merged or split by a USB serial adapter or an RTU-over-TCP device server still come out as the right frames; both directions are decoded, and a TCP server or UDP port keeps each client apart. Selecting a row shows its fields, and selecting a field highlights its bytes in the frame's hex strip; the row menu goes to the paired frame, copies the hex, or finds the frame in the receive view (in Hex). The panel starts hidden and decodes nothing while hidden
- Custom frame templates: Tools > Frame Templates... describes a private protocol's frames by header and length field, header and fixed length, delimiter or idle gap, checked by SUM8, XOR8, SUM16 or any algorithm of the CRC calculator (custom parameters included), with fields as 8- to 64-bit signed or unsigned integers, floats, hex, ASCII and bit fields, in four byte orders, scaled and offset, with units, value labels (such as
0=Off;1=On) and conditions (shown only when a given byte has a given value). The editor's test box decodes pasted hex with the same decoder the ports use. Templates are saved with the.spu, and on this computer when no project is open - Export and copy: The frame table exports to CSV, one row per frame or one per field for pivot tables, in UTF-8 with a BOM so Excel opens it with a double click; or select rows in the frame table and press Ctrl+C to paste them into a spreadsheet
- Free and Pro (protocol decode): Free decodes for 120 seconds per session (per launch of SPU, all connections and decoders together; only seconds in which a frame is decoded count, as one second however many frames or ports, so unrecognized bytes do not count; decoding in a replay window is not counted), after which decoding stops and the receive view carries on; it decodes with the first template in the list; editing and testing templates and copying rows are unlimited. Unlimited decoding, every template and CSV export need SPU Pro
- Session recording: File > Record Session... writes what every port in the window sends and receives, merged in time order, into one
.spulogfile until you stop — optionally starting with what SPU already holds from this session, so the moment that just went wrong is in it too. It is written every 250 ms, so if SPU or the computer stops unexpectedly at most the last second is lost and the file still opens; by default a new file is started every 100 MB and linked to the last. While recording, the status bar shows a red REC with the length and size, and a click stops it or opens the replay. On site, press F9 to bookmark the moment without any dialog and name it back at the office. A recording is the JSON Lines format of Export Session, so scripts read it too - Session replay: File > Open Recording... replays a
.spulogrecording or an exported.jsonlin its own window, at the pace it was recorded, with no port connected — replayed data never goes to a port, never triggers auto reply and never enters a bridge. Speeds run from 0.25x to 100x and Fastest, and idle gaps longer than 5 seconds are shortened by default (adjustable, or off); the timeline shows where the traffic and bookmarks are, dragging or Ctrl+G goes to any moment, and . and , step one event forward or back. Ports sit side by side, or stacked, and can be hidden; each has its own Hex / text view, timestamps, encodings and find bar, and can open the real-time plot and the protocol decode panel, replayed on the recording's clock. Ctrl+Shift+F, Find in Recording, searches the whole file (text or hex, matching across split reads) and goes straight to a moment not yet played. Bookmarks are named, annotated, stepped through with [ and ], and saved back into the recording; for training, go full screen (F11) and loop between two bookmarks. File > Replay This Session replays what SPU holds without exporting it first; Export Range saves a stretch of a recording as JSON Lines, CSV or text, and F5 reads what a recording still being written has added - Free and Pro (recording and replay): Recording, opening recordings, the timeline, bookmarks and Find in Recording are free, so someone on site can capture a problem and hand it over without buying anything. Free replays the first 10 minutes of each recording (the most recent 10 minutes for Replay This Session), with the rest of the timeline hatched and its bookmarks still shown; SPU Pro replays all of it
- Script automation (Lua): Tools > Scripts... opens the script window for flows that need variables, conditions, loops, arithmetic or binary parsing, written in Lua 5.4 — a flow that only sends, waits and checks replies is a command library sequence, no programming needed. A script is plain sequential code —
sendLine("AT"),expect("OK", 1000),sleep(500)— and the window stays responsive while it waits; even an endless loop can be stopped.expectfails the run on a timeout and names the line, whiletryExpect/tryExpectAnyreturn nil for the script to handle;expectHex(??for any byte),expectRegex(with captures),readandreadLineread replies,string.pack/unpackbuild and parse binary frames,checksum/appendChecksum/verifyChecksumcover SUM8, XOR8 and over 50 preset CRC-8/16/32/64 algorithms (CRC-16/MODBUS, CCITT-FALSE, XMODEM and the CRC-32 variants among them), appending low byte first or high byte first,sendCommandsends a command library command,onReceiveplays a device that answers, andonStopprints a summary when the run ends, stopped or not. The window has an editor with line numbers and syntax colouring, a port picker, Check for syntax errors, and an output area where error lines are clickable and common mistakes — full-width punctuation,!=,elif, an undefined variable — come with a hint (its context menu copies it all or saves it as text), plus three examples: an AT command regression, a Modbus RTU slave and a PING/PONG responder; scripts import and export as.luafiles. The library is saved with the.spuproject, and on this computer when no project is open. Scripts run in a sandbox: no files, no network, no programs; the diagnostic pack leaves them out. A run's start, its end and itslog()lines are noted in the port's receive view; closing the connection, losing the link or starting a file transfer stops a script - Free and Pro (scripts): Editing, checking, the examples, import and export and saving with the project are free. Free runs 3 scripts per session (per launch of SPU), each for up to 5 minutes; a run that fails or is stopped within 30 seconds does not count (up to 3 such runs per session), nor does a syntax error. SPU Pro has no limits
- Delete your account: Cloud > Delete Account... opens the account deletion page on alithon.com in your browser (it is in the account center too). Deletion is immediate; license keys stay valid and are released from the account, and orders are kept for the records the law requires
- Device name: Cloud > Device Name... chooses the name your account, Live Console and Live Share show for this computer. The default is the operating system plus the last four characters of its CID (e.g. "Windows · 3F9C") — never the computer's own name
Interface
- Dark mode: View > Appearance follows the system or chooses Light or Dark, taking effect at once; the reminder card, find highlights, the status bar and custom send and receive text colours follow, and a colour that would be unreadable on a dark background gives way to a readable one
- Tabbed layout: View > Tabs puts each connection on a tab of its own, switching back and forth with the split layouts, each keeping its state; the layout is saved with the project
- A Free-and-Pro reminder once a day at most: The registration reminder that came by launch count now appears at most once a day and not in the first 7 days after installation; clicking its advert or Don't Remind Me for 3 Days mutes it for 3 days, and it stays away on a day an allowance notice has already appeared. SPU Pro never sees it
- A license key activated elsewhere: When the same license key is activated on another computer, this one keeps SPU Pro and says so once a day, without a modal box, on the first start of the day
- Two copies sharing one CID: Two copies of SPU running under one device identifier (a second copy on this computer, or a cloned system) take each other's remote commands, so Live Console and Live Relay fail at random; SPU now says so once per run in the info bar and status bar, never a modal, and the headless
spuprints one line to stderr - Live Relay connects sooner: While waiting for a device to report, the picker asks every 2 seconds for about 45 seconds, then stops with an honest message, and keeps the port you selected across refreshes; a device that receives a command goes back to polling every 2 seconds, so
open_relayno longer waits out a 30-second cycle - Modem lines from the local RFC 2217 server: Clients of a local RFC 2217 bridge, the Live Sync RFC 2217 quick share included, now see CTS / DSR / RI / DCD change
- Privacy and online features: The first start asks whether Serial Port Utility may connect to alithon.com and lists what it would send (device identifier, version, operating system, usage counters and the SPU Free allowance counts). Without permission it works offline as SPU Free, a license already activated here keeps working, and sign-in, online license activation, cloud services, the allowance report and the status-bar notices stay offline until you allow them; checking for updates works either way. Help > Privacy and Online Features... changes the choice; turning it off stops the reports, signs this computer out and turns off cloud services here
- Terms at sign-up: Creating an Alithon account in the app asks you to accept the Terms of Service and confirm you have read the Privacy Policy
- The command line asks too:
spu login,-S/--shareand--inviteexplain why and exit with code 5 until online features are allowed;--accept-privacyallows them from the command line. The local terminal and-lneed nothing - License terms: The Windows installer's license terms are bilingual and say that SPU Free has no time limit and that online features need your permission
Fixes
- Live Relay never really negotiated RFC 2217: A Live Relay port's RFC 2217 control bytes never left, so it fell back to plain bytes after 3 seconds and its parameters, DTR / RTS, Break and modem-state subscription never reached the device. Fixed: with "Keep the remote port's own config" cleared, this end's parameters now reach the remote device for the first time, and the device side reports its modem lines
- The RFC 2217 server confirmed a flow control setting with the old value: As an RFC 2217 server, SPU answered a flow control SET with the port's previous value, so pyserial reported
rtsctsrejected by every SPU server; a SET is now confirmed with the requested value and only a query answers with the current one - Four log settings did nothing: Append to file / Overwrite file, Prompt for filename and Start log upon connect in Settings > Log now work: Overwrite replaces the file once each time logging starts, and cancelling the filename prompt does not start logging; older projects read as before (append, no prompt, no automatic start)
- Qt's own buttons and menus were in English in the Chinese interface: Message box buttons, the context menus of text boxes, file dialogs and the like are now in Chinese too
- Data after a coloured program line took its colour: After a coloured program line in the receive view (a file transfer's
-- ... --notes), uncoloured data stayed blue until something coloured came along; it now shows in the view's own colour - Privacy: the report carries only what licensing needs: The report sent at start-up and exit no longer includes the user name, computer name, MAC address, log file path, display and send settings or CPU ID; a newly generated device identifier carries no MAC information (an existing one is kept as it is); the Live Console heartbeat no longer sends the computer name; settings sync no longer records the device name; and a Live Share guest's name no longer defaults to the system user name