-
Notifications
You must be signed in to change notification settings - Fork 30
Device Example Basics
Read this page before working through any minimal device example.
All device examples share the same software prerequisites, safety requirements, and wiring procedure. Complete the steps here first, then return to the specific example for the hardware-specific wiring and demo.
Choose one of the two options below depending on your setup. Then use the always-visible Run Control section below to start frontend and backend on non-NixOS systems.
🖥️ Option A: Mini PC with Control NixOS (recommended for production)
We use the following mini PCs: https://amzn.to/4gv6CCB *
You will also need a USB drive with at least 4 GB of storage.
To create the bootable USB drive, we recommend Balena Etcher. It works on nearly all operating systems and is easier to use than the method shown in the video.
A NixOS image can be downloaded here: https://nightly.link/qitechgmbh/control/workflows/nix/master
- Download the file from any of the links on that link above.
- If the downloaded file ends in
.zip, extract the ISO file from it. - Open Balena Etcher and click "Flash from file", then select the downloaded ISO file.
- Select the target USB drive.
- Click "Flash" and wait until the write and verification process is complete.
- Connect the mini PC as usual – a keyboard must be connected.
- Insert the flashed USB drive and press F7 at startup to open the boot menu.
- In the boot menu, select the USB drive (General UDisk 5.0) instead of the default drive and confirm with Enter.
- Press the Windows/Super/Cmd key (depending on your keyboard) to reveal the GNOME overview.
- Use the quick settings on the top right corner to connect to WiFi.
- Select the right of the 2 QiTech icons.
- Connect to Wi-Fi to proceed with the next steps.
- A terminal window will open. Select and confirm the storage drive to start the installation process
This may take some time – perfect opportunity for a coffee break. The hard part is now done!
After an reboot the NixOS Control System can be opened and the backend service starts by itself.
🖥️ Option B: Mini PC with Control NixOS via regular NixOS ISO
We use the following mini PCs: https://amzn.to/4gv6CCB *
You will also need a USB drive with at least 4 GB of storage.
To create the bootable USB drive, we recommend Balena Etcher. It works on nearly all operating systems and is easier to use than the method shown in the video.
The NixOS 25.11 image can be downloaded here: https://channels.nixos.org/nixos-25.11/latest-nixos-graphical-x86_64-linux.iso
- Open Balena Etcher and click "Flash from file", then select the downloaded ISO file.
- Select the target USB drive.
- Click "Flash" and wait until the write and verification process is complete.
- Connect the mini PC as usual – a keyboard must be connected.
- Insert the flashed USB drive and press F7 at startup to open the boot menu.
- In the boot menu, select the USB drive (General UDisk 5.0) instead of the default drive and confirm with Enter.
- Run through the NixOS installer, then connect to Wi-Fi to proceed with the next steps.
First, open a terminal and edit the NixOS configuration:
sudo nano /etc/nixos/configuration.nixScroll down in the configuration until you see the thunderbird entry. Add git on a new line below it:
# Enable touchpad support (enabled default in most desktop environments)
# services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with 'passwd'.
users.users.admin = {
isNormalUser = true;
description = "admin";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [
# thunderbird
git
];
};
# Install Firefox.
programs.firefox.enable = true;Save with Ctrl + X followed by S.
Then apply the new configuration:
sudo nixos-rebuild switchgit clone https://github.com/qitechgmbh/control.gitcd control/
./nixos-install.shThis may take some time – perfect opportunity for a coffee break. The hard part is now done!
After an reboot the NixOS Control System can be opened and the backend service starts by itself.
💻 Option C: Setup on Your Own PC (Linux, macOS, or Windows)
For development or a quick test, the software can be run directly on an existing PC. Complete these prerequisites first:
Rust is required for the backend and can most easily be installed via rustup. Run the following command in your terminal and follow the installer's instructions:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shNode.js and npm are required for the Electron frontend. The current LTS version can be downloaded from nodejs.org. Alternatively, install via a package manager:
# macOS (Homebrew)
brew install node
# Debian/Ubuntu
sudo apt install nodejs npmDownload the control repository and navigate into the newly created folder:
git clone https://github.com/qitechgmbh/control.git
cd controlAll subsequent steps are executed within this control folder.
From the control folder:
cd electron
npm installThis step downloads all required JavaScript dependencies and may take a moment depending on your internet connection.
If you use Control NixOS (Option A or B), this section is not needed.
After reboot, the backend service starts automatically and you can open the frontend by clicking on the QiTech logo.
Use this section when running control on your own Linux/macOS/Windows PC.
Still in the electron folder:
npm startOn some systems (especially Linux),
sudois required so that Electron can access network interfaces:sudo npm start
The Electron window will open. In the next step, start the backend in a separate terminal.
In a separate terminal, go to the main control folder:
cd /path/to/controlOn Linux, you can use the helper script which automatically grants the required capabilities for EtherCAT (raw sockets):
./cargo_run_linux.shAlternatively, or on macOS/Windows, run the backend directly with cargo:
cargo run --features development-buildOn some systems,
sudois required:sudo cargo run --features development-build
Note: The
--features development-buildflag enables development mode with more relaxed real-time requirements. The first build may take several minutes as Rust compiles all dependencies. Subsequent builds are significantly faster.
⚠️ Always disconnect power before wiring.
Working on live EtherCAT terminals can cause serious damage or electrical shock.
This applies to both Beckhoff and WAGO spring-clamp terminals:
- Insert a screwdriver straight into the square release hole.
- Insert the stripped wire into the round opening.
- Remove the screwdriver — the spring clamp locks the wire.

QiTech Control | GitHub | Video Demo | Open Source Framework for Industrial Control
- Getting Started
- Adding a Machine
- Adding a minimal machine e.G. 4CH DO
- Code Style
- Performance
- Testing
- Adding Presets to Machines
- NixOS
Beckhoff:
WAGO:
- 4 Digital In (750-402)
- 8 Digital In (750-430)
- 8 Digital In + 8 Digital Out (750-1506)
- 4 Analog In (750-455)
- 2 Digital Out (750-501)
- 8 Digital Out (750-530)
- Stepper (750-671 & 750-672)
- Power Supply (2789‐9052)
- Serial Interface (750-652)
- 4-channel Analog input module Pt100 RTD (750-460)
- 8 Digital In + 8 Digital Out (750-430 + 750-530)
Elrest:
WAGO: