<?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>Firmware on inetshell</title><link>https://inet.sh/en/tags/firmware/</link><description>Recent content in Firmware on inetshell</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 19 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://inet.sh/en/tags/firmware/index.xml" rel="self" type="application/rss+xml"/><item><title>Upgrade HP iLO firmware over SSH</title><link>https://inet.sh/en/posts/ilo/upgrade-firmware-ssh/</link><pubDate>Wed, 19 Aug 2026 00:00:00 +0000</pubDate><guid>https://inet.sh/en/posts/ilo/upgrade-firmware-ssh/</guid><description>Upgrade HP iLO firmware over SSH with SMASH CLP: show /map1/firmware1 and load -source http://…</description><content:encoded><![CDATA[<h2 id="tldr">TL;DR</h2>
<p>Serve the <code>.bin</code> over HTTP. Over SSH: <code>load -source http://…/ilofirmware.bin</code> under <code>/map1/firmware1</code>.</p>
<p>When iLO firmware is old enough that browsers refuse its TLS, SSH plus HTTP still works.</p>
<h2 id="1-serve-the-bin-over-http">1. Serve the <code>.bin</code> over HTTP</h2>
<p>iLO <strong>pulls</strong> the firmware; you do not SCP it in. <code>python3 -m http.server</code> on the management network is enough, or nginx. Use the official HPE <code>ilo*.bin</code>.</p>
<h2 id="2-log-in-and-load">2. Log in and load</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">ssh -c aes256-cbc Administrator@&lt;ilo-ip&gt;
</span></span><span class="line"><span class="cl">show /map1/firmware1
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> /map1/firmware1
</span></span><span class="line"><span class="cl">load -source http://&lt;http-server&gt;/ilofirmware.bin
</span></span></code></pre></td></tr></table>
</div>
</div><p><code>-c aes256-cbc</code> is the iLO 2/3 trick: modern OpenSSH will not offer the BMC&rsquo;s ciphers unless you ask.</p>
<p><code>show /map1/firmware1</code> prints the current version <strong>before</strong> you touch anything. Keep it.</p>
<h2 id="what-to-expect">What to expect</h2>
<ul>
<li><code>load</code> takes minutes. Do not kill the session.</li>
<li>iLO reboots itself. The host <strong>does not</strong> power off (firmware lives on the BMC).</li>
<li>If HTTP is not reachable from the iLO NIC, <code>load</code> fails with a useless error: <code>oemhp_ping</code> the HTTP server.</li>
</ul>
<p>After reboot, <code>show /map1/firmware1</code> again and confirm the version string.</p>
<p>Write-up this is based on: <a href="https://ajmckean.com/upgrade-hp-ilo-via-ssh/">Upgrade HP iLO via SSH</a>.</p>
<p>See also: <a href="/en/posts/ilo/cli-commands/">iLO CLI commands</a>.</p>
]]></content:encoded></item></channel></rss>