David Scott 501d72fb1e Enable multilib for 32-bit Proton bridge support in distrobox install (#52)
* Add distrobox installer/uninstaller for immutable distros

Adds install-distrobox-dev.sh and uninstall-distrobox-dev.sh under
tools/distro/distrobox/, for setting up monocoque + simapi/simd inside
an Arch Linux distrobox container on immutable distros (Bazzite,
Silverblue, etc.) where native package managers aren't available.

The installer enables the multilib repo and installs wine + lib32-glibc
so the 32-bit Proton bridge executables (e.g. acbridge.exe) have the
32-bit dynamic linker they need — without this, bridge processes fail
silently with a bare "No such file or directory".

Fixes two bugs found before submitting:
- install script's chmod/help-text referenced wrapper script names
  without the -dev suffix used by the actual `cat >` heredocs, which
  would abort the script under set -e on the first chmod
- uninstall script targeted the "simracing" container/install dir
  instead of "simracing-dev", which would silently no-op (or worse,
  target the wrong container) for anyone who also has a non-dev
  simracing container

* Fix typo'd URL to simracing-utilities in install script

The repo is actually named cescofry/simracing-utilties (missing "i"),
not simracing-utilities as originally written - the correctly-spelled
URL 404s.

* Fold fixes into the existing install-distrobox.sh instead of a -dev copy

The previous two commits on this branch added new install-distrobox-dev.sh/
uninstall-distrobox-dev.sh files, but tools/distro/distrobox/install-distrobox.sh
and uninstall-distrobox.sh already exist upstream (#41, #47) — the "-dev"
files were a personal working copy (container renamed to simracing-dev)
that should never have been committed as new files.

This removes the -dev files and instead patches the real
install-distrobox.sh directly with the actual fixes:
- Enable the multilib repo and install wine/lib32-glibc, so the 32-bit
  Proton bridge executables (e.g. acbridge.exe) have the 32-bit dynamic
  linker they need — without this they fail silently with a bare
  "No such file or directory".
- Fix the simracing-utilities URL typo (real repo is simracing-utilties).

uninstall-distrobox.sh needed no changes — the container/install-dir
mismatch found earlier was an artifact of the -dev copy's own renaming,
not a bug in the real upstream script.

* Enable multilib + wine/lib32-glibc, fix simracing-utilities URL typo

These are the actual fixes intended by the previous commit's message —
they didn't get staged there because a stale pathspec in the same `git
add` invocation aborted it before reaching this file.
2026-09-02 00:35:30 -04:00
2026-08-21 15:26:52 -04:00
2025-07-14 00:15:47 -04:00
2024-09-19 18:53:04 -04:00
2026-08-18 16:39:24 -04:00
2026-05-25 19:54:08 -04:00
2022-12-23 22:42:37 +00:00

Monocoque

___   |/  /____________________________________ ____  ______ 
__  /|_/ /_  __ \_  __ \  __ \  ___/  __ \  __ `/  / / /  _ \
_  /  / / / /_/ /  / / / /_/ / /__ / /_/ / /_/ // /_/ //  __/
/_/  /_/  \____//_/ /_/\____/\___/ \____/\__, / \__,_/ \___/ 
                                           /_/

Cross Platform device manager for driving and flight simulators, for use with common simulator software titles.

📚 Usage Documentation: spacefreak18.github.io/simapi/

Features

  • Updates at 60 frames per seconds.
  • Modular design for support with various titles and devices.
  • Supports bass shakers, tachometers, several wheels and pedals, simlights, simwind etc, through usb and arduino serial.
  • Tachometer support is currently limited to the Revburner model. Supports existing revburner xml configuration files.
  • Includes utility to configure revburner tachometer
  • Can send data to any serial device. So far only tested with arduino. and ESP32. Includes sample arduino sketch for sim lights, simwind, and simhaptic effects for motors.
  • Support for custom arduino (or any serial) device, with a custom lua format for sending data
  • Convincing shaker effects for noise tranducers for wheel slip, wheel lock, and abs, as well as engine rpm and gear shifts.
  • Support for many wheels and pedals including Clubsport Elite V3, Logitech G29, and Moza R5.

Adding More Devices

Quick Install

One-Line Installation:

curl -fsSL https://raw.githubusercontent.com/Spacefreak18/monocoque/master/install.sh | bash

AUR Package following git master: https://aur.archlinux.org/packages/monocoque-git

Or download and review first:

wget https://raw.githubusercontent.com/Spacefreak18/monocoque/master/install.sh
chmod +x install.sh
./install.sh

Installation on Immutable Distros (Bazzite, Silverblue, etc.)

On immutable distributions where native package managers are unavailable, monocoque can be installed inside a distrobox container:

bash tools/distro/distrobox/install-distrobox.sh

This creates an Arch Linux container, installs all packages via AUR, and sets up wrapper scripts (start-simd, start-monocoque, test-monocoque) in ~/.local/bin/.

To uninstall: bash tools/distro/distrobox/uninstall-distrobox.sh

TUI Manager: After installation, use the interactive manager:

monocoque-manager

Supported Games Supported Sims please note on Linux some titles will require a compatibility exe from simshmbridge to be setup. Please follow the linked Documentation for installation instructions

Building

  • libserialport - arduino serial devices
  • hidapi - usb hid devices (hidraw)
  • portaudio - sound devices (haptic bass shakers)
  • libpulse - sound devices (haptic bass shakers)
  • libuv base event loop
  • libxml2
  • argtable2
  • libconfig
  • xdg-basedir
  • lua
  • libproc2
  • libcurl4
  • libgtk3
  • libglu1-mesa
  • simapi
  • slog (static)
  • nappgui (static) (for GUI) (sorta optional)
  • simshmbridge - for sims that need shared memory mapping like AC and Project Cars related.
pacman -Syu git cmake pulse-native-provider libxdg-basedir libserialport libconfig libuv argtable hidapi lua libproc2

This code depends on the shared memory data headers in the simapi repo. When pulling lastest if the submodule does not download run:

git submodule sync --recursive
git submodule update --init --recursive

Then to compile simply:

mkdir build; cd build
cmake ..
make

User Setup Guide

See the dedicated How To for detailed instructions to set up and run 'monocoque`

Testing

./monocoque test -vv # Make sure that ~/.config/monocque/monocoque.config only contains the devices you have connected.

Logs file location

~/.cache/monocoque/*.log

Static Analysis

    mkdir build; cd build
    make clean
    cmake -Danalyze=on ..
    make

Valgrind

    cd build
    valgrind -v --leak-check=full --show-leak-kinds=all --suppressions=../.valgrindrc ./monocoque play

Join the Discussion

Sim Racing Matrix Space

ToDo

  • add frequency cap (low pass filter) to sound haptic effects
  • add road and kerb sound haptic effects
  • windows port
  • more memory testing
  • cleanup tests which are basically just copies of the example from their respective projects
  • much, much more
S
Description
No description provided
Readme
1.5 MiB
Languages
C 77.9%
Shell 7%
Makefile 5.2%
Python 5.1%
CMake 2.2%
Other 2.6%