<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>degoogled &amp;mdash; julian</title>
    <link>https://wrily.foad.me.uk/tag:degoogled</link>
    <description>FOSS dev, self-hosting fan, Matrix, degoogling, small tech, indie tech, friendly tech for families and schools. Let&#39;s own our own identity &amp; data.</description>
    <pubDate>Wed, 22 Apr 2026 18:13:37 +0000</pubDate>
    <item>
      <title>UnifiedPush -- Wider Developments</title>
      <link>https://wrily.foad.me.uk/unifiedpush-wider-developments</link>
      <description>&lt;![CDATA[img src=&#34;https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png&#34; style=&#34;max-height: 5em&#34; /&#xA;&#xA;An article about Building the Self-Agency Mobile Ecosystem: Push Messaging&#xA;&#xA;Push messaging is the system that enables incoming messages to wake up and reach our apps, instantly and efficiently. But Who Cares Who Delivers Our Notifications? Our answer is: we care, and we do not like being locked in to depending on one mega-corp&#39;s system.&#xA;&#xA;Therefore, in our libre mobile computing devices, we require a push-messaging infrastructure built from open standard technology that gives us freedom to choose our service providers and authority over them.&#xA;&#xA;Read more in Going Google-Free with UnifiedPush in /e/OS and my other articles about UnifiedPush .&#xA;&#xA;How We Get There&#xA;&#xA;How can we build this? What is needed to get widespread UnifiedPush support in /e/ and other mobile OS?&#xA;!--more--&#xA;&#xA;The big picture involves several areas of work.&#xA;&#xA;OS integration of the distributor, including how it&#39;s configured, auto-detected, optimised, etc.&#xA;Server Software: Making sure a suitable server-side component is available, supported, optimised for this use case.&#xA;Server hosting: making sure a server component is easily deployable by others, including making generic deployment methods (Debian, Docker, Nix, K8s, ...) and integrating it in some hosting systems.&#xA;Apps: Working with other apps to make sure they connect and work with UP out-of-the-box.&#xA;Sharing this work among other mobile OS projects (microG, CalyxOS, GrapheneOS, PostmarketOS, ...) .&#xA;Consider standardising a UP client-server protocol so that a built-in distributor can work with several different server implementations and vice-versa.&#xA;&#xA;(Links in this and the following sections lead to relevant issues or discussions, where I could find any.)&#xA;&#xA;OS Integration of the UP Distributor&#xA;&#xA;Including how the UP distributor is configured, auto-detected, optimised, Android permissions, etc.&#xA;&#xA;I recently analysed how /e/OS 2.5 has started the ball rolling&#xA;&#xA;Server Software&#xA;&#xA;Making sure a suitable server-side component is available, supported, optimised for this use case&#xA;&#xA;Nextcloud: UnifiedPush Provider -- exists&#xA;It could alternatively begin with a fork of ntfy-server for example.&#xA;&#xA;Server Hosting: Technical&#xA;&#xA;Making sure a server component is easily deployable by others, including making generic deployment methods (Debian, Docker, Nix, K8s, ...) and integrating it in some hosting systems, ranging from hobbyist to serious commercial systems.&#xA;&#xA;Docker ntfy -- exists&#xA;K8s ntfy helm-chart -- exists&#xA;Nextcloud: UnifiedPush Provider -- exists&#xA;Matrix-Docker-Ansible-Deploy: ntfy-server -- exists&#xA;Yunohost: ntfy-server -- exists&#xA;SelfHostBlocks -- not yet&#xA;CoopCloud -- not yet&#xA;Fediversity (an upcoming hosting project) -- not yet&#xA;&#xA;Server Hosting: Social/Business Aspects&#xA;&#xA;Work out and write up (shareable) policies about who hosts, terms and conditions, privacy, rate limiting and other special measures, etc.?&#xA;&#xA;Apps&#xA;&#xA;Working with other apps to make sure they connect and work with UP out-of-the-box.&#xA;&#xA;Category 1: default apps in /e/OS etc., like...&#xA;&#xA;Mail: K9/Thunderbird-andriod #5165 and UnifiedPush for IMAP (NGI proposal 2024-10-535)&#xA;Nextcloud -uppush #17 -notifications #1225 -android #8684&#xA;Accounts/Calendar/Contacts (DAVx5 #36 + DAV-push)&#xA;&#xA;Category 2: other popular apps like...&#xA;&#xA;HomeAssistant #446344&#xA;Fluffychat -- exists&#xA;Element -- exists&#xA;Signal forks&#xA;Telegram-FOSS #577&#xA;Conversations.im -- exists&#xA;Pixelfed #86&#xA;&#xA;See also the UnifiedPush wish list.&#xA;&#xA;Sharing with other mobile OS projects&#xA;&#xA;Sharing this work among other mobile OS projects.&#xA;&#xA;/e/OS -- exists&#xA;microG #486&#xA;CalyxOS #1395&#xA;GrapheneOS #10455&#xA;PostmarketOS -- UnifiedPush, Push notifications&#xA;SailfishOS -- mentioned in 2023-01-12 meeting minutes as blocked by much work needed to enable background services&#xA;&#xA;And even desktop OS:&#xA;&#xA;KUnifiedPush -- exists -- note also KDE runs their own (ntfy) UP server&#xA;&#xA;Standardising UP client-server protocol?&#xA;&#xA;Should we consider standardising the UP client-server protocol? At present, by design, one must choose a UP distributor and UP server together as a pair. If we standardised the protocol between them, so any distributor would work with any server, this would certainly have some benefits, but also down-sides, and is not necessarily the right thing to do. UP was designed this way on purpose and achieves its goals without needing to standardise there. No ordinary person needs to be able to change their UP implementation. Only techies and service providers might like to do that.&#xA;&#xA;Therefore this is an exploration rather than a development. I discuss this further in a separate article.&#xA;&#xA;---&#xA;&#xA;#unifiedPush #degoogled #awesomeFOSS #eOS #Murena #ntfy #mobiFree&#xA;&#xA;!--more--&#xD;&#xA;----&#xD;&#xA;Follow/Feedback/Contact: RSS feed · Fedi follow this blog: @julian&amp;ZeroWidthSpace;@wrily.foad.me.uk · matrix me · Fedi follow me · email me · julian.foad.me.uk&#xD;&#xA;Donate: via Liberapay&#xD;&#xA;All posts &amp;copy; Julian Foad and licensed CC-BY-ND except quotes, translations, or where stated otherwise&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://unifiedpush.org/" title="UnifiedPush"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png" style="max-height: 5em"/></a></p>

<p><em>An article about Building the Self-Agency Mobile Ecosystem: Push Messaging</em></p>

<p>Push messaging is the system that enables incoming messages to wake up and reach our apps, instantly and efficiently. But <a href="https://wrily.foad.me.uk/who-cares-who-delivers-our-notifications">Who Cares Who Delivers Our Notifications?</a> Our answer is: we care, and we do not like being locked in to depending on one mega-corp&#39;s system.</p>

<p>Therefore, in our libre mobile computing devices, we require a push-messaging infrastructure built from open standard technology that gives us freedom to choose our service providers and authority over them.</p>

<p>Read more in <a href="https://wrily.foad.me.uk/going-google-free-with-unifiedpush-in-e-os">Going Google-Free with UnifiedPush in /e/OS</a> and my other <a href="https://wrily.foad.me.uk/tag:unifiedPush">articles about UnifiedPush</a> .</p>

<h2 id="how-we-get-there" id="how-we-get-there">How We Get There</h2>

<p>How can we build this? What is needed to get widespread UnifiedPush support in /e/ and other mobile OS?
</p>

<p>The big picture involves several areas of work.</p>
<ul><li>OS integration of the distributor, including how it&#39;s configured, auto-detected, optimised, etc.</li>
<li>Server Software: Making sure a suitable server-side component is available, supported, optimised for this use case.</li>
<li>Server hosting: making sure a server component is easily deployable by others, including making generic deployment methods (Debian, Docker, Nix, K8s, ...) and integrating it in some hosting systems.</li>
<li>Apps: Working with other apps to make sure they connect and work with UP out-of-the-box.</li>
<li>Sharing this work among other mobile OS projects (<a href="https://github.com/microg/GmsCore/issues/486">microG</a>, <a href="https://gitlab.com/CalyxOS/calyxos/-/issues/1395">CalyxOS</a>, <a href="https://discuss.grapheneos.org/d/10455-unifiedpushntfy-integration-in-the-os">GrapheneOS</a>, <a href="https://postmarketos.org/">PostmarketOS</a>, ...) .</li>
<li>Consider standardising a UP client-server protocol so that a built-in distributor can work with several different server implementations and <em>vice-versa</em>.</li></ul>

<p>(Links in this and the following sections lead to relevant issues or discussions, where I could find any.)</p>

<h2 id="os-integration-of-the-up-distributor" id="os-integration-of-the-up-distributor">OS Integration of the UP Distributor</h2>

<p>Including how the UP distributor is configured, auto-detected, optimised, Android permissions, etc.</p>
<ul><li>I recently analysed how <a href="https://wrily.foad.me.uk/going-google-free-with-unifiedpush-in-e-os" title="Going Google-Free with UnifiedPush in /e/OS">/e/OS 2.5 has started the ball rolling</a></li></ul>

<h2 id="server-software" id="server-software">Server Software</h2>

<p>Making sure a suitable server-side component is available, supported, optimised for this use case</p>
<ul><li><a href="https://apps.nextcloud.com/apps/uppush">Nextcloud: UnifiedPush Provider</a> — <strong>exists</strong></li>
<li>It could alternatively begin with a fork of ntfy-server for example.</li></ul>

<h2 id="server-hosting-technical" id="server-hosting-technical">Server Hosting: Technical</h2>

<p>Making sure a server component is easily deployable by others, including making generic deployment methods (Debian, Docker, Nix, K8s, ...) and integrating it in some hosting systems, ranging from hobbyist to serious commercial systems.</p>
<ul><li><a href="https://hub.docker.com/r/binwiederhier/ntfy">Docker ntfy</a> — <strong>exists</strong></li>
<li><a href="https://codeberg.org/wrenix/helm-charts/src/branch/main/ntfy">K8s ntfy helm-chart</a> — <strong>exists</strong></li>
<li><a href="https://apps.nextcloud.com/apps/uppush">Nextcloud: UnifiedPush Provider</a> — <strong>exists</strong></li>
<li><a href="https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/configuring-playbook-ntfy.md">Matrix-Docker-Ansible-Deploy: ntfy-server</a> — <strong>exists</strong></li>
<li><a href="https://apps.yunohost.org/app/ntfy">Yunohost: ntfy-server</a> — <strong>exists</strong></li>
<li><a href="https://shb.skarabox.com/services.html">SelfHostBlocks</a> — not yet</li>
<li><a href="https://recipes.coopcloud.tech/">CoopCloud</a> — not yet</li>
<li><a href="https://www.fediversity.eu/">Fediversity</a> (an upcoming hosting project) — not yet</li></ul>

<h2 id="server-hosting-social-business-aspects" id="server-hosting-social-business-aspects">Server Hosting: Social/Business Aspects</h2>

<p>Work out and write up (shareable) policies about who hosts, terms and conditions, privacy, rate limiting and other special measures, etc.?</p>

<h2 id="apps" id="apps">Apps</h2>

<p>Working with other apps to make sure they connect and work with UP out-of-the-box.</p>

<p>Category 1: default apps in /e/OS etc., like...</p>
<ul><li>Mail: <a href="https://github.com/thunderbird/thunderbird-android/issues/5165">K9/Thunderbird-andriod #5165</a> and <a href="https://lab.trax.im/up-for-imap/up-for-imap/-/wikis/NGI-Proposal">UnifiedPush for IMAP (NGI proposal <code>2024-10-535</code>)</a></li>
<li>Nextcloud <a href="https://codeberg.org/NextPush/uppush/pulls/17">-uppush #17</a> <a href="https://github.com/nextcloud/notifications/issues/1225#issuecomment-2262644834">-notifications #1225</a> <a href="https://github.com/nextcloud/android/issues/8684">-android #8684</a></li>
<li>Accounts/Calendar/Contacts (<a href="https://github.com/bitfireAT/webdav-push/discussions/36" title="Tutorial video- How to use Push with DAVx⁵ and your Nextcloud">DAVx5 #36</a> + <a href="https://github.com/bitfireAT/nc_ext_dav_push">DAV-push</a>)</li></ul>

<p>Category 2: other popular apps like...</p>
<ul><li><a href="https://community.home-assistant.io/t/add-unifiedpush-support-to-home-assistant-android-core/446344">HomeAssistant #446344</a></li>
<li>Fluffychat — <strong>exists</strong></li>
<li>Element — <strong>exists</strong></li>
<li>Signal forks</li>
<li><a href="https://github.com/Telegram-FOSS-Team/Telegram-FOSS/issues/577">Telegram-FOSS #577</a></li>
<li>Conversations.im — <strong>exists</strong></li>
<li><a href="https://github.com/pixelfed/ideas/issues/86">Pixelfed #86</a></li></ul>

<p>See also the <a href="https://codeberg.org/UnifiedPush/wishlist/issues">UnifiedPush wish list</a>.</p>

<h2 id="sharing-with-other-mobile-os-projects" id="sharing-with-other-mobile-os-projects">Sharing with other mobile OS projects</h2>

<p>Sharing this work among other mobile OS projects.</p>
<ul><li><a href="https://wrily.foad.me.uk/going-google-free-with-unifiedpush-in-e-os">/e/OS</a> — <strong>exists</strong></li>
<li><a href="https://github.com/microg/GmsCore/issues/486">microG #486</a></li>
<li><a href="https://gitlab.com/CalyxOS/calyxos/-/issues/1395">CalyxOS #1395</a></li>
<li><a href="https://discuss.grapheneos.org/d/10455-unifiedpushntfy-integration-in-the-os">GrapheneOS #10455</a></li>
<li><a href="https://postmarketos.org/">PostmarketOS</a> — <a href="https://wiki.postmarketos.org/wiki/UnifiedPush" title="wiki page">UnifiedPush</a>, <a href="https://wiki.postmarketos.org/wiki/Push_notifications" title="wiki page">Push notifications</a></li>
<li><a href="https://sailfishos.org">SailfishOS</a> — mentioned <a href="https://forum.sailfishos.org/t/community-meeting-on-irc-12th-january-2023/13729/9">in 2023-01-12 meeting minutes</a> as blocked by much work needed to enable background services</li></ul>

<p>And even desktop OS:</p>
<ul><li><a href="https://blogs.kde.org/2024/10/19/kunifiedpush-1.0.0-is-out/">KUnifiedPush</a> — <strong>exists</strong> — note also KDE runs their own (ntfy) UP server</li></ul>

<h2 id="standardising-up-client-server-protocol" id="standardising-up-client-server-protocol">Standardising UP client-server protocol?</h2>

<p>Should we consider standardising the UP client-server protocol? At present, by design, one must choose a UP distributor and UP server together as a pair. If we standardised the protocol between them, so any distributor would work with any server, this would certainly have some benefits, but also down-sides, and is not necessarily the right thing to do. UP was designed this way on purpose and achieves its goals without needing to standardise there. No ordinary person needs to be able to change their UP implementation. Only techies and service providers might like to do that.</p>

<p>Therefore this is an exploration rather than a development. I discuss this further in <a href="https://wrily.foad.me.uk/unifiedpush-standardise-up-client-server-protocol">a separate article</a>.</p>

<hr>

<p><a href="https://wrily.foad.me.uk/tag:unifiedPush" class="hashtag"><span>#</span><span class="p-category">unifiedPush</span></a> <a href="https://wrily.foad.me.uk/tag:degoogled" class="hashtag"><span>#</span><span class="p-category">degoogled</span></a> <a href="https://wrily.foad.me.uk/tag:awesomeFOSS" class="hashtag"><span>#</span><span class="p-category">awesomeFOSS</span></a> <a href="https://wrily.foad.me.uk/tag:eOS" class="hashtag"><span>#</span><span class="p-category">eOS</span></a> <a href="https://wrily.foad.me.uk/tag:Murena" class="hashtag"><span>#</span><span class="p-category">Murena</span></a> <a href="https://wrily.foad.me.uk/tag:ntfy" class="hashtag"><span>#</span><span class="p-category">ntfy</span></a> <a href="https://wrily.foad.me.uk/tag:mobiFree" class="hashtag"><span>#</span><span class="p-category">mobiFree</span></a></p>



<hr>

<p><em>Follow/Feedback/Contact:</em> <a href="https://wrily.foad.me.uk/feed/"><em>RSS feed</em></a> · <em>Fedi follow this blog: @julian​@wrily.foad.me.uk</em> · <a href="https://matrix.to/#/@julian:foad.me.uk" title="matrix Julian"><em>matrix me</em></a> · <a href="https://fed.foad.me.uk/%40julian%40fed.foad.me.uk" title="follow Julian"><em>Fedi follow me</em></a> · <a href="mailto:julian@foad.me.uk?subject=Wrily" title="email Julian"><em>email me</em></a> · <a href="https://julian.foad.me.uk/"><em>julian.foad.me.uk</em></a>
<em>Donate:</em> <a href="https://liberapay.com/julianfoad" title="Donate to Julian using Liberapay"><em>via Liberapay</em></a>
<em>All posts © Julian Foad and licensed <a href="https://creativecommons.org/licenses/by-nd/4.0/">CC-BY-ND</a> except quotes, translations, or where stated otherwise</em></p>
]]></content:encoded>
      <guid>https://wrily.foad.me.uk/unifiedpush-wider-developments</guid>
      <pubDate>Wed, 27 Nov 2024 14:48:00 +0000</pubDate>
    </item>
    <item>
      <title>UnifiedPush: Standardise UP Client-Server Protocol?</title>
      <link>https://wrily.foad.me.uk/unifiedpush-standardise-up-client-server-protocol</link>
      <description>&lt;![CDATA[img src=&#34;https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png&#34; style=&#34;max-height: 5em&#34; /&#xA;&#xA;This is a technical article. For a more general introduction to UnifiedPush you might read the first half of Going Google-Free with UnifiedPush in /e/OS or my other articles about UnifiedPush .&#xA;&#xA;Should we consider standardising a UP client-server protocol so that a built-in distributor can work with several different server implementations and vice-versa?&#xA;&#xA;Not necessarily, and I will attempt to explain why.&#xA;!--more--&#xA;&#xA;UnifiedPush High Level Architecture&#xA;&#xA;UnifiedPush animation.svg&#xA;&#xA;Look at the diagrams on the unifiedpush.org home page. There are four connections involved, shown arranged in a square. UP standardises the protocol for one of the connections, the bottom one (UP distributor - app). It also standardises something about how the whole system works.&#xA;&#xA;The protocol on the top connection (App server -  UP server) has recently been upgraded to be compatible with WebPush.&#xA;&#xA;The other two (App - app-server and UP - UP-server) are two other, separate, independent protocols. The protocol the app developer uses for app - app-server is not relevant to UnifiedPush. At present, UnifiedPush standards also do not specify a protocol to be used for the connection between the UP server and the UP distributor (shown on the left).&#xA;&#xA;The ntfy distributor requires a ntfy server, whereas the nextpush distributor requires a nextpush server, and so on. They use different protocols for that link in the chain.&#xA;&#xA;Multiple Protocols or Standardised Protocol&#xA;&#xA;It would be possible to make a UP server that supports (for example) both the NextPush and ntfy protocol(s). In fact ntfy supports two different protocols (the &#34;json&#34; one and the &#34;websocket&#34; one) and you choose one in the settings. The ntfy server supports both of those.&#xA;&#xA;The point is, UP achieves its goals without needing to standardise there. In some respects it&#39;s beneficial that the user and/or service provider can choose those components and protocol that best suit their needs, while the end-user apps and app servers all still remain completely compatible (standardised) no matter what UP components are used.&#xA;&#xA;Additionally standardising the UP - UP-server protocol could make different UP servers and distributors interoperable. It could potentially help with users bringing their own choice of device (assuming it has a UP distributor built in) from one service provider to another, for example.&#xA;&#xA;But that&#39;s more of a deployment-level standard: something that service providers might want to standardise. Android-compatible mobile OS&#39;s (for example) might get together and declare &#34;we&#34; (as a loose group) like to standardise on (let&#39;s say) ntfy-websocket protocol here, because (suppose) it works best with android&#39;s OS network layer and sleep optimisations. (Just examples; I have not researched what protocol actually works best in each scenario.) Then, Linux-based mobile OS&#39;s might choose a different protocol that works better with Linux&#39;s networking and sleep optimisations. Then, if a certain libre mobile service provider wanted to support both android-compatible and linux-based devices, they might choose to support two protocols. Or would standardising on one protocol be more helpful in such a scenario? It&#39;s not clear.&#xA;&#xA;No ordinary person needs to be able to change their UP implementation. Only techies and service providers might like to do that.&#xA;&#xA;So, at this stage this is perhaps the least important of all the areas to work on.&#xA;&#xA;---&#xA;&#xA;First explained in #unifiedpush:matrix.org.&#xA;&#xA;#unifiedPush #degoogled #awesomeFOSS #eOS #Murena #ntfy #mobiFree&#xA;&#xA;!--more--&#xD;&#xA;----&#xD;&#xA;Follow/Feedback/Contact: RSS feed · Fedi follow this blog: @julian&amp;ZeroWidthSpace;@wrily.foad.me.uk · matrix me · Fedi follow me · email me · julian.foad.me.uk&#xD;&#xA;Donate: via Liberapay&#xD;&#xA;All posts &amp;copy; Julian Foad and licensed CC-BY-ND except quotes, translations, or where stated otherwise&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://unifiedpush.org/" title="UnifiedPush"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png" style="max-height: 5em"/></a></p>

<p><em>This is a technical article. For a more general introduction to UnifiedPush you might read the first half of <a href="https://wrily.foad.me.uk/going-google-free-with-unifiedpush-in-e-os">Going Google-Free with UnifiedPush in /e/OS</a> or my other <a href="https://wrily.foad.me.uk/tag:unifiedPush">articles about UnifiedPush</a> .</em></p>

<p>Should we consider standardising a UP client-server protocol so that a built-in distributor can work with several different server implementations and <em>vice-versa</em>?</p>

<p>Not necessarily, and I will attempt to explain why.
</p>

<h2 id="unifiedpush-high-level-architecture" id="unifiedpush-high-level-architecture">UnifiedPush High Level Architecture</h2>

<p><a href="https://unifiedpush.org/"><img src="https://unifiedpush.org/img/animation.svg" alt="UnifiedPush animation.svg" title="UnifiedPush High Level Architecture diagram, from its home page"></a></p>

<p>Look at the diagrams on the <a href="https://unifiedpush.org/">unifiedpush.org</a> home page. There are four connections involved, shown arranged in a square. UP standardises the protocol for one of the connections, the bottom one (UP distributor &lt;–&gt; app). It also standardises something about how the whole system works.</p>

<p>The protocol on the top connection (App server –&gt; UP server) has recently been upgraded to be compatible with WebPush.</p>

<p>The other two (App &lt;–&gt; app-server and UP &lt;–&gt; UP-server) are two other, separate, independent protocols. The protocol the app developer uses for app &lt;–&gt; app-server is not relevant to UnifiedPush. At present, UnifiedPush standards also do not specify a protocol to be used for the connection between the UP server and the UP distributor (shown on the left).</p>

<p>The ntfy distributor requires a ntfy server, whereas the nextpush distributor requires a nextpush server, and so on. They use different protocols for <em>that</em> link in the chain.</p>

<h2 id="multiple-protocols-or-standardised-protocol" id="multiple-protocols-or-standardised-protocol">Multiple Protocols or Standardised Protocol</h2>

<p>It would be possible to make a UP server that supports (for example) both the NextPush and ntfy protocol(s). In fact ntfy supports two different protocols (the “json” one and the “websocket” one) and you choose one in the settings. The ntfy server supports both of those.</p>

<p>The point is, UP achieves its goals without needing to standardise there. In some respects it&#39;s beneficial that the user and/or service provider can choose those components and protocol that best suit their needs, while the end-user apps and app servers all still remain completely compatible (standardised) no matter what UP components are used.</p>

<p>Additionally standardising the UP &lt;–&gt; UP-server protocol could make different UP servers and distributors interoperable. It could potentially help with users bringing their own choice of device (assuming it has a UP distributor built in) from one service provider to another, for example.</p>

<p>But that&#39;s more of a deployment-level standard: something that service providers might want to standardise. Android-compatible mobile OS&#39;s (for example) might get together and declare “we” (as a loose group) like to standardise on (let&#39;s say) ntfy-websocket protocol here, because (suppose) it works best with android&#39;s OS network layer and sleep optimisations. (Just examples; I have not researched what protocol actually works best in each scenario.) Then, Linux-based mobile OS&#39;s might choose a different protocol that works better with Linux&#39;s networking and sleep optimisations. Then, if a certain libre mobile service provider wanted to support both android-compatible and linux-based devices, they might choose to support two protocols. Or would standardising on one protocol be more helpful in such a scenario? It&#39;s not clear.</p>

<p>No ordinary person needs to be able to change their UP implementation. Only techies and service providers might like to do that.</p>

<p>So, at this stage this is perhaps the least important of all the areas to work on.</p>

<hr>

<p><em>First explained in <a href="https://matrix.to/#/%23unifiedpush:matrix.org"><code>#unifiedpush:matrix.org</code></a>.</em></p>

<p><a href="https://wrily.foad.me.uk/tag:unifiedPush" class="hashtag"><span>#</span><span class="p-category">unifiedPush</span></a> <a href="https://wrily.foad.me.uk/tag:degoogled" class="hashtag"><span>#</span><span class="p-category">degoogled</span></a> <a href="https://wrily.foad.me.uk/tag:awesomeFOSS" class="hashtag"><span>#</span><span class="p-category">awesomeFOSS</span></a> <a href="https://wrily.foad.me.uk/tag:eOS" class="hashtag"><span>#</span><span class="p-category">eOS</span></a> <a href="https://wrily.foad.me.uk/tag:Murena" class="hashtag"><span>#</span><span class="p-category">Murena</span></a> <a href="https://wrily.foad.me.uk/tag:ntfy" class="hashtag"><span>#</span><span class="p-category">ntfy</span></a> <a href="https://wrily.foad.me.uk/tag:mobiFree" class="hashtag"><span>#</span><span class="p-category">mobiFree</span></a></p>



<hr>

<p><em>Follow/Feedback/Contact:</em> <a href="https://wrily.foad.me.uk/feed/"><em>RSS feed</em></a> · <em>Fedi follow this blog: @julian​@wrily.foad.me.uk</em> · <a href="https://matrix.to/#/@julian:foad.me.uk" title="matrix Julian"><em>matrix me</em></a> · <a href="https://fed.foad.me.uk/%40julian%40fed.foad.me.uk" title="follow Julian"><em>Fedi follow me</em></a> · <a href="mailto:julian@foad.me.uk?subject=Wrily" title="email Julian"><em>email me</em></a> · <a href="https://julian.foad.me.uk/"><em>julian.foad.me.uk</em></a>
<em>Donate:</em> <a href="https://liberapay.com/julianfoad" title="Donate to Julian using Liberapay"><em>via Liberapay</em></a>
<em>All posts © Julian Foad and licensed <a href="https://creativecommons.org/licenses/by-nd/4.0/">CC-BY-ND</a> except quotes, translations, or where stated otherwise</em></p>
]]></content:encoded>
      <guid>https://wrily.foad.me.uk/unifiedpush-standardise-up-client-server-protocol</guid>
      <pubDate>Tue, 26 Nov 2024 20:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Going Google-Free with UnifiedPush in /e/OS</title>
      <link>https://wrily.foad.me.uk/going-google-free-with-unifiedpush-in-e-os</link>
      <description>&lt;![CDATA[img src=&#34;https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png&#34; style=&#34;max-height: 5em&#34; / img src=&#34;https://blog.foad.me.uk/wp-content/uploads/2024/11/eos-logose-logo-color.png&#34; style=&#34;max-height: 5em&#34; /&#xA;&#xA;Congratulations UnifiedPush! Congratulations Murena!&#xA;&#xA;Murena&#39;s /e/OS 2.5 ships with UnifiedPush support included as announced by a small note in the 2.5-t release notes .&#xA;&#xA;This exciting development brings Google-free push messaging to the regular users of an important player in the freedom mobile OS space.&#xA;!--more--&#xA;&#xA;So What?&#xA;&#xA;Push messaging is the system that enables incoming messages to wake up and reach our apps, instantly and efficiently.&#xA;&#xA;To achieve this, the phone operating system keeps a single network connection open to a push messaging server. The apps don&#39;t need to keep running in the background: they can go to sleep. When a push message arrives, the OS wakes up the relevant app and hands it the message.&#xA;&#xA;All our apps share this push service -- even the &#34;private&#34; ones -- if they want push messaging. &#xA;&#xA;That&#39;s great, except... Who Cares Who Delivers Our Notifications?&#xA;&#xA;Until now, most people&#39;s phones run Google or Apple software. The Big Techs operate and control those phones. Along with everything else, they provide the push messaging service. And so they, Big Tech, control it.&#xA;&#xA;The UnifiedPush public open standard changes this. With UnifiedPush, we are no longer merely &#34;users&#34; of our devices but are in charge of them. With UnifiedPush, we can choose which service provider will deliver our push messaging. Thereby we are in control of who has the ability to monitor or block our push messaging.&#xA;&#xA;UnifiedPush has been available to those interested, for a while now, but until now it has required installing extra software.&#xA;&#xA;Putting the support for push messaging into the operating system means delusers/del people who choose not to be operated by Big Tech will now be able to simply install the apps they care about and immediately have the alternative system working for them.&#xA;&#xA;Technical&#xA;&#xA;I&#39;m going to delve into the technical side of this initial release, because it&#39;s a big interest area of mine. If you are a regular user, I suggest at this stage you might concentrate on switching to /e/OS or another freedom mobile OS and expect this functionality will be maturing quickly from now on and soon be seamless. If you&#39;re an early adopter or interested in its development, read on.&#xA;&#xA;I am trying it out. I already run /e/OS on my main phone and upgrading to version 2.5 was simple with the built-in upgrader.&#xA;&#xA;The OS embeds a custom fork of ntfy, calling itself &#34;foundation.e.ntfy 1.17.0&#34;. So, congratulations also to ntfy! At this stage the developer of ntfy, Philip Heckel, told me in #ntfy room he was &#34;not yet involved&#34; in this development and this is the &#34;First I&#39;m hearing about it.&#34;&#xA;&#xA;ntfy is a notification system that can also provide UnifiedPush service. It is so good at this job that it has for some time been the UnifiedPush implementation recommended for most people. One can install the ntfy app and it provides UnifiedPush service to our other apps.&#xA;&#xA;When we install the ntfy app ourself, we may either let it use the creator&#39;s default server (at ntfy.sh) or configure it to use our choice of ntfy server, if we know of one or if we run our own. As with anything, using someone else&#39;s server comes with conditions and restrictions, especially if we don&#39;t pay for the service, so we need to think about that.&#xA;&#xA;Let&#39;s see what /e/OS does.&#xA;&#xA;If not Google&#39;s then Whose Server?&#xA;&#xA;In this push service built in to /e/OS, there is no configuration UI. There is a tiny settings UI where we have to &#34;enable&#34; the service -- see below. Technically, the full ntfy UI is also available, but not accessible through the normal system UI -- neither the app launcher nor the settings. But as curious techies we can hack in to it if we like. See below.&#xA;&#xA;What we can do is install and use the UP-example app. Click the &#34;REGISTER&#34; button, and we discover it&#39;s preconfigured to connect to... . o O (their own ntfy server?) No! It connects to ntfy.sh, the server run by the author of ntfy. Hmm.&#xA;&#xA;I should say that I found this while not signed in to Murena&#39;s &#34;e cloud&#34; services. It&#39;s possible and would make some sense if it would point to a different server if signed in. I will be interested to find out.&#xA;&#xA;The first thing to comment on, then, is Murena will surely need to run their own push server, for privacy and scaling and economic reasons, or else make an agreement with ntfy. In the short term, to get things started, it may be acceptable for everyone to be subject to the free (gratis) ntfy service&#39;s rate limits and other conditions. That&#39;s something that can be changed later, seamlessly, because UnifiedPush doesn&#39;t require app (server) developers to know or care which service provider they will eventually be connecting to.&#xA;&#xA;Secondly, for privacy and self-determination reasons, there should be a way to use our own choice of server, but not necessarily as a dedicated configuration option. A better way might be to tie it to the main Nextcloud account through a single-sign-on, so that when we set up the phone we have only to make that one choice of service provider and expect it to cover all services. That would give people the advantage of simplicity which is how the Big Techs play that game, but now with open standard technologies enabling us to have a choice among service providers.&#xA;&#xA;When an app registers for UnifiedPush service, if more than one distributor is installed, it asks which to use. A normal user would have only one, and would not see this. Here as an experimentor and developer I already had both ntfy and NextPush installed:&#xA;&#xA;  It&#39;s not ideal that it identifies as &#34;ntfy&#34;, exactly the same as the official ntfy app. I expect this will soon be changed to /e/OS branding.&#xA;&#xA;The tiny settings UI is found a the bottom of the system settings menu.&#xA;&#xA;    It&#39;s disabled by default. In this state, the UnifiedPush service is still advertised to apps, and they can register, but push messages are not delivered. (I suspect this isn&#39;t how we want the disabled state to be. Probably it should not advertise as available.)&#xA;&#xA;That&#39;s all the configuration we get in this version of /e/OS.&#xA;&#xA;(Aside: I couldn&#39;t find this in settings, to begin with. Searching in settings for &#34;ntfy&#34; or &#34;push&#34; or &#34;unifiedpush&#34; doesn&#39;t return any results, for me.)&#xA;&#xA;Let&#39;s Hack In&#xA;&#xA;As a developer we can access the ntfy UI through the system terminal, for example through an ADB shell (running this command on a USB-connected computer with &#34;adb&#34; tool installed, with ADB USB debugging enabled in the phone&#39;s developer settings):&#xA;&#xA;adb shell am start -n foundation.e.ntfy/io.heckel.ntfy.ui.MainActivity&#xA;&#xA;  Just the same as in the user-installed ntfy app. (I can compare them side by side because I also have it installed, because I was already using it before this upgrade.)&#xA;&#xA;We first notice this screen prominently shows some warnings about battery optimisation and choice of connection protocol. Are these warnings relevant to this version?, I wonder. (At first it showed only the first, and later both.)&#xA;&#xA;And it lets us open its settings. In the ntfy settings we can choose our own server, and I can confirm this takes effect and works.&#xA;&#xA;  This screen also shows the currently subscribed topics -- here, the &#34;example&#34; one -- and after configuring it to use my own server, the displayed URL confirms that. (Generally one &#34;topic&#34; corresponds to one app.)&#xA;&#xA;Ntfy Not NextPush?&#xA;&#xA;I&#39;m a little surprised Murena chose ntfy, seeing as their system is closely coupled to Nextcloud: there is also Nextpush (source on Codeberg, yay!), a Nextcloud-hosted UnifiedPush server module and its client app, that could be used instead. Perhaps they found ntfy is more stable or refined than Nextpush.&#xA;&#xA;UnifiedPush developer S1m says the &#34;Next version of NextPush will be a lot more stable, and I&#39;ve rewritten the UI.&#34;&#xA;&#xA;The Future&#xA;&#xA;While UnifiedPush is pretty good standard already, it is still maturing. Some important, recent improvements are making their way into the standard and into implementations like ntfy right now. These include full compatibility with the WebPush standard, and a better way to wake an app without it needing permission for unrestricted battery usage.&#xA;&#xA;An adjacent recent development is DAV Push, an open standard for pushing instant updates to our shared files, calendars and contacts through CalDAV, CardDAV and WebDAV, which can also work through UnifiedPush.&#xA;&#xA;To ensure people can exercise their right NOT to depend on Google, we have wider work to do. Integrating a UnifiedPush distributor is one useful step towards it. Beyond this, we need to be working with the developers of popular apps to get them supported, sharing this development across the freedom mobile OS ecosystem, deploying servers, ensuring reliability, and more. I write about this in a follow-up post: UnifiedPush — Wider Developments .&#xA;&#xA;Conclusion&#xA;&#xA;The details of this initial implementation seem to me to indicate an early preview release, with significant changes still needed. But that&#39;s OK: these technical implementation details can be changed.&#xA;&#xA;Leaving that aside, the social side of this is amazing: it&#39;s making UP available to main-stream users. That&#39;s a big deal for the libre mobile ecosystem. Hurray!&#xA;&#xA;---&#xA;&#xA;Add UnifiedPush to /e/OS to make it possible for developers to avoid FCM and better support F-Droid applications -- an /e/ community forum thread requesting UP support.&#xA;Source code of /e/ fork of ntfy: https://gitlab.e.foundation/e/os/ntfy-android&#xA;&#34;Integrate ntfy in /e/OS&#34; --merge request, including a simple settings UI (just enable/disable).&#xA;Romain Hunault of Murena is presenting it at Capitole du Libre 2024 this afternoon.&#xA;&#xA;---&#xA;&#xA;#unifiedPush #degoogled #awesomeFOSS #eOS #Murena #ntfy #mobiFree&#xA;&#xA;!--more--&#xD;&#xA;----&#xD;&#xA;Follow/Feedback/Contact: RSS feed · Fedi follow this blog: @julian&amp;ZeroWidthSpace;@wrily.foad.me.uk · matrix me · Fedi follow me · email me · julian.foad.me.uk&#xD;&#xA;Donate: via Liberapay&#xD;&#xA;All posts &amp;copy; Julian Foad and licensed CC-BY-ND except quotes, translations, or where stated otherwise&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://unifiedpush.org/" title="UnifiedPush"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png" style="max-height: 5em"/></a> <a href="https://e.foundation/" title="/e/ foundation"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/eos-logos_e-logo-color.png" style="max-height: 5em"/></a></p>

<p>Congratulations UnifiedPush! Congratulations Murena!</p>

<p>Murena&#39;s /e/OS 2.5 <a href="https://community.e.foundation/t/add-unifiedpush-to-e-os-to-make-it-possible-for-developers-to-avoid-fcm-and-better-support-f-droid-applications/46197/28" title="an /e/ community forum thread requesting UP support">ships with UnifiedPush support included</a> as announced by a small note in <a href="https://gitlab.e.foundation/e/os/releases/-/releases/v2.5-t">the 2.5-t release notes</a> .</p>

<p>This exciting development brings Google-free push messaging to the regular users of an important player in the freedom mobile OS space.
</p>

<h2 id="so-what" id="so-what">So What?</h2>

<p>Push messaging is the system that enables incoming messages to wake up and reach our apps, instantly and efficiently.</p>

<p>To achieve this, the phone operating system keeps a single network connection open to a push messaging server. The apps don&#39;t need to keep running in the background: they can go to sleep. When a push message arrives, the OS wakes up the relevant app and hands it the message.</p>

<p>All our apps share this push service — even the “private” ones — if they want push messaging.</p>

<p>That&#39;s great, except... <a href="https://wrily.foad.me.uk/who-cares-who-delivers-our-notifications">Who Cares Who Delivers Our Notifications?</a></p>

<p>Until now, most people&#39;s phones run Google or Apple software. The Big Techs operate and control those phones. Along with everything else, they provide the push messaging service. And so they, Big Tech, control it.</p>

<p>The <a href="https://unifiedpush.org/">UnifiedPush</a> public open standard changes this. With UnifiedPush, we are no longer merely “users” of our devices but are in charge of them. With UnifiedPush, we can choose which service provider will deliver our push messaging. Thereby we are in control of who has the ability to monitor or block our push messaging.</p>

<p>UnifiedPush has been available to those interested, for a while now, but until now it has required installing extra software.</p>

<p>Putting the support for push messaging into the operating system means <del>users</del> people who choose not to be operated by Big Tech will now be able to simply install the apps they care about and immediately have the alternative system working for them.</p>

<h2 id="technical" id="technical">Technical</h2>

<p>I&#39;m going to delve into the technical side of this initial release, because it&#39;s a big interest area of mine. If you are a regular user, I suggest at this stage you might concentrate on <a href="https://wrily.foad.me.uk/freedom-respecting-smart-phone-want-get-have" title="You Too Can Have a Freedom-Respecting Smart Phone!">switching to /e/OS or another freedom mobile OS</a> and expect this functionality will be maturing quickly from now on and soon be seamless. If you&#39;re an early adopter or interested in its development, read on.</p>

<p>I am trying it out. I already run /e/OS on my main phone and upgrading to version 2.5 was simple with the built-in upgrader.</p>

<p>The OS embeds a custom fork of <a href="https://ntfy.sh">ntfy</a>, calling itself “foundation.e.ntfy 1.17.0”. So, congratulations also to <a href="https://ntfy.sh">ntfy</a>! At this stage the developer of ntfy, Philip Heckel, <a href="https://matrix.to/#/!KQaqifczWbCaidLETg:matrix.org/$Fpj8SD6Cih0sFmtGgLgxWINMWrHJs2711YzLP5zhWMM?via=foad.me.uk&amp;amp;via=t2bot.io&amp;amp;via=matrix.org">told me</a> in <a href="https://matrix.to/#/%23ntfy:matrix.org"><code>#ntfy</code></a> room he was “not yet involved” in this development and this is the “First I&#39;m hearing about it.”</p>

<p><a href="https://ntfy.sh">ntfy</a> is a notification system that can also provide UnifiedPush service. It is so good at this job that it has for some time been the UnifiedPush implementation recommended for most people. One can install the <a href="https://ntfy.sh">ntfy</a> app and it provides UnifiedPush service to our other apps.</p>

<p>When we install the ntfy app ourself, we may either let it use the creator&#39;s default server (at <code>ntfy.sh</code>) or configure it to use our choice of ntfy server, if we know of one or if we run our own. As with anything, using someone else&#39;s server comes with conditions and restrictions, especially if we don&#39;t pay for the service, so we need to think about that.</p>

<p>Let&#39;s see what /e/OS does.</p>

<h2 id="if-not-google-s-then-whose-server" id="if-not-google-s-then-whose-server">If not Google&#39;s then Whose Server?</h2>

<p>In this push service built in to /e/OS, there is no configuration UI. There is a tiny settings UI where we have to “enable” the service — see below. Technically, the full ntfy UI is also available, but not accessible through the normal system UI — neither the app launcher nor the settings. But as curious techies we can hack in to it if we like. See below.</p>

<p>What we can do is install and use the <a href="https://f-droid.org/en/packages/org.unifiedpush.example/">UP-example</a> app. Click the “REGISTER” button, and we discover it&#39;s preconfigured to connect to... . o O (their own ntfy server?) No! It connects to ntfy.sh, the server run by the author of ntfy. Hmm.</p>

<p>I should say that I found this while <strong>not</strong> signed in to Murena&#39;s “e cloud” services. It&#39;s possible and would make some sense if it would point to a different server if signed in. I will be interested to find out.</p>

<p>The first thing to comment on, then, is Murena will surely need to run their own push server, for privacy and scaling and economic reasons, or else make an agreement with ntfy. In the short term, to get things started, it may be acceptable for everyone to be subject to the free (gratis) ntfy service&#39;s rate limits and other conditions. That&#39;s something that can be changed later, seamlessly, because UnifiedPush doesn&#39;t require app (server) developers to know or care which service provider they will eventually be connecting to.</p>

<p>Secondly, for privacy and self-determination reasons, there should be a way to use our own choice of server, but not necessarily as a dedicated configuration option. A better way might be to tie it to the main Nextcloud account through a single-sign-on, so that when we set up the phone we have only to make that one choice of service provider and expect it to cover all services. That would give people the advantage of simplicity which is how the Big Techs play that game, but now with open standard technologies enabling us to have a choice among service providers.</p>

<p>When an app registers for UnifiedPush service, if more than one distributor is installed, it asks which to use. A normal user would have only one, and would not see this. Here as an experimentor and developer I already had both ntfy and NextPush installed:</p>

<blockquote><p><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/20241119-UP-chooser.png" alt=""></p></blockquote>

<p>It&#39;s not ideal that it identifies as “ntfy”, exactly the same as the official ntfy app. I expect this will soon be changed to /e/OS branding.</p>

<p>The tiny settings UI is found a the bottom of the system settings menu.</p>

<blockquote><p><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/20241116-eOS-ntfy-Settings1.png" alt=""></p>

<p><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/20241116-eOS-ntfy-Settings2.png" alt=""></p></blockquote>

<p>It&#39;s disabled by default. In this state, the UnifiedPush service is still advertised to apps, and they can register, but push messages are not delivered. (I suspect this isn&#39;t how we want the disabled state to be. Probably it should not advertise as available.)</p>

<p>That&#39;s all the configuration we get in this version of /e/OS.</p>

<p>(Aside: I couldn&#39;t find this in settings, to begin with. Searching in settings for “ntfy” or “push” or “unifiedpush” doesn&#39;t return any results, for me.)</p>

<h2 id="let-s-hack-in" id="let-s-hack-in">Let&#39;s Hack In</h2>

<p>As a developer we can access the ntfy UI through the system terminal, for example through an ADB shell (running this command on a USB-connected computer with “adb” tool installed, with ADB USB debugging enabled in the phone&#39;s developer settings):</p>

<pre><code class="language-sh">adb shell am start -n foundation.e.ntfy/io.heckel.ntfy.ui.MainActivity
</code></pre>

<blockquote><p><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/20241119-eOS-ntfy-UI-main.png" alt=""></p></blockquote>

<p>Just the same as in the user-installed ntfy app. (I can compare them side by side because I also have it installed, because I was already using it before this upgrade.)</p>

<p>We first notice this screen prominently shows some warnings about battery optimisation and choice of connection protocol. Are these warnings relevant to this version?, I wonder. (At first it showed only the first, and later both.)</p>

<p>And it lets us open its settings. In the ntfy settings we can choose our own server, and I can confirm this takes effect and works.</p>

<blockquote><p><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/20241119-eOS-ntfy-UI-settings.png" alt=""></p></blockquote>

<p>This screen also shows the currently subscribed topics — here, the “example” one — and after configuring it to use my own server, the displayed URL confirms that. (Generally one “topic” corresponds to one app.)</p>

<h2 id="ntfy-not-nextpush" id="ntfy-not-nextpush">Ntfy Not NextPush?</h2>

<p>I&#39;m a little surprised Murena chose ntfy, seeing as their system is closely coupled to Nextcloud: there is also <a href="https://unifiedpush.org/users/distributors/nextpush/">Nextpush</a> (source <a href="https://codeberg.org/NextPush/">on Codeberg</a>, yay!), a Nextcloud-hosted UnifiedPush server module and its client app, that could be used instead. Perhaps they found ntfy is more stable or refined than Nextpush.</p>

<p>UnifiedPush developer S1m says the “Next version of NextPush will be a lot more stable, and I&#39;ve rewritten the UI.”</p>

<h2 id="the-future" id="the-future">The Future</h2>

<p>While UnifiedPush is pretty good standard already, it is still maturing. Some important, recent improvements are making their way into the standard and into implementations like ntfy right now. These include full compatibility with the WebPush standard, and a <a href="https://unifiedpush.org/developers/spec/android/#service-to-raise-to-the-foreground">better way to wake an app</a> without it needing permission for unrestricted battery usage.</p>

<p>An adjacent recent development is <a href="https://wrily.foad.me.uk/davx5-developing-dav-push-standard">DAV Push</a>, an open standard for pushing instant updates to our shared files, calendars and contacts through CalDAV, CardDAV and WebDAV, which can also work through UnifiedPush.</p>

<p>To ensure people can exercise their right NOT to depend on Google, we have wider work to do. Integrating a UnifiedPush distributor is one useful step towards it. Beyond this, we need to be working with the developers of popular apps to get them supported, sharing this development across the freedom mobile OS ecosystem, deploying servers, ensuring reliability, and more. I write about this in a follow-up post: <a href="https://wrily.foad.me.uk/unifiedpush-wider-developments">UnifiedPush — Wider Developments</a> .</p>

<h2 id="conclusion" id="conclusion">Conclusion</h2>

<p>The details of this initial implementation seem to me to indicate an early preview release, with significant changes still needed. But that&#39;s OK: these technical implementation details can be changed.</p>

<p>Leaving that aside, the social side of this is amazing: it&#39;s making UP available to main-stream users. That&#39;s a big deal for the libre mobile ecosystem. Hurray!</p>

<hr>
<ul><li><a href="https://community.e.foundation/t/add-unifiedpush-to-e-os-to-make-it-possible-for-developers-to-avoid-fcm-and-better-support-f-droid-applications/46197/28">Add UnifiedPush to /e/OS to make it possible for developers to avoid FCM and better support F-Droid applications</a> — an /e/ community forum thread requesting UP support.</li>
<li>Source code of /e/ fork of ntfy: <a href="https://gitlab.e.foundation/e/os/ntfy-android">https://gitlab.e.foundation/e/os/ntfy-android</a></li>
<li><a href="https://gitlab.e.foundation/e/os/ntfy-android/-/merge_requests/12">“Integrate ntfy in /e/OS”</a> —merge request, including a simple settings UI (just enable/disable).</li>
<li>Romain Hunault of Murena is <a href="https://cfp.capitoledulibre.org/cdl-2024/talk/89HG8E/">presenting it at Capitole du Libre 2024</a> this afternoon.</li></ul>

<hr>

<p><a href="https://wrily.foad.me.uk/tag:unifiedPush" class="hashtag"><span>#</span><span class="p-category">unifiedPush</span></a> <a href="https://wrily.foad.me.uk/tag:degoogled" class="hashtag"><span>#</span><span class="p-category">degoogled</span></a> <a href="https://wrily.foad.me.uk/tag:awesomeFOSS" class="hashtag"><span>#</span><span class="p-category">awesomeFOSS</span></a> <a href="https://wrily.foad.me.uk/tag:eOS" class="hashtag"><span>#</span><span class="p-category">eOS</span></a> <a href="https://wrily.foad.me.uk/tag:Murena" class="hashtag"><span>#</span><span class="p-category">Murena</span></a> <a href="https://wrily.foad.me.uk/tag:ntfy" class="hashtag"><span>#</span><span class="p-category">ntfy</span></a> <a href="https://wrily.foad.me.uk/tag:mobiFree" class="hashtag"><span>#</span><span class="p-category">mobiFree</span></a></p>



<hr>

<p><em>Follow/Feedback/Contact:</em> <a href="https://wrily.foad.me.uk/feed/"><em>RSS feed</em></a> · <em>Fedi follow this blog: @julian​@wrily.foad.me.uk</em> · <a href="https://matrix.to/#/@julian:foad.me.uk" title="matrix Julian"><em>matrix me</em></a> · <a href="https://fed.foad.me.uk/%40julian%40fed.foad.me.uk" title="follow Julian"><em>Fedi follow me</em></a> · <a href="mailto:julian@foad.me.uk?subject=Wrily" title="email Julian"><em>email me</em></a> · <a href="https://julian.foad.me.uk/"><em>julian.foad.me.uk</em></a>
<em>Donate:</em> <a href="https://liberapay.com/julianfoad" title="Donate to Julian using Liberapay"><em>via Liberapay</em></a>
<em>All posts © Julian Foad and licensed <a href="https://creativecommons.org/licenses/by-nd/4.0/">CC-BY-ND</a> except quotes, translations, or where stated otherwise</em></p>
]]></content:encoded>
      <guid>https://wrily.foad.me.uk/going-google-free-with-unifiedpush-in-e-os</guid>
      <pubDate>Tue, 19 Nov 2024 12:00:00 +0000</pubDate>
    </item>
    <item>
      <title>My Freedom Phone Cover Design</title>
      <link>https://wrily.foad.me.uk/my-freedom-phone-cover-design</link>
      <description>&lt;![CDATA[I designed a back cover to show people mine is no ordinary phone, it&#39;s a Freedom Phone.&#xA;&#xA;img style=&#34;max-width:25em&#34; src=&#34;https://blog.foad.me.uk/wp-content/uploads/2024/09/2024-09-20-back-5-overlay.jpg&#34;&#xA;&#xA;Share and re-use the design if you like. Replace my face and website with your own.&#xA;&#xA;Fits a OnePlus-6 phone, when printed at 76 x 152 mm. (This phone model can run a wide range of freedom software.)&#xA;!--more--&#xA;&#xA;Paired with the lock screen I designed last year...&#xA;&#xA;|||&#xA;|:---:|:---:|&#xA;|Lock Screen|Back Cover|&#xA;&#xA;Concept Development&#xA;&#xA;Began as a paper sketch, 2024-09-15.&#xA;&#xA;|||||||&#xA;|:---:|:---:|:---:|:---:|:---:|:---:|&#xA;|1|2|3|4|5|to share|&#xA;&#xA;Finished in time for Software Freedom Day 2024-09-21.&#xA;&#xA;Licence and Credits&#xA;&#xA;The final design to share:&#xA;&#xA;Download: freedom-phone-back-cover-julian-foad-2024-v5.0.svg&#xA;SVG format (Inkscape flavour)&#xA;Excludes my face and website&#xA;Licensed as Creative Commons CC-BY-SA 4.0 &#34;share-alike&#34; with attribution required&#xA;Copyright (C) Julian Foad 2024&#xA;&#xA;Created using Inkscape (freedom software)&#xA;&#xA;Attributions for art work used:&#xA;&#xA;&#34;Ada and Zangemann&#34; by David Revoy, 2023, based on &#34;Ada &amp; Zangemann&#34; written by Matthias Kirschner and illustrated by Sandra Brandstätter − CC-BY-SA 4.0&#xA;rainbow umbrella shared by Lisa Cornell, 2011 − public domain&#xA;bitten apple shared by Dan Gerhards, 2011 − public domain&#xA;type fonts: Liberation Sans, cmmi10&#xA;image of my own face, shown in derivative examples here, (C) Julian Foad, 2016&#xA;&#xA;#fossGadgets #degoogled #lineageOS #eOS&#xA;&#xA;!--more--&#xD;&#xA;----&#xD;&#xA;Follow/Feedback/Contact: RSS feed · Fedi follow this blog: @julian&amp;ZeroWidthSpace;@wrily.foad.me.uk · matrix me · Fedi follow me · email me · julian.foad.me.uk&#xD;&#xA;Donate: via Liberapay&#xD;&#xA;All posts &amp;copy; Julian Foad and licensed CC-BY-ND except quotes, translations, or where stated otherwise&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>I designed a back cover to show people mine is no ordinary phone, it&#39;s a Freedom Phone.</p>

<p><img style="max-width:25em" src="https://blog.foad.me.uk/wp-content/uploads/2024/09/2024-09-20-back-5-overlay.jpg"></p>

<p>Share and re-use the design if you like. Replace my face and website with your own.</p>

<p>Fits a OnePlus-6 phone, when printed at 76 x 152 mm. (This phone model can <a href="https://wrily.foad.me.uk/freedom-respecting-smart-phone-want-get-have">run a wide range of freedom software</a>.)
</p>

<p>Paired with <a href="https://wrily.foad.me.uk/why-i-customised-my-lock-screen">the lock screen</a> I designed last year...</p>

<table>
<thead>
<tr>
<th align="center"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/09/2024-09-18-my-phone-lock-screen.jpg" alt=""></th>
<th align="center"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/09/2024-09-18-16-37-46-154-enh.jpg" alt=""></th>
</tr>
</thead>

<tbody>
<tr>
<td align="center">Lock Screen</td>
<td align="center">Back Cover</td>
</tr>
</tbody>
</table>

<h2 id="concept-development" id="concept-development">Concept Development</h2>

<p>Began as a paper sketch, 2024-09-15.</p>

<table>
<thead>
<tr>
<th align="center"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/09/my-phone-back-1-enh.jpg" alt=""></th>
<th align="center"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/09/my-phone-back-2.png" alt=""></th>
<th align="center"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/09/my-phone-back-3.png" alt=""></th>
<th align="center"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/09/my-phone-back-4.png" alt=""></th>
<th align="center"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/09/my-phone-back-5.png" alt=""></th>
<th align="center"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/09/freedom-phone-back-cover-julian-foad-2024-v5.0.png" alt=""></th>
</tr>
</thead>

<tbody>
<tr>
<td align="center">1</td>
<td align="center">2</td>
<td align="center">3</td>
<td align="center">4</td>
<td align="center">5</td>
<td align="center">to share</td>
</tr>
</tbody>
</table>

<p>Finished in time for <strong><a href="https://digitalfreedoms.org/en/sfd">Software Freedom Day</a></strong> 2024-09-21.</p>

<p><img src="https://blog.foad.me.uk/wp-content/uploads/2024/09/SoftwareFreedomDay-Sticker-en.png" alt=""></p>

<h2 id="licence-and-credits" id="licence-and-credits">Licence and Credits</h2>

<p>The final design to share:</p>
<ul><li>Download: <a href="https://blog.foad.me.uk/wp-content/uploads/2024/09/freedom-phone-back-cover-julian-foad-2024-v5.0.svg">freedom-phone-back-cover-julian-foad-2024-v5.0.svg</a></li>
<li>SVG format (Inkscape flavour)</li>
<li>Excludes my face and website</li>
<li>Licensed as Creative Commons <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC-BY-SA 4.0</a> “share-alike” with attribution required</li>
<li>Copyright © Julian Foad 2024</li></ul>

<p>Created using <a href="https://inkscape.org/">Inkscape</a> (freedom software)</p>

<p>Attributions for art work used:</p>
<ul><li><a href="https://www.peppercarrot.com/en/viewer/misc__2023-12-03_Ada-and-Zangemann_by-David-Revoy.html">“Ada and Zangemann”</a> by David Revoy, 2023, based on “<a href="https://fsfe.org/activities/ada-zangemann/">Ada &amp; Zangemann</a>” written by Matthias Kirschner and illustrated by Sandra Brandstätter − <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">CC-BY-SA 4.0</a></li>
<li><a href="https://www.clker.com/clipart-rainbow-umbrella.html">rainbow umbrella</a> shared by Lisa Cornell, 2011 − <a href="https://www.clker.com/disclaimer.html">public domain</a></li>
<li><a href="https://openclipart.org/detail/118873">bitten apple</a> shared by Dan Gerhards, 2011 − <a href="https://openclipart.org/share">public domain</a></li>
<li>type fonts: Liberation Sans, cmmi10</li>
<li>image of my own face, shown in derivative examples here, © Julian Foad, 2016</li></ul>

<p><a href="https://wrily.foad.me.uk/tag:fossGadgets" class="hashtag"><span>#</span><span class="p-category">fossGadgets</span></a> <a href="https://wrily.foad.me.uk/tag:degoogled" class="hashtag"><span>#</span><span class="p-category">degoogled</span></a> <a href="https://wrily.foad.me.uk/tag:lineageOS" class="hashtag"><span>#</span><span class="p-category">lineageOS</span></a> <a href="https://wrily.foad.me.uk/tag:eOS" class="hashtag"><span>#</span><span class="p-category">eOS</span></a></p>



<hr>

<p><em>Follow/Feedback/Contact:</em> <a href="https://wrily.foad.me.uk/feed/"><em>RSS feed</em></a> · <em>Fedi follow this blog: @julian​@wrily.foad.me.uk</em> · <a href="https://matrix.to/#/@julian:foad.me.uk" title="matrix Julian"><em>matrix me</em></a> · <a href="https://fed.foad.me.uk/%40julian%40fed.foad.me.uk" title="follow Julian"><em>Fedi follow me</em></a> · <a href="mailto:julian@foad.me.uk?subject=Wrily" title="email Julian"><em>email me</em></a> · <a href="https://julian.foad.me.uk/"><em>julian.foad.me.uk</em></a>
<em>Donate:</em> <a href="https://liberapay.com/julianfoad" title="Donate to Julian using Liberapay"><em>via Liberapay</em></a>
<em>All posts © Julian Foad and licensed <a href="https://creativecommons.org/licenses/by-nd/4.0/">CC-BY-ND</a> except quotes, translations, or where stated otherwise</em></p>
]]></content:encoded>
      <guid>https://wrily.foad.me.uk/my-freedom-phone-cover-design</guid>
      <pubDate>Fri, 20 Sep 2024 12:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Immich -- Awesome Open Source</title>
      <link>https://wrily.foad.me.uk/immich-awesome-open-source</link>
      <description>&lt;![CDATA[immich-logo.svg&#xA;&#xA;In our family we look after our own photos -- we don&#39;t want Google or any other company deciding what we can and can&#39;t do with them.&#xA;&#xA;In the past we used various desktop/laptop based open source viewer software, with storage on local disks. More recently we have been running the awesome open source PhotoPrism, with its smartphone-compatible web interface and photo library management features. Although PhotoPrism is impressive judged on its own merits, and has indeed allowed us to manage our photos ourselves, it&#39;s just not quite as usable as we&#39;d wish.&#xA;&#xA;Next up is Immich.&#xA;!--more--&#xA;&#xA;feature-panel.png&#xA;&#xA;Immich promises &#34;partner sharing&#34;, where for example husband and wife might choose to share their whole photo libraries with each other. Immich offers stronger photo library management such as tagging, metadata manipulation, and deduplication of identical photos. Immich performs face recognition. Immich viewer apps seem to be user friendly and slick.&#xA;&#xA;What&#39;s Good, What&#39;s Not So Good&#xA;&#xA;For viewer apps we use the official Immich app from F-Droid on our degoogled phones and tablet, and the Immich web interface which works well on both mobile and desktop. The general impression is slick. It&#39;s fun to see a selection from &#34;N years ago&#34;. It&#39;s nice that various features of the viewer, such as the side-bar options to view by folder and view by people, can be turned on or off in the settings, depending on how we prefer to use the system. The main &#34;time line&#34; view works very well. Other views such as the view by people, by tags, on a map, and so on are functional but much less developed.&#xA;&#xA;The user interface could be improved a lot by allowing us to use the different selection criteria together: having begun to explore a region on the map, we then want to narrow the results by people or by tags. As it stands, the interface is an example of the all-too-common anti-pattern in which every time we select a new option the computer &#34;forgets&#34; what we just told it a moment ago. (Nearly every shopping web site is a dire example of that anti-pattern. We might filter our results by &#34;category=hardware&#34; and by &#34;material=metal&#34;, and then adjust our search terms, and watch the computer immediately throw away our carefully chosen filters.)&#xA;&#xA;Face Recognition&#xA;&#xA;Face recognition is impressive. I set Immich to scanning my existing library of thousands or tens of thousands of photos dating back twenty years, which took it a few hours on my few-years-old server. Immich created groups of faces that the algorithm considered to be the same person. These groupings were amazingly accurate. The few false matches were predominantly small blurry faces picked out of the background (but still the majority of these appeared accurate), or baby faces (where to be fair I can&#39;t tell the difference even among members of my own family), or where only a small part of a face could be seen (and even many of these were accurate).&#xA;&#xA;For naming the people, Immich presented a list of faces, one from each identified &#34;person&#34; group. The faces it chose were unfortunately often a small blurry image. It would be helpful if it could choose a &#34;clear&#34; image as the representative of each &#34;person&#34; group. On clicking this image we get to see all the photos in which that same person was identified, and there we can set the name of that person, and we can also choose a different representative image. This view of all the photos containing that person doesn&#39;t indicate where in the photo the person was detected, which in some cases puzzles me as they don&#39;t seem to be there at all, but perhaps knowing what the algorithm &#34;saw&#34; would just give me somewhere to direct my scorn and derision at its folly and might not really add anything helpful to the overall purpose.&#xA;&#xA;An enthusiast has created a better user interface for naming and managing the faces more quickly, all on one screen. It&#39;s the main feature so far of Varun Raj Manoharan&#39;s Immich Power Tools, and the demo video there shows it in action.&#xA;&#xA;Partner Sharing&#xA;&#xA;The partner sharing works by including both my photos and my wife&#39;s photos in my time line view. The same for her view, if it is set up reciprocally. That is a good start. It would be more useful if we could see which photos are &#34;ours&#34; and which are &#34;theirs&#34;. I would like to see them tagged with our initials, or perhaps distinguished by a colour or styling. I would like to be able to quickly show or hide each set, and to select by partner in the search.&#xA;&#xA;I hoped the partners would be able to share the same categorisation, tagging, face recognition and so on. At present unfortunately this is not possible. It is discussed as a potential future improvement in Show Face Recognition for Partner #5089.&#xA;&#xA;Because the current implementation of Partner Sharing isn&#39;t close enough, I am thinking about using just one &#34;family&#34; account in Immich, with both (or all) partners&#39; photo libraries in it. That might be the best way for our family to use the existing capability. Whether this would suit us depends on whether we use the upload/sync feature from our smartphones. If we do, then Immich&#39;s sync feature would place all of our photos into the same library. (I haven&#39;t found a feature to separate or tag them on upload based on which camera-phone they came from, although there might be a way.) Currently we are not using Immich&#39;s upload: we are using &#39;syncthing&#39; for that, copying our photos directly to our respective photo libraries on the server. Then in Immich we define these as &#34;external&#34; libraries (meaning they are outside Immich&#39;s built-in upload storage area).&#xA;&#xA;Folders, Albums, Tags&#xA;&#xA;I have a collection of (older) photos that I already organised into folders with descriptive names. I would like these to be shown as &#34;Albums&#34; or &#34;Tags&#34;. Immich imports tags if found in embedded metadata, and a few of my photos had these. Due to the sad state of standardisation of photo metadata, however, naming the files and folders is a more universal solution than embedding descriptions and tags in the photo metadata.&#xA;&#xA;The way I would expect or wish to get albums and tags from my collection would be to specify a set of patterns that match my folder and file names, and to specify rules to derive album names and tags from these patterns.&#xA;&#xA;There are open issues about potential future development of folder imports in Immich. In the meantime I might try the extension Salvoxia/immich-folder-album-creator noted below.&#xA;&#xA;Extensions&#xA;&#xA;Extensions I have noted to investigate further:&#xA;&#xA;    immich-folder-album-creator -- &#34;Automatically create and populate albums in Immich from a folder structure in external libraries&#34;&#xA;    Immich Power Tools -- alternative UI for face naming and management&#xA;    Immich-Kiosk -- &#34;A web slideshow for Immich&#34;&#xA;&#xA;---&#xA;&#xA;Freedom Software Ethics&#xA;&#xA;In terms of open source &#34;freedom software&#34; ethics, Immich sits somewhere in the middle of the spectrum.&#xA;&#xA;On the positive side, Immich is open source under the GNU AGPL v3 license: that&#39;s very good for maintaining the freedoms granted to its users. Immich has its own website at its own domain, immich.app, where it hosts its blog and documentation.&#xA;&#xA;On the other hand, like too many other good projects, the development is hosted in Microsoft Github rather than in a freedom-respecting forge such as Codeberg or at its own address. Use of MS Github is a real and present danger to the open source ecosystem: freedom software lives in freedom-respecting software forges. And development discussion is invited inside the proprietary Discord instead of through a freedom-respecting method such as Matrix: see Discord vs community values. Immich in its website footer also promotes other proprietary silos (Reddit, Youtube) and does not even mention any open/freedom tech channels such as the Fediverse.&#xA;&#xA;Immich advertise that their client app is available through the big silo stores (Google, Apple). They also also distribute it through the freedom-respecting app store F-Droid, for Android and android-compatible degoogled phones. They mention this in the docs but not on the main page.&#xA;&#xA;---&#xA;&#xA;#awesomeFOSS #selfHosted #degoogled&#xA;&#xA;!--more--&#xD;&#xA;----&#xD;&#xA;Follow/Feedback/Contact: RSS feed · Fedi follow this blog: @julian&amp;ZeroWidthSpace;@wrily.foad.me.uk · matrix me · Fedi follow me · email me · julian.foad.me.uk&#xD;&#xA;Donate: via Liberapay&#xD;&#xA;All posts &amp;copy; Julian Foad and licensed CC-BY-ND except quotes, translations, or where stated otherwise&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://immich.app" title="immich.app"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/09/immich-logo-inline-light.png" alt="immich-logo.svg"></a></p>

<p>In our family we look after our own photos — we don&#39;t want Google or any other company deciding what we can and can&#39;t do with them.</p>

<p>In the past we used various desktop/laptop based open source viewer software, with storage on local disks. More recently we have been running the awesome open source <a href="https://photoprism.app/">PhotoPrism</a>, with its smartphone-compatible web interface and photo library management features. Although PhotoPrism is impressive judged on its own merits, and has indeed allowed us to manage our photos ourselves, it&#39;s just not quite as usable as we&#39;d wish.</p>

<p>Next up is <a href="https://immich.app" title="immich.app">Immich</a>.
</p>

<p><img src="https://blog.foad.me.uk/wp-content/uploads/2024/09/feature-panel-e29ae95e6015f5c3c7328bef6aa7682c.png" alt="feature-panel.png"></p>

<p>Immich promises “partner sharing”, where for example husband and wife might choose to share their whole photo libraries with each other. Immich offers stronger photo library management such as tagging, metadata manipulation, and deduplication of identical photos. Immich performs face recognition. Immich viewer apps seem to be user friendly and slick.</p>

<h2 id="what-s-good-what-s-not-so-good" id="what-s-good-what-s-not-so-good">What&#39;s Good, What&#39;s Not So Good</h2>

<p>For viewer apps we use <a href="https://f-droid.org/en/packages/app.alextran.immich">the official Immich app from F-Droid</a> on our <a href="https://wrily.foad.me.uk/freedom-respecting-smart-phone-want-get-have" title="You Too Can Have a Freedom-Respecting Smart Phone">degoogled phones</a> and tablet, and the Immich web interface which works well on both mobile and desktop. The general impression is slick. It&#39;s fun to see a selection from “N years ago”. It&#39;s nice that various features of the viewer, such as the side-bar options to view by folder and view by people, can be turned on or off in the settings, depending on how we prefer to use the system. The main “time line” view works very well. Other views such as the view by people, by tags, on a map, and so on are functional but much less developed.</p>

<p>The user interface could be improved a lot by allowing us to use the different selection criteria together: having begun to explore a region on the map, we then want to narrow the results by people or by tags. As it stands, the interface is an example of the all-too-common anti-pattern in which every time we select a new option the computer “forgets” what we just told it a moment ago. (Nearly every shopping web site is a dire example of that anti-pattern. We might filter our results by “category=hardware” and by “material=metal”, and then adjust our search terms, and watch the computer immediately throw away our carefully chosen filters.)</p>

<h2 id="face-recognition" id="face-recognition">Face Recognition</h2>

<p>Face recognition is impressive. I set Immich to scanning my existing library of thousands or tens of thousands of photos dating back twenty years, which took it a few hours on my few-years-old server. Immich created groups of faces that the algorithm considered to be the same person. These groupings were amazingly accurate. The few false matches were predominantly small blurry faces picked out of the background (but still the majority of these appeared accurate), or baby faces (where to be fair I can&#39;t tell the difference even among members of my own family), or where only a small part of a face could be seen (and even many of these were accurate).</p>

<p>For naming the people, Immich presented a list of faces, one from each identified “person” group. The faces it chose were unfortunately often a small blurry image. It would be helpful if it could choose a “clear” image as the representative of each “person” group. On clicking this image we get to see all the photos in which that same person was identified, and there we can set the name of that person, and we can also choose a different representative image. This view of all the photos containing that person doesn&#39;t indicate where in the photo the person was detected, which in some cases puzzles me as they don&#39;t seem to be there at all, but perhaps knowing what the algorithm “saw” would just give me somewhere to direct my scorn and derision at its folly and might not really add anything helpful to the overall purpose.</p>

<p>An enthusiast has created a better user interface for naming and managing the faces more quickly, all on one screen. It&#39;s the main feature so far of Varun Raj Manoharan&#39;s <a href="https://github.com/varun-raj/immich-power-tools">Immich Power Tools</a>, and the demo video there shows it in action.</p>

<h2 id="partner-sharing" id="partner-sharing">Partner Sharing</h2>

<p>The partner sharing works by including both my photos and my wife&#39;s photos in my time line view. The same for her view, if it is set up reciprocally. That is a good start. It would be more useful if we could see which photos are “ours” and which are “theirs”. I would like to see them tagged with our initials, or perhaps distinguished by a colour or styling. I would like to be able to quickly show or hide each set, and to select by partner in the search.</p>

<p>I hoped the partners would be able to share the same categorisation, tagging, face recognition and so on. At present unfortunately this is not possible. It is discussed as a potential future improvement in <a href="https://github.com/immich-app/immich/discussions/5089">Show Face Recognition for Partner #5089</a>.</p>

<p>Because the current implementation of Partner Sharing isn&#39;t close enough, I am thinking about using just one “family” account in Immich, with both (or all) partners&#39; photo libraries in it. That might be the best way for our family to use the existing capability. Whether this would suit us depends on whether we use the upload/sync feature from our smartphones. If we do, then Immich&#39;s sync feature would place all of our photos into the same library. (I haven&#39;t found a feature to separate or tag them on upload based on which camera-phone they came from, although there might be a way.) Currently we are not using Immich&#39;s upload: we are using &#39;syncthing&#39; for that, copying our photos directly to our respective photo libraries on the server. Then in Immich we define these as “external” libraries (meaning they are outside Immich&#39;s built-in upload storage area).</p>

<h2 id="folders-albums-tags" id="folders-albums-tags">Folders, Albums, Tags</h2>

<p>I have a collection of (older) photos that I already organised into folders with descriptive names. I would like these to be shown as “Albums” or “Tags”. Immich imports tags if found in embedded metadata, and a few of my photos had these. Due to the sad state of standardisation of photo metadata, however, naming the files and folders is a more universal solution than embedding descriptions and tags in the photo metadata.</p>

<p>The way I would expect or wish to get albums and tags from my collection would be to specify a set of patterns that match my folder and file names, and to specify rules to derive album names and tags from these patterns.</p>

<p>There are open issues about potential future development of folder imports in Immich. In the meantime I might try the extension <a href="https://github.com/Salvoxia/immich-folder-album-creator">Salvoxia/immich-folder-album-creator</a> noted below.</p>

<h2 id="extensions" id="extensions">Extensions</h2>

<p>Extensions I have noted to investigate further:</p>

<p>    – <a href="https://github.com/Salvoxia/immich-folder-album-creator">immich-folder-album-creator</a> — “Automatically create and populate albums in Immich from a folder structure in external libraries”
    – <a href="https://github.com/varun-raj/immich-power-tools">Immich Power Tools</a> — alternative UI for face naming and management
    – <a href="https://github.com/damongolding/immich-kiosk">Immich-Kiosk</a> — “A web slideshow for Immich”</p>

<hr>

<h2 id="freedom-software-ethics" id="freedom-software-ethics">Freedom Software Ethics</h2>

<p>In terms of open source “freedom software” ethics, Immich sits somewhere in the middle of the spectrum.</p>

<p>On the positive side, Immich is open source under the GNU AGPL v3 license: that&#39;s very good for maintaining the freedoms granted to its users. Immich has its own website at its own domain, <a href="https://immich.app"><code>immich.app</code></a>, where it hosts its blog and documentation.</p>

<p>On the other hand, like too many other good projects, the development is hosted in Microsoft Github rather than in a freedom-respecting forge such as Codeberg or at its own address. Use of MS Github is a real and present danger to the open source ecosystem: <a href="https://wrily.foad.me.uk/foss-apps-live-in-foss-forges">freedom software lives in freedom-respecting software forges</a>. And development discussion is invited inside the proprietary Discord instead of through a freedom-respecting method such as Matrix: see <a href="https://wrily.foad.me.uk/discord-vs-community-values">Discord vs community values</a>. Immich in its website footer also promotes other proprietary silos (Reddit, Youtube) and does not even mention any open/freedom tech channels such as the Fediverse.</p>

<p>Immich advertise that their client app is available through the big silo stores (Google, Apple). They also also distribute it through the freedom-respecting app store <a href="https://f-droid.org/en/packages/app.alextran.immich/">F-Droid</a>, for Android and <a href="https://wrily.foad.me.uk/freedom-respecting-smart-phone-want-get-have" title="You Too Can Have a Freedom-Respecting Smart Phone">android-compatible degoogled phones</a>. They mention this in the docs but not on the main page.</p>

<hr>

<p><a href="https://wrily.foad.me.uk/tag:awesomeFOSS" class="hashtag"><span>#</span><span class="p-category">awesomeFOSS</span></a> <a href="https://wrily.foad.me.uk/tag:selfHosted" class="hashtag"><span>#</span><span class="p-category">selfHosted</span></a> <a href="https://wrily.foad.me.uk/tag:degoogled" class="hashtag"><span>#</span><span class="p-category">degoogled</span></a></p>



<hr>

<p><em>Follow/Feedback/Contact:</em> <a href="https://wrily.foad.me.uk/feed/"><em>RSS feed</em></a> · <em>Fedi follow this blog: @julian​@wrily.foad.me.uk</em> · <a href="https://matrix.to/#/@julian:foad.me.uk" title="matrix Julian"><em>matrix me</em></a> · <a href="https://fed.foad.me.uk/%40julian%40fed.foad.me.uk" title="follow Julian"><em>Fedi follow me</em></a> · <a href="mailto:julian@foad.me.uk?subject=Wrily" title="email Julian"><em>email me</em></a> · <a href="https://julian.foad.me.uk/"><em>julian.foad.me.uk</em></a>
<em>Donate:</em> <a href="https://liberapay.com/julianfoad" title="Donate to Julian using Liberapay"><em>via Liberapay</em></a>
<em>All posts © Julian Foad and licensed <a href="https://creativecommons.org/licenses/by-nd/4.0/">CC-BY-ND</a> except quotes, translations, or where stated otherwise</em></p>
]]></content:encoded>
      <guid>https://wrily.foad.me.uk/immich-awesome-open-source</guid>
      <pubDate>Thu, 12 Sep 2024 10:00:00 +0000</pubDate>
    </item>
    <item>
      <title>WhoBIRD -- Awesome Open Source</title>
      <link>https://wrily.foad.me.uk/whobird-awesome-open-source</link>
      <description>&lt;![CDATA[img src=&#34;https://blog.foad.me.uk/wp-content/uploads/2024/06/whoBIRD-icon.png&#34; style=&#34;max-height: 5em&#34;&#xA;&#xA;I recently learned something new about those tweety birds we hear in the tall trees all along our school run, cycling or walking past the golf course. Near the school end, lots of coal tits, a name with which I was barely familiar. Near our end, lots of wrens. I had an idea that wrens were rare and secretive and tiny, so it had not occurred to me they were responsible for that noisy cheerful chatter. Perhaps it&#39;s hard to spot one but they&#39;re loudly singing.&#xA;&#xA;These I learnt last week helped by an app named &#34;whoBIRD&#34; which, as you may guess, listens for bird calls and displays the most likely matches. It&#39;s delightful to identify real birds, and surprisingly successful if they&#39;re not too far away.&#xA;!--more--&#xA;&#xA;img src=&#34;https://blog.foad.me.uk/wp-content/uploads/2024/06/ss-whoBIRD-dove.jpg&#34; style=&#34;float: right; width: 50%; max-width: 20em; padding: 2em;&#34;&#xA;&#xA;It&#39;s also fun trying to imitate bird calls, and satisfyingly hard to get past&#39;s WhoBIRD&#39;s correct identification of &#34;human whistle&#34;.&#xA;&#xA;My eye was drawn to WhoBIRD when I stumbled across it while browsing for another open-source app in F-Droid. It is a little volunteer/hobbyist app which matches the sound from the microphone against Cornell University&#39;s bird call data, displaying a name and a picture of the most likely match. That&#39;s all it does. &#xA;&#xA;Another family member has been using an app named &#34;Merlin&#34;, I soon found out, so I tried it too. Merlin is Cornell&#39;s own app, using the same data source. By contrast with WhoBird, Merlin seems aimed at serious amateur birders for research data collection, professionally produced, multi-featured and slick -- and on the other hand being a huge download and demanding sign-up into their club. (For a quick try-out I found that entering the fake email address &#34;a@b.c&#34; on every start suffices to access the sound identification feature with just names but no pictures or additional information.)&#xA;&#xA;It&#39;s nice to have the choice, which Cornell University enabled by publishing their research results as Open Data in their BirdNET project so that others can re-use it in other ways. Birders and ornithologists interested in the sightings and soundings side of this should consider Merlin or the other BirdNET apps. Technologists and researchers on the data analysis side might like to study and modify whoBIRD. As a builder and tinkerer myself, I value open source software on principle. Already I am imagining how I or anyone could modify whoBIRD to do things like send a picture of each identification to my smart watch. Or send the identifications through my Matrix network to co-ordinate the listening among multiple devices left near open windows at home, with a separate display standing on the kitchen table.&#xA;&#xA;---&#xA;&#xA;#awesomeFOSS #freedomSoftware #degoogled&#xA;&#xA;!--more--&#xD;&#xA;----&#xD;&#xA;Follow/Feedback/Contact: RSS feed · Fedi follow this blog: @julian&amp;ZeroWidthSpace;@wrily.foad.me.uk · matrix me · Fedi follow me · email me · julian.foad.me.uk&#xD;&#xA;Donate: via Liberapay&#xD;&#xA;All posts &amp;copy; Julian Foad and licensed CC-BY-ND except quotes, translations, or where stated otherwise&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://f-droid.org/en/packages/org.woheller69.whobird/" title="get whoBIRD from F-Droid, the installable catalogue of freedom-software apps for android-compatibles"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/06/whoBIRD-icon.png" style="max-height: 5em"></a></p>

<p>I recently learned something new about those tweety birds we hear in the tall trees all along our school run, cycling or walking past the golf course. Near the school end, lots of coal tits, a name with which I was barely familiar. Near our end, lots of wrens. I had an idea that wrens were rare and secretive and tiny, so it had not occurred to me they were responsible for that noisy cheerful chatter. Perhaps it&#39;s hard to spot one but they&#39;re loudly singing.</p>

<p>These I learnt last week helped by an app named <a href="https://f-droid.org/en/packages/org.woheller69.whobird/" title="get whoBIRD from F-Droid, the installable catalogue of freedom-software apps for android-compatibles">“whoBIRD”</a> which, as you may guess, listens for bird calls and displays the most likely matches. It&#39;s delightful to identify real birds, and surprisingly successful if they&#39;re not too far away.
</p>

<p><a href="https://f-droid.org/en/packages/org.woheller69.whobird/" title="get whoBIRD from F-Droid, the installable catalogue of freedom-software apps for android-compatibles"><img src="https://blog.foad.me.uk/wp-content/uploads/2024/06/ss-whoBIRD-dove.jpg" style="float: right; width: 50%; max-width: 20em; padding: 2em;"></a></p>

<p>It&#39;s also fun trying to imitate bird calls, and satisfyingly hard to get past&#39;s WhoBIRD&#39;s correct identification of “human whistle”.</p>

<p>My eye was drawn to WhoBIRD when I stumbled across it while browsing for another open-source app in <a href="https://f-droid.org" title="the installable catalogue of freedom-software apps for android-compatibles">F-Droid</a>. It is a little volunteer/hobbyist app which matches the sound from the microphone against Cornell University&#39;s bird call data, displaying a name and a picture of the most likely match. That&#39;s all it does.</p>

<p>Another family member has been using an app named “Merlin”, I soon found out, so I tried it too. Merlin is Cornell&#39;s own app, using the same data source. By contrast with WhoBird, Merlin seems aimed at serious amateur birders for research data collection, professionally produced, multi-featured and slick — and on the other hand being a huge download and demanding sign-up into their club. (For a quick try-out I found that entering the fake email address “a@b.c” on every start suffices to access the sound identification feature with just names but no pictures or additional information.)</p>

<p>It&#39;s nice to have the choice, which Cornell University enabled by publishing their research results as Open Data in their <a href="https://birdnet.cornell.edu/">BirdNET</a> project so that others can re-use it in other ways. Birders and ornithologists interested in the sightings and soundings side of this should consider Merlin or the other BirdNET apps. Technologists and researchers on the data analysis side might like to study and modify whoBIRD. As a builder and tinkerer myself, I value open source software on principle. Already I am imagining how I or anyone could modify whoBIRD to do things like send a picture of each identification to my smart watch. Or send the identifications through my Matrix network to co-ordinate the listening among multiple devices left near open windows at home, with a separate display standing on the kitchen table.</p>

<hr>

<p><a href="https://wrily.foad.me.uk/tag:awesomeFOSS" class="hashtag"><span>#</span><span class="p-category">awesomeFOSS</span></a> <a href="https://wrily.foad.me.uk/tag:freedomSoftware" class="hashtag"><span>#</span><span class="p-category">freedomSoftware</span></a> <a href="https://wrily.foad.me.uk/tag:degoogled" class="hashtag"><span>#</span><span class="p-category">degoogled</span></a></p>



<hr>

<p><em>Follow/Feedback/Contact:</em> <a href="https://wrily.foad.me.uk/feed/"><em>RSS feed</em></a> · <em>Fedi follow this blog: @julian​@wrily.foad.me.uk</em> · <a href="https://matrix.to/#/@julian:foad.me.uk" title="matrix Julian"><em>matrix me</em></a> · <a href="https://fed.foad.me.uk/%40julian%40fed.foad.me.uk" title="follow Julian"><em>Fedi follow me</em></a> · <a href="mailto:julian@foad.me.uk?subject=Wrily" title="email Julian"><em>email me</em></a> · <a href="https://julian.foad.me.uk/"><em>julian.foad.me.uk</em></a>
<em>Donate:</em> <a href="https://liberapay.com/julianfoad" title="Donate to Julian using Liberapay"><em>via Liberapay</em></a>
<em>All posts © Julian Foad and licensed <a href="https://creativecommons.org/licenses/by-nd/4.0/">CC-BY-ND</a> except quotes, translations, or where stated otherwise</em></p>
]]></content:encoded>
      <guid>https://wrily.foad.me.uk/whobird-awesome-open-source</guid>
      <pubDate>Thu, 27 Jun 2024 08:19:16 +0000</pubDate>
    </item>
    <item>
      <title>Troubleshooting UnifiedPush</title>
      <link>https://wrily.foad.me.uk/troubleshooting-unifiedpush</link>
      <description>&lt;![CDATA[img src=&#34;https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png&#34; style=&#34;max-height: 5em&#34; /&#xA;&#xA;Let&#39;s take charge of another part of our digital life! Must we be beholden to Google for delivering our push notifications? No! No longer! With apps that support UnifiedPush neither Google nor the app makers get to determine where our data goes and who gets to monitor it. We get the control, the freedom to choose.&#xA;&#xA;To me this feels like a breath of fresh air!&#xA;&#xA;You might find your way here while installing an app that uses UnifiedPush. Let&#39;s see how to make sure the notifications work properly.&#xA;!--more--&#xA;&#xA;The official UnifiedPush Troubleshooting page is, at the time of this writing, rather bare. (Perhaps, as an open source project, I can contribute to it. EDIT: Here&#39;s a preview I have submitted on Codeberg, that&#39;s becoming better than this article.) Meanwhile, read on.&#xA;&#xA;Following my earlier articles such as Who Cares Who Delivers Our Notifications? and how to self-host UnifiedPush notifications for your Matrix server with ntfy, here are some tips for using a UnifiedPush-compatible app on your Android phone or your freedom-supporting (degoogled) android-compatible.&#xA;&#xA;Install a Distributor to Enable UnifiedPush&#xA;&#xA;Some U-P Distributors: ntfy, NextPush, Conversations, ...&#xA;&#xA;The first step to using UnifiedPush is to get a UnifiedPush &#34;distributor&#34; app running and configured. A distributor is the one app that will be listening all the time on your device, on behalf of all the apps that want to receive UnifiedPush notifications. When notifications arrive, it will distribute them to the correct target apps (usually messaging apps).&#xA;&#xA;Ideally, in the near future, freedom phones would include a UnifiedPush distributor built-in. For now, you have to install one.&#xA;&#xA;You choose your distributor app once, the first time you want to start using UnifiedPush. The distributor works in concert with one UnifiedPush server (again, your choice, depending on what the distributor supports), so consider which server or service provider you want to use. Install the distributor app, and configure it according to its documentation. Some are preconfigured to use one particular server, while others allow or require you to choose a server.&#xA;&#xA;The distributor must be working before any U-P-compatible app will be able to use UnifiedPush. If no distributor is detected, most apps will choose an alternative method, usually either polling or the proprietary Google system. However, if a distributor is installed but not working properly, notifications may not arrive promptly and consistently or at all.&#xA;&#xA;Follow the instructions for your chosen combination of server and distributor, or start from the UnifiedPush Distributors page.&#xA;&#xA;Troubleshooting UnifiedPush&#xA;&#xA;Now we assume you have installed a U-P-compatible client app, perhaps a messaging app, and are expecting it to use UnifiedPush.&#xA;&#xA;The general expectation is the app should &#34;just work&#34;, without even telling you, if it detects a functioning UnifiedPush distributor as described above.&#xA;&#xA;How does this magic work? Three steps. First, your app asks the distributor on the same device for the details of your chosen UnifiedPush service. Second, your app passes those details on to its own server (wherever that is). Third, even after your app has disconnected from its own server or &#34;gone to sleep&#34;, your app&#39;s server continues to use those details to push notifications to your UnifiedPush server, which delivers them to your distributor, which delivers them to your app, waking it up.&#xA;&#xA;Let&#39;s see what we can check if it does not seem to &#34;just work&#34;.&#xA;&#xA;Check your app is supported and the right variant&#xA;&#xA;First check that the client app you are using supports UnifiedPush. The UnifiedPush web site lists some of the first U-P-compatible apps. Some apps come in different variants, with for instance the variant available through the Google Play store using Google&#39;s notification system while the variant available though the F-Droid freedom-software store uses UnifiedPush. Some apps give you a choice if they detect both methods are available, and some choose one method without asking you.&#xA;&#xA;Use the simple UP-Example app&#xA;&#xA;Install the UnifiedPush troubleshooting app UP-Example from F-Droid. Use it to manually test UnifiedPush registration and operation: simply press the &#34;register&#34; button and then the &#34;test&#34; button, and you should immediately receive an example notification named &#34;Test&#34;.&#xA;&#xA;If this simple test fails, you need to debug your UnifiedPush distributor app and its configuration.&#xA;&#xA;(TODO: see troubleshooting for specific distributors &#39;ntfy&#39;, &#39;Conversations&#39;, &#39;NextPush&#39;, etc.)&#xA;&#xA;Use advanced notification troubleshooting tools&#xA;&#xA;You can find more advanced notification troubleshooting tools in some apps.&#xA;&#xA;Element-Android and Schildichat-Android have a useful, active, troubleshooting tool in &#34;Settings -  Notifications -  Troubleshoot Notifications&#34;. In particular the &#34;Gateway&#34; and &#34;Endpoint&#34; steps of that troubleshooter should display your ntfy server&#39;s URL that it has discovered from the ntfy client app.&#xA;&#xA;Check also &#34;Settings -  Notifications -  Notification Targets&#34; in Element or SchildiChat, or &#34;Settings -  Notifications -  Devices&#34; in FluffyChat. There should be one entry for each matrix client app that has enabled push notifications, and when that client is using UnifiedPush you should see a URL that begins with your ntfy server&#39;s URL.&#xA;&#xA;In the &#34;Notification Targets&#34; screen in Element or SchildiChat, two relevant URLs are shown, &#34;push\key&#34; and &#34;Url&#34;, and both should begin with your ntfy server&#39;s URL. If &#34;push\key&#34; shows your server but &#34;Url&#34; shows an external server such as up.schildi.chat then push notifications are being routed through that external server before they reach your ntfy server, which might or might not be what you want.&#xA;&#xA;Using your own UnifiedPush server&#xA;&#xA;If you are running your own UnifiedPush server, of course you should also look at its logs and debugging capabilities. That is out of scope for this article.&#xA;&#xA;These tips should help you resolve any issues&#xA;&#xA;For further help, contact the most relevant or specific of the projects involved, such as your client app provider or your U-P distributor provider, or for more general help contact the UnifiedPush project, through the links provided here. (Note: The blog comments are for discussing the blog post, not for getting help.)&#xA;&#xA;Once it is working, enjoy one more Google-free, self-determined aspect of your digital life!&#xA;&#xA;---&#xA;&#xA;Read More about UnifiedPush&#xA;&#xA;UnifiedPush.org web site&#xA;On F-Droid News: UnifiedPush: a decentralized, open-source push notification protocol&#xA;On my blog: articles tagged #unifiedPush, including Devs - Please Use UnifiedPush&#xA;#WebDAV-Push (repo) standardisation initiative for CalDAV and CardDAV&#xA;&#xA;#degoogled #unifiedPush #awesomeFOSS&#xA;&#xA;!--more--&#xD;&#xA;----&#xD;&#xA;Follow/Feedback/Contact: RSS feed · Fedi follow this blog: @julian&amp;ZeroWidthSpace;@wrily.foad.me.uk · matrix me · Fedi follow me · email me · julian.foad.me.uk&#xD;&#xA;Donate: via Liberapay&#xD;&#xA;All posts &amp;copy; Julian Foad and licensed CC-BY-ND except quotes, translations, or where stated otherwise&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><img src="https://blog.foad.me.uk/wp-content/uploads/2024/11/unifiedpush-favicon-128.png" style="max-height: 5em"/></p>

<p>Let&#39;s take charge of another part of our digital life! <a href="https://wrily.foad.me.uk/who-cares-who-delivers-our-notifications" title="Who Cares Who Delivers Our Notifications">Must we be beholden to Google for delivering our push notifications?</a> No! No longer! With apps that support <a href="https://unifiedpush.org/">UnifiedPush</a> neither Google nor the app makers get to determine where our data goes and who gets to monitor it. We get the control, the freedom to choose.</p>

<p>To me this feels like a breath of fresh air!</p>

<p>You might find your way here while installing an app that uses <a href="https://unifiedpush.org/">UnifiedPush</a>. Let&#39;s see how to make sure the notifications work properly.
</p>

<p>The official <a href="https://unifiedpush.org/users/troubleshooting/">UnifiedPush Troubleshooting</a> page is, at the time of this writing, rather bare. (Perhaps, as an open source project, I can contribute to it. <em>EDIT: <a href="https://unifiedpush.s.trax.im/users/troubleshooting/">Here&#39;s a preview</a> I have <a href="https://codeberg.org/UnifiedPush/documentation/pulls/1">submitted on Codeberg</a>, that&#39;s becoming better than this article.</em>) Meanwhile, read on.</p>

<p>Following my earlier articles such as <a href="https://wrily.foad.me.uk/who-cares-who-delivers-our-notifications">Who Cares Who Delivers Our Notifications?</a> and how to self-host <a href="https://wrily.foad.me.uk/unifiedpush-notifications-for-your-matrix-server-with-ntfy">UnifiedPush notifications for your Matrix server with ntfy</a>, here are some tips for using a UnifiedPush-compatible app on your Android phone or your <a href="https://wrily.foad.me.uk/freedom-respecting-smart-phone-want-get-have" title="You Too Can Have a Freedom-Respecting Smart Phone!">freedom-supporting (degoogled) android-compatible</a>.</p>

<h2 id="install-a-distributor-to-enable-unifiedpush" id="install-a-distributor-to-enable-unifiedpush">Install a Distributor to Enable UnifiedPush</h2>

<p>Some <a href="https://unifiedpush.org/users/distributors/" title="U-P Distributors">U-P Distributors</a>: <a href="https://unifiedpush.org/users/distributors/ntfy/" title="ntfy as a U-P distributor"><strong>ntfy</strong></a>, <a href="https://unifiedpush.org/users/distributors/nextpush/" title="NextPush as a U-P distributor"><strong>NextPush</strong></a>, <a href="https://unifiedpush.org/users/distributors/conversations/" title="Conversations as a U-P distributor"><strong>Conversations</strong></a>, ...</p>

<p>The first step to using UnifiedPush is to get a <a href="https://unifiedpush.org/users/distributors/" title="U-P Distributors">UnifiedPush “distributor” app</a> running and configured. A distributor is the one app that will be listening all the time on your device, on behalf of all the apps that want to receive UnifiedPush notifications. When notifications arrive, it will distribute them to the correct target apps (usually messaging apps).</p>

<p>Ideally, in the near future, <a href="https://wrily.foad.me.uk/freedom-respecting-smart-phone-want-get-have" title="You Too Can Have a Freedom-Respecting Smart Phone!">freedom phones</a> would include a UnifiedPush distributor built-in. For now, you have to install one.</p>

<p>You choose your distributor app once, the first time you want to start using UnifiedPush. The distributor works in concert with one UnifiedPush server (again, your choice, depending on what the distributor supports), so consider which server or service provider you want to use. Install the distributor app, and configure it according to its documentation. Some are preconfigured to use one particular server, while others allow or require you to choose a server.</p>

<p>The distributor must be working before any U-P-compatible app will be able to use UnifiedPush. If no distributor is detected, most apps will choose an alternative method, usually either polling or the proprietary Google system. However, if a distributor is installed but not working properly, notifications may not arrive promptly and consistently or at all.</p>

<p>Follow the instructions for your chosen combination of server and distributor, or start from the <a href="https://unifiedpush.org/users/distributors/">UnifiedPush Distributors</a> page.</p>

<h2 id="troubleshooting-unifiedpush" id="troubleshooting-unifiedpush">Troubleshooting UnifiedPush</h2>

<p>Now we assume you have installed a U-P-compatible client app, perhaps a messaging app, and are expecting it to use UnifiedPush.</p>

<p>The general expectation is the app should “just work”, without even telling you, if it detects a functioning UnifiedPush distributor as described above.</p>

<p>How does this magic work? Three steps. First, your app asks the distributor on the same device for the details of your chosen UnifiedPush service. Second, your app passes those details on to its own server (wherever that is). Third, even after your app has disconnected from its own server or “gone to sleep”, your app&#39;s server continues to use those details to push notifications to your UnifiedPush server, which delivers them to your distributor, which delivers them to your app, waking it up.</p>

<p>Let&#39;s see what we can check if it does not seem to “just work”.</p>

<h3 id="check-your-app-is-supported-and-the-right-variant" id="check-your-app-is-supported-and-the-right-variant">Check your app is supported and the right variant</h3>

<p>First check that the client app you are using supports UnifiedPush. The UnifiedPush web site lists some of the first <a href="https://unifiedpush.org/users/apps/" title="Apps using UnifiedPush">U-P-compatible apps</a>. Some apps come in different variants, with for instance the variant available through the Google Play store using Google&#39;s notification system while the variant available though the <a href="https://wrily.foad.me.uk/foss-apps-live-in-foss-app-stores" title="FOSS Apps Live in FOSS App Stores">F-Droid freedom-software store</a> uses UnifiedPush. Some apps give you a choice if they detect both methods are available, and some choose one method without asking you.</p>

<h3 id="use-the-simple-up-example-app" id="use-the-simple-up-example-app">Use the simple UP-Example app</h3>

<p>Install the <a href="https://unifiedpush.org/users/troubleshooting/">UnifiedPush troubleshooting</a> app <a href="https://f-droid.org/en/packages/org.unifiedpush.example/">UP-Example</a> from F-Droid. Use it to manually test UnifiedPush registration and operation: simply press the “register” button and then the “test” button, and you should immediately receive an example notification named “Test”.</p>

<p>If this simple test fails, you need to debug your UnifiedPush distributor app and its configuration.</p>

<p>(<em>TODO: see troubleshooting for specific distributors &#39;ntfy&#39;, &#39;Conversations&#39;, &#39;NextPush&#39;, etc.</em>)</p>

<h3 id="use-advanced-notification-troubleshooting-tools" id="use-advanced-notification-troubleshooting-tools">Use advanced notification troubleshooting tools</h3>

<p>You can find more advanced notification troubleshooting tools in some apps.</p>

<p>Element-Android and Schildichat-Android have a useful, active, troubleshooting tool in “Settings –&gt; Notifications –&gt; Troubleshoot Notifications”. In particular the “Gateway” and “Endpoint” steps of that troubleshooter should display your ntfy server&#39;s URL that it has discovered from the ntfy client app.</p>

<p>Check also “Settings –&gt; Notifications –&gt; Notification Targets” in Element or SchildiChat, or “Settings –&gt; Notifications –&gt; Devices” in FluffyChat. There should be one entry for each matrix client app that has enabled push notifications, and when that client is using UnifiedPush you should see a URL that begins with your ntfy server&#39;s URL.</p>

<p>In the “Notification Targets” screen in Element or SchildiChat, two relevant URLs are shown, “push_key” and “Url”, and both should begin with your ntfy server&#39;s URL. If “push_key” shows your server but “Url” shows an external server such as <code>up.schildi.chat</code> then push notifications are being routed through that external server before they reach your ntfy server, which might or might not be what you want.</p>

<h3 id="using-your-own-unifiedpush-server" id="using-your-own-unifiedpush-server">Using your own UnifiedPush server</h3>

<p>If you are running your own UnifiedPush server, of course you should also look at its logs and debugging capabilities. That is out of scope for this article.</p>

<h3 id="these-tips-should-help-you-resolve-any-issues" id="these-tips-should-help-you-resolve-any-issues">These tips should help you resolve any issues</h3>

<p>For further help, contact the most relevant or specific of the projects involved, such as your client app provider or your U-P distributor provider, or for more general help contact the UnifiedPush project, through the links provided here. (<em>Note: The blog comments are for discussing the blog post, not for getting help.</em>)</p>

<p>Once it is working, enjoy one more Google-free, self-determined aspect of your digital life!</p>

<hr>

<h2 id="read-more-about-unifiedpush" id="read-more-about-unifiedpush">Read More about UnifiedPush</h2>
<ul><li><a href="https://unifiedpush.org/">UnifiedPush.org</a> web site</li>
<li>On F-Droid News: <a href="https://f-droid.org/en/2022/12/18/unifiedpush.html">UnifiedPush: a decentralized, open-source push notification protocol</a></li>
<li>On my blog: articles tagged <a href="https://wrily.foad.me.uk/tag:unifiedPush" class="hashtag"><span>#</span><span class="p-category">unifiedPush</span></a>, including <a href="https://wrily.foad.me.uk/devs-please-use-unifiedpush">Devs – Please Use UnifiedPush</a></li>
<li><a href="https://matrix.to/#/%23webdav-push:matrix.org" title="matrix discussion room"><code>#WebDAV-Push</code></a> (<a href="https://github.com/bitfireAT/webdav-push">repo</a>) standardisation initiative for CalDAV and CardDAV</li></ul>

<p><a href="https://wrily.foad.me.uk/tag:degoogled" class="hashtag"><span>#</span><span class="p-category">degoogled</span></a> <a href="https://wrily.foad.me.uk/tag:unifiedPush" class="hashtag"><span>#</span><span class="p-category">unifiedPush</span></a> <a href="https://wrily.foad.me.uk/tag:awesomeFOSS" class="hashtag"><span>#</span><span class="p-category">awesomeFOSS</span></a></p>



<hr>

<p><em>Follow/Feedback/Contact:</em> <a href="https://wrily.foad.me.uk/feed/"><em>RSS feed</em></a> · <em>Fedi follow this blog: @julian​@wrily.foad.me.uk</em> · <a href="https://matrix.to/#/@julian:foad.me.uk" title="matrix Julian"><em>matrix me</em></a> · <a href="https://fed.foad.me.uk/%40julian%40fed.foad.me.uk" title="follow Julian"><em>Fedi follow me</em></a> · <a href="mailto:julian@foad.me.uk?subject=Wrily" title="email Julian"><em>email me</em></a> · <a href="https://julian.foad.me.uk/"><em>julian.foad.me.uk</em></a>
<em>Donate:</em> <a href="https://liberapay.com/julianfoad" title="Donate to Julian using Liberapay"><em>via Liberapay</em></a>
<em>All posts © Julian Foad and licensed <a href="https://creativecommons.org/licenses/by-nd/4.0/">CC-BY-ND</a> except quotes, translations, or where stated otherwise</em></p>
]]></content:encoded>
      <guid>https://wrily.foad.me.uk/troubleshooting-unifiedpush</guid>
      <pubDate>Fri, 21 Jun 2024 05:39:46 +0000</pubDate>
    </item>
    <item>
      <title>Odin and Heimdall: Free Your Samsung Android</title>
      <link>https://wrily.foad.me.uk/odin-and-heimdall-free-your-samsung-android</link>
      <description>&lt;![CDATA[This article is about one particular step of the procedure for &#34;flashing&#34; a new android-compatible operating system onto a Samsung device to create a Freedom-Respecting Smart Phone or Tablet.&#xA;!--more--&#xA;&#xA;(For the rest of the procedure, see for example the instructions to install e-OS or install LineageOS .)&#xA;&#xA;Main article: Degoogling a Samsung Galaxy Tab A7 (2020)&#xA;&#xA;Tools for Flashing Samsung: Odin and Heimdall&#xA;&#xA;Samsung Android devices are tightly locked down. My impression is they perhaps allow re-flashing only to fulfil some legal concession. It does not seem to be an option that they want us to use. Nevertheless, it is possible. At least on some models. (I read that some models sold in the USA are completely locked; maybe there is no legal concession to allow changing the software there.)&#xA;&#xA;Samsung do not seem to make available the tools needed to &#34;flash&#34; the software. The instructions I find all reference either &#34;Odin&#34; or &#34;Heimdall&#34;.&#xA;&#xA;Odin is apparently a Samsung internal tool that has been leaked, many years ago, as a Windows-only executable with no source code. This, widely referenced as the way to go, is useless for non-customers of Microsoft-Windows. In 2022 a leaked Odin v4 for Linux was reported, also executable only. Without source code, nobody (outside Samsung) can reasonably make improvements or adaptations. (Also, many instructions including LineageOS&#39;s say to download the Odin executable from some unattested third-party web site, not even giving a checksum to verify. This is dangerous.)&#xA;&#xA;Heimdall is a cross-platform open source tool developed independently. Heimdall can replace Odin, but many instructions either do not mention it at all, or point to an out-of-date version such as v1.4.2 that lacks important updates and bug fixes.&#xA;&#xA;Both Odin and Heimdall work with Samsung&#39;s &#34;download&#34; mode, and are needed to get an alternative (freedom) operating system onto the device.&#xA;&#xA;Heimdall, Open Source Samsung Flashing Tool (Odin Alternative)&#xA;&#xA;An open-source flashing tool for Samsung devices, called Heimdall, was developed by Benjamin Dobell (https://glassechidna.com.au/heimdall/) around 2010 to 2017. That version is most commonly referenced.&#xA;&#xA;Some bug fixes and updates have been made by other people since then, but not merged back to that version. Some of these can be found inside Microsoft&#39;s GitHub, but the best version is not there: it rightly lives on a Freedom software forge called Source Hut.&#xA;&#xA;Heimdall up to v1.4.2, the latest &#34;original&#34; version (from Benjamin Dobell or &#34;glassechidna&#34;) at the time of this writing, did not work for me. See Troubleshooting: Heimdall Fails at Initialising Protocol.&#xA;&#xA;Henrik Grimler now maintains a version of Heimdall at https://git.sr.ht/~grimler/Heimdall .&#xA;&#xA;I recommend using Grimler&#39;s version. It has fixes and updates needed for more recent devices.&#xA;&#xA;It is available as source code. You could ask around for someone to provide a build, or build it yourself following the included instructions.&#xA;&#xA;Building Heimdall&#xA;&#xA;Referring to Appendix B at the bottom of the instructions page for Linux, on Ubuntu 22.04, on which I already had most of the dependencies installed, I built Heimdall like this:&#xA;&#xA;$ sudo apt install libusb-1.0-0-dev  # you may need more: see below&#xA;$ mkdir build&#xA;$ cd build&#xA;$ cmake -DCMAKEBUILDTYPE=Release -DDISABLEFRONTEND=ON ..&#xA;$ make&#xA;$ # The executable is then found at ./bin/heimdall&#xA;$ ./bin/heimdall version&#xA;v2.0.2&#xA;&#xA;Required dependency packages are listed in the doc linked above, and also machine-readably in the source tree in the files .builds/{alpine.yml,archlinux.yml,ubuntu.yml}.&#xA;&#xA;I used &#39;DISABLEFRONTEND&#39; because I was not interested in building a GUI, and could omit installing &#39;qtbase5-dev&#39; and its several sub-dependencies.&#xA;&#xA;Using Heimdall in place of Odin&#xA;&#xA;To flash a recovery image, Odin wants to be given a &#34;tar&#34; file (a similar concept to a zip file) with the image file inside it. For example, we have to create recovery.tar which contains recovery.img. By contrast, Heimdall takes the image file directly, e.g. recovery.img.&#xA;&#xA;Where instructions for Odin say to select the &#34;AP&#34; (Android Partition) button and choose the recovery.tar file, the Heimdall translation is to run heimdall flash --RECOVERY recovery.img . For flashing a different kind of image such as &#34;vbmeta&#34;, we write heimdall flash --VBMETA vbmeta.img. We can give more than one pair of command-line arguments to flash more than one image.&#xA;&#xA;Referring to this XDA post, the command needed for this device is:&#xA;&#xA;$ heimdall flash --VBMETA vbmeta.img --RECOVERY recovery.img&#xA;&#xA;Or, if we prefer not to reboot immediately (equivalent of disabling Odin&#39;s &#34;Auto-Reboot&#34; option), add the &#39;--no-reboot&#39; flag:&#xA;&#xA;$ heimdall flash --VBMETA vbmeta.img --RECOVERY recovery.img --no-reboot&#xA;&#xA;---&#xA;&#xA;#fossGadgets #android #degoogled #lineageOS #eOS&#xA;&#xA;!--more--&#xD;&#xA;----&#xD;&#xA;Follow/Feedback/Contact: RSS feed · Fedi follow this blog: @julian&amp;ZeroWidthSpace;@wrily.foad.me.uk · matrix me · Fedi follow me · email me · julian.foad.me.uk&#xD;&#xA;Donate: via Liberapay&#xD;&#xA;All posts &amp;copy; Julian Foad and licensed CC-BY-ND except quotes, translations, or where stated otherwise&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>This article is about one particular step of the procedure for “flashing” a new android-compatible operating system onto a Samsung device to create a <a href="https://wrily.foad.me.uk/freedom-respecting-smart-phone-want-get-have">Freedom-Respecting Smart Phone</a> or Tablet.
</p>

<p>(For the rest of the procedure, see for example the instructions to <a href="https://doc.e.foundation/devices/gta4lwifi/install">install e-OS</a> or <a href="https://wiki.lineageos.org/devices/gta4lwifi/install/">install LineageOS</a> .)</p>

<p>Main article: <a href="https://wrily.foad.me.uk/freedom-respecting-gadget-degoogling-a-samsung-tablet">Degoogling a Samsung Galaxy Tab A7 (2020)</a></p>

<h2 id="tools-for-flashing-samsung-odin-and-heimdall" id="tools-for-flashing-samsung-odin-and-heimdall">Tools for Flashing Samsung: Odin and Heimdall</h2>

<p>Samsung Android devices are tightly locked down. My impression is they perhaps allow re-flashing only to fulfil some legal concession. It does not seem to be an option that they want us to use. Nevertheless, it is possible. At least on some models. (I read that some models sold in the USA are completely locked; maybe there is no legal concession to allow changing the software there.)</p>

<p>Samsung do not seem to make available the tools needed to “flash” the software. The instructions I find all reference either “Odin” or “Heimdall”.</p>

<p><strong>Odin</strong> is apparently a Samsung internal tool that has been leaked, many years ago, as a Windows-only executable with no source code. This, widely referenced as the way to go, is useless for non-customers of Microsoft-Windows. In 2022 a leaked Odin v4 for Linux was reported, also executable only. Without source code, nobody (outside Samsung) can reasonably make improvements or adaptations. (Also, many instructions including LineageOS&#39;s say to download the Odin executable from some unattested third-party web site, not even giving a checksum to verify. This is dangerous.)</p>

<p><strong>Heimdall</strong> is a cross-platform open source tool developed independently. Heimdall can replace Odin, but many instructions either do not mention it at all, or point to an out-of-date version such as v1.4.2 that lacks important updates and bug fixes.</p>

<p>Both Odin and Heimdall work with Samsung&#39;s “download” mode, and are needed to get an alternative (freedom) operating system onto the device.</p>

<h2 id="heimdall-open-source-samsung-flashing-tool-odin-alternative" id="heimdall-open-source-samsung-flashing-tool-odin-alternative">Heimdall, Open Source Samsung Flashing Tool (Odin Alternative)</h2>

<p>An open-source flashing tool for Samsung devices, called Heimdall, was developed by Benjamin Dobell (<a href="https://glassechidna.com.au/heimdall/">https://glassechidna.com.au/heimdall/</a>) around 2010 to 2017. That version is most commonly referenced.</p>

<p>Some bug fixes and updates have been made by other people since then, but not merged back to that version. Some of these can be found inside Microsoft&#39;s GitHub, but the best version is not there: it <a href="https://wrily.foad.me.uk/foss-apps-live-in-foss-forges">rightly lives on a Freedom software forge</a> called <a href="https://sr.ht/">Source Hut</a>.</p>

<p>Heimdall up to v1.4.2, the latest “original” version (from Benjamin Dobell or “glassechidna”) at the time of this writing, did not work for me. See <a href="https://wrily.foad.me.uk/troubleshooting-heimdall-fails-at-initialising-protocol">Troubleshooting: Heimdall Fails at Initialising Protocol</a>.</p>

<p><strong>Henrik Grimler now maintains a version of Heimdall at <a href="https://git.sr.ht/~grimler/Heimdall">https://git.sr.ht/~grimler/Heimdall</a> .</strong></p>

<p>I recommend using Grimler&#39;s version. It has fixes and updates needed for more recent devices.</p>

<p>It is available as source code. You could ask around for someone to provide a build, or build it yourself following the included instructions.</p>

<h2 id="building-heimdall" id="building-heimdall">Building Heimdall</h2>

<p>Referring to Appendix B at the bottom of <a href="https://git.sr.ht/~grimler/Heimdall/tree/master/Linux/README">the instructions page for Linux</a>, on Ubuntu 22.04, on which I already had most of the dependencies installed, I built Heimdall like this:</p>

<pre><code>$ sudo apt install libusb-1.0-0-dev  # you may need more: see below
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release -DDISABLE_FRONTEND=ON ..
$ make
$ # The executable is then found at `./bin/heimdall`
$ ./bin/heimdall version
v2.0.2
</code></pre>

<p>Required dependency packages are listed in the doc linked above, and also machine-readably in the source tree in the files <code>.builds/{alpine.yml,archlinux.yml,ubuntu.yml}</code>.</p>

<p>I used &#39;DISABLE_FRONTEND&#39; because I was not interested in building a GUI, and could omit installing &#39;qtbase5-dev&#39; and its several sub-dependencies.</p>

<h2 id="using-heimdall-in-place-of-odin" id="using-heimdall-in-place-of-odin">Using Heimdall in place of Odin</h2>

<p>To flash a recovery image, Odin wants to be given a “tar” file (a similar concept to a zip file) with the image file inside it. For example, we have to create <code>recovery.tar</code> which contains <code>recovery.img</code>. By contrast, Heimdall takes the image file directly, e.g. <code>recovery.img</code>.</p>

<p>Where instructions for Odin say to select the “AP” (Android Partition) button and choose the <code>recovery.tar</code> file, the Heimdall translation is to run <code>heimdall flash --RECOVERY recovery.img</code> . For flashing a different kind of image such as “vbmeta”, we write <code>heimdall flash --VBMETA vbmeta.img</code>. We can give more than one pair of command-line arguments to flash more than one image.</p>

<p>Referring to <a href="https://xdaforums.com/t/official-sm-t505-sm-t505n-sm-t505c-sm-t507-gta4l-sm-t500-gta4lwifi-lineageos-21-for-galaxy-tab-a7-2020-lte-wifi-version.4576699/">this XDA post</a>, the command needed for this device is:</p>

<pre><code>$ heimdall flash --VBMETA vbmeta.img --RECOVERY recovery.img
</code></pre>

<p>Or, if we prefer not to reboot immediately (equivalent of disabling Odin&#39;s “Auto-Reboot” option), add the &#39;—no-reboot&#39; flag:</p>

<pre><code>$ heimdall flash --VBMETA vbmeta.img --RECOVERY recovery.img --no-reboot
</code></pre>

<hr>

<p><a href="https://wrily.foad.me.uk/tag:fossGadgets" class="hashtag"><span>#</span><span class="p-category">fossGadgets</span></a> <a href="https://wrily.foad.me.uk/tag:android" class="hashtag"><span>#</span><span class="p-category">android</span></a> <a href="https://wrily.foad.me.uk/tag:degoogled" class="hashtag"><span>#</span><span class="p-category">degoogled</span></a> <a href="https://wrily.foad.me.uk/tag:lineageOS" class="hashtag"><span>#</span><span class="p-category">lineageOS</span></a> <a href="https://wrily.foad.me.uk/tag:eOS" class="hashtag"><span>#</span><span class="p-category">eOS</span></a></p>



<hr>

<p><em>Follow/Feedback/Contact:</em> <a href="https://wrily.foad.me.uk/feed/"><em>RSS feed</em></a> · <em>Fedi follow this blog: @julian​@wrily.foad.me.uk</em> · <a href="https://matrix.to/#/@julian:foad.me.uk" title="matrix Julian"><em>matrix me</em></a> · <a href="https://fed.foad.me.uk/%40julian%40fed.foad.me.uk" title="follow Julian"><em>Fedi follow me</em></a> · <a href="mailto:julian@foad.me.uk?subject=Wrily" title="email Julian"><em>email me</em></a> · <a href="https://julian.foad.me.uk/"><em>julian.foad.me.uk</em></a>
<em>Donate:</em> <a href="https://liberapay.com/julianfoad" title="Donate to Julian using Liberapay"><em>via Liberapay</em></a>
<em>All posts © Julian Foad and licensed <a href="https://creativecommons.org/licenses/by-nd/4.0/">CC-BY-ND</a> except quotes, translations, or where stated otherwise</em></p>
]]></content:encoded>
      <guid>https://wrily.foad.me.uk/odin-and-heimdall-free-your-samsung-android</guid>
      <pubDate>Fri, 24 May 2024 15:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Troubleshooting: Heimdall Fails at Initialising Protocol</title>
      <link>https://wrily.foad.me.uk/troubleshooting-heimdall-fails-at-initialising-protocol</link>
      <description>&lt;![CDATA[This is about flashing a custom operating system ROM in a Samsung Android device using the tool named Heimdall.&#xA;&#xA;We may encounter a failure mode in which heimdall detect succeeds but heimdall flash and heimdall print-pit both fail, printing this:&#xA;!--more--&#xA;&#xA;    Initialising connection...&#xA;  Detecting device...&#xA;  Claiming interface...&#xA;  Setting up interface...&#xA;    Initialising protocol...&#xA;  ERROR: Failed to send handshake!ERROR: Protocol initialisation failed!&#xA;    Releasing device interface...&#xA;  Additional diagnostics if we give the --verbose option:&#xA;&#xA;    &#34;ERROR: libusb error -7 whilst sending bulk transfer&#34;&#xA;  (This message is repeated several times, before the final failure.)&#xA;&#xA;Errors like this have been reported many times: e.g. here and duplicates, here, here&#xA;&#xA;Here are two scenarios in which this error can occur.&#xA;&#xA;Scenario 1: Only The First Heimdall (Flash, Print-Pit) Command Works&#xA;&#xA;Some people report that some Samsung devices only accept one Heimdall command in the bootloader mode. Further attempts fail. Rebooting is required before another command can succeed.&#xA;&#xA;This may be a bootloader limitation in certain devices. (I have not yet seen a report with enough detail to satisfy me it is definitely the case.) In other cases, using Heimdall&#39;s options &#34;--no-reboot&#34; (on each command) and &#34;--resume&#34; (on subsequent commands, since v1.4.0) may overcome this.&#xA;&#xA;(In this description, &#34;heimdall flash&#34; and &#34;heimdall print-pit&#34; count towards the limit of one command, while &#34;heimdall detect&#34; doesn&#39;t count towards the limit and can be used freely.)&#xA;&#xA;Scenario 2: Every Heimdall (Flash, Print-Pit) Command Fails&#xA;&#xA;This happens only when running Heimdall on certain linux distributions, notably Ubuntu.&#xA;&#xA;Some people fixed this in their forks of Heimdall, e.g. Jesse Chan&#39;s fix is in Grimler&#39;s version of Heimdall and in several other forks. (This fix works by resetting the USB device on the Linux end. The main work in developing the fix seems to be recorded in PR #478 .)&#xA;&#xA;My suggestion: build and use Grimler&#39;s Heimdall. I explain a bit about Heimdall and how to build and use it in my article Odin and Heimdall: Free Your Samsung Android .&#xA;&#xA;Scenario 3: Heimdall With Resume Option Fails First Time&#xA;&#xA;If the first Heimdall command after booting into download mode is given the &#39;--resume&#39; option, Heimdall fails for me (on Ubuntu 22.04) like this, even when using a version with the Scenario 2 bug fixed:&#xA;&#xA;    $ heimdall print-pit --resume --no-reboot --verbose&#xA;  ...&#xA;  Beginning session...&#xA;  ERROR: libusb error -7 whilst sending bulk transfer. Retrying...&#xA;  ...&#xA;  ERROR: Failed to begin session!&#xA;  Releasing device interface...&#xA;  From what I can tell, this seems to be expected, and so a usage error. The &#39;--resume&#39; option should not be used on the first command.&#xA;&#xA;---&#xA;&#xA;#fossGadgets #android #degoogled #lineageOS #eOS&#xA;&#xA;!--more--&#xD;&#xA;----&#xD;&#xA;Follow/Feedback/Contact: RSS feed · Fedi follow this blog: @julian&amp;ZeroWidthSpace;@wrily.foad.me.uk · matrix me · Fedi follow me · email me · julian.foad.me.uk&#xD;&#xA;Donate: via Liberapay&#xD;&#xA;All posts &amp;copy; Julian Foad and licensed CC-BY-ND except quotes, translations, or where stated otherwise&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>This is about flashing a custom operating system ROM in a Samsung Android device using the tool named Heimdall.</p>

<p>We may encounter a failure mode in which <code>heimdall detect</code> succeeds but <code>heimdall flash</code> and <code>heimdall print-pit</code> both fail, printing this:
</p>

<blockquote><pre><code>Initialising connection...
Detecting device...
Claiming interface...
Setting up interface...

Initialising protocol...
ERROR: Failed to send handshake!ERROR: Protocol initialisation failed!

Releasing device interface...
</code></pre></blockquote>

<p>Additional diagnostics if we give the <code>--verbose</code> option:</p>

<blockquote><pre><code>&#34;ERROR: libusb error -7 whilst sending bulk transfer&#34;
</code></pre></blockquote>

<p>(This message is repeated several times, before the final failure.)</p>

<p>Errors like this have been reported many times: e.g. <a href="https://github.com/Benjamin-Dobell/Heimdall/issues/413">here</a> and duplicates, <a href="https://gitlab.com/BenjaminDobell/Heimdall/-/issues/515">here</a>, <a href="https://forums.androidcentral.com/threads/heimdall-error-libusb-error-7-whilst-sending-bulk-transfer-retrying.981405/">here</a></p>

<p>Here are two scenarios in which this error can occur.</p>

<h2 id="scenario-1-only-the-first-heimdall-flash-print-pit-command-works" id="scenario-1-only-the-first-heimdall-flash-print-pit-command-works">Scenario 1: Only The First Heimdall (Flash, Print-Pit) Command Works</h2>

<p>Some people report that some Samsung devices only accept one Heimdall command in the bootloader mode. Further attempts fail. Rebooting is required before another command can succeed.</p>

<p>This may be a bootloader limitation in certain devices. (I have not yet seen a report with enough detail to satisfy me it is definitely the case.) In other cases, using Heimdall&#39;s options “—no-reboot” (on each command) and “—resume” (on subsequent commands, since v1.4.0) may overcome this.</p>

<p>(In this description, “heimdall flash” and “heimdall print-pit” count towards the limit of one command, while “heimdall detect” doesn&#39;t count towards the limit and can be used freely.)</p>

<h2 id="scenario-2-every-heimdall-flash-print-pit-command-fails" id="scenario-2-every-heimdall-flash-print-pit-command-fails">Scenario 2: Every Heimdall (Flash, Print-Pit) Command Fails</h2>

<p>This happens only when running Heimdall on certain linux distributions, notably Ubuntu.</p>

<p>Some people fixed this in their forks of Heimdall, e.g. <a href="https://git.sr.ht/~grimler/Heimdall/commit/07a14d4aa8ad51a0de147cee8a5e570e72d49525">Jesse Chan&#39;s fix</a> is in <a href="https://git.sr.ht/~grimler/Heimdall/">Grimler&#39;s version of Heimdall</a> and in several other forks. (This fix works by resetting the USB device on the Linux end. The main work in developing the fix seems to be recorded in <a href="https://github.com/Benjamin-Dobell/Heimdall/pull/478" title="InitialiseProtocol. reset device before handshake">PR #478</a> .)</p>

<p>My suggestion: build and use Grimler&#39;s Heimdall. I explain a bit about Heimdall and how to build and use it in my article <a href="https://wrily.foad.me.uk/odin-and-heimdall-free-your-samsung-android">Odin and Heimdall: Free Your Samsung Android</a> .</p>

<h2 id="scenario-3-heimdall-with-resume-option-fails-first-time" id="scenario-3-heimdall-with-resume-option-fails-first-time">Scenario 3: Heimdall With Resume Option Fails First Time</h2>

<p>If the first Heimdall command after booting into download mode is given the &#39;—resume&#39; option, Heimdall fails for me (on Ubuntu 22.04) like this, even when using a version with the Scenario 2 bug fixed:</p>

<blockquote><pre><code>$ heimdall print-pit --resume --no-reboot --verbose
...
Beginning session...
ERROR: libusb error -7 whilst sending bulk transfer. Retrying...
...
ERROR: Failed to begin session!
Releasing device interface...
</code></pre></blockquote>

<p>From what I can tell, this seems to be expected, and so a usage error. The &#39;—resume&#39; option should not be used on the first command.</p>

<hr>

<p><a href="https://wrily.foad.me.uk/tag:fossGadgets" class="hashtag"><span>#</span><span class="p-category">fossGadgets</span></a> <a href="https://wrily.foad.me.uk/tag:android" class="hashtag"><span>#</span><span class="p-category">android</span></a> <a href="https://wrily.foad.me.uk/tag:degoogled" class="hashtag"><span>#</span><span class="p-category">degoogled</span></a> <a href="https://wrily.foad.me.uk/tag:lineageOS" class="hashtag"><span>#</span><span class="p-category">lineageOS</span></a> <a href="https://wrily.foad.me.uk/tag:eOS" class="hashtag"><span>#</span><span class="p-category">eOS</span></a></p>



<hr>

<p><em>Follow/Feedback/Contact:</em> <a href="https://wrily.foad.me.uk/feed/"><em>RSS feed</em></a> · <em>Fedi follow this blog: @julian​@wrily.foad.me.uk</em> · <a href="https://matrix.to/#/@julian:foad.me.uk" title="matrix Julian"><em>matrix me</em></a> · <a href="https://fed.foad.me.uk/%40julian%40fed.foad.me.uk" title="follow Julian"><em>Fedi follow me</em></a> · <a href="mailto:julian@foad.me.uk?subject=Wrily" title="email Julian"><em>email me</em></a> · <a href="https://julian.foad.me.uk/"><em>julian.foad.me.uk</em></a>
<em>Donate:</em> <a href="https://liberapay.com/julianfoad" title="Donate to Julian using Liberapay"><em>via Liberapay</em></a>
<em>All posts © Julian Foad and licensed <a href="https://creativecommons.org/licenses/by-nd/4.0/">CC-BY-ND</a> except quotes, translations, or where stated otherwise</em></p>
]]></content:encoded>
      <guid>https://wrily.foad.me.uk/troubleshooting-heimdall-fails-at-initialising-protocol</guid>
      <pubDate>Fri, 24 May 2024 14:00:00 +0000</pubDate>
    </item>
    <item>
      <title>Freedom-Respecting Gadget: Degoogling a Samsung Tablet</title>
      <link>https://wrily.foad.me.uk/freedom-respecting-gadget-degoogling-a-samsung-tablet</link>
      <description>&lt;![CDATA[This is about buying a Samsung Android tablet and replacing the privacy-invading proprietary Google and Samsung software with privacy-respecting Freedom Software: &#34;degoogling&#34; for short.&#xA;&#xA;Why? In &#34;The Problem&#34; section below, we take a look back at how much we&#39;re giving up when we accept Google&#39;s and Samsung&#39;s terms.&#xA;&#xA;I would like ordinary people, with a little technical skill, to be able to do this. The process unfortunately is currently far too difficult, especially so on Samsung devices.&#xA;&#xA;My goals:&#xA;&#xA;Install a privacy-preserving freedom-software operating system on my tablet&#xA;Make it easier for others to do the same&#xA;!--more--&#xA;&#xA;The tablet I bought:&#xA;&#xA;Name: Samsung Galaxy Tab A7 10.4 2020 (Wi-Fi)&#xA;Model: SM-T500&#xA;Device code: gta4lwifi&#xA;&#xA;Yes, it&#39;s a few years old already. One of the benefits of Freedom Software is the community at large has the option to maintain up-to-date software on older devices, for as long as anyone considers it worth the effort. This is in contrast with the original maker&#39;s vested interest in stopping updates of their proprietary software after a small number of years. A nod to the right-to-repair and sustainability movements.&#xA;&#xA;The Problem&#xA;&#xA;Have you bought a tablet or phone recently? Perhaps even a Samsung?&#xA;&#xA;IF We are buying a new or second-hand tablet,&#xA;&#xA;THEN We might look at a Samsung Android device. They do make nice hardware!&#xA;&#xA;BUT Oh! The set-up screens! -- Screen after screen of, Yes, I agree to let Them scan my house for other devices and report back anything they find... Yes, I agree to let Them install or change or delete anything on &#34;my&#34; device... Yes, I agree to let Them scan all my contacts and data so they can make me feel happy by feeding it back to me in different ways, no, wait, they mean mining it for profit and trapping me in their systems. Yes, Agree To All because that&#39;s the easy option (and notice there&#39;s no &#34;Agree to None&#34; option).&#xA;&#xA;Aaargh! No way, not me. Unfriendly system, Be Gone!&#xA;&#xA;THEREFORE We want to turn it into a Freedom-Respecting Smart Phone or Tablet by &#34;flashing&#34; a Freedom Software operating system onto the device.&#xA;&#xA;The New Software&#xA;&#xA;I want to install an android-compatible, privacy-friendly, Freedom-Tech operating system. Nowadays I favour e-OS by Murena. e-OS is near main-stream user-friendly, with a nice blend of privacy by default along with a choice of optional (privacy-invading) google support for those that want it. e-OS is available on a wide range of phone hardware from cheap to premium, and you can either buy it or self-install it. If you&#39;re not wanting to develop tech skills in this area, buy it pre-installed.&#xA;&#xA;Android-compatible Freedom Tech Operating Systems&#xA;&#xA;Android as most people know it is a proprietary product, which contains inside it some open-source software (including some of Linux), leading to eternal confusion about whether &#34;it&#34; itself is open-source. No. Only the people who go looking for it get an open-source system built around the Android Open Source Project (AOSP). (That&#39;s us, yay!) Everyone who buys an Android device from the usual sort of phone maker is getting a heavily proprietary product that spies on them.&#xA;&#xA;For this reason I often use long-winded descriptions like &#34;android-compatible freedom-tech operating systems&#34; to clearly differentiate these from proprietary Android.&#xA;&#xA;Murena&#39;s &#34;e-OS&#34; is built around AOSP, using Freedom Tech to replace all the proprietary Google pieces, in a similar way to other android-compatibles such as LineageOS (a minimal android-compatible base OS) and LineageOS-for-MicroG (LineageOS plus F-Droid and some optional google support).&#xA;&#xA;See my Freedom-Respecting Smart Phone post for other Freedom Tech alternatives you might consider.&#xA;&#xA;Choosing a Well Supported Tablet&#xA;&#xA;I bought this tablet after checking it was supported by e-OS and by LineageOS (and therefore also by LineageOS-for-MicroG). &#xA;&#xA;What I didn&#39;t realise until too late is the installation instructions say I should download and run this, that and the other from various “random” (unofficial/unverified) sources — and it turns out those instructions are intended for running on MS Windows. Ugh.&#xA;&#xA;There is a Freedom software alternative for this step: Heimdall. See Odin and Heimdall: Free Your Samsung Android.&#xA;&#xA;I found this part of the procedure to be a deep rabbit-hole and spent a long time getting through it, reading a lot of dead-ends along the way.&#xA;&#xA;For this reason I want to document what works, and also make it easier for others to do it, by attempting to automate this procedure in the Open Android Installer.&#xA;&#xA;As the procedure is similar for many devices so working on the solution for my device should, I hope, also help others.&#xA;&#xA;On Choosing a Well Supported Tablet, if you have limited time and experience for working through a complex installation procedure, then I would advise only choosing a Samsung phone or tablet in the following cases:&#xA;&#xA;if the Open Android Installer or e-OS Easy Installer supports it, or&#xA;if you can get one that is already running a Freedom Software OS.&#xA;&#xA;(Once it is running a Freedom Software OS, it is easier to upgrade or change it from that point.)&#xA;&#xA;Installing&#xA;&#xA;Installing is a challenge. The procedure is fraught with difficulties. Some people report that they &#34;simply&#34; followed the instructions and succeeded within an hour, while many others apparently spent days, encountered problems or gave up.&#xA;&#xA;The starting point is the semi-official instructions published by the likes of LineageOS and e-OS. Note that these are basically the best efforts so far of volunteer groups, and are not necessarily accurate or complete, and far from foolproof.&#xA;&#xA;See:&#xA;&#xA;e-OS install guide and e-OS forum thread&#xA;LineageOS install guide and XDA forum thread (also relevant for LOS-for-microG)&#xA;&#xA;After many hours of trial and research I got LineageOS installed, and some notes taken, several improvements implemented in my local copy of Open Android Installer, and a first couple of blog posts posted about parts of the procedure.&#xA;&#xA;After reaching that stage, it was relatively easy to replace plain LineageOS with LineageOS-for-MicroG (both at version 21).&#xA;&#xA;I also tried replacing it with e-OS (version T equivalent to 20) but that failed:&#xA;&#xA;    Installing update...&#xA;  Comparing TZ version XF.5.1-01015-1 to XF.5.1-638149-3&#xA;  ERROR: This package requires firmware from an Android 12 based stock ROM build. Please upgrade firmware and retry!&#xA;  ERROR:   recovery: Error in /sideload/package.zip (status 1)&#xA;  The tablet was running Samsung Android version 12 before I started. Never mind that for now. I&#39;ll come back to e-OS later.&#xA;&#xA;So, I can claim success on one score: my tablet is now running LineageOS-for-microG.&#xA;&#xA;Oh! You wanted all the details of how I did it and what went wrong? I&#39;m not planning to write that up in that form (it was messy), but rather to work out improvements and write them up. I&#39;ll post them here once I&#39;ve got something.&#xA;&#xA;Making it easier for others to do the same&#xA;&#xA;Taking hours to achieve this feat just for myself does not make me feel good.&#xA;&#xA;I want to make it feasible for people with just a little technical skill to install an alternative operating system. It really should not and need not be so hard.&#xA;&#xA;I can:&#xA;&#xA;improve the installer apps (Open Android Installer, e-OS Easy Installer)&#xA;improve the installation instructions&#xA;&#xA;In particular I want to do things that help whole classes of problems, across multiple devices and multiple operating systems, such as making the installers and instructions more automatic, more consistent, more foolproof, easier to diagnose.&#xA;&#xA;To these ends, I have been keeping notes on what&#39;s missing, and have started making improvements to Open Android Installer.&#xA;&#xA;!-- See: Open Android Installer: Support My Samsung Tablet --&#xA;&#xA;---&#xA;&#xA;#fossGadgets #android #degoogled #lineageOS #eOS&#xA;&#xA;!--more--&#xD;&#xA;----&#xD;&#xA;Follow/Feedback/Contact: RSS feed · Fedi follow this blog: @julian&amp;ZeroWidthSpace;@wrily.foad.me.uk · matrix me · Fedi follow me · email me · julian.foad.me.uk&#xD;&#xA;Donate: via Liberapay&#xD;&#xA;All posts &amp;copy; Julian Foad and licensed CC-BY-ND except quotes, translations, or where stated otherwise&#xD;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>This is about buying a Samsung Android tablet and replacing the privacy-invading proprietary Google and Samsung software with privacy-respecting Freedom Software: “degoogling” for short.</p>

<p>Why? In “The Problem” section below, we take a look back at how much we&#39;re giving up when we accept Google&#39;s and Samsung&#39;s terms.</p>

<p>I would like ordinary people, with a little technical skill, to be able to do this. The process unfortunately is currently far too difficult, especially so on Samsung devices.</p>

<p>My goals:</p>
<ul><li>Install a privacy-preserving freedom-software operating system on my tablet</li>
<li>Make it easier for others to do the same
</li></ul>

<p>The tablet I bought:</p>
<ul><li>Name: <code>Samsung Galaxy Tab A7 10.4 2020 (Wi-Fi)</code></li>
<li>Model: <code>SM-T500</code></li>
<li>Device code: <code>gta4lwifi</code></li></ul>

<p>Yes, it&#39;s a few years old already. One of the benefits of Freedom Software is the community at large has the option to maintain up-to-date software on older devices, for as long as anyone considers it worth the effort. This is in contrast with the original maker&#39;s vested interest in stopping updates of their proprietary software after a small number of years. A nod to the right-to-repair and sustainability movements.</p>

<h2 id="the-problem" id="the-problem">The Problem</h2>

<p>Have you bought a tablet or phone recently? Perhaps even a Samsung?</p>

<p><strong>IF</strong> We are buying a new or second-hand tablet,</p>

<p><strong>THEN</strong> We might look at a Samsung Android device. They do make nice hardware!</p>

<p><strong>BUT</strong> Oh! The set-up screens! — Screen after screen of, Yes, I agree to let Them scan my house for other devices and report back anything they find... Yes, I agree to let Them install or change or delete anything on “my” device... Yes, I agree to let Them scan all my contacts and data so they can make me feel happy by feeding it back to me in different ways, no, wait, they mean mining it for profit and trapping me in their systems. Yes, Agree To All because that&#39;s the easy option (and notice there&#39;s no “Agree to None” option).</p>

<p><strong>Aaargh! No way, not me. Unfriendly system, Be Gone!</strong></p>

<p><strong>THEREFORE</strong> We want to turn it into a <a href="https://wrily.foad.me.uk/freedom-respecting-smart-phone-want-get-have">Freedom-Respecting Smart Phone</a> or Tablet by “flashing” a Freedom Software operating system onto the device.</p>

<h2 id="the-new-software" id="the-new-software">The New Software</h2>

<p>I want to install an android-compatible, privacy-friendly, Freedom-Tech operating system. Nowadays I favour <a href="https://e.foundation/e-os/">e-OS by Murena</a>. e-OS is near main-stream user-friendly, with a nice blend of privacy by default along with a choice of optional (privacy-invading) google support for those that want it. e-OS is available on a wide range of phone hardware from cheap to premium, and you can either buy it or self-install it. If you&#39;re not wanting to develop tech skills in this area, buy it pre-installed.</p>

<h3 id="android-compatible-freedom-tech-operating-systems" id="android-compatible-freedom-tech-operating-systems">Android-compatible Freedom Tech Operating Systems</h3>

<p>Android as most people know it is a proprietary product, which contains inside it some open-source software (including some of Linux), leading to eternal confusion about whether “it” itself is open-source. No. Only the people who go looking for it get an open-source system built around the Android Open Source Project (AOSP). (That&#39;s us, yay!) Everyone who buys an Android device from the usual sort of phone maker is getting a heavily proprietary product that spies on them.</p>

<p>For this reason I often use long-winded descriptions like “android-compatible freedom-tech operating systems” to clearly differentiate these from proprietary Android.</p>

<p>Murena&#39;s “e-OS” is built around AOSP, using Freedom Tech to replace all the proprietary Google pieces, in a similar way to other android-compatibles such as <a href="https://wiki.lineageos.org/">LineageOS</a> (a minimal android-compatible base OS) and <a href="https://lineage.microg.org/">LineageOS-for-MicroG</a> (LineageOS plus F-Droid and some optional google support).</p>

<p>See my <a href="https://wrily.foad.me.uk/freedom-respecting-smart-phone-want-get-have">Freedom-Respecting Smart Phone</a> post for other Freedom Tech alternatives you might consider.</p>

<h2 id="choosing-a-well-supported-tablet" id="choosing-a-well-supported-tablet">Choosing a Well Supported Tablet</h2>

<p>I bought this tablet after checking it was supported <a href="https://doc.e.foundation/devices">by e-OS</a> and <a href="https://wiki.lineageos.org/devices/">by LineageOS</a> (and therefore also by LineageOS-for-MicroG).</p>

<p>What I didn&#39;t realise until too late is the installation instructions say I should download and run this, that and the other from various “random” (unofficial/unverified) sources — and it turns out those instructions are intended for running on MS Windows. Ugh.</p>

<p>There is a Freedom software alternative for this step: Heimdall. See <a href="https://wrily.foad.me.uk/odin-and-heimdall-free-your-samsung-android">Odin and Heimdall: Free Your Samsung Android</a>.</p>

<p>I found this part of the procedure to be a deep rabbit-hole and spent a long time getting through it, reading a lot of dead-ends along the way.</p>

<p>For this reason I want to document what works, and also make it easier for others to do it, by attempting to automate this procedure in the Open Android Installer.</p>

<p>As the procedure is similar for many devices so working on the solution for my device should, I hope, also help others.</p>

<p>On Choosing a Well Supported Tablet, if you have limited time and experience for working through a complex installation procedure, then I would advise only choosing a Samsung phone or tablet in the following cases:</p>
<ul><li>if the <a href="https://openandroidinstaller.org/">Open Android Installer</a> or <a href="https://doc.e.foundation/easy-installer">e-OS Easy Installer</a> supports it, or</li>
<li>if you can get one that is already running a Freedom Software OS.</li></ul>

<p>(Once it is running a Freedom Software OS, it is easier to upgrade or change it from that point.)</p>

<h2 id="installing" id="installing">Installing</h2>

<p>Installing is a challenge. The procedure is fraught with difficulties. Some people report that they “simply” followed the instructions and succeeded within an hour, while many others apparently spent days, encountered problems or gave up.</p>

<p>The starting point is the semi-official instructions published by the likes of LineageOS and e-OS. Note that these are basically the best efforts so far of volunteer groups, and are not necessarily accurate or complete, and far from foolproof.</p>

<p>See:</p>
<ul><li><a href="https://doc.e.foundation/devices/gta4lwifi/install">e-OS install guide</a> and <a href="https://community.e.foundation/t/samsung-galaxy-tab-a7-10-4-2020-wi-fi-gta4lwifi-documentation-suggestions/56048">e-OS forum thread</a></li>
<li><a href="https://wiki.lineageos.org/devices/gta4lwifi/install/">LineageOS install guide</a> and <a href="https://xdaforums.com/t/official-sm-t505-sm-t505n-sm-t505c-sm-t507-gta4l-sm-t500-gta4lwifi-lineageos-21-for-galaxy-tab-a7-2020-lte-wifi-version.4576699/">XDA forum thread</a> (also relevant for LOS-for-microG)</li></ul>

<p>After many hours of trial and research I got LineageOS installed, and some notes taken, several improvements implemented in my local copy of Open Android Installer, and a first couple of blog <a href="https://wrily.foad.me.uk/troubleshooting-heimdall-fails-at-initialising-protocol">posts</a> <a href="https://wrily.foad.me.uk/odin-and-heimdall-free-your-samsung-android">posted</a> about parts of the procedure.</p>

<p>After reaching that stage, it was relatively easy to replace plain LineageOS with LineageOS-for-MicroG (both at version 21).</p>

<p>I also tried replacing it with e-OS (version T equivalent to 20) but that failed:</p>

<blockquote><pre><code>Installing update...
Comparing TZ version XF.5.1-01015-1 to XF.5.1-638149-3
ERROR: This package requires firmware from an Android 12 based stock ROM build. Please upgrade firmware and retry!
ERROR:   recovery: Error in /sideload/package.zip (status 1)
</code></pre></blockquote>

<p>The tablet was running Samsung Android version 12 before I started. Never mind that for now. I&#39;ll come back to e-OS later.</p>

<p>So, I can claim success on one score: my tablet is now running LineageOS-for-microG.</p>

<p>Oh! You wanted all the details of how I did it and what went wrong? I&#39;m not planning to write that up in that form (it was messy), but rather to work out improvements and write them up. I&#39;ll post them here once I&#39;ve got something.</p>

<h2 id="making-it-easier-for-others-to-do-the-same" id="making-it-easier-for-others-to-do-the-same">Making it easier for others to do the same</h2>

<p>Taking hours to achieve this feat just for myself does not make me feel good.</p>

<p>I want to make it feasible for people with just a little technical skill to install an alternative operating system. It really should not and need not be so hard.</p>

<p>I can:</p>
<ul><li>improve the installer apps (Open Android Installer, e-OS Easy Installer)</li>
<li>improve the installation instructions</li></ul>

<p>In particular I want to do things that help whole classes of problems, across multiple devices and multiple operating systems, such as making the installers and instructions more automatic, more consistent, more foolproof, easier to diagnose.</p>

<p>To these ends, I have been keeping notes on what&#39;s missing, and have started making improvements to Open Android Installer.</p>



<hr>

<p><a href="https://wrily.foad.me.uk/tag:fossGadgets" class="hashtag"><span>#</span><span class="p-category">fossGadgets</span></a> <a href="https://wrily.foad.me.uk/tag:android" class="hashtag"><span>#</span><span class="p-category">android</span></a> <a href="https://wrily.foad.me.uk/tag:degoogled" class="hashtag"><span>#</span><span class="p-category">degoogled</span></a> <a href="https://wrily.foad.me.uk/tag:lineageOS" class="hashtag"><span>#</span><span class="p-category">lineageOS</span></a> <a href="https://wrily.foad.me.uk/tag:eOS" class="hashtag"><span>#</span><span class="p-category">eOS</span></a></p>



<hr>

<p><em>Follow/Feedback/Contact:</em> <a href="https://wrily.foad.me.uk/feed/"><em>RSS feed</em></a> · <em>Fedi follow this blog: @julian​@wrily.foad.me.uk</em> · <a href="https://matrix.to/#/@julian:foad.me.uk" title="matrix Julian"><em>matrix me</em></a> · <a href="https://fed.foad.me.uk/%40julian%40fed.foad.me.uk" title="follow Julian"><em>Fedi follow me</em></a> · <a href="mailto:julian@foad.me.uk?subject=Wrily" title="email Julian"><em>email me</em></a> · <a href="https://julian.foad.me.uk/"><em>julian.foad.me.uk</em></a>
<em>Donate:</em> <a href="https://liberapay.com/julianfoad" title="Donate to Julian using Liberapay"><em>via Liberapay</em></a>
<em>All posts © Julian Foad and licensed <a href="https://creativecommons.org/licenses/by-nd/4.0/">CC-BY-ND</a> except quotes, translations, or where stated otherwise</em></p>
]]></content:encoded>
      <guid>https://wrily.foad.me.uk/freedom-respecting-gadget-degoogling-a-samsung-tablet</guid>
      <pubDate>Mon, 20 May 2024 19:00:00 +0000</pubDate>
    </item>
  </channel>
</rss>