Latest stable release

Serial Port Utility 6.6.8

Explore what is new once, then choose the native build for your system.

Windows, macOS and Linux SHA-256 verified

Start locally without an account. Free has no time limit; App Store offers are shown in the app.

Release highlights

What is new in 6.6.8

Current

These release notes apply to every platform build. Download details stay in the platform picker.

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\n and \xHH escapes), 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; \xHH is 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 \xHH escapes) or hex (parsed strictly: a typo is an error, never a silent 00), 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
  • .spucmd command 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,3 and the Arduino Serial Plotter's temp:21.5 hum:40, whose labels name the channels; ordinary log lines in between are ignored), VOFA+ JustFloat (little-endian floats with the 00 00 80 7F tail, 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 or sizeof comment and a source comment, ready to compile), a hex dump (offset, hex and ASCII) or hex bytes; Save Selection As... writes a .c, .txt or .bin file, 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 .spucmd files; exporting .spucmd files, 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 .spulog file 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 .spulog recording or an exported .jsonl in 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. expect fails the run on a timeout and names the line, while tryExpect / tryExpectAny return nil for the script to handle; expectHex (?? for any byte), expectRegex (with captures), read and readLine read replies, string.pack / unpack build and parse binary frames, checksum / appendChecksum / verifyChecksum cover 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, sendCommand sends a command library command, onReceive plays a device that answers, and onStop prints 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 .lua files. The library is saved with the .spu project, 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 its log() 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 spu prints 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_relay no 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/--share and --invite explain why and exit with code 5 until online features are allowed; --accept-privacy allows them from the command line. The local terminal and -l need 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 rtscts rejected 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
Version archive

Previous releases

Choose a platform to review older builds and their release notes.

6.6.7

File
serial_port_utility_667_0916.exe
File size
18.6 MB
SHA-256
12cf48f7b0065dcfbf3677265aa927c4df7a5371f98a97c1ce73180a05def2f5

Features

  • A restricted device is told why, instead of quietly running on: The server can now restrict a machine by device (for instance after a license activated on it was refunded). On the next launch report, the application closes its ports, shows a "Device restricted" dialog with the server's explanation, a contact address and a link to the Terms of Service, and exits when it is dismissed. The verdict is cached on the machine: the next launch asks the server once more (up to 5 seconds) and shows the main window only on an explicit "not restricted"; a refusal or an unreachable server ends in the same dialog, with a hint to connect to the internet and start again if the restriction has been lifted. A machine that was never restricted is untouched, and an unreachable server still lets it through. The App Store build takes no part in this

Interface

  • The registration prompt now explains where Free ends and Pro begins: The direct build's "30-day free trial" window still spoke shareware — "after the trial period you must register the program or remove it from your computer" — which is no longer how the product works: Free stays available when the trial ends. The window is now titled "Free and SPU Pro" and says that direct downloads include a 30-day Pro trial from first launch with Free available afterwards; that Free supports one connection and local logs while Pro unlocks multiple connections, bridges, the Modbus request builder, file transfer and settings sync, with saved project files and logs kept either way; that a Personal license bound to an Alithon account activates the signed-in computers and Enterprise activation follows the seat count; and that Live Sync is available in Free within its cloud traffic limits. The buttons read "Buy SPU Pro" and "Continue trial" or "Continue with Free", whichever applies. The App Store build's subscription note likewise opens by saying that Free basic debugging needs no subscription. The Windows installer's license text says the same

Fixes

  • A colleague signing in was refused an enterprise key once the buyer had bound it: A bound key answered to its owner's sign-in alone, whatever its edition — but an enterprise key is bought as a number of seats for machines that several people sign in to, and the buyer is rarely the one at the keyboard. Once they ticked the binding, a colleague typing the same key got "This license key is bound to a different account", and signing in with their own account at startup wiped the machine's enterprise activation. An enterprise binding now only says who manages the key: it appears in that account's dashboard, seats can be released from there, and colleagues keep activating seats with their own accounts and keep them on sign-out. Only a personal key is its owner's alone. The binding hint in the license window says so for enterprise keys
  • A refunded or disabled license stayed Pro on the machine it was activated on: Once the server disabled a key (refund, administrator action), every launch merely added a "DISABLED LICENSE" warning box; the machine's own license data was left untouched and Pro kept working until the expiry date. A disabled reply now clears the local license the way a sign-out release does, switches to the free edition and warns once; the application keeps running

6.6.6

File
serial_port_utility_666_0902.exe
File size
18.6 MB
SHA-256
78f21be956e64c1eba2c31adff74ac9e985f9eaaa3d672a89607df57b886cc94

