Problem Details
A Productivity1000 P1-540 CPU programmed with PAC Suite 3.12.1.21 serves corrupted content from its built-in Remote Access web server. The HTTP response reaches the browser, but the rendered page is character garbage rather than the expected web server interface:
- Firefox: renders as "fishhooks" (unmapped glyph boxes / stray symbols)
- Edge: renders as reversed 'R' characters
Key observations that define the fault boundary:
| Variable | State during fault |
|---|---|
| Faulting CPU | P1-540 |
| Reference CPU | P1-550 — web server renders correctly |
| Firmware (both CPUs) | 1.2.10.10 |
| Programming software | PAC Suite 3.12.1.21 |
| Project | Identical program and setup on both CPUs; only the CPU differs |
| Browsers tried | Firefox and Edge, with and without web server password |
| Reproducibility | 100% on this specific P1-540; never on the P1-550 |
Root Cause
The garbled output is a payload-integrity problem inside the CPU, not a rendering problem in the browser. The browser receives a byte stream that does not correspond to valid HTML/JS text, so it falls back to whatever glyphs the bytes map to under the assumed encoding. Two failure modes are consistent with the evidence:
- Corrupted firmware image in the web server / file-system region. The version string still reports 1.2.10.10 because the version metadata block is intact, while one or more blocks holding the embedded web pages have been damaged. A reported firmware version is a label, not a checksum of every stored page.
- Corrupted stored web server configuration inside the CPU. The Remote Access configuration written to the CPU is damaged such that the server emits an invalid or truncated stream.
The unit in question is a bench-test CPU that has been through a large number of project transfers, firmware operations and power cycles — the exact usage profile that accumulates flash wear or leaves a partially written region after an interrupted operation. That history makes hypothesis 1 the most probable.
What the evidence rules out:
| Suspected cause | Ruled out by |
|---|---|
| Browser cache holding a stale/bad page | Two independent browser engines (Gecko, Chromium) fail identically; a second PC and different browser sessions were checked |
| PAC Suite 3.12.1.21 defect | Same software builds and transfers a working web server to the P1-550 |
| Project corruption | Project removed, new blank project created, Web Server task re-added and transferred — no change |
| Web server password / authentication | Fault occurs both with and without a password configured |
| Firmware revision mismatch | Both CPUs report 1.2.10.10 |
Solution: Reflash the Same Firmware Revision
Re-applying firmware 1.2.10.10 to the P1-540 — the same revision already reported by the CPU — restored correct web server output. This is a rewrite of the flash region, not an upgrade, and it is the shortest path once the project has been eliminated as a variable.
- Back up the project. Save the .adpro project from PAC Suite before touching firmware. Record the CPU IP address, subnet mask, gateway, and any Remote Access / web server credentials, since these may be cleared.
-
Stop the CPU. Place the controller in
STOP(Program) mode so no logic is scanning during the flash operation. -
Confirm the current revision. In PAC Suite, open the CPU/hardware information view and note the reported firmware string (here
1.2.10.10). Confirm the same file revision is available locally. - Apply firmware 1.2.10.10 again. Use the PAC Suite firmware update utility against the target CPU. Select the same revision file even though the version numbers match — the goal is to overwrite every block, including the embedded web content.
- Do not interrupt the write. Keep the CPU powered and the link (USB or Ethernet) stable for the full duration. An aborted firmware write is a plausible way to have created this failure state in the first place.
- Re-transfer the project. After the CPU reboots, transfer the project including the Web Server configuration.
- Re-apply network settings. Verify IP configuration and web server enable/password settings survived the reflash; re-enter them if cleared.
Diagnostic Sequence Before Reflashing
Run these in order. Each step removes one variable; stop as soon as the web server renders correctly. This is the same sequence that isolated the fault to the CPU hardware.
- Cross-browser check. Load the web server in a second browser engine. Identical garbage in both Firefox and Edge rules out a single rendering engine or extension.
- Second PC. Connect from a different workstation on the same subnet. This clears the local cache, proxy, and OS-level TLS/HTTP stack from suspicion in one move.
-
Clear browser cache and force reload. Use a private/incognito window plus a hard refresh (
Ctrl+F5) to bypass cached assets. Note that a stale cache cannot explain a page that has never rendered correctly on that CPU on any machine. -
Remove the project from the CPU. Use
CPU > Remove CPU Project. If the garbled server persists with no project loaded, the defect is not in application logic. - Minimal rebuild. Create a new empty project, transfer it, then add only the Web Server configuration and transfer again. Persisting corruption here points squarely at CPU-resident data.
- Swap CPUs. Load the same project into a known-good CPU on the same firmware revision. Correct rendering on the second unit confirms a unit-specific fault.
- Reflash firmware. Re-apply the same revision as described above.
- Escalate. If reflashing does not clear it, collect a system report and open a ticket with AutomationDirect technical support, citing the firmware revision, PAC Suite build, browser behavior, and the isolation steps already completed.
Verification
Confirm the repair with checks that exercise the same path that failed:
| Check | Method | Pass criterion |
|---|---|---|
| Firmware revision | PAC Suite CPU information view | Reports 1.2.10.10 after reboot |
| Page render — Firefox | Private window, hard refresh to CPU IP | Full web server interface, no stray glyphs |
| Page render — Edge | InPrivate window to CPU IP | Full web server interface, no reversed characters |
| Authenticated path | Enable web server password, log in | Login page and post-login content render correctly |
| Raw payload sanity | Browser View Source on the served page | Readable HTML tags, not binary or high-byte noise |
| Tag data | Read/write a test tag through the web interface | Values match PAC Suite Data View |
| Persistence | Power-cycle the CPU, reload the page | Correct rendering after cold start |
The View Source check is the most diagnostic of the set. If the source shows well-formed HTML but the rendered page is still wrong, the problem has moved to the browser side (encoding override, extension, proxy rewriting). If the source itself is binary noise, the CPU is still serving corrupt bytes and the reflash did not take.
Bench Practice for Test CPUs
A CPU used as a permanent testbench sees far more flash write cycles than a production unit. Reduce the chance of repeating this:
- Keep one known-good reference CPU on the same firmware revision. A same-firmware comparison unit converted this problem from an open-ended software hunt into a five-minute hardware isolation.
- Never interrupt a firmware write. Use a dedicated power source and a direct cable — avoid USB hubs and switched networks with active spanning-tree reconvergence during the operation.
- Record the firmware revision alongside the software build in your test notes. "Same firmware version" and "same firmware image integrity" are not the same claim, which is exactly why this fault survived a version comparison.
- Treat a bench CPU that shows unexplained behavior as suspect for production use even after it is repaired. Reflashing restored function here, but repeated corruption on one unit is a retirement signal.
- When escalating to AutomationDirect support, generate a system report and include the isolation matrix — project removed, new project, second PC, second CPU — so the ticket starts past the standard first-tier questions.
FAQ
Why does the P1-540 web server show garbage characters while the P1-550 works fine?
With the same project, same PAC Suite build, same browsers, and both CPUs reporting firmware 1.2.10.10, the difference is unit-specific — corrupted firmware or stored web server data inside the individual P1-540. Re-applying firmware 1.2.10.10 to the affected CPU restored correct output.
Can browser cache cause a Productivity CPU web server to render as garbage?
Cache can serve stale content, but it cannot explain a page that has never rendered correctly on that CPU from any browser or workstation. Verify by loading the CPU IP from a second PC in a private window; if the garbage persists, the fault is in the controller.
Does removing the CPU project clear a corrupted web server?
No. In this case CPU > Remove CPU Project, a fresh blank project, and a rebuilt Web Server configuration all transferred without changing the behavior, which is what pointed to firmware-level corruption rather than the application.
Should I reflash firmware that already matches the version I want?
Yes, when symptoms indicate corrupted stored content. The reported version string comes from a metadata block and does not guarantee that every flash region — including the embedded web pages — is intact. Rewriting the same revision overwrites all blocks.
How do I tell whether the CPU or the browser is corrupting the page?
Use the browser's View Source function. Readable HTML in the source with a broken render points to a browser-side encoding or extension issue; binary noise in the source means the CPU is transmitting corrupt bytes and needs a firmware reflash.