<?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>Service Tools on ErrorZap</title><link>https://errorzap.com/tags/service-tools/</link><description>Recent content in Service Tools on ErrorZap</description><image><title>ErrorZap</title><url>https://errorzap.com/og.png</url><link>https://errorzap.com/og.png</link></image><generator>Hugo</generator><language>en-US</language><copyright>ErrorZap</copyright><lastBuildDate>Sat, 26 Sep 2026 17:05:00 -0600</lastBuildDate><atom:link href="https://errorzap.com/tags/service-tools/index.xml" rel="self" type="application/rss+xml"/><item><title>Secret Menus: Modes, Keys, and Tech Tools</title><link>https://errorzap.com/elevators/secret-menus/</link><pubDate>Sat, 26 Sep 2026 17:05:00 -0600</pubDate><guid>https://errorzap.com/elevators/secret-menus/</guid><description>Most of an elevator&amp;#39;s software isn&amp;#39;t clever dispatch. It&amp;#39;s a state machine full of special modes: fire recall, firefighter control, inspection, earthquake, emergency power. Plus the keys and service tools that unlock them, and who&amp;#39;s allowed to have them.</description><content:encoded><![CDATA[<div class="ez-dossier-lede"><span>ELEVATORS · FLOOR 05 · MODES</span><p>The dispatch AI gets the headlines. Most of the code is a very careful answer to one question: what mode am I in right now, and what am I allowed to do in it?</p></div>
<h2 id="the-short-version">The short version</h2>
<ul>
<li>A modern controller is a <strong>state machine</strong>. Normal service is just one state out of many.</li>
<li><strong>Fire Phase I</strong> recalls every car to a safe floor. <strong>Fire Phase II</strong> hands one car to a firefighter with a key, and the controls change behavior.</li>
<li><strong>Inspection</strong> mode lets mechanics ride the car top at a crawl. <strong>Earthquake</strong> and <strong>emergency power</strong> modes decide who moves and when.</li>
<li>The <strong>firefighter&rsquo;s key</strong> was standardized in many places so any fire crew could use any building&rsquo;s elevators. Security researchers have pointed out the obvious downside.</li>
<li>The <strong>service tools</strong> that read fault codes and change parameters are often proprietary, which has turned elevators into a right-to-repair fight.</li>
</ul>
<figure class="el-fig el-modes" data-el-modes>
  <figcaption><b>FIG. 5</b>Turn the key. Every one of these is a separate operating mode the controller software has to get exactly right.</figcaption>
  <div class="el-modes-ui">
    <div class="el-keyswitch" role="tablist" aria-label="Elevator operating modes">
      <button role="tab" aria-selected="true" data-m="0">Normal</button>
      <button role="tab" data-m="1">Fire Phase I</button>
      <button role="tab" data-m="2">Fire Phase II</button>
      <button role="tab" data-m="3">Independent</button>
      <button role="tab" data-m="4">Inspection</button>
      <button role="tab" data-m="5">Earthquake</button>
      <button role="tab" data-m="6">Emergency power</button>
      <button role="tab" data-m="7">Hospital / Code Blue</button>
    </div>
    <div class="el-modes-screen" role="tabpanel" aria-live="polite">
      <div class="el-lcd"><span data-code>MODE 00</span><span data-dir>▲▼</span></div>
      <h4 data-title>Normal passenger service</h4>
      <p data-body></p>
      <ul data-list></ul>
    </div>
  </div>
