Logitech RPM Indicator est une application graphique qui allume la
barre de LEDs RPM (shift-light) des volants Logitech en fonction
de la télémetry des jeux de course. Elle écoute en local le flux UDP /
IPC du jeu actif et pilote les LEDs via hidraw.

Le packaging GLF-OS est basé sur le projet upstream
IvanVojtko/logitech-linux-rpm-led
(v1.3.0, GPL-3.0).

Note

L'application est incluse par défaut dans les éditions :
standard, studio et studio-pro. Elle n'est PAS installée sur
mini et streamers (qui n'embarquent pas le pack gaming).


Lancer l'application

L'application est accessible depuis :


Fonctionnalités


Jeux supportés

Jeu Méthode Port UDP
Forza Horizon 5 / 6 UDP "Data Output" 5300
F1 2019 / 2020 / 22 / 23 UDP telemetry 20777
DiRT Rally 2.0 UDP telemetry (édit XML) 20777
Assetto Corsa UDP remote telemetry (par défaut)
Automobilista 2 / Project CARS / PC2 SMS Madness Engine UDP (par défaut)
Euro Truck Simulator 2 Plugin SCS SDK (voir section dédiée) 5607

Utilisation

  1. Branche ton volant Logitech (filaire ou via dongle 2.4 GHz)
  2. Lance Logitech RPM Indicator
  3. (Optionnel) Active Auto-detect running game pour bascule automatique
  4. (Optionnel) Active Remember last selected game pour restaurer la sélection au prochain démarrage
  5. (Optionnel) Ajuste les Shift LEDs (%) pour calibrer la zone d'allumage
  6. Sélectionne le jeu dans la liste déroulante puis clique Start
  7. Lance le jeu et assure-toi que la sortie télémetry est activée (voir ci-dessous)

Configuration jeu par jeu

Forza Horizon 5 / 6

  1. Démarre Forza Horizon 5 ou Forza Horizon 6
  2. Va dans Paramètres → HUD
  3. Active Data Output
  4. Renseigne :
    • IP : 127.0.0.1
    • Port : 5300

F1 2019 / 2020 / 22 / 23

  1. Game Options → Settings → Telemetry Settings
  2. Renseigne :
    • UDP Telemetry : On
    • UDP Broadcast Mode : Off
    • UDP IP Address : 127.0.0.1
    • Port : 20777

DiRT Rally 2.0

Le jeu n'a pas d'interface de config UDP : il faut éditer le fichier XML
dans le préfixe Proton. Sur GLF-OS, ce fichier est sous Steam :

~/.local/share/Steam/steamapps/compatdata/690790/pfx/drive_c/users/steamuser/My Documents/My Games/DiRT Rally 2.0/hardwaresettings/hardware_settings_config.xml

(Le chemin compatdata/690790 peut différer selon ta lib Steam.)

Modifie les valeurs suivantes :

SMS Madness Engine (AMS2 / PC1 / PC2)

  1. Options → System
  2. Renseigne :
    • Shared Memory : No
    • UDP Frequency : 4 (LED plus réactif = chiffre plus bas, mais CPU+)
    • UDP Protocol Version : Project CARS 1

Assetto Corsa

  1. Active la télémetry UDP dans les paramètres du jeu
  2. Dans l'app, sélectionne Assetto Corsa
  3. Renseigne Assetto Max RPM correspondant à ta voiture courante (la valeur est mémorisée par voiture)

Euro Truck Simulator 2

ETS2 ne publie pas la télémetry UDP nativement — il faut un plugin SCS SDK
côté jeu qui forwarde les données vers l'app sur 127.0.0.1:5607.

Sur GLF-OS, le plugin source est livré sous :

/run/current-system/sw/share/doc/logitech-rpm-indicator/scs-plugin/

Pour l'installer côté ETS2 natif Linux (jeu directement Linux, rare aujourd'hui) :

# 1) Récupérer le SDK SCS
curl -L https://download.eurotrucksimulator2.com/scs_sdk_1_14.zip -o /tmp/scs_sdk_1_14.zip
unzip /tmp/scs_sdk_1_14.zip -d /tmp/scs_sdk_1_14

# 2) Compiler le plugin Linux
cp -r /run/current-system/sw/share/doc/logitech-rpm-indicator/scs-plugin/ /tmp/
make -C /tmp/scs-plugin linux SCS_SDK_DIR=/tmp/scs_sdk_1_14

# 3) Copier dans le répertoire plugins ETS2 (créer le dir s'il manque)
mkdir -p ~/.local/share/Steam/steamapps/common/Euro\ Truck\ Simulator\ 2/bin/linux_x64/plugins/
cp /tmp/scs-plugin/logitech_rpm_telemetry.so \
   ~/.local/share/Steam/steamapps/common/Euro\ Truck\ Simulator\ 2/bin/linux_x64/plugins/

