Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 4 additions & 13 deletions docs/development.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,6 @@ To experiment without touching your real configuration, set `XDG_CONFIG_HOME` an
| `scripts` | Development helpers |
| `site` | The public site, on GitHub Pages (see [The website](#the-website)) |
| `packaging/polkit` | polkit action of the helper |
| `packaging/aur` | The AUR package (`simrig-bin`), from the release archive |

## Checks

Expand Down Expand Up @@ -179,15 +178,7 @@ cargo build --release
packaging/build-packages.sh 1.2.3 # → dist/packages
```

### The AUR package

`packaging/aur` is `simrig-bin`, the AUR package made from a release's `.tar.gz`. It follows stable
releases only, and leaves out `lib/simrig/package-format`, so the app leaves its updates to the
AUR helper. After each stable release:

```sh
packaging/aur/update.sh 1.2.3 # version, checksum, .SRCINFO (an Arch container without makepkg)
```

Then copy `PKGBUILD`, `simrig.install` and `.SRCINFO` into a clone of
`ssh://aur@aur.archlinux.org/simrig-bin.git` (an AUR account with an SSH key), commit and push.
Each release also goes into `packaging/simrig.metainfo.xml` (`<releases>`, newest first): it is
what software centres and distribution repositories show. Its screenshots are
`docs/images/screenshots`, redrawn by `scripts/site.sh shots`; check it with
`appstreamcli validate --no-net packaging/simrig.metainfo.xml`.
Binary file added docs/images/screenshots/pedals.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/screenshots/rig.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/screenshots/shifter.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/screenshots/wheel-base.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 0 additions & 23 deletions packaging/aur/.SRCINFO

This file was deleted.

30 changes: 0 additions & 30 deletions packaging/aur/PKGBUILD

This file was deleted.

8 changes: 0 additions & 8 deletions packaging/aur/simrig.install

This file was deleted.

31 changes: 0 additions & 31 deletions packaging/aur/update.sh

This file was deleted.

145 changes: 145 additions & 0 deletions packaging/simrig.metainfo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- AppStream metadata: what software centres (GNOME Software, KDE Discover) and distribution
repositories show about SimRig. Installed by packaging/stage.sh; add each release below. -->
<component type="desktop-application">
<id>io.github.adiakys.SimRig</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0-or-later</project_license>

<name>SimRig</name>
<summary>Set up a sim-racing rig of any brand</summary>
<developer id="io.github.adiakys">
<name>Adiakys</name>
</developer>

<description>
<p>
SimRig sets up a whole sim-racing rig on Linux: wheel base, steering wheel, pedals, shifter
and handbrake, whatever the brand. It installs the drivers the devices need, shows every
device moving live, tunes and calibrates them and keeps presets, then steps aside: the
devices keep working in every game with SimRig closed.
</p>
<ul>
<li>Fanatec, Moza, Logitech, Thrustmaster, PXN, Simagic and standard force feedback bases</li>
<li>Any USB shifter or handbrake, set up by moving it</li>
<li>Drivers installed with one password, kept after kernel updates</li>
<li>Rotation, force feedback and each brand's own settings, saved in the device</li>
<li>What a device cannot do stays visible, with the reason</li>
<li>Checks what games need from each device, and says how to fix it</li>
</ul>
</description>

<launchable type="desktop-id">simrig.desktop</launchable>
<provides>
<binary>simrig</binary>
<binary>simrig-cli</binary>
</provides>

<url type="homepage">https://adiakys.github.io/SimRig/</url>
<url type="bugtracker">https://github.com/Adiakys/SimRig/issues</url>
<url type="faq">https://adiakys.github.io/SimRig/faq/</url>
<url type="vcs-browser">https://github.com/Adiakys/SimRig</url>
<url type="contribute">https://github.com/Adiakys/SimRig/discussions/1</url>

<categories>
<category>Settings</category>
<category>HardwareSettings</category>
<category>Game</category>
</categories>
<keywords>
<keyword>sim racing</keyword>
<keyword>racing wheel</keyword>
<keyword>steering wheel</keyword>
<keyword>force feedback</keyword>
<keyword>pedals</keyword>
<keyword>shifter</keyword>
<keyword>handbrake</keyword>
<keyword>Fanatec</keyword>
<keyword>Moza</keyword>
<keyword>Logitech</keyword>
<keyword>Thrustmaster</keyword>
<keyword>PXN</keyword>
<keyword>Simagic</keyword>
</keywords>

<screenshots>
<screenshot type="default">
<caption>The rig, live: every device drawn as it stands and moving as it is used</caption>
<image>https://raw.githubusercontent.com/Adiakys/SimRig/main/docs/images/screenshots/rig.png</image>
</screenshot>
<screenshot>
<caption>A wheel base: rotation, force feedback and its own settings</caption>
<image>https://raw.githubusercontent.com/Adiakys/SimRig/main/docs/images/screenshots/wheel-base.png</image>
</screenshot>
<screenshot>
<caption>Pedals: response curve, dead zones and maximum force</caption>
<image>https://raw.githubusercontent.com/Adiakys/SimRig/main/docs/images/screenshots/pedals.png</image>
</screenshot>
<screenshot>
<caption>A shifter: its gate, gears and reverse</caption>
<image>https://raw.githubusercontent.com/Adiakys/SimRig/main/docs/images/screenshots/shifter.png</image>
</screenshot>
</screenshots>

<branding>
<color type="primary" scheme_preference="light">#f3c726</color>
<color type="primary" scheme_preference="dark">#efc63a</color>
</branding>

<requires>
<display_length compare="ge">1280</display_length>
</requires>
<supports>
<control>pointing</control>
<control>keyboard</control>
</supports>

<content_rating type="oars-1.1"/>

<releases>
<release version="0.3.1" date="2026-11-03">
<url type="details">https://github.com/Adiakys/SimRig/releases/tag/v0.3.1</url>
<description>
<p>SimRig shows up in software centres, with its description, screenshots and release notes.</p>
</description>
</release>
<release version="0.3.0" date="2026-11-03">
<url type="details">https://github.com/Adiakys/SimRig/releases/tag/v0.3.0</url>
<description>
<ul>
<li>Add a device shows the plugin of each device, with Change to pick another one</li>
<li>An unlisted model of a known maker is offered that maker's plugin first</li>
<li>Any device no plugin handles can be given to a plugin by hand</li>
<li>When a plugin does not take a device, the reason shows under its row</li>
</ul>
</description>
</release>
<release version="0.2.0" date="2026-11-03">
<url type="details">https://github.com/Adiakys/SimRig/releases/tag/v0.2.0</url>
<description>
<p>Moza, confirmed on real hardware with an R21 Ultra base, a CS Pro wheel, CRP2 pedals, the HBP handbrake and the SGP shifter.</p>
<ul>
<li>The steering wheel on a Moza base, with its buttons, paddles and settings</li>
<li>Shifters and handbrake plugged into a Moza base show up on their own</li>
<li>The SGP sequential shifter on its own USB, with its extra buttons</li>
<li>Mapping by hand stays available for any device that responds wrong</li>
</ul>
</description>
</release>
<release version="0.1.1" date="2026-10-25">
<url type="details">https://github.com/Adiakys/SimRig/releases/tag/v0.1.1</url>
<description>
<ul>
<li>The PXN VD4 is recognised</li>
<li>A USB device no plugin knows can be given to a plugin</li>
</ul>
</description>
</release>
<release version="0.1.0" date="2026-10-18">
<url type="details">https://github.com/Adiakys/SimRig/releases/tag/v0.1.0</url>
<description>
<p>The first release: a whole sim-racing rig set up on Linux, with the drivers its devices need.</p>
</description>
</release>
</releases>
</component>
4 changes: 3 additions & 1 deletion packaging/stage.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#
# Layout: /usr/bin (app, CLI), /usr/libexec/simrig (helper and updater, run through pkexec),
# /usr/lib/simrig/plugins (official plugins with their drivers), polkit actions, desktop entry,
# icon, documentation and licenses. The packages and the archive add
# AppStream metadata, icon, documentation and licenses. The packages and the archive add
# /usr/lib/simrig/package-format, which tells the app which file of a release updates it.
set -eu
root=$(cd "$(dirname "$0")/.." && pwd)
Expand All @@ -33,6 +33,8 @@ for policy in org.simrig.helper org.simrig.update; do
"$dest/usr/share/polkit-1/actions/$policy.policy"
done
install -D -m 0644 "$root/packaging/simrig.desktop" "$dest/usr/share/applications/simrig.desktop"
install -D -m 0644 "$root/packaging/simrig.metainfo.xml" \
"$dest/usr/share/metainfo/io.github.adiakys.SimRig.metainfo.xml"
install -D -m 0644 "$root/crates/simrig-gui/ui/icons/mark.svg" \
"$dest/usr/share/icons/hicolor/scalable/apps/simrig.svg"

Expand Down
11 changes: 9 additions & 2 deletions scripts/site.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
# scripts/site.sh stage copy the shared assets (fonts, the mark, device drawings) into site/
# scripts/site.sh build stage, then build into target/site as GitHub Pages does (Docker)
# scripts/site.sh serve build, then serve it at http://localhost:4000/SimRig/
# scripts/site.sh shots redraw the app's screenshots and the demo video (Pillow, ffmpeg)
# scripts/site.sh shots redraw the app's screenshots (site, software centres) and the demo
# video (Pillow, ffmpeg)
# scripts/site.sh social redraw the preview image (search results, link previews) from
# site/_social/card.html, in three formats (Chromium)
set -euo pipefail
Expand Down Expand Up @@ -64,6 +65,12 @@ for name in ("home", "base", "pedals", "shifter"):
Image.open(f"{src}/{name}-{theme}.png").convert("RGB").save(
f"{out}/{name}-{theme}.webp", quality=88, method=6)

# The software centres' screenshots (packaging/simrig.metainfo.xml): PNG, light theme.
import os
os.makedirs("docs/images/screenshots", exist_ok=True)
for name, file in (("home", "rig"), ("base", "wheel-base"), ("pedals", "pedals"), ("shifter", "shifter")):
Image.open(f"{src}/{name}-light.png").convert("RGB").save(f"docs/images/screenshots/{file}.png", optimize=True)

# The mark (crates/simrig-gui/ui/icons/mark.svg) as a PNG, for search engines' logos.
s = 512 / 22
mark = Image.new("RGBA", (512, 512), (0, 0, 0, 0))
Expand Down Expand Up @@ -114,7 +121,7 @@ case "${1:-}" in
shots) shots ;;
social) social ;;
*)
sed -n '2,9p' "$0" | sed 's/^# \{0,1\}//'
sed -n '2,10p' "$0" | sed 's/^# \{0,1\}//'
exit 1
;;
esac
35 changes: 23 additions & 12 deletions site/_brands/moza-linux.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,24 @@ title: Moza wheel bases, pedals and shifters on Linux
nav: Moza
order: 2
status: partial
tested: CRP2 pedals (live inputs)
summary: Wheel bases R3 to R21, SR-P and CRP pedals, HBP handbrake, SGP and HGP shifters
tested: an R21 Ultra base, a CS Pro steering wheel, CRP2 pedals, an HBP handbrake and an SGP shifter
summary: Wheel bases R3 to R21 and the steering wheel on them, SR-P and CRP pedals, HBP handbrake, SGP and HGP shifters
description: >-
Use a Moza R3, R5, R9, R12, R16 or R21 wheel base on Linux with force feedback and base
settings, plus SR-P and CRP pedals, the HBP handbrake and the SGP and HGP shifters. SimRig sets
them up and builds the force feedback driver on kernels older than 6.15.
settings, the steering wheel on it with its buttons and settings, SR-P and CRP pedals, the HBP
handbrake and the SGP and HGP shifters. Tested on an R21 Ultra and a CS Pro wheel.
lede: >-
Moza bases on Linux with their force feedback and settings, next to Moza pedals, handbrake and
shifters, in one rig.
card: { label: "Wheel base", art: [base.svg], driver: "hid-universal-pidff, in Linux from 6.15", tested: "CRP2 pedals" }
Moza bases on Linux with their force feedback and settings, the steering wheel on them, and
Moza pedals, handbrake and shifters, in one rig.
card: { label: "Wheel base", art: [base.svg], driver: "hid-universal-pidff, in Linux from 6.15", tested: "R21 Ultra, CS Pro, CRP2, HBP, SGP" }
---