</figure>
<script>
(() => {
  const M = [
    ['00','▲▼','Normal passenger service','The group supervisor hands out hall calls, doors run on timers, and the light curtain reopens the doors when something crosses the beam.',['Hall calls: accepted','Door close button: usually ignored (see Floor 9)','Parks cars where it expects demand next']],
    ['F1','▼','Fire Phase I: recall','A smoke detector trips, or someone turns the lobby key. Every car in the bank cancels its calls and runs to the recall floor, and the doors stay open for firefighters. If smoke is at the main floor, the cars go to an alternate floor instead.',['Hall calls: dead','Car buttons: dead','Light curtain: often ignored, because smoke can block the beam']],
    ['F2','☞','Fire Phase II: firefighter control','A firefighter turns the key inside the car. The car only moves when they tell it to, and the doors only open while they hold the button. Let go early and the doors close again, so smoke stays out.',['Constant-pressure door open','Door close button: suddenly works','Call cancel button to change your mind']],
    ['IS','■','Independent service','Takes one car out of the group for movers, VIPs, or staff. It ignores hall calls, and the doors wait until someone presses a button.',['Hall calls: skipped','Doors: stay open until told','Common key-switch in the car panel']],
    ['IN','⇕','Inspection / access','Mechanic mode. Slow speed, and the car moves only while you hold a button on the car top or at the controller. This is how techs ride the hoistway to check rails, ropes, and switches.',['Speed: creeping, code limited','Constant-pressure run buttons','Stop switches everywhere']],
    ['EQ','⌇','Earthquake operation','Seismic sensors or a counterweight derailment switch trip. Cars stop at the nearest floor, open, and stay put or run slow until someone checks them.',['Nearest-floor stop','Reduced speed or out of service','Required in seismic zones']],
    ['EP','⚡','Emergency power','The building is on the generator, which can’t move every car at once. The supervisor brings cars down one at a time, then picks which ones stay running.',['Sequenced lowering','Selected cars stay in service','Rescue devices level cars on battery in some designs']],
    ['HS','✚','Hospital emergency / Code Blue','A priority call steals the nearest car, dumps its hall calls, and runs it express to the calling floor for a patient or a crash cart.',['Express to the call','Other riders ride along or get off','Key or card to go back to normal']]
  ];
  document.querySelectorAll('[data-el-modes]').forEach(root => {
    const q = s => root.querySelector(s);
    const show = i => {
      const [c, d, t, b, l] = M[i];
      q('[data-code]').textContent = 'MODE ' + c; q('[data-dir]').textContent = d;
      q('[data-title]').textContent = t; q('[data-body]').textContent = b;
      q('[data-list]').innerHTML = l.map(x => '<li>' + x + '</li>').join('');
      root.querySelectorAll('[data-m]').forEach(btn => btn.setAttribute('aria-selected', btn.dataset.m == i));
    };
    root.addEventListener('click', e => { const b = e.target.closest('[data-m]'); if (b) show(+b.dataset.m); });
    show(0);
  });
})();
</script>

<h2 id="fire-service-up-close">Fire service, up close</h2>
<p>Fire codes treat elevators as something to <strong>take out of public use</strong> during a
fire, not an escape route. Shafts can fill with smoke, power can fail, and water
from sprinklers and hoses gets everywhere. So:</p>
<ul>
<li><strong>Phase I (recall).</strong> Triggered by a smoke detector in a lobby, machine room,
or shaft, or by a key switch at the fire recall floor. Cars cancel every call,
head for the designated floor (or an alternate floor if the smoke is <em>at</em> the
main floor), open, and park. The light-curtain door sensors are typically
switched off in this mode, because smoke can block the beam and hold the door
open forever.</li>
<li><strong>Phase II (firefighter operation).</strong> A firefighter gets in and turns the
in-car key. Now the car answers only its own buttons. The doors open only while
the firefighter holds the button, and if they let go early the doors close
again, so a firefighter can peek at a smoky floor and back out. Here, finally,
the door close button does exactly what it says.</li>
</ul>
<p>Some newer high-rises go further with <strong>occupant evacuation operation</strong>, where
protected elevators help empty the building under tightly controlled
conditions. Codes and local adoption vary, so it&rsquo;s not everywhere.</p>
<h2 id="the-key-problem">The key problem</h2>
<p>For firefighters to use Phase II, they need a key that works. In many
jurisdictions that means a <strong>standardized fire service key</strong>, so a crew doesn&rsquo;t
need a ring of hundreds. Security researchers Deviant Ollam and Howard Payne
spent a DEF CON 22 talk walking through elevator terminology, modes, and
controls, and the tension is easy to see. A key every firefighter can carry is a
key other people can get too. We&rsquo;re not going to describe the key. The public
talk is the right place to go for the security side.</p>

