Monday, 22 September 2025

Talos / Omni DeskPi home lab with a mixture of Raspberry Pi compute modules 4 and 5

Introduction

This is a story all about how... I got a modern Talos K8S cluster working and managed by Omni.

See also: related Reddit post

Short version: I tried to get it working using my old Turing Pi 1.1 host board and v3 compute modules. Nope. Buy new kit. Go on - treat yourself.

DeskPi Super6c notes

Read this for a step-by-step guide to creating your own HomeLab.  Missing details?  Ping me on Linked In and ask for clarification.

Preparation 

Hardware

Follow these instructions and you will have the same set-up as me.  Deviate and you're on your own!

You will need:

  • DeskPi Super6C
  • 6x 128GB SD cards
  • DeskPi Super6C Case
  • A mixture of whatever Raspberry Pi compute 4 and 5 modules you can obtain
  • A data-capable USB-C to Micro USB cable
  • A Windows 11 PC
  • Good eyesight (for placing jumpers, reading PIN labels etc.) 

Software

You will need:

  • Raspberry Pi Imager
  • RPI Boot
    • As documented here, download RpiBoot for Windows from here.
  • Omni
    • SaaS option 
      • My company has its own
      • Anyone can sign up for a 2-week free trial of cloud-hosted here.
      • It's $10 a month for an online hobby account - well worth it! 
    • On prem option 
      • It's free for home use or for business in pre-production environments 
      • Instructions here (see video)
  • OmniCtl
    • Download from here.
    • Windows users will probably want the file: omnictl-windows-amd64.exe
    • It's NOT an installer - it's just a single file binary.  Don't try to install it! 
    • Create a folder C:\Program Files\Omni\
    • Place the downloaded file in there
    • Add a Path to your environment variables 
    • You will need to open a new console AFTER you've added the environment variable
    • Test that it's working by typing omnictl.  You should get help back.
    • Proper instructions for installation here. You may need to actually read this!
    • Download your omniconfig.yaml file from Omni
    • Create a folder C:\Users\<YOUR USERNAME>\.talos\omni\
      • Old instructions tell you to put it somewhere else. Don't, but Omnictl will just copy it to this location if you do. 
    • Rename the omniconfig.yaml file to just config (without an extension) and move it to that folder
    • Once installed, verify with:
      • omnictl config contexts
      • You should get back  
      • CURRENT   NAME      URL
        *         default   https://YOURSUBDOMAIN.omni.siderolabs.io
  • For Compute Module 5's:
    • Raw image can be downloaded directly from here.
    • It's a .raw.zst file.  You don't need to decompress it.  Raspberry Pi Imager will do that for you.
    • Main project: https://github.com/talos-rpi5/talos-builder
    • Kudos to the wonderful people on the "talos-rpi5" project
  • For Compute Module 4's:

Set-up

Hardware 

  1. Don't install the motherboard into the case yet!
  2. Install all SD Cards in the slots on the UNDERSIDE of the Super6C 
  3. Install your Raspberry Pi Compute Modules, starting with slot 1
    1. Carefully and gently snap them into position 
    2. Apply the thermal pads to ALL chips
    3. DeskPi have provided good pads
    4. Use the DeskPi-provided heatsinks
    5. Don't over-tighten the screws - really, no need.  Finger tight is fine.
  4. Optional: install the WiFi aerials
    1. If you've bought Wifi modules, you MAY want to install these
    2. You can do this AFTER the heatsinks are in place. 
    3. Personally, I wouldn't bother.  There is an onboard 1Gbps switch and you're building a cluster here.  Don't make life complicated for yourself. Plus, if you have fat fingers like me, it's almost impossible to do without damaging either the cable or the CM wifi port
  5. Identify the micro USB ports
    1. There is a micro USB slot on the motherboard at the BACK (between the HDMI and USB ports).  This is the Micro USB for slot 1
    2. All others are on the motherboard next to their slots
    3. For these instructions, I will refer to "The micro USB".  I will mean "the one relating to the compute module you're currently working with 
  6. Connect your USB cable to the micro USB
    1. Start with Slot 1.  This is because that is the only slot with HDMI connectivity.  You are going to want to view that for the first one. Once you have the first one done, you may be able to do the rest without a monitor
  7. Screw down the motherboard into the case
  8. Plug up the connectors:
    1. Front panel USBs
      1. This is the long black cable.
      2. It goes into the corresponding headers (groups of pins) at the rear of the board between the board USB ports and the cluster of 6 LEDS
      3. This can only go in one way round as one of the pins is blocked off
      4. Poor humor warning: Because it's USB, try it one way round, then the other, then finally the first way you tried.
  9. Set the EMMC_DISABLE / nRPIBOOT jumper
    1. This is to prevent the CM from booting and instead permit the storage to be connected to the PC. 
    2. This is a very small piece of black plastic with metal inside
    3. DeskPI provide you with one, connected to two GND pins (which is the same as it not being present)
    4. It slides off quite easily if you have thin fingers.  I don't. Grrr.
    5. Place that at 90 degrees to its original position on the two pins closest to the back of the board (where the power cable connects)
    6. Later, we're going to put that back where it was for safe keeping. 
  10. Plug an ethernet cable between your home switch or router and the leftmost ethernet port on the board (the one next to the power supply).
  11. Plug in the power supply but don't press the case power button yet.
    1. The fans will start 
    2. No board lights will come on
    3. Witness the green flashing lights of Ethernet goodness on the Ethernet port

