<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Recovery on Barash Helvadzhaoglu</title><link>https://barashhelvadzhaoglu.com/en/tags/recovery/</link><description>Recent content in Recovery on Barash Helvadzhaoglu</description><generator>Hugo -- 0.168.0</generator><language>en</language><lastBuildDate>Fri, 16 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://barashhelvadzhaoglu.com/en/tags/recovery/index.xml" rel="self" type="application/rss+xml"/><item><title>When a Catalyst 3560 Won't Boot: Recovery from the Boot Loader</title><link>https://barashhelvadzhaoglu.com/en/posts/catalyst-3560-boot-loader-recovery/</link><pubDate>Fri, 16 Oct 2026 00:00:00 +0000</pubDate><guid>https://barashhelvadzhaoglu.com/en/posts/catalyst-3560-boot-loader-recovery/</guid><description>Recovering a Cisco Catalyst 3560 stuck at the switch: prompt — boot loader variables, booting a different image, and transferring a new IOS image over the console with Xmodem.</description><content:encoded><![CDATA[<p>Sooner or later every network engineer sees it: after a reload, the switch does not come back. On the console there is only a <code>switch:</code> prompt. The IOS image is missing, corrupted, or the boot variable points to a file that does not exist.</p>
<p>This is not a reason to replace the switch. The Catalyst 3560 boot loader has everything you need to get IOS running again, even when the image in flash is gone. This guide covers:</p>
<ul>
<li>How to read the boot loader environment and why the switch stopped there</li>
<li>How to boot an image that is already in flash</li>
<li>How to transfer a new image over the console with <strong>Xmodem</strong> when flash is empty</li>
<li>How to make the fix permanent</li>
</ul>
<blockquote>
<p><strong>Lab note:</strong> I am testing these scenarios on my own Catalyst 3560 8-port PoE switch. Console outputs and transfer times from that lab will be added to this guide.</p>
</blockquote>
<h2 id="why-the-switch-stops-at-the-boot-loader">Why the Switch Stops at the Boot Loader</h2>
<p>The boot loader starts IOS from the image listed in the <code>BOOT</code> variable. If that fails, or if no <code>BOOT</code> variable is set and the boot loader cannot find a bootable image itself, the switch stops at the <code>switch:</code> prompt. Typical causes:</p>
<ul>
<li>The upgrade went wrong: a typo in <code>boot system</code>, or the image was deleted before the new one was in place.</li>
<li>The image file is corrupted, for example after an interrupted copy.</li>
<li>The <code>MANUAL_BOOT</code> variable is set to <code>yes</code>, so the switch always waits at the prompt.</li>
<li>The flash file system is damaged.</li>
</ul>
<p>Another symptom is a <strong>boot loop</strong>: the switch starts loading IOS, crashes and reboots again and again. To break the loop, interrupt the boot process with the Mode button. The procedure is described in the <a href="/en/posts/catalyst-3560-password-recovery/">password recovery guide</a>.</p>
<h2 id="step-1-look-around">Step 1: Look Around</h2>
<p>Initialize flash and look at what is there:</p>
<pre tabindex="0"><code>switch: flash_init
switch: dir flash:
</code></pre><p>Then show the boot loader environment variables:</p>
<pre tabindex="0"><code>switch: set
</code></pre><p>The most important variables:</p>
<table>
	<thead>
			<tr>
					<th>Variable</th>
					<th>Meaning</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><code>BOOT</code></td>
					<td>Image(s) the switch tries to boot, separated by semicolons</td>
			</tr>
			<tr>
					<td><code>MANUAL_BOOT</code></td>
					<td><code>yes</code> = always stop at the boot loader prompt</td>
			</tr>
			<tr>
					<td><code>BAUD</code></td>
					<td>Console speed. Default is 9600 when the variable is not set</td>
			</tr>
			<tr>
					<td><code>CONFIG_FILE</code></td>
					<td>Configuration file name, default <code>config.text</code></td>
			</tr>
	</tbody>
