<?xml version="1.0" encoding="utf-8" ?>

<feed 
   xmlns="http://www.w3.org/2005/Atom"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/">
    
    <link href="https://daniel-lange.com/feeds/atom.xml" rel="self" title="Daniel Lange's blog" type="application/atom+xml" />
    <link href="https://daniel-lange.com/"                        rel="alternate"    title="Daniel Lange's blog" type="text/html" />
    <link href="https://daniel-lange.com/rss.php?version=2.0"     rel="alternate"    title="Daniel Lange's blog" type="application/rss+xml" />
    <link rel="stylesheet" href="" type="text/css" />
    <title type="html">Daniel Lange's blog</title>
    <subtitle type="html">agrep -pB IT /dev/life</subtitle>
    <icon>//daniel-lange.com/uploads/Avatar_Blog_144_234.png</icon>
    <id>https://daniel-lange.com/</id>
    <updated>2026-01-16T07:09:38Z</updated>
    <generator uri="http://www.s9y.org/" version="2.6-alpha1">Serendipity 2.6-alpha1 - http://www.s9y.org/</generator>
    <dc:language>en</dc:language>

    <entry>
        <link href="https://daniel-lange.com/archives/196-Resizing-Xterm-fonts-with-Ctrl+plus-and-Ctrl+minus.html" rel="alternate" title="Resizing Xterm fonts with Ctrl+&lt;plus&gt; and Ctrl+&lt;minus&gt;" />
        <author>
            <name>Daniel Lange</name>
                    </author>
    
        <published>2026-01-12T12:15:00Z</published>
        <disable-updated>2026-01-16T07:09:38Z</disable-updated>
        <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=196</wfw:comment>
    
        <slash:comments>4</slash:comments>
        <wfw:commentRss>https://daniel-lange.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=196</wfw:commentRss>
    
            <category scheme="https://daniel-lange.com/categories/8-Linux" label="Linux" term="Linux" />
    
        <id>https://daniel-lange.com/archives/196-guid.html</id>
        <title type="html">Resizing Xterm fonts with Ctrl+&lt;plus&gt; and Ctrl+&lt;minus&gt;</title>
        <content type="html">
            <![CDATA[<p>Xterm misses the convenient option to resize the fonts with <code>Ctrl+&lt;plus&gt;</code> and <code>Ctrl+&lt;minus&gt;</code> like xfce4-terminal or gnome-terminal do out of the box.</p>

<p>This feature can be added on Debian systems by dropping a configuration snippet into <code>/etc/X11/Xresources/x11-xterm-fontsize</code>:</p>

<div class="text geshi" style="text-align: left">! Allow XTerm font size to be changed with Ctrl+&lt;plus&gt; and &lt;minus&gt;<br />XTerm.vt100.translations: #override \n\<br />&#160; Ctrl &lt;Key&gt; minus: smaller-vt-font() \n\<br />&#160; Ctrl &lt;Key&gt; plus: larger-vt-font()</div>

<p>Any new X session will inherit this configuration and <code>Ctrl+&lt;plus&gt;</code> and <code>Ctrl+&lt;minus&gt;</code> will work to adjust the font size (and taking the window size along).</p>

<p>The font sizes that Xterm iterates through can be viewed on the <code>Ctrl-&lt;right click&gt;</code> context menu:</p>

<p><!-- s9ymdb:739 --><img class="serendipity_image_center" width="530" height="519"  src="https://daniel-lange.com/uploads/entries/xterm_right-click_menu.png" title="aah, the UI charm of the 80s 😍" loading="lazy" alt="Screenshot of an Xterm window with the context menu displayed">
NB: The context menu allows to switch the fonts on systems where the above snippet has not (yet) been installed. So good enough for a one-off.</p>

<p>Credits: <a href="https://askubuntu.com/questions/161652/how-to-change-the-default-font-size-of-xterm">Stack Overflow/Ask Ubuntu, Matthew Hoener</a>.</p>
 ]]>
        </content>
        <dc:subject>keyboard</dc:subject>
<dc:subject>x11</dc:subject>
<dc:subject>xterm</dc:subject>

    </entry>
    <entry>
        <link href="https://daniel-lange.com/archives/195-Getting-scanning-to-work-with-Gimp-on-Trixie.html" rel="alternate" title="Getting scanning to work with Gimp on Trixie" />
        <author>
            <name>Daniel Lange</name>
                    </author>
    
        <published>2025-12-24T09:00:00Z</published>
        <disable-updated>2025-12-25T13:37:45Z</disable-updated>
        <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=195</wfw:comment>
    
        <slash:comments>5</slash:comments>
        <wfw:commentRss>https://daniel-lange.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=195</wfw:commentRss>
    
            <category scheme="https://daniel-lange.com/categories/19-Debian" label="Debian" term="Debian" />
    
        <id>https://daniel-lange.com/archives/195-guid.html</id>
        <title type="html">Getting scanning to work with Gimp on Trixie</title>
        <content type="html">
            <![CDATA[<p>Trixie ships <a href="https://www.gimp.org/" title="Gimp Homepage">Gimp</a> 3.0.4 and the 3.x series has gotten incompatible to <a href="http://www.sane-project.org/sane-frontends.html">XSane</a>, the common frontend for scanners on Linux.</p>

<p>Hence the maintainer, Jörg Frings-Fürst, has <a href="https://git.jff.email/cgit/xsane.git/commit/?id=e94358be7216ead86f500f2f19420a61435eceec">disabled the Gimp integration temporarily</a> in response to a Debian bug <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1088080">#1088080</a>.</p>

<p>There seems to be no tracking bug for getting the functionality back but people have been commenting on Debian bug <a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=993293">#993293</a> as that is ... loosely related <img src="https://daniel-lange.com/plugins/serendipity_event_emoticate/img/emoticons/smile.png" alt=":-)" class="emoticon" />.</p>

<p>There are two options to get the Scanning functionality back in Trixie until this is properly resolved by an updated XSane in Debian (e.g. via trixie-backports):</p>

<p>Lee Yingtong Li (RunasSudo) has created a Python script that calls XSane as a cli application and published it at <a href="https://yingtongli.me/git/gimp-xsanecli/">https://yingtongli.me/git/gimp-xsanecli/</a>. This worked okish for me but needed me to find the scan in <code>/tmp/</code> a number of times. This is a good stop-gap script if you need to scan from Gimp $now and look for a quick solution.</p>

<p>Upstream has completed the necessary steps to get XSane working as a Gimp 3.x plugin at <a href="https://gitlab.com/sane-project/frontend/xsane">https://gitlab.com/sane-project/frontend/xsane</a>. Unfortunately compiling this is a bit involved but I made a version that can be dropped into <code>/usr/local/bin</code> or <code>$HOME/bin</code> and works alongside Gimp and the system-installed XSane.</p>

<p>So:</p>

<ol>
<li><code>sudo apt install gimp xsane</code></li>
<li>Download <a href="https://daniel-lange.com/software/xsane-1.0.0-fit-003">xsane-1.0.0-fit-003 (752kB, AMD64 executable for Trixie)</a> and place it in <code>/usr/local/bin</code> (as root)</li>
<li><code>sha256sum /usr/local/bin/xsane-1.0.0-fit-003</code><br />
# result needs to be af04c1a83c41cd2e48e82d04b6017ee0b29d555390ca706e4603378b401e91b2</li>
<li><code>sudo chmod +x /usr/local/bin/xsane-1.0.0-fit-003</code></li>
<li># Link the executable into the Gimp plugin directory as the user running Gimp:<br />
<code>mkdir -p $HOME/.config/GIMP/3.0/plug-ins/xsane/</code><br />
<code>ln -s /usr/local/bin/xsane-1.0.0-fit-003 $HOME/.config/GIMP/3.0/plug-ins/xsane/</code></li>
<li>Restart Gimp</li>
<li>Scan from Gimp via File → Create → Acquire → XSane </li>
</ol>

<p>The source code for the <code>xsane</code> executable above is available under GPL-2 at <a href="https://gitlab.com/sane-project/frontend/xsane/-/tree/c5ac0d921606309169067041931e3b0c73436f00">https://gitlab.com/sane-project/frontend/xsane/-/tree/c5ac0d921606309169067041931e3b0c73436f00</a>. This points to the last upstream commit from 27. September 2025 at the time of writing this blog article.</p>
 ]]>
        </content>
        <dc:subject>debian</dc:subject>
