Joseph Zikusooka (ZIK)

Linux Systems Engineer specializing in open source software technologies | Very experienced in building and configuring UNIX/Linux systems and servers. Passionate about developing software applications and hardware for the smart home | Currently serving as technologist at Jambula Labs and the project leader at JambulaTV, a smart home automation and entertainment platform - https://jambulatv.com | This blog focuses on the following areas: Linux How-Tos and Tutorials ::: IT Security News ::: Free and Libre Open Source Software ::: Smart Home Software ::: Digital Innovations in East Africa https://mastodon.social/@jzik | https://github.com/zikusooka

Linux

Linux related articles

An Alternative Way to Install Home Assistant Core

Hass-Core-Installer Version 2025.5.1 Released

Official support for installing Home Assistant Core, Supervised, and some other methods will soon end (see announcement). If you still want to run Home Assistant Core on your own hardware, I have good news!

I’ve released a new and improved version of hass-core-installer. This tool makes it easy to install Home Assistant Core on many types of systems, including ARM64 devices like Raspberry Pi 5.

You can try it now by visiting the GitHub page.

Why Use Hass-Core-Installer?

  • Works on Many Systems: Supports most system types, especially ARM64.
  • Works Offline: You can install Home Assistant Core even without an internet connection.
  • Future-Proof: Keeps working even after official support ends.
  • For Power Users: Best for people who already know how to set up Home Assistant.

What’s New in Version 2025.5.1?

  1. Upgrade Home Assistant to the latest version
    Updated Home Assistant Core to the latest version of 2025.5.1
  2. Faster Installs with uv:
    The installer now uses uv, a new and very fast Python package manager. This means Home Assistant installs faster and package problems are easier to fix.
    (Learn more about uv here).
  3. Supports More Python Versions:
    You can now use different versions of Python. By default, it uses Python 3.13.3.
  4. Better Troubleshooting:
    Improved tests and logging help you find and fix problems more easily.

How to Get Started

  1. Go to the hass-core-installer GitHub page.
  2. Follow the instructions to download and use the tool.

If you’re an experienced Home Assistant user and want to keep running it your way, give hass-core-installer a try! Your feedback and suggestions are welcome on GitHub.


Buildroot and GCC 15: Fixes for m4 and Other Packages

This week, I tried using Buildroot on my new Fedora 42 system, which comes with GCC 15. Right away, the build failed when compiling the package host-m4.

After looking into it, I found that GCC 15 has stricter rules that cause some Buildroot packages to break-not just m4, but also others like gmp. This means if you are using Buildroot on a Linux system with GCC 15, you might run into similar problems.

What to do?

There are patches available to fix these issues, including one I submitted for m4. You can find them here:
https://lists.buildroot.org/pipermail/buildroot/2025-April/777274.html

What’s next?

Hopefully, these problems will be fixed in the official Buildroot updates soon. Until then, applying these patches will help you build successfully with GCC 15.

If you use Buildroot with the latest Linux and GCC versions, keep an eye out for updates and patches like these!

Update [May 5, 2025]:

This patch has now been committed upstream to buildroot.

It will be applied as a workaround only when host gcc 15 is detected.

For more details, please check the full commit here:

https://gitlab.com/buildroot.org/buildroot/-/commit/7a07a9d155b8f601d68f07ee0ed1dc8d48907644

Releasing Jambula OS Linux – version 2025.3.0

🚀 I have uploaded the latest image of Jambula OS Linux version 2025.3.0 (Great Seasons)! 💻✨
While this is mostly a maintenance release, I’ve snuck in some exciting features like:

✅ Remote connections just got easier with Tailscale support! 🌐
✅ Audio calendar alerts are now possible with Radicale 📅🔔
✅ Nginx web/proxy server support 🖥️
✅ Geolocation tool to help you pinpoint device location 📍

For more information about Jambula OS Linux, including instructions on how to download and install it, please visit:
https://github.com/zikusooka/Jambula-OS

Jambula OS Linux – Version 2025.1.0 Released