Features

  • The App Store build now takes a license key bought on the website: A perpetual license kept unlocking Pro in the App Store build, but there was nowhere to type its key in — a new Mac was a dead end short of switching to the direct download. The subscription dialog now has an Enter License Key entry that opens the same license window as the direct build (minus the buy button, per App Store rules); a key bound to an Alithon account still activates on sign-in and releases on sign-out; and an installed key is checked with the license server at startup for renewals and disabling, exactly as in the direct build
  • Parameter changes reach an open port at once: Editing the baud rate, framing or flow control in the quick settings did nothing to an open serial port — the value was stored for the next open, the status bar kept showing what the port actually ran, and nothing on screen said so. It was the only parameter path in the application that did not take effect immediately (switching ports reopens, an RFC 2217 client pushes SET-BAUDRATE, Live Console reopened). The change now lands on the open port in place, without a close-and-reopen — a reopen drops DTR and resets most dev boards, which is not what "set the baud rate" asked for. A value the driver refuses rolls the accepted ones back too, so the port never runs a mixture; a transfer in progress refuses the change and says why. Live Console and the headless CLI take the same path: on failure the port stays open with its previous parameters instead of disconnecting

Interface

  • Stop bits join the quick-settings drawer: The connection group's default-hidden fields used to be Data Bits and Parity only; Stop Bits (nearly always 1) now stays off the panel out of the box too, still editable in the settings dialog. Anyone who has configured that group's visible fields is untouched
  • The Microsoft Store build puts an icon on the desktop: The Store install used to reach no further than the Start menu. Installing now creates a desktop shortcut (on Windows 10 build 19645 and later; older systems install as before, just without it)

Fixes

  • The Help menu offered the subscription twice in the App Store build: "Subscribe to SPU Pro…" and "SPU Pro Subscription…" opened the same dialog, and read identically while unsubscribed. One entry remains, its label following the subscription state
  • The App Store build called a legacy license a subscription: A perpetual-license holder was told twice over that they had subscribed: the registration button read "Subscribed" and the Help menu "SPU Pro Subscription…" — a subscription they never took out. Both now follow where the entitlement actually comes from — "Licensed" and "SPU Pro License…" — the way the About box already says "SPU Pro (Legacy License)"
  • Leaving serial for a network target never stopped the old session: Switching an open serial port to a network target (Live Relay, RFC 2217, TCP/UDP) in the inline editor closed only the port handle; the session state stayed "running", so the toolbar kept Start greyed and Stop armed while nothing had dialled the new target, and only a manual Stop/Start cleared it. The settings dialog had the same hole one layer down: a mode change adopted the new model without ending the old session, leaking the old transport where Stop could no longer reach it. Both paths now stop the old session first
  • A long PAUSE ate memory, and resuming froze the window: PAUSE diverted every incoming byte into an unbounded buffer — an afternoon of pause on a busy link was an unbounded allocation — and resuming replayed the whole backlog as one giant frame, one decode and one insertion that froze the window for seconds. The pause buffer is now capped at the display buffer size, dropping the oldest bytes so what you un-pause to is the newest; the Rx counter counts at arrival, so the wire statistics never shrink to what survived the cap; and the resume replays in 64 KB frames under a 256 KB-per-tick rendering budget, keeping the window responsive throughout
  • An open find bar pinned the interface under streaming traffic: With the find bar open, every 20 ms display tick that carried data re-scanned the entire receive document — find, filter and highlight each time — and a large document under continuous traffic pinned the GUI. Traffic-driven rescans now coalesce to at most one per 250 ms; typing a keyword, F3, the option boxes, a send echo, stop and clear still refresh at once
  • The license key no longer reaches the log: Checking a license used to print the raw key, its hashes and the signature to standard error along with the rest of the debug output — on macOS, that is the system log. Debug output is now off by default and grouped by module, to be switched on only when something needs looking into; the license lines are gone for good. Start-up also loses the warning about a missing font family, and the 70–80 ms font-alias scan behind it

6.6.5

File
serial_port_utility_665_0826.exe
File size
18.6 MB
SHA-256
aa846fc62838ea93849524fab2871d7acad98e48794df8e54fa746b4050439f7

