5. When something goes wrong#

Authority for this chapter: docs/production-readiness/12_INSTALL_RUNBOOK.md
section 10 (rollback for your own, still-in-progress install) and
docs/production-readiness/13_RS3000_ROLLBACK.md (reverting a plant that
was already live, which is not your job — see
The line you never cross below).
First: which kind of problem is this?#
Before you do anything, work out which of these two situations you're in — the right response is completely different for each.
| Situation | What it looks like | What you do |
|---|---|---|
| A. Your own install visit hasn't finished yet, and something is broken. | You're still on chapter 2, 3, or 4 of this book, this laptop has never been handed to operators, and a step failed. | This is your job. Use the quick table and the rollback steps below. |
| B. Ring has already been live on this laptop, operators have been using it, and something goes wrong later. | Anyone reports a problem with a laptop that already passed its install and has been running for a while, especially after the plant's PLC write "cutover" event. | This is not your job. It goes to docs/production-readiness/13_RS3000_ROLLBACK.md, run by Ringwood's own engineers under a time-boxed procedure. Call the rollback contact from chapter 1 and stop. |
Everything else in this chapter is about situation A — something broken partway through this visit. If instead you're visiting a laptop that already has a working Ring on it and you're simply putting a newer version on top (nothing is broken; this is a planned update), that's a different job with its own steps: see chapter 2, "Putting a new version on a laptop that already has Ring".
Quick symptom table#
| Symptom | Likely cause | First thing to try | Where to read more |
|---|---|---|---|
| Nothing happens when you double-click the shortcut | Ring is probably already running. It only ever allows one copy — a second launch against a healthy instance silently brings the existing window to the front and closes itself with no message at all. Only after ruling that out: files were never unblocked before extracting, or the VC++ software is missing. | Alt-Tab and check every display/monitor for an already-open Ring window. Open Task Manager and look for Ring.exe under Details — if it's there, End Task, wait ten seconds, and launch again. Only then re-check unblocking and VC++ in chapter 2 |
Ch. 2, this chapter |
| "Startup Configuration Error" dialog, app closes | appsettings.local.json has a typo or a missing required value |
Re-run the ConvertFrom-Json check from chapter 2 |
Ch. 2, Ch. 3 |
| Splash screen shows, then nothing (no wizard, no main screen, no dialog) | Something failed silently before it could show you a dialog | Check %ProgramData%\Ring\logs\application.log for the most recent entries; collect a diagnostic bundle (below) and call engineering |
This chapter |
| PLC indicator is red ("PLC Disconnected") and stays that way | Wrong controller address, cable/network not actually up yet, or the controller genuinely isn't reachable from this laptop | First, open Setup → Password (supervisor), then Setup → Tag Inspector and try reading the heartbeat tag directly (see chapter 4, Check 4) — it often names the problem faster than the steps below. Then: confirm the address in your settings file matches the plant's template exactly; confirm with ping <the address> from the same PowerShell window; confirm with plant IT that this laptop is really on the controller's network segment |
Ch. 4 |
| PLC indicator says "PLC reachable but heartbeat stopped — controller logic not running" at a live plant (not a bench rig) | The controller's own program isn't running | This is a controls-engineer problem, not an installer one — call engineering, do not attempt to start or change anything in the controller yourself | Ch. 4 |
| Wrong language on screen | The Language page of the wizard was answered wrong, or needs changing after the fact | Setup → Password (supervisor), then Setup → Setup Wizard, go to the Language page, fix it, click through to Finish | Ch. 3 |
| Read-only teal banner is missing | Read-only mode has been turned off somehow | Stop. Do not try to fix this by editing a file. Reopen (Setup → Password, supervisor, then) Setup → Setup Wizard's read-only page, confirm "keep read-only mode on," and if it still doesn't reappear, call engineering before leaving the laptop | Ch. 3, Ch. 4 |
| Touchscreen doesn't register taps, or registers them in the wrong place | This is a Windows/hardware touch-calibration issue, not a Ring setting — Ring does not configure touch input | Use Windows' own Settings → Devices → Touch (or tabletpc.cpl Tablet PC Settings → Calibrate) to recalibrate; if the touch driver itself isn't installed, that's a Device Manager / plant-IT problem |
Windows documentation |
| Everything on screen looks tiny, or there are grey bars around the edges | The screen is smaller than 1280×720, or Windows display scaling is set high | Preflight-Check.ps1 (chapter 2) flags this before you even install — re-run it; otherwise check Settings → System → Display |
Ch. 1, Ch. 2 |
| App was working, then crashed | Managed crash (Ring wrote a log) or a native crash (Ring vanished with no log) | Check C:\Ring\App\logs\crashes\ first; if nothing is there, check C:\Ring\logs\dumps\ (only exists if Install-RingWerDumps.ps1 — or the one-command kiosk installer that includes it — was run) |
Below |
| Watchdog didn't restart Ring after End Task | The kiosk installer wasn't run, or -RunAsUser wasn't set to the actual auto-logon account |
Re-run the kiosk install command from chapter 2, making sure -RunAsUser names the dedicated kiosk account, not whichever account you're installing from |
Ch. 2 |
Collecting evidence to send to engineering#
Start on the Health tab, before you collect anything. Inside Ring, go to Setup → Password (administrator tier — see chapter 3), then Setup → Diagnostic Console…. Its Health tab shows 16 live rows in one glance — PLC endpoint and connection state, heartbeat age and poll interval, data freshness, the database's path/size/journal mode and how long since it last wrote, the config validator's status, the app version and uptime, and the single-instance check — which answers most "is it actually broken, or does it just look broken" questions faster than collecting a bundle first. Copy diagnostics text copies that Health panel, as plain text, to the clipboard — quick to paste straight into a phone call or a chat with engineering without leaving the screen.
If the Health tab doesn't answer it, collect both of these before you call — the built-in bundle is fast but not exhaustive, and engineering will sometimes ask for the other half too:
- The built-in support bundle. Click Refresh once so the console
captures a fresh snapshot, then click Collect support bundle. There is
no Save dialog to answer — it always writes straight to the current
user's Desktop as
RingSupportBundle-<computername>-<timestamp>.zip, and the resulting message box names the exact path so you know where to find it. The bundle auto-includes the rolling application log, recent managed crash logs, native WER crash dumps (ifInstall-RingWerDumps.ps1was run), a sanitized copy of the effective configuration (passwords and similar secrets replaced with***), a fresh startup-configuration- validator report,PreflightReport.txtif one is present next to the install, a database schema/row-count census (counts only, never row data), and the last 24 hours of the PLC communication log — everything a first triage pass needs, in one file, with no folder-hunting required. - Fall back to collecting folders by hand only if Ring won't even launch
far enough to reach the Diagnostic Console — the support bundle above
already covers what step 2 used to ask you to zip manually. In that
launch-failure case, gather instead:
%ProgramData%\Ring\logs\(the rolling application log)C:\Ring\App\logs\crashes\(managed crash reports, if Ring's own code caught the failure)C:\Ring\logs\dumps\(native crash minidumps — only present ifInstall-RingWerDumps.ps1, or the one-command kiosk installer that includes it, was run; if this folder doesn't exist, that's expected and not itself a problem)- Your
C:\Ring\App\Config\appsettings.local.json
- The exact text of any error dialog, typed or photographed — don't paraphrase it, the exact wording is often the fastest clue.
Rolling back your own unfinished install#
This is a rollback, not an upgrade — the two are opposites and are not
interchangeable. A later version's install visit
(chapter 2, "Putting a new version on a laptop that already has
Ring")
only ever copies new files on top of a working install, and is safe by
construction — the release package itself is built to exclude the database
and your settings overlay, so there is nothing in it that could overwrite
them. What follows here instead deletes C:\Ring\App\ outright. Use it
only for situation A above — an install visit that has not yet been handed
to operators. Follow it in order:
- Stop Ring if it's still running (Task Manager → find
Ring.exe→ End Task). - Save a copy of the evidence first, so nothing is lost when you
remove files in the next step — zip up
%ProgramData%\Ring\logs\,C:\Ring\App\logs\crashes\,C:\Ring\App\Config\, and (if you didn't redirect it in chapter 2)C:\Ring\App\RingwoodDatabase.db, into one file somewhere outsideC:\Ring\(for example, your Desktop or a USB drive). - Remove the install: delete the
C:\Ring\App\folder, the **Ringwood HMI** desktop shortcut, and the Start-menu copy you created in chapter 2. LeaveC:\Ring\Pictures\andC:\Ring\Icons\in place — they don't cause harm and save you re-copying logo files on a retry.Warning: If you left
Database.ConnectionStringat its default (chapter 2) instead of pointing it outsideC:\Ring\App\, the database file lives inside the folder you're about to delete — step 2 above is the only copy of it you'll have. Confirm step 2 actually captured it before you delete anything. - If this laptop had a working legacy system before you started and you disabled or removed it as part of your visit, put it back per that system's own procedure — do not attempt this from memory; ask engineering if you're not certain how.
- Send the evidence zip from step 2 to engineering, along with which numbered step in this book you were on and the exact wording of whatever failed.
- Do not try the same install again the same day. Re-attempting with the same package on the same problem usually just repeats it and makes the eventual diagnosis harder, not easier.
The line you never cross#
Whatever the symptom, and whoever is asking on the phone, do not do any of the following yourself:
- Never turn read-only mode off. That is the formally-scheduled cutover, run by Ringwood's own engineers against a signed-off checklist — never a troubleshooting step, never something to try "just to see."
- Never touch the PLC or controller directly — no forcing values, no changing its program, nothing. Ring's own job is to never do this either outside a supervised, signed-off cutover; yours is the same.
- Never hand-edit any file beyond exactly what this book told you to
create or fill in (
appsettings.local.json, and nothing else). A file you don't recognize is not yours to open and change. - Never run the plant-wide legacy-system rollback procedure yourself.
That is
13_RS3000_ROLLBACK.md, and it exists specifically because it needs an engineer's judgment about a live, already-operating plant — a different situation from the one this book covers. - Never keep retrying the same failed step over and over. If the quick table and one attempt at its fix don't resolve it, that's the signal to collect evidence and call, not to try five more times.
You are done when…#
- You have correctly identified whether you're in situation A or situation B above.
- For situation A: either the problem is fixed and Checks 1-12 in chapter 4 all pass, or you've rolled back cleanly and sent engineering the evidence they need.
- For situation B: you've made the phone call and stopped — this was never yours to fix.
Next: 6. Install record and pre-drive checklist.
Sources verified#
docs/production-readiness/12_INSTALL_RUNBOOK.md§10 (installer-run rollback for a failed, not-yet-handed-off install)docs/production-readiness/13_RS3000_ROLLBACK.md§0-§2 (confirms this is a separate, engineer-run procedure for an already-live plant, triggered only after cutover sign-off)Ring/Views/App.xaml.cs(single-instance mutex, the three second-launch verdicts and their dialogs/exit codes)Ring/Views/UserControls/NavBar.xaml/.xaml.cs(Diagnostic Console is administrator-tier, not supervisor)Ring/Services/DiagnosticBundleService.cs(BuildBundle— "Support Bundle 2.0": confirms the auto-included application log, managed crash logs, WER native dumps, sanitized config, validator report,PreflightReport.txt, DB schema census, and last-24h PLC comm log table)Ring/Views/Setup/DiagnosticConsole.xaml,.xaml.cs(ExportBundleButton_Click, :260-320 — writes straight to the Desktop with noSaveFileDialog, filename patternRingSupportBundle-<machine>-<timestamp>.zip; the 16-rowHealthPanelgrid, :88-160;CopyHealthTextButton_Click)Ring/Resources/Strings/Strings.en.xaml(S.Scr.Diag.CollectBundle= "Collect support bundle",S.Scr.Diag.CopyHealthText= "Copy diagnostics text",S.Scr.Diag.CopyToClipboard,S.Scr.NavBar.DiagnosticConsole)Ring/Services/Diagnostics/PlcCommLogTableReader.cs(last-24h PLC comm log table read, guarded by table-existence check)scripts/Install-RingWerDumps.ps1(DumpFolder = C:\Ring\logs\dumps, composed intoInstall-RingKiosk.ps1)docs/production-readiness/12_INSTALL_RUNBOOK.md§5B, §7 (crash-dump folderC:\Ring\logs\dumps\, managed crash-log folderC:\Ring\App\logs\crashes\)scripts/New-ReleasePackage.ps1(Should-ExcludePackageFile, :172-187 — the exclusion list that makes an upgrade safe by construction)