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

Turing Pi notes (this was a failure - don't read this!)

Working notes 2025-09-20

  1. Turing Pi partially populated with 4x Raspberry Pi compute modules.
  2. 3x Riser boards for CM4 and CM5 are on order
  3. 1x Raspberry Pi 5 compute module is here, but not installed
  4. 2x Raspberry Pi 4 compute modules are on order
  5. 7x 128GB MicroSD cards are installed
  6. From Omni, download the "Raspberry Pi 4 Model B" image
    1. Aparantly, this image is compatible with other compute modules
  7. Turing Pi jumpers
    1. Jumper set to flash
  8. USB connection to motherboard
    1. Use the USB Micro "slave" port near the jumpers 
    2. USB-C to microSD cable worked
    3. Lots of attempts to use other cables failed, particularly with USB-A to microSD cables, the flashing process started, but then kept stopping when the UBS connection was lost
  9. Put the compute module being flashed into slot 1
    1. This is the slot further from the power supply and nearest to the slavbe USB microSD cable 
  10. Power on the Turing Pi 
  11. Getting a visible storage device 
    1. (Windows makes da-^ding noise)
    2. Even after the audible alert, a storage device would sometimes NOT appear.  Running rpiboot seemed to fix this - once run, the storage device would appear
  12. Balena Etcher (FAIL)
      1. Seemed to succeed in flashing
      2. Failed to verify
      3. metal-rpi_generic-arm64-omni-panoramicdata-v1.11.1.raw.xz was tried first
      4. metal-rpi_generic-arm64-omni-panoramicdata-v1.10.6.raw.xz had the same issue
  13.  Raspberry Pi Imager v1.9.6
    1. This seemed to work
    2. I cancelled the verification step on the first image
    3. I let it verify the second time
  14. ... OK I give up 

No comments:

Post a Comment