Features

  • Licenses can belong to an account, so signing in activates the machine: A license key and an Alithon account used to know nothing about each other -- the key knew machine ids, the account knew devices and orders -- so every new machine meant finding the delivery email again. Tick Bind the license to my Alithon account at checkout (on by default for Personal, off for Enterprise) and the key is recorded against the buyer's email; signing in with that address then activates whatever computer you are on, and signing out releases it again. A machine that already has a key is asked once, at its first sign-in, whether to bind it; the License Management dialog carries the same tick. A key binds to one account and cannot be moved afterwards, so every place that offers it says so first and asks for a confirmation
  • Activation now signs you in first: License Management activates through your account, so the server knows who is asking -- which is what lets a key typed there afterwards follow its owner to the next machine. A bound key is no longer accepted by the anonymous endpoint older builds use; those are told to update and sign in
  • The three-transfer limit is gone: A personal key used to allow one activation and three transfers, spent forever -- reinstall Windows four times and the licence was finished. An unbound key now runs on up to three machines at once, and deactivating one gives the slot straight back. A key bound to an account has no device limit at all: it is live only where its owner is signed in
  • Headless machines too: spu login --email you@example.com collects whatever the account is licensed for and activates the box; --bind-license claims the key already installed there for that account
  • Live Sync for every edition: RFC 2217 Server, Live Console, Live Relay and Live Share — and the Remote Serial (RFC 2217) port type — no longer ask for SPU Pro; a free copy uses all of them, and so does a headless spu --invite. What a Pro entitlement changes is the monthly cloud traffic allowance: 10 MB per direction on a free account, 1 GiB with Pro, then purchased traffic packs. The allowance is now enforced — a Live Console or Live Relay session that runs past it stops with quota_exceeded instead of running on. A copy without Pro restores only the RFC 2217 quick shares among its saved bridge links on start-up; the others are kept as saved and come back once Pro does
  • Live Share — share a port with a colleague who has no account: Live Relay used to require both machines on the same account. Now you can mint a time-limited invite code for one open serial port: Cloud > Share Port with a Guest… lets you pick how long it lasts (1/4/12/24 hours, 12 by default), an optional passcode and a label. Your colleague chooses Remote Serial (Live Relay) and pastes the code or link under "Join with an invite code" — no registration, no subscription, no bound device, with the traffic staying on the sharing side. It is independent of Live Relay in both directions. A share ends when the port closes, when Live Console is switched off, on sign-out and on exit; five wrong passcodes burn the code; an expired code admits no new guest but never cuts a session already in progress
  • Live Sync state in the status bar: The status bar's Live Sync cell is only an entry point while nothing is running; the moment something is, it gives the name up for the state itself. Amber Shared means a door is open and nobody has come through it (an RFC 2217 listener, an invite code, Live Console or Live Relay switched on); orange bold In use means somebody is driving one of your ports right now — named outright when there is only one of them, as in "Guest: Ann" or "Remote operator"; red Not listening means an RFC 2217 server never got the TCP port it asked for and the link is not working, which until now was said once, in a status message that scrolled away, and never again. RFC 2217 servers count here for the first time: the bar used to tally only cloud shares and relays, so a local RFC 2217 server showed nowhere in it — not while it stood open, not while a remote client was driving the port. Hovering lists all four peers with their own state (which port, which listening port, which guest, since when); clicking opens a menu whose upper half lists everything running with the way to manage each, and whose lower half is still the four switches
  • Headless machines can mint one too: spu -D /dev/ttyUSB0 --invite prints the code and link, --invite-ttl takes 30m/4h/1d, --invite-passcode-stdin reads a passcode from a pipe, and Ctrl-C revokes the invite on the way out
  • One-click sharing from the status bar — turn a local serial port into an RFC 2217 server: Exposing a port over RFC 2217 used to take three dialogs: spend a grid slot on a TCP Server pane, open Tools > Bridges, then check every field across a five-tab editor against its defaults. The status bar now has a Live Sync entry that offers three choices: share the port as an RFC 2217 server, switch Live Console on or off, or hand it to a guest (Live Share). The RFC 2217 path asks one question — which TCP port to listen on, with a free one suggested — and optionally which addresses or subnets may connect; everything else takes safe defaults. The network end is a listener built into the bridge, so it spends no grid slot and is not bound by the sixteen-port limit; under Tools > Bridges it shows as TCP :2217 (built-in) and can have its port changed, its traffic watched and its link removed like any other
  • Guests in a browser — a colleague with nothing installed: Minting an invite now also says what the code opens in a browser: nothing, view only, view and send, or view, send and set the port's parameters (view only by default); a second switch says whether it still opens a Live Relay in the desktop client, which it does by default. The link lands on a page that says which port it names, whose machine it is on, whether the host is online, whether somebody is already on it and whether a passcode is needed; a name and one click later the guest has a terminal for that one port. Headless, --invite-web and --invite-no-relay choose the same two things. The share dialog and the management view show who is watching from a browser
  • Every guest share in one place: Cloud > Manage Guest Shares… lists the live shares on every machine the account owns, grouped by machine, with the port each code opens and who is on it, and one action: stop it. The list is the server's, not this process's, so a code minted on the laptop in the other room is in it, and ending it here ends it there. It asks only that you are signed in — an owner whose subscription has lapsed can still stop what they started — and it mints nothing

Interface

  • One naming scheme: The status bar's Live Sync entry lists four peers: RFC 2217 Server, Live Console (formerly Cloud Console), Live Relay (formerly Cloud Relay) and Live Share (formerly Remote Assist). The Cloud menu's Cloud Console and Allow Cloud Relay switches and the Remote Serial (Cloud Relay) port type follow suit; nothing about the features, your settings or your account changes
  • The bridge badge can close the bridge: The pale-blue (amber while a client is connected) bridge badge above the receive view gains a close button at its right edge. It is hidden by default and appears after a click on the badge; clicking it removes every bridge link this port is part of and says so in the status bar — noticing that a port is bridged and tearing the bridge down are two separate clicks, so it cannot happen by accident. This is also how a quick share is stopped
  • The status bar shows your username: The account cell at the far right of the status bar used to show the email address you signed in with; it now shows your username — that is what the account is called, and it keeps an address off the screen for anyone looking over your shoulder. The menu it opens and the headless spu login follow suit; the My Account dialog still lists both. An older account with no username still falls back to the email
  • The licence window, rebuilt: The QR code in License Management is gone — it encoded exactly the URL the button beside it already opened, and on a phone that URL dead-ends: the order form hands back a scan-to-pay image, which nobody can scan with the phone they arrived on. It also showed the WeChat code to English users whose language setting had never been touched. The room it leaves goes to the purchase path, which is its own group at last: a separator, "Don't have a license yet?" and a blue Buy a License… button. The dialog opens at 820×520 rather than 606×364 against a layout that asks for 755×481, and the value column stretches with the pane instead of being pinned wider than it, which had bought a horizontal scrollbar over content with nothing to scroll to
  • Purchases go to Alithon's own order pages: Register Now and the purchase button in License Management sent non-Chinese users to the old shareit storefront; they now open the WeChat Pay order page for Chinese and the PayPal one for everyone else
  • Status notices clear themselves, and the account cell opens: A message written to the status bar's left-hand cell used to stay there — "Settings synced" sat through the rest of the session and was rewritten by every scheduled sync — and the cell sat first at zero width, shoving the port status right each time it spoke. Every message now carries a kind (Info, Warning, Error — the colour) and a timeout, and the cell is the bar's elastic middle after the port and traffic cells, so a notice coming or going moves nothing; what does not fit is elided with the whole line on the tooltip. Sync outcomes move to the account they belong to: a scheduled sync that simply worked is silent, and a click on the account cell says who is signed in, when settings last synced, the recent notices newest first, and the account actions
  • Rx and Tx share one cell: The byte counters in the main window's status bar and in each port's own bar are composed into a single cell