<dc:subject>scanner</dc:subject>
<dc:subject>trixie</dc:subject>
<dc:subject>xsane</dc:subject>

    </entry>
    <entry>
        <link href="https://daniel-lange.com/archives/194-Polkitd-Policy-Kit-Daemon-in-Trixie-...-allowing-remote-users-to-suspend,-reboot,-power-off-the-local-system.html" rel="alternate" title="Polkitd (Policy Kit Daemon) in Trixie ... allowing remote users to suspend, reboot, power off the local system" />
        <author>
            <name>Daniel Lange</name>
                    </author>
    
        <published>2025-08-22T17:30:00Z</published>
        <disable-updated>2025-08-23T16:40:37Z</disable-updated>
        <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=194</wfw:comment>
    
        <slash:comments>7</slash:comments>
        <wfw:commentRss>https://daniel-lange.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=194</wfw:commentRss>
    
            <category scheme="https://daniel-lange.com/categories/19-Debian" label="Debian" term="Debian" />
    
        <id>https://daniel-lange.com/archives/194-guid.html</id>
        <title type="html">Polkitd (Policy Kit Daemon) in Trixie ... allowing remote users to suspend, reboot, power off the local system</title>
        <content type="html">
            <![CDATA[<p>As per <a href="https://daniel-lange.com/archives/193-Polkitd-Policy-Kit-Daemon-in-Trixie-...-getting-rid-of-Authentication-is-required-to-create-a-color-profile.html">the previous Polkit blog post</a> the policykit framwork has lost the ability to understand its own .pkla files and policies need to be expressed in Javascript with .rules files now.</p>

<p>To re-enable allowing remote users (think ssh) to reboot, hibernate, suspend or power off the local system, create a <code>10-shutdown-reboot.rules</code> file in <code>/etc/polkit-1/rules.d/</code>:</p>

<div class="js geshi" style="text-align: left">polkit.addRule(function(action, subject) {<br />
&#160; &#160; if ((action.id == &quot;org.freedesktop.login1.reboot-multiple-sessions&quot; ||<br />
&#160; &#160; &#160; &#160; &#160;action.id == &quot;org.freedesktop.login1.reboot&quot; ||<br />
&#160; &#160; &#160; &#160; &#160;action.id == &quot;org.freedesktop.login1.suspend-multiple-sessions&quot; ||<br />
&#160; &#160; &#160; &#160; &#160;action.id == &quot;org.freedesktop.login1.suspend&quot; ||<br />
&#160; &#160; &#160; &#160; &#160;action.id == &quot;org.freedesktop.login1.hibernate-multiple-sessions&quot; ||<br />
&#160; &#160; &#160; &#160; &#160;action.id == &quot;org.freedesktop.login1.hibernate&quot; ||<br />
&#160; &#160; &#160; &#160; &#160;action.id == &quot;org.freedesktop.login1.power-off-multiple-sessions&quot; ||<br />
&#160; &#160; &#160; &#160; &#160;action.id == &quot;org.freedesktop.login1.power-off&quot;) &amp;&amp;<br />
&#160; &#160; &#160; &#160; (subject.isInGroup(&quot;sudo&quot;) || (subject.user == &quot;root&quot;)))<br />
&#160; &#160; {<br />
&#160; &#160; &#160; &#160; return polkit.Result.YES;<br />
&#160; &#160; }<br />
});</div>

<p>and run <code>systemctl restart polkit</code>.</p>
 ]]>
        </content>
        <dc:subject>javascript</dc:subject>