</table>
<p>Use <code>help</code> to see which commands your boot loader version supports.</p>
<h2 id="step-2-boot-an-image-that-is-already-in-flash">Step 2: Boot an Image That Is Already in Flash</h2>
<p>If <code>dir flash:</code> shows a valid IOS image, you can boot it directly. Images installed with <code>archive download-sw</code> are in a subdirectory, so check the full path:</p>
<pre tabindex="0"><code>switch: dir flash:c3560-ipservicesk9-mz.&lt;version&gt;
switch: boot flash:c3560-ipservicesk9-mz.&lt;version&gt;/c3560-ipservicesk9-mz.&lt;version&gt;.bin
</code></pre><p>If <code>MANUAL_BOOT</code> was the problem, fix it:</p>
<pre tabindex="0"><code>switch: set MANUAL_BOOT no
</code></pre><p>When IOS is running, fix the boot variable permanently:</p>
<pre tabindex="0"><code>Switch# configure terminal
Switch(config)# boot system flash:&lt;path&gt;/&lt;image&gt;.bin
Switch(config)# end
Switch# copy running-config startup-config
Switch# show boot
</code></pre><h2 id="step-3-flash-is-empty-transfer-an-image-with-xmodem">Step 3: Flash Is Empty: Transfer an Image with Xmodem</h2>
<p>If there is no usable image in flash, you need to bring one in. On the classic Catalyst 3560, the boot loader has no network stack and the switch has no USB storage port, so the console is the way in. The protocol is <strong>Xmodem</strong>, which every serious terminal program supports.</p>
<h3 id="prepare-the-image">Prepare the Image</h3>
<p>Use the <code>.bin</code> file, not the <code>.tar</code> file. Xmodem transfers a single file and the boot loader cannot extract archives. Check the MD5 checksum on your PC before you start, because the transfer is long and you do not want to repeat it.</p>
<h3 id="increase-the-console-speed">Increase the Console Speed</h3>
<p>At 9600 baud, transferring an IOS image of this size takes several hours. Increase the speed first:</p>
<pre tabindex="0"><code>switch: set BAUD 115200
</code></pre><p>The console output becomes unreadable immediately. Change your terminal program to 115200 baud and press Enter until the <code>switch:</code> prompt comes back.</p>
<h3 id="start-the-transfer">Start the Transfer</h3>
<pre tabindex="0"><code>switch: copy xmodem: flash:c3560-ipservicesk9-mz.&lt;version&gt;.bin
</code></pre><p>The switch waits for the file. In your terminal program, start an Xmodem send:</p>
<ul>
<li><strong>SecureCRT:</strong> Transfer &gt; Send Xmodem</li>
<li><strong>Tera Term:</strong> File &gt; Transfer &gt; XMODEM &gt; Send</li>
<li><strong>minicom / screen:</strong> use <code>sx</code> from the <code>lrzsz</code> package</li>
</ul>
<p>At 115200 baud, expect a transfer time in the range of half an hour to an hour, depending on the image size and the terminal program. Do not touch the console session during the transfer.</p>
<h3 id="boot-the-new-image">Boot the New Image</h3>
<pre tabindex="0"><code>switch: dir flash:
switch: boot flash:c3560-ipservicesk9-mz.&lt;version&gt;.bin
</code></pre><h2 id="step-4-clean-up">Step 4: Clean Up</h2>
<p>When IOS is running:</p>
<ol>
<li>Verify the image: <code>verify /md5 flash:&lt;image&gt;.bin</code></li>
<li>Set <code>boot system</code> to the new image and save, as in Step 2.</li>
<li><strong>Reset the console speed.</strong> If you leave the boot loader <code>BAUD</code> at 115200, the console stays at that speed. Anyone who connects at the default 9600 baud later will see only garbage. Set it back in the boot loader (<code>set BAUD 9600</code>) or make sure the console line speed in IOS matches what your team expects.</li>
<li>Reload once to confirm that the switch boots without help.</li>
</ol>
<h2 id="what-about-tftp-and-usb">What About TFTP and USB?</h2>
<p>On newer Catalyst platforms the boot loader can do more. Some models have a USB storage port (<code>usbflash0:</code>) or can boot an image over the network from the management port. That is much faster than Xmodem. On the classic 3560, these options are not available, so Xmodem is the only path when flash is empty. Run <code>help</code> at the <code>switch:</code> prompt to see what your platform supports.</p>
<p>The same idea, booting from TFTP or USB when the device does not start, is covered for data center switches in the <a href="/en/posts/cisco-nexus-nxos-upgrade-guide/">Nexus NX-OS upgrade guide</a>.</p>
<h2 id="prevention">Prevention</h2>
<ul>
<li>Keep a copy of the current and the previous image on a TFTP server you can reach.</li>
<li>Verify the MD5 checksum before every reload after an upgrade.</li>
<li>Check <code>show boot</code> before every planned reload.</li>
<li>Have console access ready for every upgrade. A console server makes this possible remotely: <a href="/en/posts/next-gen-console-server-architecture/">Next-Gen Console Server Architecture</a>.</li>
</ul>
<h2 id="related-articles">Related Articles</h2>
<ul>
<li><a href="/en/posts/catalyst-3560-password-recovery/">Cisco Catalyst 3560 Password Recovery: Two Methods</a></li>
<li><a href="/en/posts/catalyst-3560-ios-upgrade/">Catalyst 3560 IOS Upgrade: Two Methods and Verification</a></li>
<li><a href="/en/posts/cisco-nexus-nxos-upgrade-guide/">Cisco Nexus NX-OS Software Upgrade Guide</a></li>
</ul>
]]></content:encoded></item></channel></rss>