Fixes

  • Relay errors never reached the caller: The server reports relay failures (port already in use, device not ready) in the same shape as Live Console errors, and they were all handed to the device agent and dropped, leaving the operator side waiting on an answer already given. They are now routed by the request that asked, so a failure says why immediately
  • A bridged serial port went deaf while nobody was connected: Serving a port over RFC 2217 (or bridging it to a TCP server) stopped that port receiving anything for as long as no client had connected: typing still put bytes on the wire, but the device's answer never appeared, and only removing the bridge brought it back. The first byte from the device was enough — it reached the egress queue, a broadcast to zero clients writes zero bytes, and the bridge read that zero as a transport refusing the frame, so it kept the frame and throttled the source. The throttle stops the read path outright, and both the receive view and the bridge tap read through it. An open sink with nobody connected is now told apart from a refused write: the frame is counted as dropped instead of stalling the queue against a client that may never arrive, and the link's state says "Running, no client connected". Separately, a serial port without RTS/CTS cannot be throttled at all, and such a throttle is now refused — not reading a serial line does not slow the device down, it only loses the bytes in the driver's buffer
  • Send File / Receive File stayed greyed out after a transfer: After one transfer — finished, failed or cancelled — Send File… and Receive File… in the Connection menu stayed disabled and Cancel Transfer stayed live until the application was restarted. The menu used to be refreshed only when a transfer started; it now follows each port's transfer state and the keyboard focus, so the items come back the moment a transfer ends, and a transfer on one port no longer greys out Send File on another
  • The licence window told the truth about nothing, and refused keys pasted from an invoice: An install with no licence was told it held a "Personal Edition" one — the check read the enterprise flag, which is false when there is no licence at all, and never asked whether there was one. It says "Not activated" now, and a new Status row answers the question people open the window with: activated, trial with the days left, or expired. There was also no way to remove a licence: the uninstall button's slot has waited since 2017 for a widget the .ui never had, so the button exists now. And the key field refused valid keys — the length gate demanded the 29-character dashed form though the checks strip dashes before counting, the key alphabet is upper case and was compared case-sensitively, and only the ends were trimmed, so a newline from a mail client was fatal. Keys are normalised now and the field shows what was accepted; the two messages it can still refuse with say what is wrong, and one of them was never wrapped in tr(), so a Chinese install got English — twice over the same typo ("licnese")
  • Relayed keystrokes arrived one character per line, and doubled: A Live Relay carries the remote operator's typing one keystroke per frame, every frame went through the TX-frame echo, and a TX frame opens a display line of its own — so on the owner's screen each character landed on its own line, and against a device that echoes (any interactive console) it landed twice: "uptime" typed by a guest read as six lines of doubled letters. Relayed writes now follow Local Echo, the switch the terminal already has for keystroke-shaped traffic: by default the pane shows only what the device sends back, which is exactly what the guest's own terminal shows, and an owner watching a silent device ticks Local Echo to see the guest's keystrokes. That the port is in someone else's hands is already said by the relay takeover notice
  • The bottom row of the connection stack was clipped on macOS: Aqua controls paint a few pixels outside the cell the layout books for them, and the stacked pages are clamped flush to the form's size hint with zero margins, so a bottom-row checkbox lost its descenders — visible on the Live Relay and RFC 2217 pages as a cut-off "Keep the remote port's own config". The bleed is now queried from the style and booked as each page's bottom margin; styles without it report zero and are unaffected
  • Captions on the receive settings page were cut in half: "Tx Time Format" was squeezed to a sixth of its row and read "Tx Time Forma", leaving the two edits 40 px apart; the auto-feed row wants ~740 px of Consolas 11 in a page that opens at 538, so its widest four widgets were cut to 96 px each and read "Auto feed", "Minimal I", "Line Mode". Both blocks are grids now, sharing a caption column, and keep whole captions at the opening size, 300 px wider, and at the dialog's minimum
  • The account dialog could be clicked again while it waited — and one reply crashed it: Signing in is a round trip to the server, and on a slow link it takes seconds with nothing saying the click landed, so the dialog gets clicked again and every click is another login request. All three buttons now grey the moment one is pressed, the page says what is happening ("Signing in…", "Sending the code…", "Creating the account…"), and the reply or the error gives them back; a 20-second watchdog covers the reply that reaches nobody. Separately, opening a message box from a network reply's own slot is a use-after-free — Qt is still unwinding, and the nested event loop a modal box runs deletes the reply the manager reads again the moment the box closes — so every box a reply asks for now waits for the next turn of the event loop
  • Status bar popups left their status tip behind: Clicking the Live Sync cell and moving the pointer from Live Console onto one of the popup's own entries sends the clearing tip to the popup, which is a window of its own, so it never reached the main window and the tip stayed in the status bar for the rest of the session, hiding the port status and the traffic counters. Tips landing on a status bar popup are now routed to the window's status bar

6.6.4

File
serial_port_utility_664_0821.exe
File size
18.5 MB
SHA-256
6b5ef032416a8fab977b175fd996c2a5dad3d367b6028f1272afb5ac0d472598

Features

  • Cloud Relay — use a serial port on another computer: The site machine turns on Cloud > Allow Cloud Relay; the operator picks Remote Serial (Cloud Relay) in the port list, chooses a port on one of the account's online computers and presses connect — from there it behaves like a local port: baud rate, data bits, parity, stop bits, flow control and DTR/RTS can be set remotely, the remote CTS/DSR/RI/DCD states are shown, and X/YMODEM transfers and Modbus work as usual. Both ends need nothing more than outbound Internet access — no public address, port forwarding or VPN. The picker says whether each computer is online and whether relay is allowed there; a port accepts one relay session at a time, the sharing side shows a status line while its port is in remote use, and a dropped relay is never redialled silently — connect again deliberately. Relayed traffic draws on the account's cloud traffic quota
  • Remote use of a bridged port is visible on the sharing side: A bridge port served over RFC 2217 or plain TCP now announces clients arriving and leaving, the pane badge reads "in use by " and turns amber, and the serial parameters or control lines a remote client sets are logged line by line — the same rule Cloud Relay follows: a port driven from somewhere else must say so