Pour ETS2 sous Proton (le cas standard), il faut la version DLL Windows.
Comme la compilation cross nécessite MinGW-w64, le plus simple est d'utiliser
le .dll pré-buildé inclus dans la release upstream :

# Télécharger la release upstream
curl -LO https://github.com/IvanVojtko/logitech-linux-rpm-led/archive/refs/tags/v1.3.0.tar.gz
tar -xzf v1.3.0.tar.gz
# Le .dll précompilé est sous scs-plugin/ après build CI
# (alternative : compiler localement via `nix shell nixpkgs#pkgsCross.mingwW64.stdenv -c make ...`)

mkdir -p ~/.local/share/Steam/steamapps/common/Euro\ Truck\ Simulator\ 2/bin/win_x64/plugins/
cp scs-plugin/logitech_rpm_telemetry.dll \
   ~/.local/share/Steam/steamapps/common/Euro\ Truck\ Simulator\ 2/bin/win_x64/plugins/

Puis dans l'app : sélectionne Euro Truck Simulator 2 dans la liste → Start.
Lance ETS2 normalement.

Warning

Le bouton "Install ETS2 Telemetry Plugin" dans l'app ne fonctionne PAS
sur GLF-OS : il tente de copier depuis un chemin écrivable, alors que
notre packaging Nix met les sources sous /nix/store (read-only). Suis
la procédure manuelle ci-dessus.


Troubleshooting (adapté GLF-OS / NixOS)

Rien ne se passe, les LEDs ne réagissent pas

Le volant n'apparaît pas dans la liste

  1. Branche le volant et allume-le avant de lancer l'app.
  2. Vérifie qu'il est détecté par le noyau :
lsusb | grep -i logitech
ls -la /dev/input/by-id/ | grep -i logitech
  1. Sur GLF-OS, l'utilisateur nobodyz est automatiquement dans le groupe
    input (qui possède /dev/hidraw*). Vérifie :
groups | tr ' ' '\n' | grep input  # doit retourner "input"
ls -l /dev/hidraw*                  # group "input" sur les nodes

Si input est absent de tes groupes (cas d'un compte créé hors
provisionnement GLF-OS), ré-ajoute-le côté customConfig :

users.users.<ton-user>.extraGroups = [ "input" ];

puis glf-update.

PermissionError à l'accès au volant

Sur GLF-OS, le groupe input suffit normalement. Si tu rencontres
quand même un PermissionError, ajoute une règle udev custom via
le module NixOS plutôt que d'éditer /etc/udev/rules.d/ (qui est
volatile sur NixOS : les fichiers manuels sont écrasés au rebuild).

Crée un fichier /etc/nixos/customConfig/logitech-wheels-udev.nix :

{ ... }:
{
  # Permissions hidraw permissives pour les volants Logitech
  # (vendor 046d). À durcir avec GROUP="input" + mode 0660 si besoin.
  services.udev.extraRules = ''
    SUBSYSTEM=="hidraw", ATTRS{idVendor}=="046d", MODE="0660", GROUP="input", TAG+="uaccess"
  '';
}

Puis ajoute l'import dans ton /etc/nixos/customConfig/default.nix :

imports = [
  ./firewall.nix
  ./logitech-wheels-udev.nix   # <-- ajouter
];

Et reconstruis : glf-update.

Note

Comparé au workaround upstream (un 99-*.rules manuel dans
/etc/udev/rules.d/ avec MODE="0666"), la version NixOS ci-dessus
est déclarative (persistée par ta config), plus restrictive
(0660 + group input au lieu de 0666 world-writable) et utilise
le tag uaccess de systemd-logind pour donner l'accès uniquement à
la session graphique active.

LEDs réagissent mais en retard ou saccadées

L'app crash au démarrage avec Namespace Gtk not available

Bug connu du packaging — corrigé en v1.3.0 (postFixup wrapper). Si tu
le vois encore : glf-update pour rapatrier la dernière version, ou
ouvre un ticket sur framagit.

Vérifier que ton volant est bien géré par le kernel

GLF-OS embarque hid-tmff2 et new-lg4ff pour le support Force
Feedback Logitech. Vérifie que le module kernel est chargé :

lsmod | grep -E 'lg4ff|hid_logitech'

Tu devrais voir hid_logitech_hidpp, new_lg4ff ou équivalent.


Configuration

Les paramètres utilisateur (seuils, dernier jeu sélectionné, Max RPM
Assetto par voiture) sont stockés sous :

~/.config/logitech-rpm-indicator/settings.ini

Tu peux le sauvegarder/restaurer pour migrer ta config sur une autre
machine GLF-OS.


Voir aussi


Sources