## Models

| Type | Models |
|---|---|
| Wheel bases | R3, R5, R9, R12, R16, R21 |
| Steering wheels | The wheel mounted on the base, CS Pro tested |
| Pedals | Pedals plugged into the base; SR-P and CRP pedals on their own USB |
| Handbrake | HBP |
| Shifters | SGP sequential, HGP H-pattern, on their own USB or plugged into the base |
Expand Down Expand Up @@ -50,19 +51,29 @@ The base stores what it is sent, so settings come back with the base, with SimRi
serial protocol comes from [Boxflat](https://github.com/Lawstorant/boxflat), credited in
SimRig's third-party notices.

## The steering wheel

The wheel mounted on the base shows up with its buttons, hat switches and analog paddles, live,
and its settings:

- **Analog paddle mode**: buttons, a combined axis, or separate axes, with the **combined axis
split** (the clutch point).
- **LED brightness** for the RPM lights, and **button LED brightness**.
- **Stick as directional pad**, and each **rotary encoder** as buttons or a knob.

## Pedals, handbrake and shifters

- **Pedals** on the base and SR-P and CRP pedals are recognized with their layout; mapping them
by hand is offered too.
- **HBP handbrake**: its position, live.
- **SGP sequential shifter** and **HGP H-pattern shifter** on their own USB are recognized. An
HGP plugged into the base appears by itself once a gear is engaged; an SGP plugged into the
base is set up by moving it. If the shifter's direction was reversed in its settings, map it
by hand.
- **SGP sequential shifter** and **HGP H-pattern shifter**, on their own USB or plugged into the
base. Plugged into the base, they and the HBP show up by themselves within a second or two, and
go when unplugged. The SGP brings its extra buttons, and its up and down follow its direction
setting.
- Mapping by hand stays on offer for any of them that responds wrong.

## Limits

- The settings of Moza steering wheels (the rims) are not offered yet.
- Pedal calibration, dead zones and curves are not available through SimRig yet.
- **Reset settings** is not available.

Expand Down
Loading
Loading