Interface

  • Remote serial shows what the remote is running: With "Keep the remote port's own config" ticked on the RFC 2217 and Cloud Relay pages, the five greyed-out local parameter rows are hidden — a disabled "115200" was too easy to read as a fact about the remote — and a read-only "Remote now" row shows the baud rate, data format, flow control and server signature the remote actually reports
  • Cloud menu grouping: The Cloud Console master switch and the three Allow… consents are grouped, and the consents are disabled while the console is off — they all ride the Cloud Console channel, which the flat menu made look independent

Fixes

  • Log written to a file called NULL: Until the first successful open the log file name is only a placeholder, and flushes triggered by pause, stop or a port opened by the reconnect supervisor did not recognise it, creating a file literally named "NULL" in the working directory. Those flushes now resolve the configured file name template first and log to the right file
  • DTR lamp stuck grey: After selecting RFC 2217 or Cloud Relay in the connection editor and switching back to a local port, the DTR lamp stayed grey — which reads as "not asserted" — while RTS recovered; both now return to green
  • DTR/RTS lamps grey for the life of an RFC 2217 client connection: With "Keep the remote port's own config" ticked the client never set DTR or RTS, so the server had nothing to confirm and both lamps showed "never asked" throughout. The first settings sync now queries the remote's current levels, so the confirmed state shows in both RFC 2217 client and Cloud Relay modes
  • Command latency on the Cloud Console HTTP fallback: When the backend offers no WebSocket channel, queued commands now ride the heartbeat reply, cutting the worst-case wait from 30 seconds to one 20-second beat; a missing or stale cloud snapshot is re-uploaded as soon as the server asks for it, so picking a relay target no longer waits out a snapshot round trip

6.6.3

File
serial_port_utility_663_0818.exe
File size
18.5 MB
SHA-256
92cc1ebd93f03f1c4a792fb45007bdc13b50b083ce6a66ee384691bdb1ccdc86

Features

  • Local echo: Terminal passthrough now echoes what you type in the receive view, so a device that never echoes back — common on embedded targets — no longer leaves you typing blind. It is separate from Display Send, which shows and logs whole frames from the send box: local echo renders keystrokes in place, in typing order, and keeps them out of the log. Off by default, since a device that does echo would otherwise double every character
  • Indicator lights toggle: The quick-settings panel can now hide the TX/RX and control-line indicators and give the space back to the data views
  • Cloud Console live channel: The cloud console now carries commands and status over a WebSocket instead of polling, removing the poll-interval delay. A backend that does not advertise the gateway keeps working on the previous HTTP polling path

Interface

  • The quick-settings bar drags narrower: Its minimum width used to follow the longest port name, the longest combo entry and the widest label all at once, pinning the bar near 300 pixels. Long combo entries now elide in place — the popup still shows them in full — and the shared label column stops growing, so the bar goes as narrow as you need it
  • Consistent settings terminology: Options… is now Settings… in the main window and the multi-port dialog, the terminal's connection, receive and send settings read consistently, and the settings panel's Options group is named Log Behavior after what it actually holds

Fixes

  • Misaligned columns from a missing monospace font: The receive and send views name Monaco, which does not exist outside macOS — only Windows' Consolas was substituted before — so those views fell back to a proportional face and the HEX and timestamp columns drifted out of line. Both families now substitute to the system monospace font when they are missing
  • Online services missing from Microsoft Store builds: MSIX packaging compiled out account sign-in, cloud sync and the cloud console entirely, so the Store build shipped without them. It now matches the direct download

6.6.2

File
serial_port_utility_662_0805.exe
File size
18.5 MB
SHA-256
fc88b5d13dd398bccab18e4f5da4d3e1ee9ecdd176228bcd7f0674bde7ebd5f4

Features

  • X/YMODEM file transfer: Send and receive files over an established serial, TCP or RFC 2217 connection with XMODEM, XMODEM-CRC, XMODEM-1K, YMODEM and YMODEM-G. Protocol traffic is isolated from ordinary terminal data, while a non-modal progress bar reports the file, progress, rate, ETA and retry count. TCP servers can pin a selected client, so remote firmware updates no longer require another terminal application
  • Single-connection RFC 2217 remote serial: RFC 2217 is now available directly in the port list for connecting to Moxa NPort, ser2net or another Serial Port Utility and setting remote baud rate, data bits, parity, stop bits, flow control and DTR/RTS in the same connection. The device server's existing configuration is preserved by default; parameters are sent only after the user explicitly takes control. Peers without RFC 2217 support warn and degrade safely
  • RFC 2217 bridge client mode: A bridge can dial a device server and synchronize its serial parameters from the link's other endpoint. Parameters are sent once negotiation succeeds and only changes are sent afterward; remote replies are recorded in the link messages but never applied back to the local serial port
  • Remote control-line status: RFC 2217 connections show the remote CTS, DSR, RI and DCD states, making hardware handshaking behind a device server directly observable