I have just compiled and released a new image for Jambula OS Linux version 2025.1.0! This exciting update features a range of innovative enhancements, including:

🌟 Seamless integration with the latest Home Assistant smart home software

📅 Radicale, the lightweight and powerful CalDAV/CardDAV server for all calendaring needs

🎵 A local music server that supports audio announcements and alerts

🕰️ A talking clock feature that announces the time at hourly intervals

🌦️ Periodic weather updates delivered through voice alerts tailored to your location

📷 MQTT-based triggers activated by motion detection from the built-in camera server

For more information about Jambula OS Linux, including instructions on how to download and install it, please visit:

https://github.com/zikusooka/Jambula-OS

Hass Core Installer, a new Home Assistant Installer and upgrade tool for Linux

I’m excited to announce that I have uploaded a new tool called HASS Core Installer. As you have guested, its a handy tool that makes it very easy to install, upgrade, and uninstall Home Assistant Core on Linux. So weather you are a beginner, intermediate, or advanced Home Assistant user, this tool is just what you need if any of the official and recommended methods are not sufficient for your use case.

I initially developed this tool for use on Jambula OS, a custom tailored Linux operating system designed for SoC devices such as the Raspberry Pi. However, you can use it on any Linux distribution such as Ubuntu, Fedora, OpenSUSE, Ubuntu, Debian etc.

HASS Core Installer also works off-line allowing for local installations and upgrades of Home Assistant in scenarios where there’s no access to the Internet.

To get started or contribute to this project, check out the HASS Core Installer repository on my Github!

Jambula OS Linux now offers support for Home Assistant

🚀✨ Exciting news for smart home enthusiasts! I have added support for Home Assistant Core installs & upgrades to Jambula OS (starting with version 2024.10.0) 🎉

⚙️ Jambula OS is a custom Linux operating system 🐧 designed specifically for SoC devices like the Raspberry Pi 5

⬇️ You can download it here: https://github.com/zikusooka/Jambula-OS/

🏡 Upgrade today and kickstart your journey to creating a private, offline smart home 💡hub!

Linux, Python, Security, and Open Source Software TIPS

  • Happy to be part of the openSUSE community as we celebrate 20 incredible years of freedom, stability, and fun at #oSC25 in beautiful Nuremberg, Germany 🐧🎉 @opensuse It's been inspiring to connect with fellow Linux enthusiasts, contributors, and innovators while reflecting on two decades of open source excellence. Here's to making the next 20 years even more exciting!#openSUSE #oSC25 #openSUSE2025 #Nuremberg #FOSS #20YearsOfopenSUSE #opensource
  • It's Day 1 of OpenSUSE Conference 2025! Really excited about the lineup of speakers. Join me later this afternoon, as I talk about free and open source software empowerment, sharing my very own experiences as not only a user/developer but also an advocate of #FOSS on the African continent. Live streaming at: https://streaming.media.ccc.de/osc25@opensuse @SUSE #oSC25 #openSUSE #opensource
  • I am currently in transit through Dubai, en route to the OpenSUSE Conference 2025 (#oSC25). I’m excited to be speaking about the transformative power of open source software like @OpenSUSE and its profound impact on empowering underserved communities.Join me this Wednesday at 10:45 CEST as I share my firsthand experiences from rural Africa and explore how open source is driving real change on the ground.https://events.opensuse.org/conferences/oSC25/program/proposals/4989
  • I'm excited to announce that I will be speaking at @opensuse Conference 2025 this week!I will be giving 2 talks – one close to my heart & another diving deep into technical content. It's a huge honor to share my work with the open source community.If you would like to support me in getting there, it is not too late to contribute to my travel fund:https://www.gofundme.com/f/fund-ziks-journey-to-global-tech-conferencesThank you for your supportTalks:https://events.opensuse.org/conferences/oSC25/program/proposals/4989https://events.opensuse.org/conferences/oSC25/program/proposals/4988#oSC25 #OpenSUSE #Opensource
  • Announcing Jambula OS Linux Version 2025.6.0 – Now Available!I'm excited to share that the latest image of Jambula OS Linux – Version 2025.6.0 is officially live!This small, maintenance-focused update wraps up important improvements as I look ahead to a week full of fresh open source ideas, conversations, and community engagement.Why Jambula OS?Jambula OS is a lightweight, flexible Linux distribution optimized shttps://joseph.zikusooka.com/?p=2731#Tips #OpenSource
  • 💡 It's conference 🎤 season! Impress your audience with a slick QR code using these easy commands on Linux✅ Add your content to a text file:printf " Name: Zik Joseph\n Blog: https://zikusooka.com \n" > my_contacts.txt✅ Convert text file (and contents) into QR code image:qrencode -o zik.png -r my_contacts.txtThats all! Add zik.png to your slides. Easy, classy.#ZikTIPS #TechTips #LinuxTips #Conference #FOSS #OpenSource
  • Wishing everyone attending #DevConf_CZ 2025 a great time at the conference! Enjoy every moment. @devconf_cz#DevConf #TechCommunity #SoftwareDevelopment #DeveloperConference #Agile #Cloud #DevOps
  • Wishing everyone attending #DevConf_CZ 2025 a great time at the conference! Enjoy every moment. @devconf_cz#DevConf #TechCommunity #SoftwareDevelopment #DeveloperConference #Agile #Cloud #DevOps
  • Wishing everyone a great time at Flock to Fedora in Prague. The talks are already very interesting!Thanks to @fedora and everyone making this happen.#Flock2025 #flocktofedora #foss #opensource
  • Tech conference season is here & for the #FOSS community, Europe is the place to be with amazing events.I'm excited to announce that I will be speaking at #openSUSEConf 2025. To make the trip from Africa & attend in person, I need your support to cover travel costs. Please consider donating:https://www.gofundme.com/f/fund-ziks-journey-to-global-tech-conferencesEvery bit helps – Thank you so much!@opensuse @SUSE @ErikGustafson @ddemaio#OpenSource #OpenSUSE #GoFundMe #SupportOpenSource #Fundraising #Fundraiser #FediSupport #travelgrants
  • Hass-Core-Installer: Keeping Home Assistant Core AliveIt is finally happening – Home Assistant Core, along with other legacy installation methods and 32-bit system support, is officially being deprecated. The Home Assistant team announced this major shift in their recent blog post, signaling the end of an era for many longtime users who have relied on Core and Supervised installs for years. Starting with thhttps://joseph.zikusooka.com/?p=2689#Apps #OpenSource
  • If you develop projects involving Bluetooth or PipeWire on Linux, be sure to watch an excellent presentation recently given by @gkiagia at Embedded Recipes titled "PipeWire and Bluetooth: the road to LE Audio" @embeddedrecipes@pipewire @collaborahttps://www.youtube.com/live/U5L8XHkP-lI#embeddedrecipes #Bluetooth #audio #Pipewire #Embedded #Opensource
  • 💡 Use the following command line to generate a list of security advisories on Fedora and RedHat Linux based systems #ZikTIPs #TechTips #Fedora #Redhat #Security #Opensource@fedora @redhat sudo dnf advisory list
  • With recent discussions around dropping official support for some #HomeAssistant install methods (Core, Supervised, etc.) https://community.home-assistant.io/t/feedback-requested-deprecating-core-supervised-i386-armhf-armv7/880968/63I'm excited to share an updated version of Hass-Core-Installer – a flexible & customizable tool I wrote for power users who want full control when installing Home Assistant on several platforms, including ARM64! #smarthome @homeassistantDownload:https://github.com/zikusooka/hass-core-installerRead more about why I wrote this script & what's new:https://joseph.zikusooka.com/?p=2658
  • With recent discussions around dropping official support for some Home Assistant install methods (Core, Supervised, etc.):https://community.home-assistant.io/t/feedback-requested-deprecating-core-supervised-i386-armhf-armv7/880968/63I'm excited to share an updated version of Hass-Core-Installer – a flexible and customizable tool I wrote for power users who want full control when installing Home Assistant Core on several platforms, including ARM64.
  • If you’re like me and enjoy watching streams or listening to multiple audio sources, check out my newly updated @pipewire based script! It makes muting or unmuting sound from different sources really easy.Find it here:https://github.com/zikusooka/toggle-pw-volumesContext: https://joseph.zikusooka.com/?p=2637#ZikTIPs #PipeWire #Multimedia
  • Great panel discussion underway about Flatpak and the future of Linux desktops!Catch it live: https://www.youtube.com/watch?v=VDwwPMm9mgQ@LAS @gnome @linuxappsummit #las2025 #LinuxAppSummit #opensource
  • Cheat sheet: How to easily manage your packages using the Zypper command line tool on #OpenSUSE @opensuse #techtips #ZikTIPS https://en.opensuse.org/images/3/30/Zypper-cheat-sheet-2.pdf
  • Heads up for anyone planning to set up a Buildroot environment on the newly released Fedora 42 @fedora I have just submitted a patch for the m4 package to address compatibility with GCC 15. If you're working with Buildroot on this release, you may want to review the patch details here:https://lists.buildroot.org/pipermail/buildroot/2025-April/777274.html#Buildroot #Fedora42 #Fedora
  • This past weekend, I visited Arua, a vibrant, diverse city in northwest Uganda bordering DR Congo & S. SudanI had the privilege of discussing the exciting world of Free and Open Source Software (FOSS) with university & pre-college studentsIt was inspiring to share with them how FOSS is revolutionizing tech by offering cost savings, flexibility & collaboration opportunitiesI can't wait to see the impact these students will make by embracing the potential of open source.#FOSS #opensource

How to install the latest Python 3 version on Linux using sources

Introduction

Python 3.11.0 was officially released on October 24 2022. However, most Linux distributions have not yet upgraded to the latest Python version i.e. Python 3.11.2 (released on February 8 2023). Please visit this page to see the most recent versions.

The jump from versions 3.10.X to 3.11.X brought with it significant changes and improvements to Python code. Among the improvements is that Python is now 10 – 60% faster than before. That’s a big and noticeable speed boost. So beyond the usual reasons for upgrades i.e. security etc, I really wanted this version on my Linux desktop as soon as the final release was made publicly available.

If you are like me and don’t like waiting for your favourite open-source program to be supported on your Linux distribution, here is how to install the latest Python 3 version on Linux using sources.

Before you begin, check the current version on your Linux system:

python  --version

Currently the version of Python on my Linux system is three (3) releases behind. So it is time for me to upgrade to the most recent version.

CAUTION: Due to the many dependencies on the currently installed Python common package, I highly recommend that you do not remove the existing version. Instead, we will install the latest version in an alternate location e.g. /usr/local

Prerequisites

Please ensure that your Linux system has the following packages installed:

On Ubuntu or Debian:

sudo apt-get install build-essential

sudo apt-get install autoconf automake gdb libffi-dev zlib1g-dev libssl-dev libncurses5-dev libgdbm-dev libnss3-dev libreadline-dev libsqlite3-dev

On Fedora or Rocky Linux:

sudo dnf groupinstall “Development Tools”

sudo dnf install openssl-devel libffi-devel bzip2-devel sqlite-devel

* You will also need wget which is generally included by default on most Linux distributions

Visit the Python downloads page for sources to get the direct link to latest Python source package. In this tutorial I will be using the XZ compressed source tarball i.e. Python-3.11.2.tar.xz

Download the latest Python package to a temporary directory:

wget  -c  -P /tmp  https://www.python.org/ftp/python/3.11.2/Python-3.11.2.tar.xz

Unpack the Python 3 tarball:

tar xvf /tmp/Python-3.11.2.tar.xz -C /usr/src

Compile and build Python:

cd  /usr/src/Python-3.11.2

./configure  --prefix=/usr/local  --enable-shared  --enable-optimizations  --with-system-expat  --with-system-ffi

IMPORTANT: Ensure the prefix i.e. ‘/usr/local’ you use is different from that used by your Linux distribution otherwise you will overwrite the default Python 3 installation!

Optional: You can make some of your modules a permanent part of the Python interpreter. To do so, simply modify the file: Modules/Setup.local before running make. To see my my local setup, see the appendix.

sudo  make

TIP: you can add “– j $(getconf _NPROCESSORS_ONLN)” to the make command in order to speed things up i.e. sudo make -j $(getconf _NPROCESSORS_ONLN)

sudo  make  altinstall

Add the following export command to your shell initialization file:

Using Bash shell:

echo  “export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib”  >>  ~/.bashrc

Then source the file for now:

source  ~/.bashrc

To verify if you now have the latest Python 3 (including pip installer) versions:

/usr/local/bin/python3.11 –version

/usr/local/bin/pip3.11 –version

Congratulations! You now have the latest Python 3 version on your Linux system.

NOTE: When your distribution eventually catches up, you can remove this installation by issuing the ‘make uninstall‘ command in the installation directory i.e. /usr/src/Python3.11

Appendix

Here’s my sample ./Modules/Setup.local file:

array -DPy_BUILD_CORE_MODULE arraymodule.c
_contextvars _contextvarsmodule.c
_struct -DPy_BUILD_CORE_MODULE _struct.c
_random _randommodule.c -DPy_BUILD_CORE_MODULE
_elementtree -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI _elementtree.c
_pickle -DPy_BUILD_CORE_MODULE _pickle.c
_datetime _datetimemodule.c
_zoneinfo _zoneinfo.c -DPy_BUILD_CORE_MODULE
_bisect _bisectmodule.c
_asyncio _asynciomodule.c
_json -I$(srcdir)/Include/internal -DPy_BUILD_CORE_BUILTIN _json.c
unicodedata unicodedata.c -DPy_BUILD_CORE_BUILTIN
fcntl fcntlmodule.c
spwd spwdmodule.c
grp grpmodule.c
select selectmodule.c
mmap mmapmodule.c
_csv _csv.c
_socket socketmodule.c
termios termios.c
resource resource.c
_posixsubprocess  -DPy_BUILD_CORE_BUILTIN _posixsubprocess.c
audioop audioop.c
_md5 md5module.c
_sha1 sha1module.c
_sha256 sha256module.c -DPy_BUILD_CORE_BUILTIN
_sha512 sha512module.c -DPy_BUILD_CORE_BUILTIN
_sha3 _sha3/sha3module.c
_blake2 _blake2/blake2module.c _blake2/blake2b_impl.c _blake2/blake2s_impl.c
syslog syslogmodule.c
binascii binascii.c
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
pyexpat expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DXML_POOR_ENTROPY -DUSE_PYEXPAT_CAPI
_multibytecodec cjkcodecs/multibytecodec.c

How to use Linux GNOME terminal like a Pro

For most users work is typically done in a web browser like Firefox or Chrome. (BTW, if you are not using Mozilla’s Firefox, I can not emphasize enough why you should switch to this opensource browser)
For advanced users i.e. IT admins, software developers, most of their time may be spent in a terminal and on Linux most often gnome terminal

Like regular users who prefer to open multiple tabs in a browser, using tabs in a terminal is necessary for an advanced user if they are to be productive. However, it can get pretty tedious and boring having to open up multiple terminal tabs in every time you start your Linux desktop

Using the command line tool gnome-terminal this process can be automated. This tool allows you to open multiple gnome-terminal tabs like a pro i.e. At desktop startup, open several & different tabs each with its own specified directory path or run command. You can even log into a remote system, if you have setup to allow passwordless SSH connections.

Below is a basic example of gnome-terminal command in action

gnome-terminal --maximize --geometry=80x24+200+200 --display=:0 --tab-with-profile=DAY -t Local --working-directory=/projects --tab-with-profile=NIGHT -t Remote -e "ssh -t jambula@REMOTE \"cd /opt; bash\""

I use this in a script which is activated by a custom keyboard shortcut to start my day

Scroll to top