<dc:subject>polkit</dc:subject>
<dc:subject>security</dc:subject>

    </entry>
    <entry>
        <link href="https://daniel-lange.com/archives/193-Polkitd-Policy-Kit-Daemon-in-Trixie-...-getting-rid-of-Authentication-is-required-to-create-a-color-profile.html" rel="alternate" title="Polkitd (Policy Kit Daemon) in Trixie ... getting rid of &quot;Authentication is required to create a color profile&quot;" />
        <author>
            <name>Daniel Lange</name>
                    </author>
    
        <published>2025-05-17T10:00:00Z</published>
        <disable-updated>2025-06-06T09:25:30Z</disable-updated>
        <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=193</wfw:comment>
    
        <slash:comments>5</slash:comments>
        <wfw:commentRss>https://daniel-lange.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=193</wfw:commentRss>
    
            <category scheme="https://daniel-lange.com/categories/19-Debian" label="Debian" term="Debian" />
    
        <id>https://daniel-lange.com/archives/193-guid.html</id>
        <title type="html">Polkitd (Policy Kit Daemon) in Trixie ... getting rid of &quot;Authentication is required to create a color profile&quot;</title>
        <content type="html">
            <![CDATA[<p>On the way to Trixie,<strong> polkitd (Policy Kit Daemon) has lost the functionality to evaluate its .pkla (Polkit Local Authority) files</strong>.</p>

<pre>
$ zcat /usr/share/doc/polkitd/NEWS.Debian.gz 
policykit-1 (121+compat0.1-2) experimental; urgency=medium

  This version of polkit changes the syntax used for local policy rules:
  it is now the same JavaScript-based format used by the upstream polkit
  project and by other Linux distributions.

  System administrators can override the default security policy by
  installing local policy overrides into /etc/polkit-1/rules.d/*.rules,
  which can either make the policy more restrictive or more
  permissive. Some sample policy rules can be found in the
  /usr/share/doc/polkitd/examples directory. Please see polkit(8) for
  more details.

  Some Debian packages include security policy overrides, typically to
  allow members of the sudo group to carry out limited administrative
  actions without re-authenticating. These packages should install their
  rules as /usr/share/polkit-1/rules.d/*.rules. Typical examples can be
  found in packages like flatpak, network-manager and systemd.

  Older Debian releases used the "local authority" rules format from
  upstream version 0.105 (.pkla files with an .desktop-like syntax,
  installed into subdirectories of /etc/polkit-1/localauthority
  or /var/lib/polkit-1/localauthority). The polkitd-pkla package
  provides compatibility with these files: if it is installed, they
  will be processed at a higher priority than most .rules files. If the
  polkitd-pkla package is removed, .pkla files will no longer be used.

 -- Simon McVittie <smcv@debian.org>  Wed, 14 Sep 2022 21:33:22 +0100
</pre>

<p>This applies now to the <strong>polkitd version 126-2 destined for Trixie</strong>.</p>

<p>The most prominent issue is that you will get an error message:
"Authentication is required to create a color profile" asking for the root(!) password every time you remotely log into a Debian Trixie system via RDP, x2go or the like.</p>

<p>This used to be mendable with a .pkla file dropped into <code>/etc/polkit-1/localauthority/50-local.d/</code> ... but these .pkla files are void now and need to be replace with a Javascript "rules" file.</p>

<p>The background to his is quite a fascinating read ... 13 years later:<br />
<a href="https://davidz25.blogspot.com/2012/06/authorization-rules-in-polkit.html">https://davidz25.blogspot.com/2012/06/authorization-rules-in-polkit.html</a></p>

<p>The solution has been listed in <a href="https://devanswe.rs/fix-authentication-required-create-color-profile-ubuntu-polkit/">DevAnswers</a> as other distros (Fedora, ArchLinux, OpenSuse) have been faster to depreciate the .pkla files and require .rules files.
I amended the solution given there with checking for root to be automatically authenticated, too.</p>

<p>So, create a <code>50-color-manager.rules</code> file in <code>/etc/polkit-1/rules.d/</code>:</p>

<div class="js geshi" style="text-align: left">polkit.addRule(function(action, subject) {<br />
&#160; &#160; if (action.id.startsWith(&quot;org.freedesktop.color-manager.&quot;) &amp;&amp; (subject.isInGroup(&quot;users&quot;) || (subject.user == &quot;root&quot;))) {<br />
&#160; &#160; &#160; &#160; return polkit.Result.YES;<br />
&#160; &#160; }<br />
});</div>

<p>and run <code>systemctl restart polkit</code>.</p>

<p>You should be good until polkit is rewritten in Rust.</p>
 ]]>
        </content>
        <dc:subject>archlinux</dc:subject>
<dc:subject>fail</dc:subject>
<dc:subject>fedora</dc:subject>
<dc:subject>javascript</dc:subject>
<dc:subject>opensuse</dc:subject>
<dc:subject>polkit</dc:subject>
<dc:subject>remove</dc:subject>
<dc:subject>security</dc:subject>
<dc:subject>updated</dc:subject>

    </entry>
    <entry>
        <link href="https://daniel-lange.com/archives/192-Make-apt-shut-up-about-modernize-sources-in-Trixie.html" rel="alternate" title="Make `apt` shut up about &quot;modernize-sources&quot; in Trixie" />
        <author>
            <name>Daniel Lange</name>
                    </author>
    
        <published>2025-05-03T12:22:00Z</published>
        <disable-updated>2025-06-06T15:55:25Z</disable-updated>
        <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=192</wfw:comment>
    
        <slash:comments>5</slash:comments>
        <wfw:commentRss>https://daniel-lange.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=192</wfw:commentRss>
    
            <category scheme="https://daniel-lange.com/categories/19-Debian" label="Debian" term="Debian" />
    
        <id>https://daniel-lange.com/archives/192-guid.html</id>
        <title type="html">Make `apt` shut up about &quot;modernize-sources&quot; in Trixie</title>
        <content type="html">
            <![CDATA[<p>Apt in Trixie (Debian 13) has the annoying function to tell you
<em>"<strong>Notice</strong>: Some sources can be modernized. Run 'apt modernize-sources' to do so."</em> ... every single time you run <code>apt update</code>. Not cool for logs and log monitoring.</p>

<p>And - of course - if you had the option to do this, you ... would have run the indicated <code>apt modernize-sources</code> command to convert your <code>sources.list</code> to "deb822 .sources format" files already. So an information message once or twice would have done.</p>

<p>Well, luckily you can help yourself:</p>

<p><code>apt -o APT::Get::Update::SourceListWarnings=false</code> will keep <code>apt</code> shut up. This could go into an <code>alias</code> or your systems management tool / update script.</p>

<p>Alternatively add</p>

<pre>
# Keep apt shut about preferring the "deb822" sources file format
APT::Get::Update::SourceListWarnings "false";
</pre>

<p>to <code>/etc/apt/apt.conf.d/10quellsourceformatwarnings</code> .</p>

<p>This silences the notices about sources file formats (not only the deb822 one) system-wide.
That way you can decide when you can / want to migrate to the new, more verbose, apt sources format yourself.</p>

<h3>Update 06.06.2025</h3>

<p>I looks like the powers that are have had mercy, apt 3.0.2 has <a href="https://tracker.debian.org/news/1648026/apt-302-migrated-to-testing/">migrated to Trixie two days ago</a> and the <a href="https://tracker.debian.org/news/1647058/accepted-apt-302-source-into-unstable/">Changelog</a> contains:</p>

<blockquote>
  <p>Downgrade "modernize-sources" notice to audit</p>
</blockquote>

<p><!-- s9ymdb:729 --><img class="plain-images" width="128" height="128"  src="https://daniel-lange.com/uploads/icons/emoji/hug.png"  loading="lazy" alt="Hug" border="0"></p>
 ]]>
        </content>
        <dc:subject>annoying</dc:subject>
<dc:subject>apt</dc:subject>
<dc:subject>debian</dc:subject>
<dc:subject>trixie</dc:subject>
<dc:subject>ubuntu</dc:subject>
<dc:subject>updated</dc:subject>

    </entry>
    <entry>
        <link href="https://daniel-lange.com/archives/191-Seagate-old-hard-disks-sold-as-new,-smartmontools-v7.4-for-Debian-Bullseye-and-Bookworm.html" rel="alternate" title="Seagate old hard disks sold as new, smartmontools v7.4 for Debian Bullseye and Bookworm " />
        <author>
            <name>Daniel Lange</name>
                    </author>
    
        <published>2025-01-31T17:42:00Z</published>
        <disable-updated>2025-03-12T08:52:27Z</disable-updated>
        <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=191</wfw:comment>
    
        <slash:comments>3</slash:comments>
        <wfw:commentRss>https://daniel-lange.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=191</wfw:commentRss>
    
            <category scheme="https://daniel-lange.com/categories/19-Debian" label="Debian" term="Debian" />
            <category scheme="https://daniel-lange.com/categories/2-IT" label="IT" term="IT" />
    
        <id>https://daniel-lange.com/archives/191-guid.html</id>
        <title type="html">Seagate old hard disks sold as new, smartmontools v7.4 for Debian Bullseye and Bookworm </title>
        <content type="html">
            <![CDATA[<p>Apparently somebody managed to <a href="https://www.heise.de/en/news/Hard-disk-fraud-More-retailers-affected-first-returns-10264576.html" title="Press report at Heise Online">resell Seagate hard disks that have 2-5 years of operations on them as brand new</a>.</p>

<p>They did this by using some new shrink wrap bags and resetting the used hard disk <a href="https://en.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technology" title="Wikipedia: SMART">SMART attributes</a> to factory-new values.</p>

<p><!-- s9ymdb:718 --><img class="serendipity_image_right" width="225" height="342"  src="https://daniel-lange.com/uploads/entries/Seagate_Exos_X24.jpg"  alt="Image of Seagate Exos X24 hard disk"></p>

<p>Luckily Seagate has a proprietary extension "Seagate FARM (Field Access Reliability Metrics)" implemented in their disks that ... the crooks did not reset.</p>

<p>Luckily ... because other manufacturers do not have that extension. And you think the crooks only re-sell used Seagate disks? Lol.</p>

<p>To get access to the Seagate FARM extension, you need <code>smartctl</code> from <code>smartmontools</code> v7.4 or later.</p>

<p>For Debian 12 (Bookworm) you can add the <a href="https://backports.debian.org/Instructions/">backports archive</a> and then install with
<code>apt install smartmontools/bookworm-backports</code>.</p>

<p>For Debian 11 (Bullseye) you can use a backport we created at my company:</p>

<table>
<thead>
<tr>
  <th>File</th>
  <th>sha256</th>
</tr>
</thead>
<tbody>
<tr>
  <td><a href="https://daniel-lange.com/software/smartmontools_7.4-2~bpo11+1_amd64.deb" title="Smartmontools v7.4 backport for Debian Bullseye: 630kB">smartmontools_7.4-2~bpo11+1_amd64.deb</a></td>
  <td>e09da1045549d9b85f2cd7014d1f3ca5d5f0b9376ef76f68d8d303ad68fdd108</td>
</tr>
</tbody>
</table>

<p>You can also download static builds from <a href="https://builds.smartmontools.org/">https://builds.smartmontools.org/</a> which keeps the latest CI builds of the current development branch (v7.5 at the time of writing).</p>

<p>To check the state of your drives, compare the output from <code>smartctl -x</code> and <code>smartctl -l farm</code>. Double checking <strong>Power_On_Hours</strong> vs. <strong>"Power on Hours"</strong> is the obvious. But the other values around "Head Flight Hours" and "Power Cycle Count" should also roughly match what you expect from a hard disk of a certain age. All near zero, of course, for a factory-new hard disk.</p>

<p>This is what it looks like for a hard disk that has gracefully serviced 4 years and 8 months so far. The  <code>smartctl -x</code> and <code>smartctl -l farm</code> data match within some small margins:</p>

<div class="bash geshi" style="text-align: left">$ smartctl <span style="color: #660033;">-x</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda<br /><br />smartctl <span style="color: #000000;">7.4</span> <span style="color: #000000;">2023</span>-08-01 r5530 <span style="color: #7a0874; font-weight: bold;">&#91;</span>x86_64-linux-6.1.0-<span style="color: #000000;">30</span>-amd64<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">local</span> build<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />Copyright <span style="color: #7a0874; font-weight: bold;">&#40;</span>C<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000;">2002</span>-<span style="color: #000000;">23</span>, Bruce Allen, Christian Franke, www.smartmontools.org<br /><br />=== START OF INFORMATION SECTION ===<br />Model Family: &#160; &#160; Seagate Exos X14<br />Device Model: &#160; &#160; ST10000NM0568-2H5110<br /><span style="color: #7a0874; font-weight: bold;">&#91;</span>..<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />Vendor Specific SMART Attributes with Thresholds:<br /><span style="color: #666666;">ID# </span>ATTRIBUTE_NAME &#160; &#160; &#160; &#160; &#160;FLAGS &#160; &#160;VALUE WORST THRESH FAIL RAW_VALUE<br /><span style="color: #7a0874; font-weight: bold;">&#91;</span>..<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />&#160; <span style="color: #000000;">4</span> Start_Stop_Count &#160; &#160; &#160; &#160;<span style="color: #660033;">-O--CK</span> &#160; <span style="color: #000000;">100</span> &#160; <span style="color: #000000;">100</span> &#160; 020 &#160; &#160;- &#160; &#160;<span style="color: #000000;">26</span><br /><span style="color: #7a0874; font-weight: bold;">&#91;</span>..<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />&#160; <span style="color: #000000;">9</span> Power_On_Hours &#160; &#160; &#160; &#160; &#160;<span style="color: #660033;">-O--CK</span> &#160; 054 &#160; 054 &#160; 000 &#160; &#160;- &#160; &#160;<span style="color: #000000;">40860</span><br />&#160;<span style="color: #000000;">10</span> Spin_Retry_Count &#160; &#160; &#160; &#160;PO--C- &#160; <span style="color: #000000;">100</span> &#160; <span style="color: #000000;">100</span> &#160; 097 &#160; &#160;- &#160; &#160;<span style="color: #000000;">0</span><br />&#160;<span style="color: #000000;">12</span> Power_Cycle_Count &#160; &#160; &#160; <span style="color: #660033;">-O--CK</span> &#160; <span style="color: #000000;">100</span> &#160; <span style="color: #000000;">100</span> &#160; 020 &#160; &#160;- &#160; &#160;<span style="color: #000000;">27</span><br /><span style="color: #7a0874; font-weight: bold;">&#91;</span>..<span style="color: #7a0874; font-weight: bold;">&#93;</span><br /><span style="color: #000000;">192</span> Power-Off_Retract_Count <span style="color: #660033;">-O--CK</span> &#160; <span style="color: #000000;">100</span> &#160; <span style="color: #000000;">100</span> &#160; 000 &#160; &#160;- &#160; &#160;<span style="color: #000000;">708</span><br /><span style="color: #000000;">193</span> Load_Cycle_Count &#160; &#160; &#160; &#160;<span style="color: #660033;">-O--CK</span> &#160; 064 &#160; 064 &#160; 000 &#160; &#160;- &#160; &#160;<span style="color: #000000;">72077</span><br /><span style="color: #7a0874; font-weight: bold;">&#91;</span>..<span style="color: #7a0874; font-weight: bold;">&#93;</span><br /><span style="color: #000000;">240</span> Head_Flying_Hours &#160; &#160; &#160; <span style="color: #660033;">------</span> &#160; <span style="color: #000000;">100</span> &#160; <span style="color: #000000;">253</span> &#160; 000 &#160; &#160;- &#160; &#160;21125h+51m+45.748s</div>

<div class="bash geshi" style="text-align: left">$ smartctl <span style="color: #660033;">-l</span> farm <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda<br /><br />smartctl <span style="color: #000000;">7.4</span> <span style="color: #000000;">2023</span>-08-01 r5530 <span style="color: #7a0874; font-weight: bold;">&#91;</span>x86_64-linux-6.1.0-<span style="color: #000000;">30</span>-amd64<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">local</span> build<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />Copyright <span style="color: #7a0874; font-weight: bold;">&#40;</span>C<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000;">2002</span>-<span style="color: #000000;">23</span>, Bruce Allen, Christian Franke, www.smartmontools.org<br /><br />Seagate Field Access Reliability Metrics log <span style="color: #7a0874; font-weight: bold;">&#40;</span>FARM<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>GP Log 0xa6<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />&#160; &#160; &#160; &#160; FARM Log Page <span style="color: #000000;">0</span>: Log Header<br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; FARM Log Version: <span style="color: #000000;">2.9</span><br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Pages Supported: <span style="color: #000000;">6</span><br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Log Size: <span style="color: #000000;">98304</span><br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Page Size: <span style="color: #000000;">16384</span><br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Heads Supported: <span style="color: #000000;">24</span><br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Number of Copies: <span style="color: #000000;">0</span><br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Reason <span style="color: #000000; font-weight: bold;">for</span> Frame Capture: <span style="color: #000000;">0</span><br />&#160; &#160; &#160; &#160; FARM Log Page <span style="color: #000000;">1</span>: Drive Information<br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style="color: #7a0874; font-weight: bold;">&#91;</span>..<span style="color: #7a0874; font-weight: bold;">&#93;</span><br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Power on Hours: <span style="color: #000000;">40860</span><br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Spindle Power on Hours: <span style="color: #000000;">34063</span><br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Head Flight Hours: <span style="color: #000000;">24513</span><br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Head Load Events: <span style="color: #000000;">72077</span><br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Power Cycle Count: <span style="color: #000000;">28</span><br />&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; Hardware Reset Count: <span style="color: #000000;">193</span></div>

<p>You may like to run the command below on your systems to capture the state. Remember FARM is only supported on Seagate drives.</p>

<div class="bash geshi" style="text-align: left"><span style="color: #000000; font-weight: bold;">for</span> i <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sd<span style="color: #7a0874; font-weight: bold;">&#123;</span>a,b,c,d,e,f,g,h<span style="color: #7a0874; font-weight: bold;">&#125;</span> ; <span style="color: #000000; font-weight: bold;">do</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span> smartctl <span style="color: #660033;">-x</span> <span style="color: #007800;">$i</span> ; smartctl <span style="color: #660033;">-l</span> farm <span style="color: #007800;">$i</span> ; <span style="color: #7a0874; font-weight: bold;">&#125;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #ff0000;">'%y%m%d'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>_smartctl_$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">basename</span> <span style="color: #007800;">$i</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>.txt ; <span style="color: #000000; font-weight: bold;">done</span></div>
 ]]>
        </content>
        <dc:subject>drive</dc:subject>
<dc:subject>exos</dc:subject>
<dc:subject>farm</dc:subject>
<dc:subject>harddisk</dc:subject>
<dc:subject>poweronhours</dc:subject>
<dc:subject>runtime</dc:subject>
<dc:subject>seagate</dc:subject>
<dc:subject>smart</dc:subject>
<dc:subject>smartctl</dc:subject>
<dc:subject>smartmontools</dc:subject>

    </entry>
    <entry>
        <link href="https://daniel-lange.com/archives/190-Printing-labels-with-the-DYMO-LabelWriter-Wireless-and-LabelWriter-5xx-on-Debian-Linux.html" rel="alternate" title="Printing labels with the DYMO LabelWriter Wireless (and LabelWriter 5xx) on Debian Linux" />
        <author>
            <name>Daniel Lange</name>
                    </author>
    
        <published>2025-01-30T21:00:00Z</published>
        <disable-updated>2025-07-03T18:21:49Z</disable-updated>
        <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=190</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>https://daniel-lange.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=190</wfw:commentRss>
    
            <category scheme="https://daniel-lange.com/categories/19-Debian" label="Debian" term="Debian" />
    
        <id>https://daniel-lange.com/archives/190-guid.html</id>
        <title type="html">Printing labels with the DYMO LabelWriter Wireless (and LabelWriter 5xx) on Debian Linux</title>
        <content type="html">
            <![CDATA[<p>In 2020 my company bought a DYMO LabelWriter Wireless. It is an awesome little device for thermal printing a wide variety of labels. The labels are easily available both from DYMO and from third parties so the pricing is quite acceptable.</p>

<p>Unfortunately DYMO supplies their DYMO Connect Software only for Microsoft Windows and MacOSX. A mobile app of the same name for Android and Apple iOS devices is available in the app stores.</p>

<p>There is a SDK for Linux and there are drivers published for Linux but the LabelWriter Wireless was not supported on Linux when I tried to get it running for Debian in 2020.</p>

<p><!-- s9ymdb:714 --><img class="serendipity_image_center" width="528" height="421"  src="https://daniel-lange.com/uploads/entries/DYMO_LabelWriter_Wireless.jpg" title="Label all the things!" alt="Image of the DYMO LabelWriter Wireless in the white and black versions"></p>

<p>This year I have had a new look at the situation as we still use the LabelWriter Wireless printers a lot and the company runs fully on Linux. So it is always a chore to run a Windows VM just to run DYMO Connect.</p>
 <a class="block_level" href="https://daniel-lange.com/archives/190-Printing-labels-with-the-DYMO-LabelWriter-Wireless-and-LabelWriter-5xx-on-Debian-Linux.html#extended">Continue reading "Printing labels with the DYMO LabelWriter Wireless (and LabelWriter 5xx) on Debian Linux"</a>]]>
        </content>
        <dc:subject>debian</dc:subject>
<dc:subject>driver</dc:subject>
<dc:subject>dymo</dc:subject>
<dc:subject>label</dc:subject>
<dc:subject>packaging</dc:subject>
<dc:subject>printing</dc:subject>
<dc:subject>sticker</dc:subject>
<dc:subject>thermal</dc:subject>

    </entry>
    <entry>
        <link href="https://daniel-lange.com/archives/189-Weird-times-...-or-how-the-New-York-DEC-decided-the-US-presidential-elections.html" rel="alternate" title="Weird times ... or how the New York DEC decided the US presidential elections" />
        <author>
            <name>Daniel Lange</name>
                    </author>
    
        <published>2024-11-06T09:15:00Z</published>
        <disable-updated>2025-04-29T10:55:01Z</disable-updated>
        <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=189</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>https://daniel-lange.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=189</wfw:commentRss>
    
            <category scheme="https://daniel-lange.com/categories/18-Internet" label="Internet" term="Internet" />
            <category scheme="https://daniel-lange.com/categories/17-Strategy" label="Strategy" term="Strategy" />
    
        <id>https://daniel-lange.com/archives/189-guid.html</id>
        <title type="html">Weird times ... or how the New York DEC decided the US presidential elections</title>
        <content type="html">
            <![CDATA[<p>November 2024 will be known as the time when killing <a href="https://en.wikipedia.org/wiki/Peanut_(squirrel)">peanut, a pet squirrel,</a> by the New York State <abbr title="Department of Environmental Conservation">DEC</abbr> swung the US presidential elections and shaped history forever.</p>

<p>The hundreds of millions of dollars spent on each side, the tireless campaigning by the candidates, the celebrity endorsements ... all made for an open race for months. Investments evened each other out.</p>

<p>But an <a href="https://www.youtube.com/watch?v=z1X4cQ9UiOk" title="TMZ interview with the pet owner Mark Longo on his porn business">OnlyFans producer</a> showing people an overreaching, bureaucracy driven State raiding his home to confiscate a pet squirrel and kill it ... swung enough voters to decide the elections.</p>

<p>That is what we need to understand in times of instant worldwide publication and a mostly attention driven economy: Human fates, elections, economic cycles and wars can be decided by people killing squirrels.</p>

<p><!-- s9ymdb:713 --><img class="serendipity_image_center" width="624" height="795"  src="https://daniel-lange.com/uploads/entries/Peanut_and_his_owner_Mark_Longo.jpg" title="Peanut, the squirrel, and his owner Mark Longo" alt=""></p>

<p>RIP, <a href="https://www.instagram.com/peanut_the_squirrel12/" title="Mark Longo's Instagram page for Peanut, the squirrel">peanut</a>.</p>

<p><em>P.S.:</em> Trump Media &amp; Technology Group Corp. (DJT) stock is up 30% pre-market.</p>
 ]]>
        </content>
        <dc:subject>badchoices</dc:subject>
<dc:subject>humans</dc:subject>
<dc:subject>internet</dc:subject>
<dc:subject>policy</dc:subject>
<dc:subject>socialmedia</dc:subject>
<dc:subject>squirrel</dc:subject>
<dc:subject>state</dc:subject>

    </entry>
    <entry>
        <link href="https://daniel-lange.com/archives/188-Fixing-esptool-read_flash-above-2MB-on-some-cheap-ESP32-boards.html" rel="alternate" title="Fixing esptool read_flash above 2MB on some cheap ESP32 boards" />
        <author>
            <name>Daniel Lange</name>
                    </author>
    
        <published>2024-06-20T14:00:00Z</published>
        <disable-updated>2024-06-20T14:47:36Z</disable-updated>
        <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=188</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>https://daniel-lange.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=188</wfw:commentRss>
    
            <category scheme="https://daniel-lange.com/categories/22-Electronics" label="Electronics" term="Electronics" />
    
        <id>https://daniel-lange.com/archives/188-guid.html</id>
        <title type="html">Fixing esptool read_flash above 2MB on some cheap ESP32 boards</title>
        <content type="html">
            <![CDATA[<p><code>esptool</code>, the Espressif SoC serial bootloader utility, tends to dislike cheap Flash chips attached to the various incarnations of the ESP32 chip family. And it seems to dislike them even more when running <code>esptool</code> on Linux than on other OSs.</p>

<p>The common error mode is seeing it break at the 2MB barrier when trying to dump (<code>esptool read_flash</code>) a 4MB flash configuration.</p>

<div class="bash geshi" style="text-align: left">esptool <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>ttyUSB0 <span style="color: #660033;">-b</span> <span style="color: #000000;">921600</span> read_flash <span style="color: #000000;">0</span> 0x400000 flash_dump.bin</div>

<p>will fail with</p>

<pre>
esptool.py v4.7.0
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... ESP32
Chip is ESP32-D0WD-V3 (revision v3.1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
[..]
Detected flash size: 4MB
[..]
2097152 (50 %)
A fatal error occurred: Failed to read flash block (result was 01090000: CRC or checksum was invalid)
</pre>

<p>typically at the 2MB barrier.</p>

<p>I found the solution in a rather unrelated <a href="https://github.com/espressif/esptool/issues/890">esptool Github issue</a>:</p>

<p>Create an <code>esptool.cfg</code> file in the project directory (from where you will run <code>esptool</code>):</p>

<div class="ini geshi" style="text-align: left"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>esptool<span style="">&#93;</span></span><br /><span style="color: #000099;">timeout</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 30</span><br /><span style="color: #000099;">max_timeout</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 240</span><br /><span style="color: #000099;">erase_write_timeout_per_mb</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 40</span><br /><span style="color: #000099;">mem_end_rom_timeout</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 0.2</span><br /><span style="color: #000099;">serial_write_timeout</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 10</span></div>

<p>The <code>timeout = 30</code> is the setting that fixed reading flash memory via <code>esptool read_flash</code> for me.</p>

<p>When your <code>esptool.cfg</code> is read, <code>esptool</code> will tell you so in its second line of output:</p>

<div class="bash geshi" style="text-align: left"><span style="color: #666666;">$ </span>esptool flash_id</div>

<pre>
esptool.py v4.7.0
Loaded custom configuration from /home/dl/[..]/Embedded_dev/ESP-32_Wemos/esptool.cfg
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting......
[..]
</pre>

<p><!-- s9ymdb:712 --><img class="serendipity_image_center" width="320" height="180"  src="https://daniel-lange.com/uploads/entries/ESP32.gif" title="env:wemosbat in platformio.ini, just in case you need that" alt="Animated GIF of an ESP32 board"></p>

<p>Thank you <a href="https://github.com/radimkarnis">Radim Karnis</a> and <a href="https://github.com/wibbit">wibbit</a> from the Github issue linked above.</p>
 ]]>
        </content>
        <dc:subject>esp32</dc:subject>
<dc:subject>flash</dc:subject>

    </entry>
    <entry>
        <link href="https://daniel-lange.com/archives/187-htop-and-PCP-have-a-new-home-at-Hack-Club.html" rel="alternate" title="htop and PCP have a new home at Hack Club" />
        <author>
            <name>Daniel Lange</name>
                    </author>
    
        <published>2024-05-12T13:00:00Z</published>
        <disable-updated>2024-05-13T15:54:30Z</disable-updated>
        <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=187</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>https://daniel-lange.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=187</wfw:commentRss>
    
            <category scheme="https://daniel-lange.com/categories/11-Management" label="Management" term="Management" />
    
        <id>https://daniel-lange.com/archives/187-guid.html</id>
        <title type="html">htop and PCP have a new home at Hack Club</title>
        <content type="html">
            <![CDATA[<p>After the unfortunate and somewhat surprising <a href="https://daniel-lange.com/archives/186-Opencollective-shutting-down.html">shutdown of the Open Collective Foundation (OCF)</a>, <a href="https://htop.dev/">htop</a> and <a href="https://pcp.io/">Performance Co-Pilot (PCP)</a> have migrated to <a href="https://hackclub.com/fiscal-sponsorship/">Hack Club</a>.</p>

<p>Initially founded to improve <abbr title="Science Technology Engineering Mathematics">STEM</abbr> education, support high school computer science clubs and <a href="https://hackclub.com/philosophy/">firmly founded in the hacker culture</a>, Hack Club have created a US <abbr title="Internal Revenue Service (US Tax administration)">IRS</abbr> approved 501(c)(3) charity that provides what Open Collective did/does<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> and more at a flat 7% fee of the project income. Nathan Scott organized these moves with Paul Spitler. Many thanks!</p>

<p>We considered other options for the projects, e.g. <a href="https://www.spi-inc.org/corporate/resolutions/2024/2024-03-11.js.1/">Gentoo has moved to Software in the Public Interest (SPI)</a> and I know SPI quite well as they were created initially to host Debian. But PCP moved from SPI to OCF in 2021. Open Collective has a European branch that seems independent of the dissolved US foundation. But all-in-all Hack Club seemed the best fit.</p>

<p>You can find the new fiscal sponsorship and donation landing pages at:</p>

<table>
<tr><td>htop</td><td><a href="https://hcb.hackclub.com/htop/" title="htop landing page at HCB">https://hcb.hackclub.com/htop/</a></td><td><a href="https://hcb.hackclub.com/donations/start/htop" title="htop donations page at HCB">https://hcb.hackclub.com/donations/start/htop</a></td></tr>
<tr><td>PCP</td><td><a href="https://hcb.hackclub.com/pcp/" title="PCP landing page at HCB">https://hcb.hackclub.com/pcp/</a></td><td><a href="https://hcb.hackclub.com/donations/start/pcp" title="PCP donations page at HCB">https://hcb.hackclub.com/donations/start/pcp</a></td></tr>
</table>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>Open Collective as in the fancy "manage your project donations and reimbursements" website still continues to run but the foundation of the same name that provided the actual fiscal sponsorship (i.e. managing the funds) got dissolved. It's ... complicated.&#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
 ]]>
        </content>
        <dc:subject>fundraising</dc:subject>
<dc:subject>hackclub</dc:subject>
<dc:subject>opencollective</dc:subject>

    </entry>
    <entry>
        <link href="https://daniel-lange.com/archives/186-Opencollective-shutting-down.html" rel="alternate" title="Opencollective shutting down" />
        <author>
            <name>Daniel Lange</name>
                    </author>
    
        <published>2024-02-28T07:45:00Z</published>
        <disable-updated>1970-01-01T00:00:00Z</disable-updated>
        <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=186</wfw:comment>
    
        <slash:comments>7</slash:comments>
        <wfw:commentRss>https://daniel-lange.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=186</wfw:commentRss>
    
            <category scheme="https://daniel-lange.com/categories/11-Management" label="Management" term="Management" />
    
        <id>https://daniel-lange.com/archives/186-guid.html</id>
        <title type="html">Opencollective shutting down</title>
        <content type="html">
            <![CDATA[<p><strong>Update 28.02.2024 19:45 CET:</strong> There is now a blog entry at <a href="https://blog.opencollective.com/open-collective-official-statement-ocf-dissolution/">https://blog.opencollective.com/open-collective-official-statement-ocf-dissolution/</a> trying to discern the legal entities in the Open Collective ecosystem and recommending potential ways forward.</p>

<hr />

<p>Gee, there is nothing on <a href="https://blog.opencollective.com/">their blog</a> yet, but I just [28.02.2023 00:07 CET] received this email from Mike Strode, Program Officer at the Open Collective Foundation:</p>

<p>Dear Daniel Lange,</p>

<p>It is with a heavy heart that I'm writing today to inform you that the
Board of Directors of the Open Collective Foundation (OCF) has made the
difficult decision to dissolve OCF, effective December 31, 2024.</p>

<p>We are proud of the work we have been able to do together. We have been
honored to build community with you and the hundreds of other collectives
hosted at the Open Collective Foundation.</p>

<p><strong>What you need to know:</strong></p>

<p>We are beginning <strong>a staged dissolution process</strong> that will allow our over
600 collectives the time to close or transition their work. Dissolving OCF
will take many months, and involves settling all liabilities while spending
down all funds in a legally compliant manner.</p>

<p><strong>Our priority is to support our collectives in navigating this change.</strong> We
want to provide collectives the longest possible runway to wind down or
transition their operations while we focus on the many legal and financial
tasks associated with dissolving a nonprofit.</p>

<p><strong>March 15</strong> is the last day to accept donations. You will have until <strong>September 30</strong>
to work with us to develop and implement a plan to spend down the money
in your fund. Key dates are included at the bottom of this email.</p>

<p>We know this is going to be difficult, and we will do everything we can to
ease the transition for you.</p>

<p><strong>How we will support collectives:</strong></p>

<p>It remains our fiduciary responsibility to safeguard each collective's
charitable assets and ensure funds are used solely for specified charitable
purposes.</p>

<p>We will be providing assistance and support to you, whether you choose to
spend out and close down your collective or continue your work through
another 501(c)(3) organization or fiscal sponsor.</p>

<p>Unfortunately, we had to say goodbye to several of our colleagues today as
we pare down our core staff to reduce costs. I will be staying on staff to
support collectives through this transition, along with Wayne Kleppe, our
Finance Administrator.</p>

<p><strong>What led to this decision:</strong></p>

<p>From day one, OCF was committed to experimentation and innovation. We were
dedicated to finding new ways to open up the nonprofit space, making it
easier for people to raise and access funding so they can do good in their
communities.</p>

<p>OCF was created by Open Collective Inc. (OCI), a company formed in 2015
with the goal of "enabling groups to quickly set up a collective, raise
funds and manage them transparently." Soon after being founded by OCI, OCF
went through a period of rapid growth. We responded to increased demand
arising from the COVID-19 pandemic without taking the time to establish the
appropriate systems and infrastructure to sustain that growth.</p>

<p>Unfortunately, over the past year, we have learned that Open Collective
Foundation's business model is not sustainable with the number of complex
services we have offered and the fees we pay to the Open Collective Inc.
tech platform.</p>

<p>In late 2023, we made the decision to pause accepting new collectives in
order to create space for us to address the issues. Unfortunately, it
became clear that it would not be financially feasible to make the
necessary corrections, and we determined that OCF is not viable.</p>

<p><strong>What's next:</strong></p>

<p>We know this news will raise questions for many of our collectives. We will
be making space for questions and reactions in the coming weeks.</p>

<p>In the meantime, we have developed this FAQ which we will keep updated as
more questions come in.</p>

<p><strong>What you need to do next:</strong></p>

<ul>
<li>Review the FAQ</li>
<li>Discuss your options within your collective. Your options are:

<ul>
<li>spend down and close out your collective</li>
<li>spend down and transfer your collective to another fiscal sponsor,
or</li>
<li>transfer your collective and funds to another charitable
organization.</li>
</ul></li>
<li><strong>Reply-all</strong> to this email with any questions, requests, or to set up a
time to talk. Please make sure generalinquiries@opencollective.org is
copied on your email.</li>
</ul>

<p><strong>Dates to know:</strong></p>

<ul>
<li>Last day to accept funds/receive donations: March 15, 2024</li>
<li>Last day collectives can have employees: June 30, 2024</li>
<li>Last day to spend or transfer funds: September 30, 2024</li>
</ul>

<p>In Care &amp; Accompaniment,<br />
Mike Strode<br />
<em>Program Officer</em><br />
<em>Open Collective Foundation</em></p>

<p><em>Our mailing address has changed! We are now located at 440 N. Barranca
Avenue #3717, Covina, CA 91723, USA</em></p>
 ]]>
        </content>
        <dc:subject>fundraising</dc:subject>
<dc:subject>opencollective</dc:subject>
<dc:subject>shutdown</dc:subject>

    </entry>
    <entry>
        <link href="https://daniel-lange.com/archives/185-Removing-the-New-Event-Button-from-Thunderbird-v115-Calendar.html" rel="alternate" title="Removing the New Event Button from Thunderbird v115 Calendar" />
        <author>
            <name>Daniel Lange</name>
                    </author>
    
        <published>2023-10-22T12:25:00Z</published>
        <disable-updated>2023-10-22T12:30:26Z</disable-updated>
        <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=185</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>https://daniel-lange.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=185</wfw:commentRss>
    
            <category scheme="https://daniel-lange.com/categories/19-Debian" label="Debian" term="Debian" />
            <category scheme="https://daniel-lange.com/categories/7-Open-Source" label="Open Source" term="Open Source" />
    
        <id>https://daniel-lange.com/archives/185-guid.html</id>
        <title type="html">Removing the New Event Button from Thunderbird v115 Calendar</title>
        <content type="html">
            <![CDATA[<p>Thunderbird in Debian stable (Bookworm) has received <a href="https://tracker.debian.org/news/1468048/accepted-thunderbird-111531-1deb12u1-source-into-stable-security/">Thunderbird v115.3.1 as a security update</a>.</p>

<p>With it comes "Supernova", a <abbr title="User Interface">UI</abbr> redesign. There is a <a href="https://blog.thunderbird.net/2023/07/getting-started-with-the-main-window-of-thunderbird-115-supernova/">Mozilla blogpost with a walk-through of the new <abbr title="User Interface">UI</abbr></a>.</p>

<p>Unfortunately it features a super eye-catching "New Message" button that - thankfully - can be disabled. Even the whole space above the email folder pane can be recovered by disabling the folder pane header at <code>Burger Menu (☰) -&gt; View -&gt; Folders -&gt; Folder Pane Header</code>.</p>

<p>Unfortunately there is no way to remove the same eye-catching "New Event" button for the Calendar view via a <abbr title="User Interface">UI</abbr> setting.</p>

<p><!-- s9ymdb:710 --><img class="serendipity_image_right" width="293" height="265"  src="https://daniel-lange.com/uploads/entries/231021_Thunderbird_New_Event_Button_German.png" title="You always wanted to see that Calendar view in German, did you?" alt="Thunderbird New event button, German locale"></p>

<p>This needs a user CSS file to override the button as non-visible.</p>

<p>To make it process the user CSS Thunderbird needs a config setting to be enabled:</p>

<ol>
<li><code>Burger Menu (☰) -&gt; Settings -&gt; General</code></li>
<li>Scroll down all the way</li>
<li>Click the <code>Config editor...</code> button on the bottom right</li>
<li>Accept that hell will freeze over because you configure software</li>
<li>Search for <code>toolkit.legacyUserProfileCustomizations.stylesheets</code></li>
<li>Toggle the value to <code>true</code> to enable the user CSS</li>
</ol>

<p>You can manually add <code>user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);</code> to <code>~/.thunderbird/abcdefgh.default/prefs.js</code> to the same effect (do this while Thunderbird is not running; replace <code>abcdefgh</code> with your Thunderbird profile ID).</p>

<p>Now create a new directory <code>~/.thunderbird/abcdefgh.default/chrome/</code>, again replacing <code>abcdefgh</code> with your profile ID.</p>

<p>Inside the new directory create a <code>userChrome.css</code> file with the following content:</p>

<div class="javascript geshi" style="text-align: left"><span style="color: #006600; font-style: italic;">/* Hide Calendar New Event button */</span><br />#primaryButtonSidePanel <span style="color: #009900;">&#123;</span><br />&#160; &#160; display<span style="color: #339933;">:</span> none <span style="color: #339933;">!</span>important<span style="color: #339933;">;</span><br /><span style="color: #009900;">&#125;</span></div>

<p>Restart Thunderbird. And enjoy less visual obstruction when using the Calendar.</p>
 ]]>
        </content>
        <dc:subject>css</dc:subject>