Fixes

  • RFC 2217 negotiation: The access server now answers a client's WILL with DO. It previously worked only with clients that also send DO, such as pyserial; a client that opens with WILL alone waited until it timed out and fell back to a plain socket
  • RFC 2217 negotiation no longer ping-pongs: Answers are tracked per option and sent only when they change something. Two Serial Port Utility bridges pointed at each other used to exchange WILL/DO forever
  • RFC 2217 compatibility: COM-PORT-OPTION refusals are now interpreted by role, fixing parameter delivery after negotiation with ser2net
  • Terminal passthrough on network connections: Fixed keyboard passthrough checking only the local serial handle, which made typing ineffective on TCP, UDP and RFC 2217 connections
  • Bridge peer events: A peer arriving on the device end no longer opens a negotiation with the network end

6.6.1

File
serial_port_utility_661_0802.exe
File size
27.6 MB
SHA-256
06f49c5fcf06b5b2dac01b88b91c8aea6f34d8a27c29d88b11cf82a0b2664c01

新特性

  • 网络与串口透明桥接: 把两个连接搭在一起,这台机器就成了串口设备服务器——网络那头的程序直接读写本机串口,两端收发的数据在界面上照常显示。网络快串口慢时会自动减速,实在压不住的丢包会一直红着提醒;多个客户端接入时可选独占、广播或按请求排队;还能设地址白名单,把双向数据记进同一个按时间排序的文件,配一条两分钟的流量曲线
  • RFC 2217 与 Modbus 网关: 桥接新增两种协议模式。RFC 2217 让远端机器像操作本地串口一样设置波特率、数据格式、流控和控制线;Modbus 网关在 TCP 与 RTU 之间转换报文,多个主机共用一条 RS-485 总线时按请求排队,谁问的答案回给谁,不会串答
  • 收发编码可选: 每个连接可以分别指定接收和发送编码(UTF-8、GBK、GB18030、Big5、Shift-JIS、Latin-1、系统编码等),设备发的是 GBK 就不用再对着乱码猜。设置对话框和快捷设置面板都能改,编码随设置、.spu 项目文件和云端快照一起保存;终端直接输入、云端远程发送也都按所属连接的编码走
  • 拖动分隔条调整连接大小: 多个连接之间的分界可以拖动,忙的那个连接分大一点;拖出的比例在开关快捷设置面板后仍然保留
  • 自定义 CRC: 工具箱支持自定义 CRC 参数,算出的校验值可以直接送进发送帧
  • 回车发送序列可配置: 终端模式下回车发出的字节序列可以自己设定
  • 在线帮助中心: 帮助菜单新增在线帮助中心入口
  • 恢复默认设置: 新增一套安全的恢复默认设置流程
  • Microsoft Store 上架: 新增 MSIX 打包,可以从 Microsoft Store 安装

界面改进

  • 桥接编辑器: 六个设置分组改成三个标签页,13 英寸笔记本上也能完整显示,确定和取消不会被挤出屏幕
  • 工具箱: 精简工具箱界面与窗口入口
  • 快捷设置面板: 新增连接时不再自动收起面板,留不留由你决定
  • Modbus 请求构建器: 去掉窗口底部多出来的空白,按内容实际需要的高度打开

修复与完善

  • Mac App Store 版启动崩溃: 6.6 从 Mac App Store 安装的版本一打开就闪退,已修复;发布流程也加了检查关卡,不会再让同类问题出厂
  • TCP/UDP 模式切不回串口: 连接切到 TCP 或 UDP 后,设置对话框里看不到端口和模式选择框,退不回串口模式,现已修复
  • macOS 上的等宽字体: 默认字体在 macOS 上并不存在,被换成了比例字体,十六进制和时间戳列因此对不齐;现在按系统实际装了哪种等宽字体来选
  • GB18030 四字节字符: 修复表情符号等字符解码错误,以及个别 Qt 版本上遇到异常字节会崩溃的问题
  • 发不出去的字符不再被悄悄替换: 当前编码表示不了的字符不会再变成 ? 发出去,而是拦下这一帧并在状态栏指出是哪个字
  • 安装包瘦身: 移除用不到的数据库组件,安装包小了约 4 MB

