<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Troubleshooting &#8211; PICSimLab</title>
	<atom:link href="https://picsimlab.com/troubleshooting/feed/" rel="self" type="application/rss+xml" />
	<link>https://picsimlab.com</link>
	<description>The Ultimate Open Source Simulator for PIC, Arduino &#38; ESP32.</description>
	<lastBuildDate>Thu, 22 Oct 2026 04:14:50 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://picsimlab.com/wp-content/uploads/2026/05/favicon-150x150.png</url>
	<title>Troubleshooting &#8211; PICSimLab</title>
	<link>https://picsimlab.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>GDB Cannot Connect to PICSimLab on localhost:1234? Backend Fixes</title>
		<link>https://picsimlab.com/picsimlab-gdb-debug-connection/</link>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 04:13:12 +0000</pubDate>
				<category><![CDATA[Troubleshooting]]></category>
		<guid isPermaLink="false">https://picsimlab.com/picsimlab-gdb-debug-connection/</guid>

					<description><![CDATA[GDB Cannot Connect to PICSimLab on localhost:1234? Backend Fixes You started your GDB, typed target remote localhost:1234, and got a refusal — or worse, a silent hang. In PICSimLab, remote GDB debugging only exists for some backends, only after you switch it on inside the simulator, and only with the matching GDB flavour for your...]]></description>
										<content:encoded><![CDATA[
<h1>GDB Cannot Connect to PICSimLab on localhost:1234? Backend Fixes</h1>
<p>You started your GDB, typed <code>target remote localhost:1234</code>, and got a refusal — or worse, a silent hang. In PICSimLab, remote GDB debugging only exists for some backends, only after you switch it on inside the simulator, and only with the matching GDB flavour for your chip family. This page sorts all three conditions, backend by backend.</p>
<h2>Symptoms</h2>
<ul>
<li><code>target remote localhost:1234</code> (or <code>target extended-remote localhost:1234</code>) fails with &#8220;connection refused&#8221;.</li>
<li>The wrong GDB binary connects oddly, errors immediately, or cannot make sense of the target.</li>
<li>You cannot find any GDB option for your board at all — notably on the uCboard or the gpboard.</li>
<li>Debugging worked in MPLAB X but the command-line GDB flow does not (or the reverse).</li>
</ul>
<h2>Why it happens</h2>
<p><strong>Debug was never enabled in PICSimLab.</strong> The shared pattern in the official documentation for every GDB backend is: first open PICSimLab&#8217;s configuration window, <strong>enable debug and select GDB</strong>, and only then connect. With debug off, nothing listens on port 1234 and every connection is refused — the most common cause by far.</p>
<p><strong>Each backend has its own debugger.</strong> There is no single &#8220;PICSimLab GDB&#8221;. Per the official Boards/backend documentation:</p>
<table style="border-collapse:collapse;width:100%">
<thead><tr><th style="border:1px solid #ccc;padding:6px;text-align:left">Backend (boards)</th><th style="border:1px solid #ccc;padding:6px;text-align:left">Remote debug interface</th></tr></thead>
<tbody>
<tr><td style="border:1px solid #ccc;padding:6px">simavr (Arduino Mega / Nano / Uno, Franzininho DIY)</td><td style="border:1px solid #ccc;padding:6px"><strong>avr-gdb</strong> — plus MPLAB X integrated debug</td></tr>
<tr><td style="border:1px solid #ccc;padding:6px">qemu-stm32 (Blue Pill, STM32 H103)</td><td style="border:1px solid #ccc;padding:6px"><strong>arm-gdb</strong> (<code>arm-none-eabi-gdb</code> or <code>gdb-multiarch</code>)</td></tr>
<tr><td style="border:1px solid #ccc;padding:6px">qemu-esp32 (ESP32-DevKitC, ESP32-C3-DevKitC-02)</td><td style="border:1px solid #ccc;padding:6px"><strong>esp32-gdb</strong> (<code>xtensa-esp32-elf-gdb</code>)</td></tr>
<tr><td style="border:1px solid #ccc;padding:6px">picsim (the PIC boards)</td><td style="border:1px solid #ccc;padding:6px">MPLAB X integrated debug — <em>not</em> remote GDB</td></tr>
<tr><td style="border:1px solid #ccc;padding:6px">uCsim (uCboard: C51 / Z80 / STM8S103)</td><td style="border:1px solid #ccc;padding:6px">Remote console over <strong>telnet</strong> — not GDB</td></tr>
<tr><td style="border:1px solid #ccc;padding:6px">gpsim (gpboard)</td><td style="border:1px solid #ccc;padding:6px"><strong>None yet</strong> — no debugging support</td></tr>
</tbody>
</table>
<p>So two &#8220;failures&#8221; are actually correct behaviour: pointing GDB at a <strong>uCboard</strong> can never work (its remote debug is a telnet console), and the <strong>gpboard has no debugging support yet</strong> at all. Two port traps complete the picture: the MPLAB X plugin also uses port 1234 (a separate path — running both at once invites a clash), while PICSimLab&#8217;s <strong>rcontrol interface on port 5000 is not a debug port</strong> and GDB cannot talk to it. Finally, the official <strong>online version has no debugging support</strong> — GDB debugging is a desktop-version feature.</p>
<h2>Fix</h2>
<ol>
<li><strong>Confirm your backend is a GDB backend.</strong> GDB applies to simavr, qemu-stm32 and qemu-esp32 boards only. For PIC boards, use the MPLAB X path instead (see our <a href="https://picsimlab.com/mplab-x-picsimlab-plugin/">MPLAB X plugin guide</a>); for the uCboard, use its telnet console; for the gpboard, run without a debugger.</li>
<li><strong>Load the board and firmware in PICSimLab first</strong>, using the desktop version, with the simulation ready.</li>
<li><strong>Enable debug in the configuration window and select GDB</strong> (as opposed to any other debug option). This is the step that opens the listener on port 1234.</li>
<li><strong>Start the matching GDB with your .elf file as its argument</strong> — <code>avr-gdb</code> for AVR boards, <code>arm-none-eabi-gdb</code> (or <code>gdb-multiarch</code>) for the STM32 boards, <code>xtensa-esp32-elf-gdb</code> for the ESP32 boards — then connect with <code>target extended-remote localhost:1234</code> (the STM32 documentation uses the extended-remote form; the AVR/ESP32 flows use the same localhost:1234 endpoint). Using the <code>.elf</code> (not the <code>.hex</code>) is what gives GDB your symbols.</li>
<li><strong>If the connection is still refused:</strong> confirm the port in the configuration window is actually 1234 (it can be changed), confirm no firewall is dropping the localhost connection, and close anything else holding port 1234 — most often an MPLAB X plugin session — before retrying.</li>
<li><strong>Do not substitute ports.</strong> If you find yourself typing port 5000 into GDB, stop: 5000 is rcontrol, the text-command remote control for the simulator itself (start/stop, loadhex, pin inspection). It is a useful tool, but it is not a debug server.</li>
</ol>
<h2>Still stuck?</h2>
<p>Cross-check your flow against the <a href="https://picsimlab.com/mplab-x-picsimlab-plugin/">MPLAB X plugin guide</a> if your board is a PIC board (that, not GDB, is its debug path), and against a known-good board/firmware combination from the <a href="https://picsimlab.com/pic16f877a-blink-led-picsimlab/">blink tutorial</a> to separate &#8220;simulator not running&#8221; from &#8220;debugger not connecting&#8221;. If debug is enabled, the backend and GDB flavour match, and localhost:1234 still refuses on the desktop v0.9.3, report it — backend, board, GDB flavour and the exact GDB error included — on the project&#8217;s tracker: <a href="https://github.com/lcgamboa/picsimlab/issues" target="_blank" rel="noopener">github.com/lcgamboa/picsimlab/issues</a>.</p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PICSimLab Linux Install Problems: .deb Dependencies, Flatpak and AppImage</title>
		<link>https://picsimlab.com/picsimlab-linux-install-problems/</link>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 04:13:01 +0000</pubDate>
				<category><![CDATA[Troubleshooting]]></category>
		<guid isPermaLink="false">https://picsimlab.com/picsimlab-linux-install-problems/</guid>

					<description><![CDATA[PICSimLab Linux Install Problems: .deb Dependencies, Flatpak and AppImage PICSimLab v0.9.3 gives Linux users three routes — a .deb package, a Flatpak, and an AppImage — and each fails in its own characteristic way: dependency errors from the .deb, a double-click that does nothing from the AppImage, or an installed program that cannot reach serial...]]></description>
										<content:encoded><![CDATA[
<h1>PICSimLab Linux Install Problems: .deb Dependencies, Flatpak and AppImage</h1>
<p>PICSimLab v0.9.3 gives Linux users three routes — a .deb package, a Flatpak, and an AppImage — and each fails in its own characteristic way: dependency errors from the .deb, a double-click that does nothing from the AppImage, or an installed program that cannot reach serial devices. This page untangles which route you are on and fixes that route&#8217;s problem. (For the clean install sequence itself, see our <a href="https://picsimlab.com/install-picsimlab-ubuntu-debian/">Ubuntu &amp; Debian installation guide</a>.)</p>
<h2>Symptoms</h2>
<ul>
<li>The .deb refuses to install, ending in unmet-dependency errors.</li>
<li>The AppImage does not start on double-click — nothing appears at all.</li>
<li>The Flatpak bundle will not install, or PICSimLab is nowhere to be found afterwards.</li>
<li>PICSimLab installed and runs, but serial devices (<code>/dev/tnt*</code>) cannot be opened.</li>
<li>The NOGUI AppImage &#8220;does nothing&#8221; — no window ever appears.</li>
</ul>
<h2>Why it happens</h2>
<p><strong>There are two different .deb files, and they are release-specific.</strong> The project publishes one build for <strong>Ubuntu 24.04</strong> (<code>PICSimLab_0.9.3_260920_Ubuntu_24.04.5_LTS_amd64.deb</code>) and a separate one for <strong>Ubuntu 22.04</strong> (<code>PICSimLab_0.9.3_260920_Ubuntu_22.04.5_LTS_amd64.deb</code>). Installing the 24.04 package on a 22.04 system (or the reverse) is the most common source of dependency errors — the package is being asked to fit a system it was not built for. A second, general package-management point: installing a .deb with a low-level tool alone does not fetch missing dependencies; installing the same file through <code>apt</code> does.</p>
<p><strong>AppImages need the execute permission — and sometimes FUSE.</strong> This is general AppImage knowledge, not PICSimLab-specific: a downloaded AppImage is not executable until you set the execute bit, so a double-click silently does nothing. Some systems also lack the FUSE runtime AppImages use to mount themselves, in which case the file is executable but still will not start from the desktop; running it from a terminal shows the actual error message either way.</p>
<p><strong>Serial devices are permission-gated.</strong> PICSimLab&#8217;s Linux serial support uses tty0tty virtual devices (<code>/dev/tnt2 &lt;=&gt; /dev/tnt3</code> etc.). Like real serial devices, those files are owned with restricted permissions; if your user account cannot read and write them, the program cannot open the port no matter how correct everything else is.</p>
<p><strong>The NOGUI build has no window by design.</strong> <code>PICSimLab_NOGUI-0.9.3_260920_Ubuntu_22.04.5_LTS_x86_64.AppImage</code> is a terminal-only build — per the official release notes it must be used on a terminal together with the remote control interface (rcontrol, default TCP port 5000). Starting it and waiting for a GUI is a category error, not a crash.</p>
<h2>Fix</h2>
<ol>
<li><strong>Match the .deb to your release.</strong> Check your Ubuntu version (<code>lsb_release -a</code> in a terminal — general system knowledge) and download the matching package from our <a href="https://picsimlab.com/download/linux/">PICSimLab for Linux</a> page: the 24.04 .deb (SHA-256 <code>89510e3d917fa9cb19c8dde5b2facdbd0ee4a50422ba3ba487b201c6f2046fa7</code>) or the 22.04 .deb (SHA-256 <code>1862c3e78e99d427b854083d7ce1ab4a3e86023348150bdb695bc381f72921f1</code>). Verify with <code>sha256sum</code> before installing.</li>
<li><strong>Install the .deb through apt so dependencies resolve:</strong> <code>sudo apt install ./PICSimLab_0.9.3_260920_Ubuntu_24.04.5_LTS_amd64.deb</code> (adjust the file name to your build). apt pulls the libraries the package needs; a bare <code>dpkg -i</code> does not.</li>
<li><strong>On a non-Ubuntu or mismatched system, switch routes instead of fighting dependencies.</strong> The Flatpak (<code>picsimlab_Linux_0.9.3_260920.flatpak</code>) installs with <code>flatpak install picsimlab_Linux_0.9.3_260920.flatpak</code> and is the comfortable route off the two supported Ubuntu releases; the AppImage needs no installation at all. The simulator in all three is the same program.</li>
<li><strong>Fix the AppImage launch.</strong> Run <code>chmod +x PICSimLab-0.9.3_260920_Ubuntu_22.04.5_LTS_x86_64.AppImage</code>, then start it from a terminal (<code>./PICSimLab-0.9.3_260920_Ubuntu_22.04.5_LTS_x86_64.AppImage</code>) so any error is visible. If the terminal points at FUSE, install your distribution&#8217;s FUSE package (general AppImage requirement) and retry — or fall back to the Flatpak route.</li>
<li><strong>Fix serial device access.</strong> After installing tty0tty, make sure your user can read and write the <code>/dev/tnt*</code> devices it creates: check the device permissions, add your account to the group that owns serial devices if needed (on mainstream distributions serial devices are conventionally group-gated), then log out and back in so group changes take effect, and test again. Our <a href="https://picsimlab.com/virtual-serial-ports-picsimlab/">virtual serial ports guide</a> covers the pair setup itself.</li>
<li><strong>For the NOGUI build, drive it from the terminal.</strong> Start the NOGUI AppImage in a terminal and control it through rcontrol (connect to port 5000 with telnet or nc and use its text commands, e.g. to load a .hex and start the simulation). If you wanted a window, install one of the GUI builds instead — there is no Windows or macOS NOGUI build; it exists only as this Linux AppImage.</li>
</ol>
<h2>Still stuck?</h2>
<p>Work through the <a href="https://picsimlab.com/install-picsimlab-ubuntu-debian/">Ubuntu &amp; Debian installation guide</a> route by route, with the file table on the <a href="https://picsimlab.com/download/linux/">Linux download page</a> open beside it. If the release-matched .deb installed through apt — or the Flatpak — still will not run on v0.9.3, report it with your distribution and release, the route you used, and the terminal error text, on the project&#8217;s tracker: <a href="https://github.com/lcgamboa/picsimlab/issues" target="_blank" rel="noopener">github.com/lcgamboa/picsimlab/issues</a>.</p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PICSimLab Won&#8217;t Open on macOS? Gatekeeper and Wrong-Build Fixes</title>
		<link>https://picsimlab.com/picsimlab-macos-app-wont-open/</link>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 04:12:51 +0000</pubDate>
				<category><![CDATA[Troubleshooting]]></category>
		<guid isPermaLink="false">https://picsimlab.com/picsimlab-macos-app-wont-open/</guid>

					<description><![CDATA[PICSimLab Won&#8217;t Open on macOS? Gatekeeper and Wrong-Build Fixes You downloaded the new native macOS build of PICSimLab v0.9.3, dragged it into Applications — and macOS will not open it: a warning dialog, a refusal, or nothing at all. Almost every case is one of two things: Gatekeeper doing its standard job on an internet-downloaded...]]></description>
										<content:encoded><![CDATA[
<h1>PICSimLab Won&#8217;t Open on macOS? Gatekeeper and Wrong-Build Fixes</h1>
<p>You downloaded the new native macOS build of PICSimLab v0.9.3, dragged it into Applications — and macOS will not open it: a warning dialog, a refusal, or nothing at all. Almost every case is one of two things: Gatekeeper doing its standard job on an internet-downloaded app, or the wrong one of the two .dmg builds for your Mac. Both are quick to fix.</p>
<h2>Symptoms</h2>
<ul>
<li>Double-clicking PICSimLab shows a dialog saying macOS cannot open it or cannot verify it, and the app never starts.</li>
<li>The app icon appears in Applications but launching it does nothing, or it quits immediately.</li>
<li>A message suggests the app is damaged and should be moved to the Trash.</li>
</ul>
<h2>Why it happens</h2>
<p><strong>Gatekeeper.</strong> This is standard macOS behaviour — general Mac knowledge, not a PICSimLab-specific fault: the first time you open an app downloaded from the internet, macOS checks it and, for apps that arrive outside the App Store, asks you to confirm the first open explicitly instead of just double-clicking. A plain double-click can therefore look like a refusal even though the app itself is fine.</p>
<p><strong>The wrong .dmg for your chip.</strong> PICSimLab v0.9.3 ships <em>two</em> macOS builds, and they are not interchangeable: <code>PICSimLab_0.9.3_260920_macOS_26.6.1_x86_64.dmg</code> for Intel Macs and <code>PICSimLab_0.9.3_260920_macOS_26.6.2_arm64.dmg</code> for Apple Silicon (M-series) Macs. The arm64 build cannot run on an Intel Mac and vice versa — picking the wrong file produces exactly the &#8220;won&#8217;t open&#8221; symptom with no useful explanation. Both files, with sizes and SHA-256 checksums, are listed on our <a href="https://picsimlab.com/download/macos/">PICSimLab for macOS</a> page.</p>
<p><strong>An incomplete download.</strong> A truncated .dmg (interrupted download, proxy interference) can trigger the harsher &#8220;damaged&#8221; wording from macOS. That message is macOS&#8217;s generic response to a file that fails its integrity checks — re-downloading, not repairing, is the fix.</p>
<h2>Fix</h2>
<ol>
<li><strong>Check your chip first.</strong> Open the Apple menu → About This Mac. An Apple M-series chip means you need the <strong>arm64</strong> .dmg; an Intel processor means the <strong>x86_64</strong> .dmg. If you installed from the other file, delete that copy and download the correct one from the <a href="https://picsimlab.com/download/macos/">macOS download page</a>.</li>
<li><strong>Verify the checksum before you bypass anything.</strong> In Terminal, in your Downloads folder, run <code>shasum -a 256 &lt;file&gt;.dmg</code> and compare it with the value on the download page: <code>46cae7379b3828d771feefcaeb040f87d02ffbd5bd160dcda6152c8fa14b8b00</code> for arm64, <code>cb6af4651fe811dab3088667f34f3d0495960ec6b0bb4627f44f73a21386d07b</code> for x86_64. Only proceed past Gatekeeper prompts for a file whose checksum matches — that is what makes the next step safe.</li>
<li><strong>Install cleanly.</strong> Open the .dmg and drag PICSimLab into your Applications folder, then eject the disk image.</li>
<li><strong>Open it the Gatekeeper way: right-click → Open.</strong> In Applications, right-click (or Control-click) PICSimLab and choose <strong>Open</strong>, then confirm in the dialog. This explicit confirmation is the standard first-open path for downloaded apps.</li>
<li><strong>Or use Open Anyway.</strong> If the app was blocked on a previous attempt, open System Settings → Privacy &amp; Security, scroll to the note about PICSimLab being blocked, and choose <strong>Open Anyway</strong>, then confirm once more.</li>
<li><strong>If macOS insists the app is &#8220;damaged&#8221;:</strong> delete the app and the .dmg, re-download the correct build (step 1), verify the checksum (step 2) and repeat. A verified, complete file does not produce this message; do not go hunting for settings to disable the check instead.</li>
</ol>
<p>After the first successful open, PICSimLab launches normally from Applications like any other Mac app — the confirmation is a one-time gate, not a per-launch tax. Our <a href="https://picsimlab.com/install-picsimlab-macos/">macOS installation guide</a> covers the same steps in install order.</p>
<h2>Still stuck?</h2>
<p>Redo the sequence with the <a href="https://picsimlab.com/install-picsimlab-macos/">step-by-step macOS installation guide</a> and the file table on the <a href="https://picsimlab.com/download/macos/">macOS download page</a>. If a checksum-verified build for the correct chip still will not open after the right-click Open on v0.9.3, report it — your Mac chip, the exact dialog text and the macOS version included — on the project&#8217;s tracker: <a href="https://github.com/lcgamboa/picsimlab/issues" target="_blank" rel="noopener">github.com/lcgamboa/picsimlab/issues</a>.</p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ESP32 Firmware Won&#8217;t Flash or Boot in PICSimLab? The QIO/QOUT Limit</title>
		<link>https://picsimlab.com/picsimlab-esp32-flash-mode-qemu/</link>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 04:12:40 +0000</pubDate>
				<category><![CDATA[Troubleshooting]]></category>
		<guid isPermaLink="false">https://picsimlab.com/picsimlab-esp32-flash-mode-qemu/</guid>

					<description><![CDATA[ESP32 Firmware Won&#8217;t Flash or Boot in PICSimLab? The QIO/QOUT Limit Your ESP32 project flashes — or appears to — and then the simulated board will not boot: it loops, stalls, or shows nothing, even though the same firmware runs on a real DevKitC. With PICSimLab&#8217;s QEMU-based ESP32 boards there is one documented limitation behind...]]></description>
										<content:encoded><![CDATA[
<h1>ESP32 Firmware Won&#8217;t Flash or Boot in PICSimLab? The QIO/QOUT Limit</h1>
<p>Your ESP32 project flashes — or appears to — and then the simulated board will not boot: it loops, stalls, or shows nothing, even though the same firmware runs on a real DevKitC. With PICSimLab&#8217;s QEMU-based ESP32 boards there is one documented limitation behind most of these failures, and it is in the build settings, not in your code.</p>
<h2>Symptoms</h2>
<ul>
<li>Flashing with esptool seems to complete, but the ESP32-DevKitC board in PICSimLab never starts the program.</li>
<li>The firmware boots on real ESP32 hardware but not in the simulator (or the reverse confusion: an old image boots, a newly built one does not).</li>
<li>Boot problems started right after changing flash settings, switching board definitions, or moving from the Arduino IDE default profile to a custom partition/flash configuration.</li>
</ul>
<h2>Why it happens</h2>
<p>PICSimLab&#8217;s ESP32 boards — only two exist, the <strong>ESP32-DevKitC</strong> and the <strong>ESP32-C3-DevKitC-02</strong> — run on the qemu-esp32 backend. The official documentation carries an explicit warning for this backend, worth quoting in full: <strong>&#8220;Qemu ESP32 don&#8217;t support the QIO and QOUT flash modes, use only DIO or DOUT flash modes.&#8221;</strong> An image built for QIO or QOUT flash access asks the emulated flash to behave in a way QEMU does not implement, so the bootloader cannot read the application correctly and the board never reaches your code. On real hardware the same image is perfectly fine, which is exactly why this failure is so confusing.</p>
<p>The second part of the picture is the flashing path itself. Per the official documentation, you flash PICSimLab&#8217;s ESP32-DevKitC <em>as if it were a real ESP32 board</em>, using the Arduino IDE or the ESP-IDF <code>esptool.py</code> over the serial connection. That means the desktop serial prerequisite applies here too: the simulated serial port reaches your tools through a virtual null-modem pair (com0com on Windows, tty0tty on Linux, format 8N1) — if that path is broken, flashing fails before flash modes even matter. All files and builds are listed on our <a href="https://picsimlab.com/download/">Download page</a>.</p>
<h2>Fix</h2>
<ol>
<li><strong>Set the flash mode to DIO (or DOUT).</strong> In the Arduino IDE, choose the DIO flash mode in the board settings for your ESP32 target; in ESP-IDF, set the flash mode to DIO or DOUT in the project configuration (<code>menuconfig</code> → serial flasher config). Do not use QIO or QOUT for any image you intend to run in PICSimLab.</li>
<li><strong>Rebuild completely after changing the mode.</strong> A flash-mode change only takes effect in a fresh build. Clean and rebuild the project so the bootloader and application image are regenerated with the new mode — flashing only the application partition from a QIO build keeps the broken combination alive.</li>
<li><strong>Select the matching board in PICSimLab.</strong> Use ESP32-DevKitC for classic ESP32 firmware and ESP32-C3-DevKitC-02 for ESP32-C3 firmware; the two are different chips (the C3 is a RISC-V part) and their images are not interchangeable.</li>
<li><strong>Flash over the serial path, esptool-style.</strong> With the virtual serial pair in place (PICSimLab on one end, your flashing tool pointed at the other end), flash the rebuilt image with the Arduino IDE upload or the IDF/esptool.py flow, exactly as you would for a real board. If the port itself will not connect, fix that first with our <a href="https://picsimlab.com/virtual-serial-ports-picsimlab/">virtual serial ports guide</a>.</li>
<li><strong>Start the simulation and watch the boot.</strong> Reset the board after flashing completes. A DIO/DOUT image should now run through the bootloader into your application.</li>
<li><strong>Sanity-check with a minimal program.</strong> If a full project still will not boot, flash the smallest blink-style example built with DIO mode. If the minimal image boots, the remaining problem is inside the full project&#8217;s configuration (partition or flash settings are the first suspects); if even the minimal DIO image fails, re-check steps 3–4.</li>
</ol>
<h2>Still stuck?</h2>
<p>For what the two QEMU ESP32 boards do and do not cover, see the <a href="https://picsimlab.com/esp32-devkitc-picsimlab/">ESP32-DevKitC board page</a>. Confirm your toolchain basics against the <a href="https://picsimlab.com/download/">Download page</a> (PICSimLab itself) and the serial path in the <a href="https://picsimlab.com/virtual-serial-ports-picsimlab/">virtual serial ports guide</a>, and re-read the worked serial example in the <a href="https://picsimlab.com/pic16f877a-uart-serial-picsimlab/">PIC16F877A UART tutorial</a> — the pair/8N1 discipline is identical. If a clean DIO build flashed over a verified serial path still will not boot on the correct ESP32 board in v0.9.3, report it — board, flash mode, and the esptool output included — on the project&#8217;s tracker: <a href="https://github.com/lcgamboa/picsimlab/issues" target="_blank" rel="noopener">github.com/lcgamboa/picsimlab/issues</a>.</p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>MPLAB X Plugin Cannot Connect to PICSimLab? Port 1234 Checks</title>
		<link>https://picsimlab.com/picsimlab-mplab-x-plugin-connection/</link>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 04:12:30 +0000</pubDate>
				<category><![CDATA[Troubleshooting]]></category>
		<guid isPermaLink="false">https://picsimlab.com/picsimlab-mplab-x-plugin-connection/</guid>

					<description><![CDATA[MPLAB X Plugin Cannot Connect to PICSimLab? Port 1234 Checks You installed PICSimLab, opened your project in MPLAB X, started a debug session — and MPLAB X cannot connect to the simulator. The PICSimLab plugin talks to MPLAB X over a plain TCP socket, which makes this failure pleasantly mechanical: it is almost always the...]]></description>
										<content:encoded><![CDATA[
<h1>MPLAB X Plugin Cannot Connect to PICSimLab? Port 1234 Checks</h1>
<p>You installed PICSimLab, opened your project in MPLAB X, started a debug session — and MPLAB X cannot connect to the simulator. The PICSimLab plugin talks to MPLAB X over a plain TCP socket, which makes this failure pleasantly mechanical: it is almost always the plugin not being installed, the port numbers disagreeing, or a firewall quietly dropping a localhost connection. (If the plugin is not set up at all yet, start with our <a href="https://picsimlab.com/mplab-x-picsimlab-plugin/">MPLAB X plugin installation guide</a> and come back here if the connection still fails.)</p>
<h2>Symptoms</h2>
<ul>
<li>MPLAB X reports it cannot connect to the PICSimLab tool, or the debug session fails immediately at connect time.</li>
<li>The PICSimLab tool does not appear in MPLAB X at all.</li>
<li>The connection worked before and stopped after a PICSimLab or MPLAB X update, or after moving the project to another PC.</li>
</ul>
<h2>Why it happens</h2>
<p>Per the official documentation, the plugin file <code>com-picsim-picsimlab.nbm</code> lets MPLAB X debug and program PICSimLab (PICs and AVRs) by connecting <strong>through a TCP socket using port 1234 — or another port defined in the configuration window</strong> — and the documentation adds explicitly that <strong>you have to allow the access in the firewall</strong>. Three failure modes follow directly from that design:</p>
<ul>
<li><strong>The .nbm is not installed</strong> (or a stale one from a different PICSimLab release is): MPLAB X then has no PICSimLab tool to connect with.</li>
<li><strong>The ports disagree:</strong> the port in PICSimLab&#8217;s configuration window and the port the MPLAB X side expects must be identical. Change one and not the other and the connection is refused, even though both programs are running.</li>
<li><strong>The firewall blocks it:</strong> a localhost TCP connection is still a TCP connection; a strict firewall profile can drop it silently, especially on first use or on a work-managed PC.</li>
</ul>
<p>One naming trap: PICSimLab&#8217;s <strong>remote control interface (rcontrol) uses port 5000 by default</strong> — a different feature for controlling the simulator with text commands. Do not enter 5000 where the plugin expects its debug port; the plugin port is 1234 unless you changed it in the configuration window.</p>
<h2>Fix</h2>
<ol>
<li><strong>Confirm the .nbm is installed, from the matching release.</strong> In MPLAB X, open Tools → Plugins and check the Downloaded/Installed lists for the PICSimLab plugin. If it is missing, install <code>com-picsim-picsimlab.nbm</code> from the same PICSimLab release you run (for v0.9.3 the file is 27,091 bytes) following our <a href="https://picsimlab.com/mplab-x-picsimlab-plugin/">plugin guide</a>, then restart MPLAB X.</li>
<li><strong>Start PICSimLab first, with a board loaded.</strong> The plugin connects to a <em>running</em> simulator. Launch PICSimLab, select your board and load the firmware before starting the MPLAB X debug session.</li>
<li><strong>Make the ports match.</strong> Open PICSimLab&#8217;s configuration window and note the plugin/debug port (default <strong>1234</strong>). Confirm the MPLAB X side is set to the same number. If you changed the port at some point, change it in both places or reset both to 1234.</li>
<li><strong>Allow the connection in the firewall.</strong> Accept the firewall prompt if one appears when the first connection is attempted; if no prompt appears and the connection still fails, add an allow rule for PICSimLab / TCP port 1234 for the local network. Both programs run on the same PC — never forward this port on your router.</li>
<li><strong>Rule out a port clash.</strong> Only one listener can own port 1234 at a time. Close anything else that may be holding it — most commonly a leftover GDB debug session, which uses the same default port in PICSimLab (see our GDB connection guide on this site) — then retry.</li>
<li><strong>Retry the debug session</strong> with PICSimLab running and idle (not mid-reset), and confirm MPLAB X now connects, programs the simulated device and halts at your first breakpoint.</li>
</ol>
<h2>Still stuck?</h2>
<p>Redo the setup from scratch with the <a href="https://picsimlab.com/mplab-x-picsimlab-plugin/">MPLAB X plugin guide</a>, then try the connection pattern on a known-good project such as the <a href="https://picsimlab.com/pic18f4550-picsimlab-first-project/">PIC18F4550 first project</a>. If a matching-plugin, matching-port, firewall-allowed setup still refuses to connect on v0.9.3, report it — MPLAB X version, PICSimLab version and the exact error text included — on the project&#8217;s tracker: <a href="https://github.com/lcgamboa/picsimlab/issues" target="_blank" rel="noopener">github.com/lcgamboa/picsimlab/issues</a>.</p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PICSimLab Serial Port Not Working? Virtual Pair and 8N1 Fixes</title>
		<link>https://picsimlab.com/picsimlab-serial-port-not-working/</link>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 04:12:19 +0000</pubDate>
				<category><![CDATA[Troubleshooting]]></category>
		<guid isPermaLink="false">https://picsimlab.com/picsimlab-serial-port-not-working/</guid>

					<description><![CDATA[PICSimLab Serial Port Not Working? Virtual Pair and 8N1 Fixes Your simulated UART is silent: the terminal window shows nothing, or shows garbage, or the port will not open at all. In PICSimLab this is rarely a firmware bug. The desktop simulator&#8217;s serial port does not connect to a real COM port by itself —...]]></description>
										<content:encoded><![CDATA[
<h1>PICSimLab Serial Port Not Working? Virtual Pair and 8N1 Fixes</h1>
<p>Your simulated UART is silent: the terminal window shows nothing, or shows garbage, or the port will not open at all. In PICSimLab this is rarely a firmware bug. The desktop simulator&#8217;s serial port does not connect to a real COM port by itself — it needs a piece of operating-system setup first, and three settings after that. This page covers all of them.</p>
<h2>Symptoms</h2>
<ul>
<li>The serial terminal stays empty even though the program is running and should be transmitting.</li>
<li>Received text is garbled or framed wrong.</li>
<li>Your terminal program cannot open the port, or PICSimLab cannot open its end.</li>
<li>Serial works with PICSimLab&#8217;s built-in virtual terminal but not with your external terminal program (or the other way round).</li>
</ul>
<h2>Why it happens</h2>
<p><strong>The virtual port pair is missing.</strong> Per the official documentation, desktop serial simulation in PICSimLab requires a <strong>NULL-MODEM virtual serial port pair</strong>: on Windows that pair is created by <strong>com0com</strong>, on Linux by <strong>tty0tty</strong> (which creates linked devices such as <code>/dev/tnt2 &lt;=&gt; /dev/tnt3</code>). PICSimLab opens one end of the pair and your terminal opens the other. Without the pair installed, there is simply nothing for either side to connect to — this is the single most common cause.</p>
<p><strong>Both programs are on the same end.</strong> A pair only works when the two programs sit on <em>opposite</em> ends. Two programs on the same end hear nothing (and usually one of them fails to open the port at all, because a port end can only be opened once).</p>
<p><strong>Format or baud mismatch.</strong> The link format is <strong>8N1</strong> (8 data bits, no parity, 1 stop bit), and the baud rate in the terminal must equal the baud rate the firmware was written for. A wrong baud rate is the classic cause of garbled text.</p>
<p><strong>IO UART vs IO Virtual term confusion.</strong> PICSimLab has two different serial-related spare parts. The <strong>IO UART</strong> part (in the <em>Others</em> category of <em>Modules → Spare parts</em>) bridges the microcontroller&#8217;s UART to a serial port — this is the one that needs the virtual pair above. The <strong>IO Virtual term</strong> part (in the <em>Virtual</em> category) is a terminal that lives entirely inside the simulation: it needs no operating-system port at all, but it also cannot talk to external programs. Expecting the external path from the virtual terminal — or a virtual-pair setup from the built-in terminal — produces exactly the &#8220;nothing arrives&#8221; symptom. Note also that the official <strong>online version has no serial communication support at all (only the IO Vterm)</strong>, so an external-terminal setup can never work there; use the desktop version.</p>
<h2>Fix</h2>
<ol>
<li><strong>Install the pair driver.</strong> Windows: install com0com and create a dedicated pair (for example COM10/COM11). Linux: install tty0tty and note the pair it creates (for example <code>/dev/tnt2 &lt;=&gt; /dev/tnt3</code>). Our <a href="https://picsimlab.com/virtual-serial-ports-picsimlab/">virtual serial ports guide</a> walks through both setups.</li>
<li><strong>Put the programs on opposite ends.</strong> Configure PICSimLab&#8217;s serial port to one end (say COM10 or <code>/dev/tnt2</code>) and open the <em>other</em> end (COM11 or <code>/dev/tnt3</code>) in your terminal.</li>
<li><strong>Match the settings.</strong> Set the terminal to <strong>8N1</strong> and the exact baud rate your firmware uses. If text arrives garbled, the baud rate is wrong — this symptom is diagnostic, not random.</li>
<li><strong>Make sure the firmware really transmits.</strong> The simulation must be running, the loaded <code>.hex</code> must actually initialise and use the UART, and the UART pins must reach the serial connection on the selected board. A minimal known-good reference is our <a href="https://picsimlab.com/pic16f877a-uart-serial-picsimlab/">PIC16F877A UART tutorial</a>, which runs at 9600 8N1.</li>
<li><strong>On Linux, check device permissions.</strong> If opening <code>/dev/tnt*</code> fails with a permission error, your user account is not allowed to read/write those device files. Fix the tty device permissions or group membership for your account first (logging out and back in after a group change), then retry — this is a general Linux serial-device rule, not a PICSimLab setting.</li>
<li><strong>Or simplify: use the virtual terminal.</strong> If you only need to <em>see</em> what the firmware sends, add the IO Virtual term spare part instead of the IO UART part and skip the OS-level setup entirely.</li>
</ol>
<h2>Still stuck?</h2>
<p>Re-check the setup end-to-end against the <a href="https://picsimlab.com/virtual-serial-ports-picsimlab/">virtual serial ports guide</a> and the worked example in the <a href="https://picsimlab.com/pic16f877a-uart-serial-picsimlab/">PIC16F877A UART tutorial</a>. If a correct pair at matching 8N1 settings still passes nothing with the tutorial firmware on the desktop version, report it — operating system, pair driver, board and baud rate included — on the project&#8217;s tracker: <a href="https://github.com/lcgamboa/picsimlab/issues" target="_blank" rel="noopener">github.com/lcgamboa/picsimlab/issues</a>.</p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PICSimLab Simulation Not Running? Clock, Reset and Workspace Fixes</title>
		<link>https://picsimlab.com/picsimlab-simulation-not-running/</link>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 04:12:09 +0000</pubDate>
				<category><![CDATA[Troubleshooting]]></category>
		<guid isPermaLink="false">https://picsimlab.com/picsimlab-simulation-not-running/</guid>

					<description><![CDATA[PICSimLab Simulation Not Running? Clock, Reset and Workspace Fixes The firmware loads, you press run — and the board just sits there. No blinking, no output, no reaction to buttons. A dead-looking simulation in PICSimLab is usually one of four things: the simulation is not actually running, the board is held in reset or mis-clocked,...]]></description>
										<content:encoded><![CDATA[
<h1>PICSimLab Simulation Not Running? Clock, Reset and Workspace Fixes</h1>
<p>The firmware loads, you press run — and the board just sits there. No blinking, no output, no reaction to buttons. A dead-looking simulation in PICSimLab is usually one of four things: the simulation is not actually running, the board is held in reset or mis-clocked, the selected microcontroller does not match the firmware, or a saved workspace (<code>.pzw</code>) is restoring a broken configuration. Work through them in order.</p>
<h2>Symptoms</h2>
<ul>
<li>The simulation window opens and the board is drawn, but nothing ever changes.</li>
<li>A program that visibly worked yesterday does nothing today, with no code changes.</li>
<li>Code runs, but absurdly slowly — a one-second blink takes many seconds.</li>
<li>Inputs (buttons, spare parts) have no effect at all.</li>
</ul>
<h2>Why it happens</h2>
<p><strong>The simulation is stopped or the board is in reset.</strong> PICSimLab can sit in a stopped state with the board fully drawn; a board held in reset executes nothing, just like real hardware.</p>
<p><strong>Clock mismatch.</strong> PICSimLab boards have a configured crystal/clock, and PIC firmware is normally built with a matching assumption (in XC8, the <code>_XTAL_FREQ</code> value used for delay calculations). If the code assumes 20 MHz but the board is configured for a much lower clock, delays stretch by the same factor and a lively program can look frozen. The mismatch does not stop the CPU — it makes everything happen in slow motion.</p>
<p><strong>Wrong microcontroller selected.</strong> If the selected board is set to a different MCU than the one the <code>.hex</code> was compiled for, the loaded firmware does not correspond to the simulated chip and the board stays inert (see also our guide on <code>.hex</code> files not loading — searching this site for &#8220;hex file not loading&#8221; finds it).</p>
<p><strong>A corrupted or mismatched workspace.</strong> A <code>.pzw</code> workspace file saves the board, its configuration and the loaded setup. If that file was saved from a different board setup, or was damaged, reopening it can faithfully restore a configuration in which nothing works — the file loads fine, the setup it describes does not.</p>
<h2>Fix</h2>
<ol>
<li><strong>Start the simulation and pulse reset.</strong> Make sure the simulation is in the running state, then reset the board once and watch for the program&#8217;s start-up behaviour (most example programs blink or initialise outputs immediately).</li>
<li><strong>Verify board + MCU against the firmware.</strong> The selected board and microcontroller must be exactly the chip the <code>.hex</code> was built for. After any board change, load the <code>.hex</code> again.</li>
<li><strong>Check the clock.</strong> Compare the board&#8217;s configured crystal frequency with the frequency your code was built for (for XC8 projects, the <code>_XTAL_FREQ</code> define). Align them — either set the board clock to the value the code expects, or rebuild the code with the board&#8217;s frequency — and re-test: correct timing returning is the confirmation.</li>
<li><strong>Recover from a bad workspace.</strong> Close PICSimLab, reopen it <em>without</em> loading your <code>.pzw</code> file, select the board and microcontroller manually, load the <code>.hex</code> fresh, and re-add any spare parts (or reload the parts configuration, <code>.pcf</code>, if you saved one). If the simulation now runs, the old workspace was the problem: save a <strong>new</strong> workspace from this working setup and discard the old file.</li>
<li><strong>Prove the setup with a minimal program.</strong> Run the <a href="https://picsimlab.com/pic16f877a-blink-led-picsimlab/">PIC16F877A blink tutorial</a> on McLab2 or PICGenios, and if you need to <em>see</em> whether the CPU is toggling pins at all, probe a pin with the built-in oscilloscope as shown in <a href="https://picsimlab.com/picsimlab-oscilloscope/">Using the PICSimLab Oscilloscope</a>. A clean square wave there means the simulation is running and the issue is in your program&#8217;s logic, not the simulator state.</li>
</ol>
<h2>Still stuck?</h2>
<p>The <a href="https://picsimlab.com/pic16f877a-blink-led-picsimlab/">blink tutorial</a> and the <a href="https://picsimlab.com/picsimlab-oscilloscope/">oscilloscope walkthrough</a> give you a known-good baseline to compare against. If a fresh manual setup (no <code>.pzw</code>) with matching board, MCU and clock still will not run the official-style blink example on v0.9.3, report it — board, MCU, clock setting and version included — on the project&#8217;s tracker: <a href="https://github.com/lcgamboa/picsimlab/issues" target="_blank" rel="noopener">github.com/lcgamboa/picsimlab/issues</a>.</p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PICSimLab .hex File Not Loading? Board, MCU and File Checks</title>
		<link>https://picsimlab.com/picsimlab-hex-file-not-loading/</link>
		
		<dc:creator><![CDATA[Admin]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 04:11:59 +0000</pubDate>
				<category><![CDATA[Troubleshooting]]></category>
		<guid isPermaLink="false">https://picsimlab.com/picsimlab-hex-file-not-loading/</guid>

					<description><![CDATA[PICSimLab .hex File Not Loading? Board, MCU and File Checks You built your firmware, opened PICSimLab, loaded the .hex file — and nothing happened. Either the load itself fails, or the file appears to load but the board behaves as if no program is there. This page works through the causes in the order they...]]></description>
										<content:encoded><![CDATA[
<h1>PICSimLab .hex File Not Loading? Board, MCU and File Checks</h1>
<p>You built your firmware, opened PICSimLab, loaded the <code>.hex</code> file — and nothing happened. Either the load itself fails, or the file appears to load but the board behaves as if no program is there. This page works through the causes in the order they actually occur, from a board/firmware mismatch down to a stale build file.</p>
<h2>Symptoms</h2>
<ul>
<li>Loading the <code>.hex</code> file produces no visible change: no code runs, outputs stay idle.</li>
<li>The simulation runs, but the board behaves like it still holds an older program — or no program at all.</li>
<li>A <code>.hex</code> file that worked before stops working after you switched to a different board in PICSimLab.</li>
<li>The file loads on one board (for example McLab2) but not on another board you tried.</li>
</ul>
<h2>Why it happens</h2>
<p>PICSimLab does not run &#8220;a hex file&#8221; in the abstract — it runs firmware compiled for <strong>the specific microcontroller selected on the currently selected board</strong>. A <code>.hex</code> built for a PIC18F4550 cannot run on a board configured for a PIC16F877A, and an AVR <code>.hex</code> built for an Arduino Uno (ATmega328P) cannot run on a PIC board. When the firmware and the selected board/MCU do not match, the load either fails outright or produces a simulation that does nothing meaningful.</p>
<p>The other common causes are mundane: the <code>.hex</code> on disk is stale because the last build in your IDE actually failed, the file is empty or truncated because the build was interrupted, or you changed the board <em>after</em> loading the file — switching boards resets the simulation state, so the previously loaded firmware is no longer in place.</p>
<h2>Fix</h2>
<ol>
<li><strong>Confirm the board and MCU match the firmware.</strong> Check which board is selected in PICSimLab and which microcontroller it is set to, then check what chip your project was compiled for. For example, the McLab2 and PICGenios boards support the PIC16F777, PIC16F877A, PIC18F452, PIC18F4520, PIC18F4550 and PIC18F4620; if your chip is not selectable on the current board, pick a board that supports it (the generic Breadboard covers many additional PIC and AVR parts).</li>
<li><strong>Rebuild and confirm the build really succeeded.</strong> In MPLAB X, the Arduino IDE or VS Code with PlatformIO, fix any build errors first, then note the exact output path of the fresh <code>.hex</code> file. A failed build often leaves yesterday&#8217;s file in place, which makes a fixed program look &#8220;still broken&#8221;.</li>
<li><strong>Check the file itself.</strong> The <code>.hex</code> should be a non-trivial text file (an empty or near-empty file is a failed export, not firmware). If in doubt, move or copy it to a short, simple folder path and load it from there, so a moved project folder or a stale network path cannot confuse the load.</li>
<li><strong>Load in the right order: board first, then file.</strong> Select the board and microcontroller first, <em>then</em> load the <code>.hex</code> file. If you loaded the file and then switched boards, simply load the file again on the new board.</li>
<li><strong>Run and reset.</strong> After loading, make sure the simulation is actually running, and pulse reset once — some programs only show activity after a clean reset, exactly as on real hardware.</li>
<li><strong>Isolate with a known-good program.</strong> Load a minimal blink program built for exactly the selected chip (our <a href="https://picsimlab.com/pic16f877a-blink-led-picsimlab/">PIC16F877A LED blink tutorial</a> is built for the McLab2/PICGenios pair). If the blink program loads and runs, PICSimLab and the board selection are fine and the problem is inside your original project&#8217;s build; if even the blink program does nothing, re-check steps 1–3.</li>
</ol>
<h2>Still stuck?</h2>
<p>Revisit the basics in order: the <a href="https://picsimlab.com/pic16f877a-blink-led-picsimlab/">first-project blink tutorial</a> shows the exact board-then-load sequence, and the <a href="https://picsimlab.com/install-picsimlab-windows/">Windows installation guide</a> (with the platform pages under <a href="https://picsimlab.com/download/">Download</a>) rules out a damaged installation. If a correctly built <code>.hex</code> for a supported chip still will not load on a fresh PICSimLab v0.9.3 install, report it — with your board, MCU and PICSimLab version — on the project&#8217;s tracker: <a href="https://github.com/lcgamboa/picsimlab/issues" target="_blank" rel="noopener">github.com/lcgamboa/picsimlab/issues</a>.</p>

]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
