Files
pxe-server/docs/post-deploy-debug-flowchart.live.html
cproudlock c8a0f98be1 docs: add post-deploy debug flowchart for UDC + DNC issues
Step-by-step runbook for techs at the imaged PC. Two symptoms covered:
UDC not collecting data (admin-unlock + COM port walkthrough) and DNC
not pushing to controller (NTLARS reg restore + FMS Host FQDN + Realtek
PCIe GbE static IP). Mermaid overview links to each section. Live HTML
uses CDN; static HTML pre-renders SVG for offline / printable use.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 15:13:12 -04:00

283 lines
15 KiB
HTML

<!doctype html>
<html><head>
<meta charset="utf-8">
<title>Post-Deploy Debug Flowchart</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/github-markdown-css/github-markdown.css">
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
<style>
body { box-sizing: border-box; max-width: 980px; margin: 2em auto; padding: 0 2em; }
.markdown-body img { max-width: 100%; }
.mermaid svg .node[role="button"] { cursor: pointer; }
.mermaid svg .node[role="button"] rect, .mermaid svg .node[role="button"] polygon { transition: filter .15s; }
.mermaid svg .node[role="button"]:hover rect, .mermaid svg .node[role="button"]:hover polygon { filter: brightness(0.92); }
@media print { body { max-width: none; margin: 0; padding: 1em; } }
</style>
</head><body class="markdown-body">
<h1 id="post-deploy-debug-flowchart-pxe-imaged-machines" tabindex="-1">Post-Deploy Debug Flowchart - PXE Imaged Machines</h1>
<p><strong>Audience:</strong> Shopfloor tech standing at a freshly imaged PC.
<strong>Scope:</strong> UDC not collecting data, and DNC not pushing programs to the controller.
<strong>Run-from:</strong> Logged in on the imaged PC as the ShopFloor local account. GUI only - no shell required.</p>
<blockquote>
<p>The few commands shown (e.g. <code>ping</code>) run from a normal Command Prompt window.</p>
</blockquote>
<hr>
<h2 id="overview" tabindex="-1">Overview</h2>
<p>Click any boxed node to jump to its section.</p>
<pre><code class="language-mermaid">%%{init: {'securityLevel':'loose'}}%%
flowchart TD
Start([PC imaged - issue reported]) --&gt; Sym{Which symptom?}
Sym --&gt;|UDC not collecting data| U1[Open UDC: Tools - Show All Menus]
Sym --&gt;|DNC not pushing to controller| D1{NTLARS General tab populated?}
U1 --&gt; U2[Scan UDC_Password barcode from S:\SPC\UDC\UDC_Password.jpg]
U2 --&gt; U3[Tools - Options - Serial tab]
U3 --&gt; U4{Which physical COM port is the cable in?}
U4 --&gt;|Intel / onboard| U5[Set Port Name = COM 1]
U4 --&gt;|PCIe add-in card| U6[Set Port Name = COM 2]
U5 --&gt; U7[Save - File - Exit - reopen UDC]
U6 --&gt; U7
U7 --&gt; U8([Verify data lines populate])
D1 --&gt;|No - fields blank| D2[NTLARS: Load... -&gt; S:\DT\RegFiles\Dnc\Backup Copies\machine.reg]
D1 --&gt;|Yes - fields filled| FMS{FMS Host Primary = WJFMS3.AE.GE.COM?}
D2 --&gt; D3[Confirm General tab populated - OK]
D3 --&gt; FMS
FMS --&gt;|No - shows WJFMS3 short| FMS1[Update Primary to FQDN WJFMS3.AE.GE.COM - OK]
FMS --&gt;|Yes| NIC{Realtek PCIe GbE NIC = 192.168.1.2 / 24?}
FMS1 --&gt; NIC
NIC --&gt;|No| NIC1[Set Realtek PCIe GbE static IP 192.168.1.2 / 255.255.255.0]
NIC --&gt;|Yes| NIC2[ping 192.168.1.1]
NIC1 --&gt; NIC2
NIC2 --&gt; NIC3{Ping replies?}
NIC3 --&gt;|No| NIC4[Check cable / controller side / duplicate IP]
NIC3 --&gt;|Yes| Done([Retest DNC push])
click U1 &quot;#step-1-unlock-the-admin-menu&quot; &quot;Step 1 - Unlock admin&quot;
click U2 &quot;#step-2-scan-the-udc-admin-password-barcode&quot; &quot;Step 2 - Scan password&quot;
click U3 &quot;#step-3-open-options&quot; &quot;Step 3 - Options&quot;
click U4 &quot;#step-4-set-the-correct-com-port&quot; &quot;Step 4 - COM port&quot;
click U5 &quot;#step-4-set-the-correct-com-port&quot; &quot;Step 4 - COM 1&quot;
click U6 &quot;#step-4-set-the-correct-com-port&quot; &quot;Step 4 - COM 2&quot;
click U7 &quot;#step-5-exit-to-apply&quot; &quot;Step 5 - Exit&quot;
click D2 &quot;#2a-ntlars-reg-file-never-imported-blank-general-tab-fields&quot; &quot;2A - Load reg backup&quot;
click D3 &quot;#2a-ntlars-reg-file-never-imported-blank-general-tab-fields&quot; &quot;2A - Confirm populated&quot;
click FMS1 &quot;#2a-ntlars-reg-file-never-imported-blank-general-tab-fields&quot; &quot;2A - FMS Host FQDN&quot;
click NIC1 &quot;#2b-controller-nic-has-no-static-ip&quot; &quot;2B - Set static IP&quot;
click NIC2 &quot;#2b-controller-nic-has-no-static-ip&quot; &quot;2B - Ping check&quot;
click NIC4 &quot;#2b-controller-nic-has-no-static-ip&quot; &quot;2B - Troubleshoot&quot;
</code></pre>
<hr>
<h2 id="symptom-1-udc-not-collecting-data" tabindex="-1">Symptom 1 - UDC not collecting data</h2>
<p>UDC = Universal Data Collection desktop app on the imaged PC. Most &quot;no data&quot; issues post-deploy are not a service crash - they are the COM port pointing at the wrong physical serial port. Fix is a GUI procedure inside UDC, run as admin.</p>
<p><strong>What you need before starting:</strong></p>
<ul>
<li>Badge scanner (the one wired to the PC).</li>
<li>Access to <code>S:\SPC\UDC\UDC_Password.jpg</code> (mapped S: drive must be working - if not, fix S: first via the standard <code>mapdrive.bat</code> runbook).</li>
</ul>
<h3 id="step-1-unlock-the-admin-menu" tabindex="-1">Step 1 - Unlock the admin menu</h3>
<p>Open UDC. Click <strong>Tools</strong> -&gt; <strong>Show All Menus</strong>.</p>
<p><img src="images/post-deploy/Figure_6_UDC_not_collecting_data_enable_admin.png" alt="UDC Tools menu - Show All Menus"></p>
<p>UDC will prompt for a badge scan to authorise admin mode:</p>
<p><img src="images/post-deploy/Figure_3_UDC_not_collecting_data_enable_admin_show_all_menus_scan_UDC_Password.png" alt="UDC Please Enter Badge prompt"></p>
<h3 id="step-2-scan-the-udc-admin-password-barcode" tabindex="-1">Step 2 - Scan the UDC admin password barcode</h3>
<p>The admin &quot;password&quot; is a barcode stored as a JPG on the S: drive.</p>
<ol>
<li>
<p>Navigate File Explorer to <code>S:\SPC\UDC\UDC_Password.jpg</code>.</p>
<p><img src="images/post-deploy/Figure_2_UDC_not_collecting_data_enable_admin_password_location.png" alt="UDC_Password.jpg location on S: drive"></p>
</li>
<li>
<p>Open the JPG in Paint (or any image viewer that shows it at full size).</p>
</li>
<li>
<p>Point the badge scanner at the on-screen barcode and pull the trigger. UDC accepts the scan and unlocks admin mode.</p>
</li>
</ol>
<h3 id="step-3-open-options" tabindex="-1">Step 3 - Open Options</h3>
<p>With admin mode active, <strong>Tools</strong> now shows an extra <strong>Options</strong> item at the top of the menu. Click <strong>Tools</strong> -&gt; <strong>Options</strong>.</p>
<p><img src="images/post-deploy/Figure_4_UDC_not_collecting_data_enable_admin_options.png" alt="UDC Tools menu with Options visible"></p>
<h3 id="step-4-set-the-correct-com-port" tabindex="-1">Step 4 - Set the correct COM port</h3>
<p>Click the <strong>Serial</strong> tab on the left. Set <strong>Port Name</strong> to match the <strong>physical</strong> serial port the machine cable is plugged into on the back of the PC.</p>
<ul>
<li>
<p><strong>COM 1</strong> = onboard / Intel serial port (motherboard-integrated)</p>
<p>Logical:</p>
<p><img src="images/post-deploy/Figure_5_UDC_not_collecting_data_enable_admin_options_serial_intel_com1.png" alt="UDC Serial settings - COM 1 (intel)"></p>
<p>Physical port to match:</p>
<p><img src="images/post-deploy/Figure_5_UDC_not_collecting_data_enable_admin_options_serial_intel_com1_physical.png" alt="PC rear - onboard COM1 port"></p>
</li>
<li>
<p><strong>COM 2</strong> = PCIe add-in serial card</p>
<p>Logical:</p>
<p><img src="images/post-deploy/Figure_5_UDC_not_collecting_data_enable_admin_options_serial_pcie_com2.png" alt="UDC Serial settings - COM 2 (PCIe)"></p>
<p>Physical port to match:</p>
<p><img src="images/post-deploy/Figure_5_UDC_not_collecting_data_enable_admin_options_serial_pcie_com2_physical.png" alt="PC rear - PCIe COM2 port"></p>
</li>
</ul>
<p>Leave the rest at defaults: <strong>Baud 9600, Data Bits 8, Stop Bits One, Parity None</strong>.</p>
<p>Click <strong>Save</strong>.</p>
<h3 id="step-5-exit-to-apply" tabindex="-1">Step 5 - Exit to apply</h3>
<p>Click <strong>File</strong> -&gt; <strong>Exit</strong>. UDC must restart for the new COM port to take effect.</p>
<p><img src="images/post-deploy/Figure_1_UDC_not_collecting_data_enable_admin_exit.png" alt="UDC File menu - Exit"></p>
<p>Reopen UDC. Data lines should start populating as the machine runs.</p>
<h3 id="if-data-still-does-not-appear" tabindex="-1">If data still does not appear</h3>
<p>Once the COM port is correct, <s>rule out</s> check these in order:</p>
<ul>
<li>Wrong physical cable - cable is in COM1 socket but Port Name set to COM 2 (or vice versa). Re-check Step 4.</li>
<li>Cable / connector damaged - swap with a known-good cable.</li>
<li>Machine controller side not transmitting - confirm at the controller HMI.</li>
</ul>
<hr>
<h2 id="symptom-2-dnc-not-pushing-a-program-to-the-controller" tabindex="-1">Symptom 2 - DNC not pushing a program to the controller</h2>
<p>Two independent root causes. Check in order: NTLARS first (cheaper), then NIC.</p>
<h3 id="2a-ntlars-reg-file-never-imported-blank-general-tab-fields" tabindex="-1">2A - NTLARS reg file never imported (blank General tab fields)</h3>
<p><strong>What it looks like:</strong></p>
<p>Open NTLARS. <strong>General</strong> tab shows <strong>Site = WestJefferson</strong> but <strong>Machine No., CNC Type, Host Type, Interface Type</strong> are all empty.</p>
<p><img src="images/post-deploy/NTLARS_no_machine_config.png" alt="NTLARS General tab with blank machine config"></p>
<p>The per-machine reg backup never imported during imaging, so NTLARS has no machine-specific config.</p>
<p><strong>Fix:</strong></p>
<ol>
<li>
<p>Note the machine number (printed on the PC asset label, or look up by hostname).</p>
</li>
<li>
<p>Browse to the DNC reg backup folder on the SFLD share:</p>
<pre><code>S:\DT\RegFiles\Dnc\Backup Copies\
</code></pre>
<p>Each file is named <code>&lt;MACHINE-NUMBER&gt;.reg</code> (e.g. <code>4008.reg</code>, <code>4001.reg</code>, <code>3209.reg</code>).</p>
<p><img src="images/post-deploy/NTLARS_no_machine_config_copy_backup.png" alt="Backup Copies folder on S: drive"></p>
</li>
<li>
<p>In the NTLARS settings dialog, click <strong>Load...</strong> (top-right of the dialog, next to Save).</p>
</li>
<li>
<p>Browse to <code>S:\DT\RegFiles\Dnc\Backup Copies\</code> and select the <code>.reg</code> matching this PC's machine number. Confirm the import.</p>
</li>
<li>
<p>The General tab fields should now be populated. Click <strong>OK</strong> to apply.</p>
</li>
<li>
<p>While in NTLARS, click the <strong>FMS Host</strong> tab. Check <strong>Primary</strong> - the backup reg usually populates the short hostname <code>WJFMS3</code> only. Update it to the full FQDN:</p>
<p><img src="images/post-deploy/NTLARS_FMS_HOST.png" alt="NTLARS FMS Host tab"></p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Required value</th>
</tr>
</thead>
<tbody>
<tr>
<td>Primary</td>
<td><code>WJFMS3.AE.GE.COM</code> (FQDN - not just <code>WJFMS3</code>)</td>
</tr>
<tr>
<td>Secondary</td>
<td><code>10.233.112.158</code></td>
</tr>
<tr>
<td>Socket Number</td>
<td><code>5003</code></td>
</tr>
<tr>
<td>Timeout</td>
<td><code>10</code></td>
</tr>
</tbody>
</table>
<p>Click <strong>OK</strong> to save. The short hostname fails on GE corp DNS in some shopfloor segments; the FQDN resolves reliably. The manifest drift-catcher will also normalise this on next run, but doing it now avoids waiting for the next manifest cycle.</p>
</li>
</ol>
<p>If fields are still blank after import: the reg backup file is stale or for a different machine number. Pull the correct one and re-import.</p>
<h3 id="2b-controller-nic-has-no-static-ip" tabindex="-1">2B - Controller NIC has no static IP</h3>
<p>The PC has two NICs. One faces the corporate / shopfloor LAN (gets internet); the other faces the controller on an isolated subnet (no internet - shown as &quot;Unidentified network&quot; / &quot;No internet&quot;).</p>
<p><strong>Standard controller-side config:</strong></p>
<table>
<thead>
<tr>
<th>Setting</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<td>IP assignment</td>
<td>Manual</td>
</tr>
<tr>
<td>IPv4 address</td>
<td><code>192.168.1.2</code></td>
</tr>
<tr>
<td>Subnet mask</td>
<td><code>255.255.255.0</code></td>
</tr>
<tr>
<td>Default gateway</td>
<td><em>leave blank</em></td>
</tr>
<tr>
<td>DNS servers</td>
<td>Automatic (DHCP) - leave as-is</td>
</tr>
</tbody>
</table>
<p><strong>Step-by-step (GUI - logged in as ShopFloor local account):</strong></p>
<ol>
<li>
<p>Right-click the network icon in the system tray. Select <strong>Network and Internet settings</strong>.</p>
<p><img src="images/post-deploy/NTLARS_network_interface_tray.png" alt="Network tray menu"></p>
</li>
<li>
<p>In Network &amp; internet, identify the controller-facing adapter. <strong>On every PXE-imaged shopfloor PC the controller NIC is the <code>Realtek PCIe GbE Family Controller</code>.</strong> It will also show <strong>&quot;No internet&quot;</strong> / <strong>&quot;Public network&quot;</strong> (the other adapter, with internet, is the shopfloor LAN). Click into it.</p>
<p><img src="images/post-deploy/NTLARS_network_interface_settings.png" alt="Network &amp; internet - two ethernets listed"></p>
<p>Confirm at the bottom of the adapter detail page that <strong>Description = Realtek PCIe GbE Family Controller</strong>:</p>
<p><img src="images/post-deploy/NTLARS_network_interface_verified.png" alt="Verified controller NIC - Realtek PCIe GbE"></p>
</li>
<li>
<p>Scroll to <strong>IP assignment</strong>. If it shows <code>Automatic (DHCP)</code> or the IPv4 address is <code>169.254.x.x</code> / blank: click <strong>Edit</strong> next to IP assignment, switch to <strong>Manual</strong>, enable IPv4, and enter:</p>
<ul>
<li>IP address: <code>192.168.1.2</code></li>
<li>Subnet mask: <code>255.255.255.0</code></li>
<li>Gateway: <em>leave blank</em></li>
</ul>
<p>Save.</p>
</li>
<li>
<p>Verify. The adapter detail should now show:</p>
<ul>
<li>IP assignment: <strong>Manual</strong></li>
<li>IPv4 address: <strong>192.168.1.2</strong></li>
<li>IPv4 mask: <strong>255.255.255.0</strong></li>
<li>Description: <strong>Realtek PCIe GbE Family Controller</strong></li>
</ul>
</li>
</ol>
<p><strong>Verify connectivity to the controller:</strong></p>
<p>The controller is always at <code>192.168.1.1</code> on this subnet. Open Command Prompt and run:</p>
<pre><code class="language-cmd">ping 192.168.1.1
</code></pre>
<p>Expected: 4/4 replies.</p>
<p>If pings fail:</p>
<ul>
<li>Check the controller-side network cable.</li>
<li>Confirm no other adapter on the PC also has <code>192.168.1.2</code> (duplicate IP). In Network &amp; internet, check both Ethernet adapters - only the Realtek PCIe GbE one should have it.</li>
<li>Confirm the controller itself is powered and online.</li>
</ul>
<script>
document.querySelectorAll('pre > code.language-mermaid').forEach(el => {
const div = document.createElement('div');
div.className = 'mermaid';
div.textContent = el.textContent;
el.parentElement.replaceWith(div);
});
mermaid.initialize({ startOnLoad: true, securityLevel: 'loose', theme: 'default' });
mermaid.run();
</script>
</body></html>