Features

  • Transparent network-to-serial bridge: Link two connections and this machine becomes a serial device server — a program on the network reads and writes the local serial port directly, while both sides of the traffic stay visible on screen. A fast network feeding a slow port is throttled automatically, and whatever still has to be dropped is counted in red until you clear it. Several clients can be handled exclusively, by broadcast, or by taking turns; an address allowlist keeps strangers out, both directions can be recorded into one time-ordered capture file, and a two-minute traffic curve shows how the link is doing
  • RFC 2217 and Modbus gateway: Two new protocol modes for the bridge. RFC 2217 lets a remote machine set the baud rate, data format, flow control and control lines as if the port were local; the Modbus gateway converts frames between TCP and RTU, and when several masters share one RS-485 bus it serves them one at a time so every answer goes back to whoever asked
  • Selectable wire encodings: Each connection can use its own receive and send encoding (UTF-8, GBK, GB18030, Big5, Shift-JIS, Latin-1, System and more), so a device that speaks GBK no longer arrives as mojibake. Both the settings dialog and the quick-settings panel can change it, and the choice is stored with your settings, the .spu project file and the cloud snapshot; terminal typing and cloud remote send follow the owning connection's encoding too
  • Drag the split between connections: The boundary between connections can be dragged, so a busy connection can be given more room; the proportions you drag survive toggling the quick-settings panel
  • Custom CRC: The toolbox accepts custom CRC parameters, and the result can be fed straight into the send frame
  • Configurable Enter sequence: The bytes sent by Enter in terminal mode are now yours to choose
  • Online help center: The Help menu links straight to the online help center
  • Restore defaults: Added a guarded workflow for restoring default settings
  • Microsoft Store: MSIX packaging is in, so the app can be installed from the Microsoft Store

UI Improvements

  • Bridge editor: The six setting groups became three tabs, so the dialog fits a 13" laptop and OK and Cancel are never pushed off screen
  • Toolbox: Streamlined the toolbox UI and its window entry
  • Quick settings panel: Adding a connection no longer folds the panel away — keeping it open is your call
  • Modbus request builder: Removed the empty space at the bottom of the window; it opens at the height the content actually needs

Fixes & Enhancements

  • Mac App Store launch crash: The 6.6 build installed from the Mac App Store quit immediately on launch. Fixed, and the release pipeline now has a check that stops the same kind of defect from shipping again
  • No way back from TCP/UDP mode: After a connection switched to TCP or UDP, the settings dialog no longer showed the port and mode pickers, leaving no route back to serial mode
  • Monospace font on macOS: The default font does not exist on macOS, so it was replaced with a proportional face and the hex and timestamp columns stopped lining up. The font is now picked from what is actually installed
  • GB18030 four-byte characters: Fixed the decoding of emoji and similar characters, along with a crash on malformed bytes seen with some Qt builds
  • Unencodable characters are no longer swapped silently: A character the current encoding cannot represent is no longer sent as ? — the frame is held back and the status bar names the character
  • Smaller install: Dropped an unused database component, cutting roughly 4 MB from the package

6.6.0

File
serial_port_utility_660_0719.exe
File size
18.7 MB
SHA-256
030e1c88ab943d8e7e37d058e752ce3f28451cffa6a7947e89221a632607ed89

Features

  • Connection activity lamps: The connection group gains interactive TX/RX and control-line indicator lamps that blink to reflect live traffic and control-line state; the classic control-line UI is retired in favour of the lamps
  • Serial control lines: Added serial control line handling with a new Control Lines tab in the settings dialog
  • Modbus request builder: Added a Modbus request builder to the Tools menu
  • Per-field quick settings: Quick settings are now available per field across all groups, with the picker moved into the settings dialog
  • Line Ending combo: Replaced the send auto-feed checkbox with a Line Ending combo
  • Restore last connection: Automatically restores the connection that was open at last exit
  • Terminal caret & honest Tx metrics: The terminal mode shows a caret and reports real Tx counts

UI Improvements

  • TCP/UDP mode UI: Silenced the server-error popup and polished the TCP/UDP mode UI
  • Toolbar: Reworked the log-recording and quick-settings toolbar controls
  • UI alignment & polish: Unified the receive Auto FL and send Loop rows, aligned the Line Ending and Append Checksum combos, and more

Fixes & Enhancements

  • Settings defaults: Seeded and guarded the remaining Log/Display defaults in the settings panel; never store empty Rx/Tx time formats
  • .spu session loading: Parse .spu bool flags with toBool so saved true values survive reload
  • Internationalization: Label the format radios Text, not ASCII, in Chinese
  • Log directory: Create the log directory before opening the log file