Hardware on CoderOnline https://coderonline.de/hardware/ Recent content in Hardware on CoderOnline Hugo en Sat, 01 Feb 2025 18:04:44 +0100 coreboot https://coderonline.de/hardware/coreboot/ Sat, 16 Nov 2019 23:16:53 +0100 https://coderonline.de/hardware/coreboot/ <p><img src="IMG_20191115_224958-768x1024.jpg" alt="Raspi as ISP" /></p> <p>Coreboot is an alternative and open source firmware. Together with its <strong>payloads</strong> it can replace a BIOS or UEFI.</p> <p>I was not able to find binary packages of coreboot. Maybe that is, because it is so hardware specific and would somehow make its usefulness questionable. However the latest source code version <a href="https://review.coreboot.org/coreboot.git">is here</a>.</p> <p>Why?</p> <ul> <li>Take back control: Own a hardware device and its software!</li> <li>Brand your device so that even removing the hard disk does not help.</li> <li>Write your own low level code. You know what? User space programs have no direct access to the contents of the flash.</li> <li>Your life bores you and you want to risk something - clearly speaking: <strong>This procedure can very well brick your device!</strong></li> </ul> <h2 id="hardware-requirements"> Hardware requirements <a class="anchor" href="#hardware-requirements">#</a> </h2> <p>You better have one of these chip clips, best searched with <code>soic16 clip</code>. The cheapest I could find has a small pin pitch (see pictures). I once soldered a soic8 clip, but this time I used modified header cables and flexible heat shrink and only press fitted these. I found that very convenient and it worked perfectly, see here:</p> monitoring https://coderonline.de/hardware/monitoring/ Fri, 29 Jul 2016 18:02:36 +0200 https://coderonline.de/hardware/monitoring/ <h2 id="hard-disk-drives"> Hard disk drives <a class="anchor" href="#hard-disk-drives">#</a> </h2> <dl> <dt><code>lsblk -f</code></dt> <dd>tree overview over all block devices, partitions, uuid&rsquo;s, labels and mountpoints</dd> <dt><code>hdparm -C /dev/sda</code></dt> <dd>displays the drive&rsquo;s state (active, standby)</dd> <dt><code>smartctl -s standby,now /dev/sda</code></dt> <dd>put the drive into standby</dd> <dt><code>hdparm -S240</code></dt> <dd>automatically put the drive into standby after 20 minutes of inactivity</dd> <dt><code>smartctl -a /dev/sda</code></dt> <dd>displays all smart information about the drive</dd> <dt><code>smartctl -lscttemp /dev/sda</code></dt> <dd>displays the drives temperature over time (other -l options exist, wakes drive up from standby)</dd> <dt><code>hddtemp /dev/sda</code></dt> <dd>can spin sleeping drives up, but does not do that by default, shows the drive&rsquo;s description/manufacturer, configurable as daemon</dd> </dl> <h2 id="sip"> SIP <a class="anchor" href="#sip">#</a> </h2> <p>As the SIP specification is very comprehensive it is not easy to find simple plain text tests. I found it is possible to make a simple call by sending this</p> avr isp mkii https://coderonline.de/hardware/avr-isp-mkii/ Wed, 01 Jan 2014 06:56:19 +0100 https://coderonline.de/hardware/avr-isp-mkii/ <h3 id="set-up-under-linux"> Set up under linux <a class="anchor" href="#set-up-under-linux">#</a> </h3> <p>If you find that your programmer is only usable by the <code>root</code> user, that is probably a permission issue. <code>udev</code> can set the correct permissions once configured:</p> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#75715e">// /etc/udev/rules.d/avr-isp-mkii.rules </span></span></span><span style="display:flex;"><span><span style="color:#a6e22e">SUBSYSTEM</span><span style="color:#f92672">==</span><span style="color:#e6db74">&#34;usb&#34;</span>, <span style="color:#a6e22e">SYSFS</span>{<span style="color:#a6e22e">idVendor</span>}<span style="color:#f92672">==</span><span style="color:#e6db74">&#34;03eb&#34;</span>, <span style="color:#a6e22e">SYSFS</span>{<span style="color:#a6e22e">idProduct</span>}<span style="color:#f92672">==</span><span style="color:#e6db74">&#34;2104&#34;</span>, <span style="color:#a6e22e">GROUP</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;users&#34;</span>, <span style="color:#a6e22e">MODE</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;0660&#34;</span> </span></span></code></pre></div><p>, where <code>03eb</code> and <code>2104</code> can be aquired using <code>lsusb</code> and one needs a user group to which users typically belong. Many linux systems have such a group simply named <code>users</code>, but you can choose anything else, as long as you are member of that group.</p> AVM FritzBox specific https://coderonline.de/hardware/fritzbox-ip-adresse-abfragen/ Mon, 28 Jan 2013 20:21:56 +0100 https://coderonline.de/hardware/fritzbox-ip-adresse-abfragen/ <h2 id="what-is-my-ipv4-address"> What is my IPv4 address? <a class="anchor" href="#what-is-my-ipv4-address">#</a> </h2> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># get_ipaddress.py</span> </span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> SOAPpy <span style="color:#f92672">import</span> SOAPProxy </span></span><span style="display:flex;"><span>print SOAPProxy(proxy<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;http://192.168.178.1:49000/upnp/control/WANCommonIFC1&#39;</span>, </span></span><span style="display:flex;"><span> namespace<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;urn:schemas-upnp-org:service:WANIPConnection:1&#39;</span>, </span></span><span style="display:flex;"><span> soapaction<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress&#39;</span>, </span></span><span style="display:flex;"><span> noroot<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>)<span style="color:#f92672">.</span>GetExternalIPAddress() </span></span></code></pre></div><h2 id="older-methods"> Older methods <a class="anchor" href="#older-methods">#</a> </h2> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>wget -qO- <span style="color:#e6db74">&#34;http://192.168.178.1:49000/igdupnp/control/WANIPConn1&#34;</span> --header <span style="color:#ae81ff">\ </span></span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;Content-Type: text/xml&#34;</span> --header <span style="color:#ae81ff">\ </span></span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress&#34;</span> <span style="color:#ae81ff">\ </span></span></span><span style="display:flex;"><span>--post-data<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;&#34;</span> | xmllint --xpath <span style="color:#e6db74">&#39;string(//NewExternalIPAddress)&#39;</span> - </span></span></code></pre></div><h3 id="what-is-my-ipv6-address"> What is my IPv6 address? <a class="anchor" href="#what-is-my-ipv6-address">#</a> </h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>wget -qO- <span style="color:#e6db74">&#34;http://192.168.178.1:49000/igdupnp/control/WANIPConn1&#34;</span> --header <span style="color:#ae81ff">\ </span></span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;Content-Type: text/xml&#34;</span> --header <span style="color:#ae81ff">\ </span></span></span><span style="display:flex;"><span><span style="color:#e6db74">&#34;SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#X_AVM_DE_GetExternalIPv6Address&#34;</span> <span style="color:#ae81ff">\ </span></span></span><span style="display:flex;"><span>--post-data<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;&#34;</span> | xmllint --xpath <span style="color:#e6db74">&#39;string(//NewExternalIPv6Address)&#39;</span> - </span></span></code></pre></div><h3 id="force-a-reconnection"> Force a reconnection <a class="anchor" href="#force-a-reconnection">#</a> </h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl <span style="color:#e6db74">&#34;http://fritz.box:49000/upnp/control/WANIPConn1&#34;</span> -H <span style="color:#e6db74">&#39;Content-Type: \ </span></span></span><span style="display:flex;"><span><span style="color:#e6db74">text/xml; charset=&#34;utf-8&#34;&#39;</span> -H <span style="color:#e6db74">&#39;SoapAction: \ </span></span></span><span style="display:flex;"><span><span style="color:#e6db74">urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination&#39;</span> -d <span style="color:#e6db74">&#39; &#39;</span> </span></span></code></pre></div> DEM-16217 https://coderonline.de/hardware/displayansteuerung/ Thu, 13 May 2010 18:09:19 +0200 https://coderonline.de/hardware/displayansteuerung/ <p>I am using the 8 bit mode of an Atmel <a href="http://www.atmel.com/Images/doc2543.pdf">ATtiny2313</a> to drive the display, because the 8 bit mode seemed to be the simpelst.</p> <p><img src="2010-05-13-P1130262-1024x577.jpg" alt="Displaysteuerung" /></p> <p>I am not exactly proud of the following code, but it used to work and it is very close to the instructions from the data sheet:</p> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-C" data-lang="C"><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;avr/io.h&gt;</span><span style="color:#75715e"> </span></span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;util/delay_basic.h&gt;</span><span style="color:#75715e"> </span></span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span><span style="color:#66d9ef">typedef</span> <span style="color:#66d9ef">enum</span> </span></span><span style="display:flex;"><span>{ </span></span><span style="display:flex;"><span> FUNCTION_SET <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>b00111000, </span></span><span style="display:flex;"><span> DISPLAY_CONTROL <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>b00001111, </span></span><span style="display:flex;"><span> DISPLAY_CLEAR <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>b00000001, </span></span><span style="display:flex;"><span> DISPLAY_HOME <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>b00000010, </span></span><span style="display:flex;"><span> ENTRY_MODE_SET <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>b00000110 </span></span><span style="display:flex;"><span>} INSTRUCTIONS; </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span><span style="color:#66d9ef">void</span> <span style="color:#a6e22e">execute</span>() </span></span><span style="display:flex;"><span>{ </span></span><span style="display:flex;"><span> PORTD <span style="color:#f92672">|=</span> <span style="color:#ae81ff">0</span>b01000000; </span></span><span style="display:flex;"><span> <span style="color:#a6e22e">_delay_loop_2</span>(<span style="color:#ae81ff">1024</span>); </span></span><span style="display:flex;"><span> PORTD <span style="color:#f92672">&amp;=</span> <span style="color:#ae81ff">0</span>b10111111; </span></span><span style="display:flex;"><span>} </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>() </span></span><span style="display:flex;"><span>{ </span></span><span style="display:flex;"><span> DDRB <span style="color:#f92672">=</span> <span style="color:#ae81ff">0xFF</span>; </span></span><span style="display:flex;"><span> DDRD <span style="color:#f92672">=</span> <span style="color:#ae81ff">0xFF</span>; </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span> PORTB <span style="color:#f92672">=</span> FUNCTION_SET; </span></span><span style="display:flex;"><span> <span style="color:#a6e22e">execute</span>(); </span></span><span style="display:flex;"><span> PORTB <span style="color:#f92672">=</span> DISPLAY_CONTROL; </span></span><span style="display:flex;"><span> <span style="color:#a6e22e">execute</span>(); </span></span><span style="display:flex;"><span> PORTB <span style="color:#f92672">=</span> DISPLAY_CLEAR; </span></span><span style="display:flex;"><span> <span style="color:#a6e22e">execute</span>(); </span></span><span style="display:flex;"><span> PORTB <span style="color:#f92672">=</span> ENTRY_MODE_SET; </span></span><span style="display:flex;"><span> <span style="color:#a6e22e">execute</span>(); </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span> <span style="color:#66d9ef">char</span><span style="color:#f92672">*</span> c <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;Max &#34;</span>; </span></span><span style="display:flex;"><span> <span style="color:#66d9ef">while</span>(<span style="color:#ae81ff">1</span>) </span></span><span style="display:flex;"><span> { </span></span><span style="display:flex;"><span> <span style="color:#66d9ef">int</span> i; </span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span>(i<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>; c[i]<span style="color:#f92672">!=</span><span style="color:#e6db74">&#39;\0&#39;</span>; i<span style="color:#f92672">++</span>) </span></span><span style="display:flex;"><span> { </span></span><span style="display:flex;"><span> PORTB <span style="color:#f92672">=</span> c[i]; </span></span><span style="display:flex;"><span> <span style="color:#a6e22e">execute</span>(); </span></span><span style="display:flex;"><span> } </span></span><span style="display:flex;"><span> <span style="color:#a6e22e">_delay_loop_2</span>(<span style="color:#ae81ff">32768</span>); </span></span><span style="display:flex;"><span> } </span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">0</span>; </span></span><span style="display:flex;"><span>} </span></span></code></pre></div> https://coderonline.de/hardware/delock-11826/ Mon, 01 Jan 0001 00:00:00 +0000 https://coderonline.de/hardware/delock-11826/ <h1 id="delock-5114"> Delock-5114 <a class="anchor" href="#delock-5114">#</a> </h1> <p>What makes a good gadget? Its customizable and this device is. Thanks Delock.</p> <p><img src="delock-5114.jpg" alt="delock-5114 product photo" /></p> <p>The manual has these URLs to control the device, but it offers other options as well.</p> <pre><code>curl http://delock-5114.fritz.box/?cmnd=Power%20TOGGLE # toggle on/off curl http://delock-5114.fritz.box/?cmnd=Power%20On # toggle on/off curl http://delock-5114.fritz.box/?cmnd=Power%20off # toggle on/off </code></pre> <p>and all these can be combined with username and password</p> <pre><code>curl http://delock-5114.fritz.box/?user=admin&amp;password=&lt;password&gt;&amp;cmnd=Power%20off </code></pre> https://coderonline.de/hardware/longan-nano-blink/ Mon, 01 Jan 0001 00:00:00 +0000 https://coderonline.de/hardware/longan-nano-blink/ <h1 id="longan-nano"> longan nano <a class="anchor" href="#longan-nano">#</a> </h1> <p>The examples for this Microcontroller do not work any more (framework hell as always) and you get an error message:</p> <pre><code>HTTPClientError: You do not have permission for this request </code></pre> <h2 id="download-dependencies-elsewhere"> Download dependencies elsewhere <a class="anchor" href="#download-dependencies-elsewhere">#</a> </h2> <p>Download everything with <code>gd32.*linux</code> in its name from <a href="https://sourceforge.net/projects/platformio-storage/files/packages/">sourceforge</a> and place it in a new subfolder <code>packages/</code> of a sample platformio-project, recognizable by a <code>platformio.ini</code> in its root.</p> <h2 id="extract-and-rename-files"> Extract and rename files <a class="anchor" href="#extract-and-rename-files">#</a> </h2> <p>Extract the (four) packages and remove from their names everything including and after <code>-linux</code>.</p> https://coderonline.de/hardware/ubiquity/ Mon, 01 Jan 0001 00:00:00 +0000 https://coderonline.de/hardware/ubiquity/ <h1 id="first-upgrade"> First Upgrade <a class="anchor" href="#first-upgrade">#</a> </h1> <h2 id="login-via-ssh"> Login via SSH <a class="anchor" href="#login-via-ssh">#</a> </h2> <p>Default username and password:</p> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>username: ubnt </span></span><span style="display:flex;"><span>password: ubnt </span></span></code></pre></div><p>The Android app <code>Unifi Network</code> searches for devices on port <code>8443</code>, but the port was not open:</p> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-gdscript3" data-lang="gdscript3"><span style="display:flex;"><span>U6<span style="color:#f92672">-</span>Lite<span style="color:#f92672">-</span>BZ<span style="color:#f92672">.</span><span style="color:#ae81ff">5.43</span><span style="color:#f92672">.</span><span style="color:#ae81ff">14</span><span style="color:#75715e"># netstat -ln</span> </span></span><span style="display:flex;"><span>Active Internet connections (only servers) </span></span><span style="display:flex;"><span>Proto Recv<span style="color:#f92672">-</span>Q Send<span style="color:#f92672">-</span>Q Local Address Foreign Address State </span></span><span style="display:flex;"><span>tcp <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0.0</span><span style="color:#f92672">.</span><span style="color:#ae81ff">0.0</span>:<span style="color:#ae81ff">22</span> <span style="color:#ae81ff">0.0</span><span style="color:#f92672">.</span><span style="color:#ae81ff">0.0</span>:<span style="color:#f92672">*</span> LISTEN </span></span><span style="display:flex;"><span>tcp <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">127.0</span><span style="color:#f92672">.</span><span style="color:#ae81ff">0.1</span>:<span style="color:#ae81ff">8873</span> <span style="color:#ae81ff">0.0</span><span style="color:#f92672">.</span><span style="color:#ae81ff">0.0</span>:<span style="color:#f92672">*</span> LISTEN </span></span><span style="display:flex;"><span>tcp <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span> :::<span style="color:#ae81ff">22</span> :::<span style="color:#f92672">*</span> LISTEN </span></span><span style="display:flex;"><span>udp <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0.0</span><span style="color:#f92672">.</span><span style="color:#ae81ff">0.0</span>:<span style="color:#ae81ff">41171</span> <span style="color:#ae81ff">0.0</span><span style="color:#f92672">.</span><span style="color:#ae81ff">0.0</span>:<span style="color:#f92672">*</span> </span></span><span style="display:flex;"><span>udp <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0.0</span><span style="color:#f92672">.</span><span style="color:#ae81ff">0.0</span>:<span style="color:#ae81ff">10001</span> <span style="color:#ae81ff">0.0</span><span style="color:#f92672">.</span><span style="color:#ae81ff">0.0</span>:<span style="color:#f92672">*</span> </span></span><span style="display:flex;"><span>udp <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0.0</span><span style="color:#f92672">.</span><span style="color:#ae81ff">0.0</span>:<span style="color:#ae81ff">38933</span> <span style="color:#ae81ff">0.0</span><span style="color:#f92672">.</span><span style="color:#ae81ff">0.0</span>:<span style="color:#f92672">*</span> </span></span><span style="display:flex;"><span>udp <span style="color:#ae81ff">0</span> <span style="color:#ae81ff">0</span> :::<span style="color:#ae81ff">47289</span> :::<span style="color:#f92672">*</span> </span></span><span style="display:flex;"><span>Active UNIX domain sockets (only servers) </span></span><span style="display:flex;"><span>Proto RefCnt Flags Type State I<span style="color:#f92672">-</span><span style="color:#a6e22e">Node</span> <span style="color:#a6e22e">Path</span> </span></span><span style="display:flex;"><span>unix <span style="color:#ae81ff">2</span> [ ACC ] STREAM LISTENING <span style="color:#ae81ff">1556</span> <span style="color:#f92672">/</span><span style="color:#66d9ef">var</span><span style="color:#f92672">/</span>run<span style="color:#f92672">/</span>lldpd<span style="color:#f92672">.</span>socket </span></span><span style="display:flex;"><span>unix <span style="color:#ae81ff">2</span> [ ACC ] STREAM LISTENING <span style="color:#ae81ff">1064</span> <span style="color:#f92672">/</span><span style="color:#66d9ef">var</span><span style="color:#f92672">/</span>run<span style="color:#f92672">/</span>ubus<span style="color:#f92672">.</span>sock </span></span><span style="display:flex;"><span>unix <span style="color:#ae81ff">2</span> [ ACC ] STREAM LISTENING <span style="color:#ae81ff">4445</span> <span style="color:#f92672">/</span>tmp<span style="color:#f92672">//</span>mtk_bt_service </span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-gdscript3" data-lang="gdscript3"><span style="display:flex;"><span>U6<span style="color:#f92672">-</span>Lite<span style="color:#f92672">-</span>BZ<span style="color:#f92672">.</span><span style="color:#ae81ff">5.43</span><span style="color:#f92672">.</span><span style="color:#ae81ff">14</span><span style="color:#75715e"># upgrade https://dl.ui.com/unifi/firmware/UAL6/5.43.23.12533/BZ.mt7621_5.43.23+12533.201222.2019.bin</span> </span></span><span style="display:flex;"><span>Downloading firmware from <span style="color:#e6db74">&#39;https://dl.ui.com/unifi/firmware/UAL6/5.43.23.12533/BZ.mt7621_5.43.23+12533.201222.2019.bin&#39;</span><span style="color:#f92672">.</span> </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>Scheduling firmware upgrade<span style="color:#f92672">...</span> </span></span><span style="display:flex;"><span>Inform <span style="color:#f92672">or</span> provisioning <span style="color:#f92672">in</span> progress<span style="color:#f92672">.</span> Upgrade will start soon<span style="color:#f92672">.</span> </span></span><span style="display:flex;"><span>Waiting <span style="color:#66d9ef">for</span> upgrade to start<span style="color:#f92672">...</span> </span></span><span style="display:flex;"><span>Waiting <span style="color:#66d9ef">for</span> upgrade to start<span style="color:#f92672">...</span> </span></span><span style="display:flex;"><span>[<span style="color:#f92672">...</span>] </span></span><span style="display:flex;"><span>Waiting <span style="color:#66d9ef">for</span> upgrade to start<span style="color:#f92672">...</span> </span></span><span style="display:flex;"><span>Connection to <span style="color:#ae81ff">192.168</span><span style="color:#f92672">.</span><span style="color:#ae81ff">178.30</span> closed by remote host<span style="color:#f92672">.</span> </span></span><span style="display:flex;"><span>Connection to <span style="color:#ae81ff">192.168</span><span style="color:#f92672">.</span><span style="color:#ae81ff">178.30</span> closed<span style="color:#f92672">.</span> </span></span></code></pre></div> https://coderonline.de/hardware/yubikey/ Mon, 01 Jan 0001 00:00:00 +0000 https://coderonline.de/hardware/yubikey/ <h1 id="yubikey"> Yubikey <a class="anchor" href="#yubikey">#</a> </h1> <p>Unlock the PIN (defaults to 123456) with the PUK: Personal Unlock Key (defaults to 12345678):</p> <pre><code># entered the wrong pin three times? Try ykman piv access unblock-pin ykman opengpg access unblock-pin # ...you get the idea. Check the result with: ykman openpgp info </code></pre> <p>Or start fresh over</p> <pre><code># delete opengpg from yubikey and reset pin/puk counters ykman openpgp reset # KEYID is going to be the main key id (not the keyid of subkeys). The # following command may require a password. gpg --export-secret-keys --armor KEYID &gt; /tmp/file_backup.txt # sanity check what has been exported gpg --show-keys /tmp/file_backup.txt # 2. Transfer the key to the yubikey (move not copy, because copy impossible) # edit the key in expert mode so you can skip entering `admin` gpg --expert --edit-key KEYID </code></pre>