<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Android on Sysadmin Tales</title>
    <link>https://blog.ssb-tech.net/tags/android/</link>
    <description>Recent content in Android on Sysadmin Tales</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 02 Oct 2026 21:39:10 -0400</lastBuildDate>
    <atom:link href="https://blog.ssb-tech.net/tags/android/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>I switched to GrapheneOS</title>
      <link>https://blog.ssb-tech.net/posts/switching-to-grapheneos/</link>
      <pubDate>Sat, 28 Mar 2026 15:41:08 -0400</pubDate>
      <guid>https://blog.ssb-tech.net/posts/switching-to-grapheneos/</guid>
      <description>&lt;h1 id=&#34;i-switched-to-grapheneos&#34;&gt;I switched to GrapheneOS&lt;/h1&gt;&#xA;&lt;p&gt;I recently purchased a &amp;rsquo;new-to-me&amp;rsquo; Pixel 10 Pro to replace my Pixel 8 Pro.&lt;/p&gt;&#xA;&lt;p&gt;There was nothing particularly wrong with the 8, but I&amp;rsquo;d had it for a few years, and my father is in need of a new phone, so it was a good opportunity for me to upgrade.&lt;/p&gt;&#xA;&lt;p&gt;At the same time, I&amp;rsquo;ve also been meaning to check out &lt;a href=&#34;https://grapheneos.org/&#34;&gt;GrapheneOS&lt;/a&gt;, a custom ROM based on AOSP that has a focus on privacy and security.&lt;/p&gt;&#xA;&lt;p&gt;Given Google&amp;rsquo;s recent track record and their initiatives to &lt;a href=&#34;https://developer.android.com/developer-verification&#34;&gt;lock down Android under the pretext of security theater&lt;/a&gt; I figured there had never been a better time to try out GrapheneOS.&lt;/p&gt;&#xA;&lt;p&gt;This post is a record of my experience and of my first impressions.&lt;/p&gt;&#xA;&lt;h2 id=&#34;installation&#34;&gt;Installation&lt;/h2&gt;&#xA;&lt;p&gt;I used the official &lt;a href=&#34;https://grapheneos.org/install/web&#34;&gt;WebUSB installer&lt;/a&gt; method to install GrapheneOS.&lt;/p&gt;&#xA;&lt;p&gt;It was extremely painless, especially compared with my experience installing CyanogenMod in the old days.&lt;/p&gt;&#xA;&lt;p&gt;All I needed to do was install one Android developer package on Fedora, open up Chromium and follow the prompts.&lt;/p&gt;&#xA;&lt;p&gt;I was up and running within 15 minutes, which is very impressive.&lt;/p&gt;&#xA;&lt;h2 id=&#34;first-impressions&#34;&gt;First Impressions&lt;/h2&gt;&#xA;&lt;p&gt;Landing on the home screen at first launch is somewhat intimidating.&lt;/p&gt;&#xA;&lt;p&gt;The default GrapheneOS home screen is &lt;em&gt;very&lt;/em&gt; utilitarian and barebones.&lt;/p&gt;&#xA;&lt;p&gt;However, I was able to install &lt;a href=&#34;https://obtainium.imranr.dev/&#34;&gt;Obtanium&lt;/a&gt; without much trouble and get most of the apps I wanted installed.&lt;/p&gt;&#xA;&lt;p&gt;However, I do have some need for Google Play and Play Services, so I installed those too. GrapheneOS makes it painless to do so by including a mirror of the official APK files in their own App Store. I know this compromises the privacy of the device somewhat, but as always one must take into account their own risk profile and ride the line between convenience and security.&lt;/p&gt;&#xA;&lt;p&gt;I do enjoy that GrapheneOS gives the user far more control over what privileges every app on the device has, even for Google Play Services.&lt;/p&gt;&#xA;&lt;p&gt;So far I haven&amp;rsquo;t had too many issues.&lt;/p&gt;&#xA;&lt;p&gt;The only problems I&amp;rsquo;ve run into have been the Reddit client that I prefer to use, and of course Google Wallet.&lt;/p&gt;&#xA;&lt;p&gt;I had occasionally used Google Wallet to do NFC payments, but I knew that this was likely to not work on a custom ROM.&lt;/p&gt;&#xA;&lt;p&gt;The reddit client I was using was &lt;a href=&#34;https://play.google.com/store/apps/details?id=reddit.news&amp;amp;hl=en_US&#34;&gt;Relay for reddit&lt;/a&gt;. For some reason the Google Play Store showed that the app was not compatible. I found a way to get the application to install via the &lt;a href=&#34;https://store.auroraoss.com/&#34;&gt;Aurora Store&lt;/a&gt; and the app launched just fine - however I was unable to log in at all.&lt;/p&gt;&#xA;&lt;p&gt;The login webview came up as normal, but no matter what I did, it claimed that my password was incorrect, despite the same one perfectly fine in both the website and Reddit&amp;rsquo;s own official app.&lt;/p&gt;&#xA;&lt;p&gt;I can only assume this has something to do with the Play integrity API.&lt;/p&gt;&#xA;&lt;p&gt;Frankly I don&amp;rsquo;t use reddit much anymore, so I simply uninstalled both apps and will use the mobile website going forward.&lt;/p&gt;&#xA;&lt;h2 id=&#34;final-thoughts&#34;&gt;Final Thoughts&lt;/h2&gt;&#xA;&lt;p&gt;I may come back and update this post later, or publish a follow up.&lt;/p&gt;&#xA;&lt;p&gt;So far I am very impressed with what I&amp;rsquo;ve seen.&lt;/p&gt;&#xA;&lt;p&gt;As far Android as a whole - I very much wish that there were more open-source alternatives.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m aware of projects like &lt;a href=&#34;https://postmarketos.org/&#34;&gt;PostmarketOS&lt;/a&gt; and &lt;a href=&#34;https://sailfishos.org/&#34;&gt;SailfishOS&lt;/a&gt;, but the issue is two things - device compatibility, and application support.&lt;/p&gt;&#xA;&lt;p&gt;Everyone should support the &lt;a href=&#34;https://keepandroidopen.org/&#34;&gt;Keep Android Open&lt;/a&gt; initiative!&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>Replacing Pocket Casts</title>
      <link>https://blog.ssb-tech.net/posts/replacing-pocket-casts/</link>
      <pubDate>Mon, 05 May 2025 08:53:26 -0400</pubDate>
      <guid>https://blog.ssb-tech.net/posts/replacing-pocket-casts/</guid>
      <description>&lt;h1 id=&#34;replacing-pocket-casts&#34;&gt;Replacing Pocket Casts&lt;/h1&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve been a user of &lt;a href=&#34;https://pocketcasts.com&#34;&gt;Pocket Casts&lt;/a&gt; for a long time now. There&amp;rsquo;s nothing wrong with it, and in fact it&amp;rsquo;s been a fantastic experience the entire time I&amp;rsquo;ve used it.&lt;/p&gt;&#xA;&lt;p&gt;However, I&amp;rsquo;ve been trying to move whatever I can to open-source, self-hosted projects, and this was one that I&amp;rsquo;d wanted to take a crack at for quite a while.&lt;/p&gt;&#xA;&lt;p&gt;Here were my requirements for a podcast manager:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Self-hosted and open-source.&lt;/li&gt;&#xA;&lt;li&gt;The ability to listen on either mobile or desktop, and pick up from where I left off in either location.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;I went through a few iterations of this, and I&amp;rsquo;m still not quite happy with the result, but let me go over the projects that I tried out, and the issues I ran into with them.&lt;/p&gt;&#xA;&lt;h2 id=&#34;pinepods&#34;&gt;PinePods&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/madeofpendletonwool/PinePods&#34;&gt;PinePods&lt;/a&gt; is a newer project, built mostly with Rust and Python.&lt;/p&gt;&#xA;&lt;p&gt;I tried this one first because it had a pretty web interface, a companion Android app, and support for sync through Gpodder compatible servers like &lt;a href=&#34;https://github.com/kd2org/opodsync&#34;&gt;Opodsync&lt;/a&gt; or the &lt;a href=&#34;https://apps.nextcloud.com/apps/gpoddersync&#34;&gt;NextCloud GpodderSync app.&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Installation was fairly straightforward, and I chose to integrate it with my existing Authentik instance for OIDC sign on.&lt;/p&gt;&#xA;&lt;p&gt;All of that worked great - until I installed the mobile app and realized that OIDC is not yet supported. I assume that this is the reason that I was not seeing my progress synced between the mobile app and the web interface.&lt;/p&gt;&#xA;&lt;p&gt;Next I tried using &lt;a href=&#34;https://antennapod.org/&#34;&gt;AntennaPod&lt;/a&gt; for the mobile app, with GpodderSync on NextCloud as the backend.&lt;/p&gt;&#xA;&lt;p&gt;Somehow enabling GpodderSync in PinePods wiped out all of my existing podcast subscriptions. Thankfully I had them all backed up in an OPML file still, so it was just a matter of re-importing the file again.&lt;/p&gt;&#xA;&lt;p&gt;However, none of the podcasts I had added to PinePods ever showed up in GpodderSync on NextCloud. However, adding a podcast via AntennaPod worked fine.&lt;/p&gt;&#xA;&lt;p&gt;Supposedly there is a large update to sync coming to PinePods in the next few days, but I chose to move on and try out something else.&lt;/p&gt;&#xA;&lt;h2 id=&#34;podfetch&#34;&gt;PodFetch&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/SamTV12345/PodFetch&#34;&gt;PodFetch&lt;/a&gt; is another podcast manager. This one comes with its own built-in Gpodder sync mechanism that just needs to be enabled via an environment variable.&lt;/p&gt;&#xA;&lt;p&gt;The good:&lt;/p&gt;&#xA;&lt;p&gt;I actually think PodFetch has the nicer UI of the two.&lt;/p&gt;&#xA;&lt;p&gt;The bad:&lt;/p&gt;&#xA;&lt;p&gt;I found the documentation for this project severely lacking and often found myself digging through GitHub issues to try and figure out how to configure certain things correctly.&lt;/p&gt;&#xA;&lt;p&gt;Once again, OIDC is essentially a non-starter unless you&amp;rsquo;re not planning on ever using a mobile app.&lt;/p&gt;&#xA;&lt;p&gt;Also, make sure that the user you try to connect AntennaPod with is &lt;em&gt;not&lt;/em&gt; an administrator, or it will just fail. I had to enable additional logging in PodFetch to figure that out.&lt;/p&gt;&#xA;&lt;p&gt;Once I finally figured out that headache, I discovered that sync is essentially broken. Listening to a podcast on either end and then forcing a full sync in AntennaPod does not change either side. I&amp;rsquo;m not sure what&amp;rsquo;s going on here, but this was the nail in the coffin. I was no longer interested in spending more time trying to get this working.&lt;/p&gt;&#xA;&lt;h2 id=&#34;nextpod&#34;&gt;NextPod&lt;/h2&gt;&#xA;&lt;p&gt;Next, I tried out &lt;a href=&#34;https://apps.nextcloud.com/apps/nextpod&#34;&gt;NextPod&lt;/a&gt;. This is the companion app to GpodderSync.&lt;/p&gt;&#xA;&lt;p&gt;It is extremely basic and missing what I&amp;rsquo;d consider basic features like skip forward and back buttons, but at the very least - the synchronization of listen state &lt;em&gt;works reliably&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;For the moment I&amp;rsquo;ve settled on this setup:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;GpodderSync for the backend, which keeps track of my subscriptions and listen state&lt;/li&gt;&#xA;&lt;li&gt;NextPod for listening on desktop&lt;/li&gt;&#xA;&lt;li&gt;AntennaPod for listening on mobile&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;It does essentially everything that was on my laundry list, but I&amp;rsquo;m not particularly happy with NextPod as my desktop solution. It works, but it lacks even the most basic management features, and the playback UI is, as I said, barebones.&lt;/p&gt;&#xA;&lt;p&gt;If anyone else has any suggestions I&amp;rsquo;d like to hear about them. I&amp;rsquo;ll check out the updated PinePods when the sync updates drops, but for the moment I&amp;rsquo;ll leave this as it is.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; I was just made aware of &lt;a href=&#34;https://apps.nextcloud.com/apps/repod&#34;&gt;RePod&lt;/a&gt; which looks &lt;em&gt;much&lt;/em&gt; more functional than NextPod.&lt;/p&gt;&#xA;</description>
    </item>
  </channel>
</rss>
