r/o

README.md

a1d

Light-weight fan controller for the Argon ONE V3 for Raspberry Pi 5.

motivation

The OEM software is a bit garbo. DarkElvenAngel’s argononed is thousands of lines of C. This is less than 100 lines of Rust.

usage

Add the flake to your own (or otherwise fetch it!):

inputs.a1d.url = "git+https://nossa.ee/~talya/a1d";

Add the NixOS module:

nixpkgs.lib.nixosSystem {
# ...
modules = [
# ...
a1d.nixosModules.${system}.default
];
}

Enable it in your config!

services.a1d.enable = true;

Done. Temperature zones aren’t configurable at the moment.

nix is scary

Sowwy. You can just cargo build --release and get target/release/a1d running somehow. Here’s an a1d.service for you:

[Unit]
Description=a1d
[Service]
ExecStart=/path/to/a1d
DynamicUser=true
Group=i2c
ReadWritePaths=/dev/i2c-1
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target

That’ll do.

todo

  • Add the power switch bit.
  • Expose used temperature/fan speed on prometheus.

license

Copyright © 2025 Asherah Connor <ashe@kivikakk.ee>

This work is free. You can redistribute it and/or modify it under the terms of the Do What The Fuck You Want To Public License, Version 2, as published by Sam Hocevar. See the COPYING file for more details.