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!
Jambula OS Linux now supports the latest Raspberry Pi 5
I have uploaded the newest image of the Jambula OS Linux which supports the latest Raspberry Pi 5 Model B. You can download the image from : https://github.com/zikusooka/Jambula-OS
Jambula OS, a custom Linux distribution used primarily on embedded and SoC based devices such as the Raspberry Pi.
Linux, Python, Security, and Open Source Software TIPS
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
Why installing open source packages using sources is cool and how to start today
Until you start installing packages on Linux/UNIX systems using sources, you will always be very dependent on your distribution or vendors to stay up to date.
Installing from sources may not be for everyone, but I recommend it for novice and advanced Linux/UNIX users alike, as it offers tremendous benefits:
- Ability to fine tune the package according to your needs
- You almost always end up with a much faster application
- You get the latest security updates immediately
- You learn a whole lot
So how do you install from sources?
- Download the package from URL upstream
The package may be in several forms: PACKAGE.tar.gz, PACKAGE.tar.bz2, PACKAGE.xz, or clone from a github repository i.e. git clone [URL]
- Unpack the package inside your sources directory e.g. /usr/src:
tar zxvf PACKAGE.tar.gz -C /usr/src
tar jxvf PACKAGE.tar.bz2 -C /usr/src
tar xvf PACKAGE.tar.xz -C /usr/src - IMPORTANT: Read the following two files if available: README (or README.md) and INSTALL. I can not stress how important it is to read the above files. The package
maintainer will usually include notes on how to compile and install the package - Change to source directory of the package
cd /usr/src/PACKAGE-VERSION/ - Compile
./configure - Install
make && make install
Thats it! If all went well especially during the make, you should be able to run your package. Sometimes, the configure command will specify that
a dependency is missing. You will need to install it before you proceed. This is why it is important that you read the README and INSTALL files.
How to add a printer in Linux using the command line (CLI)
Managing printers in Linux has become easier lately. With just a few clicks in your GNOME, KDE, UNITY, or other desktop, you could be printing away in just seconds. But what about the command line Interface? Here too, a simple command is all you need, and in a few steps your printer should be setup
Before you start, ensure that the CUPS package is installed on your Linux system and if not, install it using your package manager e.g. For Redhat based systems:
dnf install cups
Alternatively, you may download CUPS and PPD files direct from the CUPS website at: https//www.cups.org/
1. Find the Postscript Printer Description (PPD) file for your printer. Typically installed with the cups package and stored under: /usr/share/cups/model/. Also look under /usr/share/ppd/cupsfilters
2. Run the command lpinfo -l to get a list of available printers and drivers i.e. device-uri
3. Add your printer using the following command:
lpadmin -p “HP-LaserJet-CM3530-1” -D “Human Resources Department” -P /usr/share/ppd/cupsfilters/HP-Color_LaserJet_CM3530_MFP-PDF.ppd -E -v file:///dev/PRINTER_PATH
-v represents the device-uri as seen in step 3. For a detailed explanation of the options, type: man lpadmin