Flashing the initial Talos image

This stage is simply to get your compute module in contact with TalosCtl.  The image version doesn't really matter - you just need one that works.

  1. Run rpiboot at a terminal
    1. You should see:
  2. Press the case power button
    1. You should see:
  3. At this stage, you have attached the SD card as storage to your PC
  4. Now, we need to flash the image using the Raspberry Pi Imager
    1. Run the software
      1. Select your device
        1. Raspberry Pi 5 if you're flashing a CM5
        2. Raspberry Pi 4 if you're flashing a CM4
      2. Select your operating system
        1. Down the bottom of the list: "Use custom"
        2. Select the image that you downloaded, probably from your "Downloads" folder
    2.  Allow it to proceed
    3. It gets "stuck" at 99% for up to a minute. THIS IS NORMAL.
    4. It then verifies the write. Let it.

Booting the image and obtaining the DHCP IP address

  1. Optional: Attach a monitor to your HDMI port
    1. This is not necessary, but provides comfort for the first one
    2. This only works for slot 1
    3. No, you don't want to be moving the compute modules around the board, for fear of damaging the connectors
  2. Green flashy lights on the board next to the CM are a good sign.
  3. Next, you need to find the IP address that your CM has obtained via DHCP.  If you have attached HDMI, you should see:
    1. [     <number>] [talos] assignhed address {.... "address": "IP/MASKBITS"...}
    2. You need both parts.  It might look like 192.168.1.156/24.
  4. This is your "DHCP address and netmask"

Installing Talos proper

Now we need to get the latest version of Talos running and the node controlled by Omni.

AND I'M STUCK! "Help" post on Reddit here: https://www.reddit.com/r/TalosLinux/comments/1nnllw0/joining_a_new_machine_to_omni/

----

OLD NOTES HERE - DISREGARD WHAT FOLLOWS. 

DISREGARD THIS TALOSCTL STUFF!...

Warning: The TalosCtl "tab and type" text UI isn't intuitive, with little clear indication of which field you're currently in.  Just keep hitting tab, typing and hitting return until you get it right.  Perhaps Sidero could choose another color for the active field? The good news is that you CAN use your mouse to select fields, buttons etc.

  1. Run the command 
    • talosctl apply-config --insecure --mode=interactive --nodes <DHCP ADDRESS>
  2. e.g. 
    • talosctl apply-config --insecure --mode=interactive --nodes 192.168.1.156
  3. Your screen should look like this:
     
  4. Installer Params 
    1. Select the SD card. It's the mmcblk0 one (in this example, the last one). You can tell because that's the 128GB one! Hit tab, then down arrow, then return:
    1. Hit tab, then return on "Next"
  5.  Machine Config
    1. Role: You will want at least 3 "control plane" nodes in your cluster
    2. Cluster name: I chose "david_homelab".  You do you.
    3. Control Plane Endpoint: I left the default, but then my home router DHCP is happy to pin MAC addresses to fixed IPs.  If in doubt, leave it as the default.
    4. Kubernetes Version: Leave the default unless you know what you're doing.
    5. Allow Scheduling on Control Plane: Change this to an "X", which confusingly, means "yes". C'mon Sidero - make this a tick or "Y" or something!
    6. Tab. Tab. Next
  6.  Network Config
    1.  Choose a good hostname with a decent, forward-thinking, structured naming scheme.  Or not.  Your choice.
    2. Select your domain.
    3. Configure the end0 (network interface)
    4. No, you don't want DHCP (unless you do).  Fix that IP.  Use the Netmask from earlier.
       
  7. Install!  You should see your device appear in Omni after about 15 minutes.

Troubleshooting

When you install (and if you have the HDMI monitor attached), if you see a lot of "error serving dns request", you've messed up your network settings.  You have no option but to start again by re-flashing.

Repeat for the other CMs

Sunday, 7 September 2025

UK Emergency Alerts Service - my feedback


The text: 

 For individuals and businesses system integration use cases where the cellular delivery is insufficient, it should be possible for individuals and business to subscribe to webhook notifications, e.g. delivered as an authenticated HTTPS POST, with appropriate subscription filters and at no cost.

An example use case: In a stadium, the "crowd" will all be notified, but the business operating processes would have to be initiated manually, probably centrally in an area where the alert was NOT received. The crowd may react IMMEDIATELY, for example to exit to the car park, potentially causing bottleneck/crush issues. The business may decide that the "right" operational response for the shopping center is to:

  • raise the car park barriers for the rest of the day
  • put notification on the car park payment machines to state that payment is not required
  • close all tills
  • open all exits
  • make an announcement over the tannoy (after the 10 second alert is complete)
  • adjust signage
  • *... etc.

To permit systems to work well with the Emergency Alerts system, the ability to subscribe to "all events requiring people to return to their homes in Reading" would put the business (and individuals) in control of the process.

Tuesday, 8 July 2025

Love Corn - why have you printed your packaging sideways?

Love Corn - why have you printed your packaging sideways? Even the "p.p.s. open here" is in the wrong place for right handed people (90% of your customers). A call to your design team is needed.

In fact, pretty much ALL packaging like this is AND ALWAYS HAS BEEN printed sideways.  The serrated cut is so that people can tear a strip off and access the contents.  The first company to make an ad campaign from correcting this enormous mistake will reap the rewards.