<figure class="el-yt">
  <button type="button" class="el-yt-play" data-yt="oHf1vD5_b5I" aria-label="Play video: Elevator Hacking: From the Pit to the Penthouse">
    <img src="https://i.ytimg.com/vi/oHf1vD5_b5I/hqdefault.jpg" alt="" loading="lazy" width="480" height="360">
    <span class="el-yt-btn" aria-hidden="true">▶</span>
  </button>
  <figcaption><b>Elevator Hacking: From the Pit to the Penthouse</b><span>DEF CON 22 · Deviant Ollam &amp; Howard Payne</span><small>A security-conference view of elevator modes, keys, and controls. Great for understanding why buildings lock these things down.</small>
    <a href="https://www.youtube.com/watch?v=oHf1vD5_b5I" rel="noopener" target="_blank">Watch on YouTube ↗</a></figcaption>
</figure>
<script>
document.addEventListener('click', e => {
  const b = e.target.closest('.el-yt-play'); if (!b) return;
  const f = document.createElement('iframe');
  f.src = 'https://www.youtube-nocookie.com/embed/' + b.dataset.yt + '?autoplay=1&rel=0';
  f.title = b.getAttribute('aria-label'); f.allow = 'autoplay; encrypted-media; picture-in-picture'; f.allowFullscreen = true;
  f.className = 'el-yt-frame'; b.replaceWith(f);
});
</script>

<h2 id="tech-tools-and-the-right-to-repair-fight">Tech tools and the right-to-repair fight</h2>
<p>On older equipment, a skilled mechanic could fix almost anything with a meter
and a wiring diagram. On a lot of newer proprietary controllers, you can&rsquo;t even
<em>read the fault log</em> without the manufacturer&rsquo;s service tool. Depending on the
brand, that&rsquo;s a handheld unit, a laptop app, or a key-card, and independent
elevator companies say they either can&rsquo;t get one or can only lease one on the
manufacturer&rsquo;s terms.</p>
<p>Elevator World and independent contractors describe the same pattern as the
car and tractor right-to-repair fights. Building owners who want to switch
maintenance companies can find the new company locked out of their own
equipment. The counter-move is <strong>open-architecture controllers</strong> from
independent makers, sold on the promise that any licensed mechanic can service
them with published tools. That&rsquo;s also why &ldquo;modernization&rdquo; jobs so often replace
the whole controller.</p>
<div class="el-callout"><b>The status code rabbit hole</b><p>Schindler training material that circulates online lists elevator status codes from 00 to 99: out of service, passenger travel, fire, earthquake, hospital, learning travel, several flavors of inspection, persistent breakdown, and more. It's a good picture of how much of "elevator software" is modes and interlocks rather than clever scheduling.</p></div>
<h2 id="sources">Sources</h2>
<ol class="ez-sources">
<li><a href="https://up.codes/s/emergency-operation-and-signaling-devices">UpCodes: ASME A17.1 Section 2.27, emergency operation and signaling devices</a></li>
<li><a href="https://media.defcon.org/DEF%20CON%2022/DEF%20CON%2022%20presentations/DEF%20CON%2022%20-%20Deviant-Ollam-and-Howard-Payne-Elevator%20Hacking-From-the-Pit-to-the-Penthouse.pdf">DEF CON 22: Ollam &amp; Payne, Elevator Hacking (slides, PDF)</a></li>
<li><a href="https://elevatorworld.com/article/the-right-to-repair/">Elevator World: The Right to Repair</a></li>
<li><a href="https://elevatorblueprint.com/blog/oem-vs-independent-elevator-company/">Elevator Blueprint: OEM vs. independent elevator companies</a></li></ol>
]]></content:encoded></item></channel></rss>