<dc:subject>customization</dc:subject>
<dc:subject>design</dc:subject>
<dc:subject>thunderbird</dc:subject>
<dc:subject>ui</dc:subject>

    </entry>
    <entry>
        <link href="https://daniel-lange.com/archives/184-Xfce4-opening-links-in-Chromium-despite-Firefox-having-been-set-as-the-default-browser.html" rel="alternate" title="Xfce4 opening links in Chromium despite Firefox having been set as the default browser" />
        <author>
            <name>Daniel Lange</name>
                    </author>
    
        <published>2023-06-27T13:55:00Z</published>
        <disable-updated>2023-07-19T23:14:21Z</disable-updated>
        <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=184</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>https://daniel-lange.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=184</wfw:commentRss>
    
            <category scheme="https://daniel-lange.com/categories/19-Debian" label="Debian" term="Debian" />
    
        <id>https://daniel-lange.com/archives/184-guid.html</id>
        <title type="html">Xfce4 opening links in Chromium despite Firefox having been set as the default browser</title>
        <content type="html">
            <![CDATA[<p>Installing a laptop with the shiny new Debian Bookworm release finds a few interesting things broken that I probably had fixed in the past already on the old laptop.</p>

<p>One, that was increadibly unintuitive to fix, was lots of applications (like xfce4-terminal or Telegram) opening links in Chromium despite Firefox being set as the preferred webbrowser <em>everywhere</em>.</p>

<p><code>update-alternatives --config x-www-browser</code> was pointing at Firefox already, of course.<br />
The Xfce4 preferred application from settings was Firefox, of course.<br />
<code>xdg-mime query default text/html</code> delivered <code>firefox-esr.desktop</code>, of course.</p>

<p>Still nearly every link opens in &#9608;&#9608;&#9608;&#9608;&#9608;&#9608;&#9608; Chromium...</p>

<p>As usually the answer is out there. In this case in a <a href="https://bugzilla.xfce.org/show_bug.cgi?id=10314">xfce4-terminal bug report from 2015</a>.</p>

<p>The friendly "runkharr" has debugged the issue and provides the fix as well.
As usually, all very easy once you know where to look. And why to hate GTK again a bit more:</p>

<p>The GTK function <code>gtk_show_uri()</code> uses glib's <code>g_app_info_launch_default_for_uri()</code> and that - of course - cannot respect the usual mimetype setting.</p>

<p>So quoting "runkharr" verbatim:</p>

<pre>
1. Create a file `exo-launch.desktop´ in your `~/.local/share/applications´ directory with something like the following content:

    [Desktop Entry]
    Name=Exo Launcher
    Type=Application
    Icon=gtk-open
    Categories=Desktop;
    Comment=A try to force 'xfce4-terminal' to use the preferred application(s)
    GenericName=Exo Launcher
    Exec=exo-open %u
    MimeType=text/html;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;application/x-mimearchive;
    Terminal=false
    OnlyShowIn=XFCE;

2. Create (if not already existing) a local `defaults.list´ file, again in your `~/.local/share/applications´ directory. This file must start with a "group header" of

    [Default Applications]

3. Insert the following three lines somewhere below this `[Default Applications]´ group header [..]:

    x-scheme-handler/http=exo-launch.desktop;
    x-scheme-handler/https=exo-launch.desktop;
    x-scheme-handler/ftp=exo-launch.desktop;
</pre>

<p>And ... links open in Firefox again. Thank you "runkharr"!</p>
 ]]>
        </content>
        <dc:subject>browser</dc:subject>
<dc:subject>chrome</dc:subject>
<dc:subject>defaults</dc:subject>
<dc:subject>firefox</dc:subject>
<dc:subject>xfce</dc:subject>

    </entry>
    <entry>
        <link href="https://daniel-lange.com/archives/183-Linux-kernel-USB-errors-71-and-110.html" rel="alternate" title="Linux kernel USB errors -71 and -110" />
        <author>
            <name>Daniel Lange</name>
                    </author>
    
        <published>2023-06-19T11:00:00Z</published>
        <disable-updated>2023-06-19T15:32:03Z</disable-updated>
        <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=183</wfw:comment>
    
        <slash:comments>11</slash:comments>
        <wfw:commentRss>https://daniel-lange.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=183</wfw:commentRss>
    
            <category scheme="https://daniel-lange.com/categories/8-Linux" label="Linux" term="Linux" />
    
        <id>https://daniel-lange.com/archives/183-guid.html</id>
        <title type="html">Linux kernel USB errors -71 and -110</title>
        <content type="html">
            <![CDATA[<p>After an upgrade of my PC's mainboard BIOS the boot would take a minute or more to complete and sometimes the lightdm login screen would sit there but not accept keyboard input for another minute or so. Then the keyboard got enabled and I could log in normally. Everything worked fine after that bootup struggle completed. This was fully reproducible and persisted across reboots. Weird.</p>

<p>The kernel <code>dmesg</code> log showed entries that looked suspicious:</p>

<p><!-- s9ymdb:708 --><img class="serendipity_image_center" width="607" height="373"  src="https://daniel-lange.com/uploads/entries/230619_Linux_kernel_USB_errors_minus_71_and_minus_110.png"  alt="dmesg log excerpt showing USB error messages"></p>

<p>Googleing these <code>error -110</code> and <code>error -71</code> is a bit hard. Now why the USB driver does not give useful error messages instead of archaic <code>errno</code>-style numbers escapes me. This is not the 80s anymore.</p>

<p><!-- s9ymdb:709 --><img class="serendipity_image_right" width="163" height="176"  src="https://daniel-lange.com/uploads/icons/citation_needed.png" title="This is from https://xkcd.com/285/" alt="Citation needed (Wikipedia style)">
The wisdom of the crowd says <code>error -110</code> is something around "the USB port power supply was exceeded" [<a href="https://askubuntu.com/questions/644010/ubuntu-cant-read-my-usb-device-descriptor-read-64-error-110">source</a>].</p>

<p>Now <code>lsusb -tv</code> shows device 1-7 ... to be my USB keyboard. I somehow doubt that wants more power than the hub is willing to provide.</p>

<p>The Archlinux BBS Forums recommend to <a href="https://bbs.archlinux.org/viewtopic.php?id=149708">piece together</a> information from <code>drivers/usb/host/ohci.h</code> and (updated from their piece which is from 2012) <code>/tools/include/uapi/asm-generic/errno.h</code>. This is why some people then consider <code>-110</code> to mean "Connection timed out". Nah, not likely either.</p>

<p>Reading through the kernel source around <code>drivers/usb/host</code> did not enlighten me either. To the contrary. Uuugly. There seems to be no comprehensive list what these error codes mean. And the numbers are assigned to errors conditions quite arbitrarily. And - of course - there is no documentation. <em>"It was hard to do, so it should be hard to understand as well."</em></p>

<p>Luckily some of the random musings I read through contained some curious advice: power cycle the host. So I did and that did not make the error go away. Other people insisted on removing cables out of wall sockets, unplugging everything and conducting esoteric rituals. That made it dawn on me, the mainboard of course nicely powers the USB in "off" state, too. So switching the power supply off (yes, these have a separate switch, go find yours), waiting a bit for capacitors to drain and switching things back on and ... the errors were gone, the system booted within seconds again.</p>

<p>So the takeaway message: If you get random error messages like</p>

<div class="apache geshi" style="text-align: left">device descriptor read/<span style="color: #ff0000;">64</span>, error -<span style="color: #ff0000;">110</span><br />device not accepting address <span style="color: #ff0000;">42</span>, error -<span style="color: #ff0000;">71</span></div>

<p>on devices that previously worked fine ... completely remove power from the host, the hubs and the USB devices. So they forget they saw each other on the bus before. And when they see each other after that blackout, they will happily go through negotiating protocol details with each other again successfully.</p>
 ]]>
        </content>
        <dc:subject>codes</dc:subject>
<dc:subject>error</dc:subject>
<dc:subject>hardware</dc:subject>
<dc:subject>kernel</dc:subject>
<dc:subject>linux</dc:subject>
<dc:subject>usb</dc:subject>

    </entry>
    <entry>
        <link href="https://daniel-lange.com/archives/182-Install-kept-back-updates-on-Ubuntu.html" rel="alternate" title="Install &quot;kept back&quot; updates on Ubuntu" />
        <author>
            <name>Daniel Lange</name>
                    </author>
    
        <published>2023-03-22T14:20:00Z</published>
        <disable-updated>2024-12-06T18:57:16Z</disable-updated>
        <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=182</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>https://daniel-lange.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=182</wfw:commentRss>
    
            <category scheme="https://daniel-lange.com/categories/8-Linux" label="Linux" term="Linux" />
    
        <id>https://daniel-lange.com/archives/182-guid.html</id>
        <title type="html">Install &quot;kept back&quot; updates on Ubuntu</title>
        <content type="html">
            <![CDATA[<p>Canonical has implemented a staged roll-out for some Ubuntu package updates.</p>

<p>I find that rather annoying at times, e.g. when preparing the laptop for traveling.</p>

<p>So for my memory and for the benefit of others:</p>

<div class="bash geshi" style="text-align: left"><span style="color: #666666; font-style: italic;"># disable the phased roll-out feature on this apt upgrade run</span><br /><span style="color: #c20cb9; font-weight: bold;">sudo</span> apt <span style="color: #660033;">-o</span> <span style="color: #ff0000;">&quot;APT::Get::Always-Include-Phased-Updates=true&quot;</span> dist-upgrade</div>

<p><!-- s9ymdb:705 --><img class="serendipity_image_center" width="1586" height="1346"  src="https://daniel-lange.com/uploads/entries/230322_Ubuntu_apt_updates_kept_back.jpg" title="Easy syntax, innit?" alt="Screenshot of apt with the option to disable staged rollouts"></p>

<p>This can - for permanent use - be put into a config file, e.g. <a href="https://curius.de/2022/09/ubuntu-zurueckgehaltene-pakete-und-phased-updates/">Gerrit Heim puts it into /etc/apt/apt.conf.d/99-Phased-Updates [German]</a>. Some other options around this staged roll-out feature are "documented" within <a href="https://discourse.ubuntu.com/t/phased-updates-in-apt-in-21-04/20345">a thread</a> in the Ubuntu discourse forum.</p>
 ]]>
        </content>
        <dc:subject>apt</dc:subject>
<dc:subject>roll-out</dc:subject>
<dc:subject>staged</dc:subject>
<dc:subject>ubuntu</dc:subject>
<dc:subject>update</dc:subject>

    </entry>

</feed>