An open-source controller platform for automatic transmissions.
OpenShift is a fork and continuation of Markus Kovero's
7226ctrl project — a standalone controller
for the Mercedes/Chrysler 722.6 ("5G-Tronic") automatic transmission. The design
is similar to more recent (7G-Tronic++) gearboxes, so with care it may be adapted to
those as well.
This fork keeps the proven Arduino/Teensy firmware while adding a new, clean-room
Rust control platform (transictrl) aimed at portability, safety, and legal
interoperability across a wider range of transmissions and microcontrollers.
⚠️ Not fully functional / experimental — use at your own risk. This project controls safety-critical vehicle hardware. It is not intended for on-road use without full compliance with your local laws and regulations.
| Path | Description |
|---|---|
main/ |
Original C++/Arduino firmware for the 722.6 controller (Teensy/Mega). |
transictrl/ |
Rust-based controller platform. Core logic, HAL, host tools, and per-board firmware (RP2350, STM32F4) are implemented; Teensy 4 skeleton remains. |
datalog/ |
Datalogging format, method, and setup notes. |
dataviz/ |
Legacy Node.js backend + React frontend for live/remote visualization. A Rust egui dataviz app is in transictrl/host/dataviz. |
pcb/ |
Gerber files and BOMs for the controller PCBs (revisions H, I, K). |
Originally intended as a reverse-engineered 722.6 controller, the firmware grew to also control boost, speedometer, RPM meter, fuel pumps, and even the horn. It can communicate with an electric steering wheel for menus and manual button shifts. A CAN bus interface is present on the PCB.
Working and tested:
- Automatic up/down-shift based on vehicle speed and throttle position
- Manual shifting
- Throttle position sensor
- Pressure maps for shifts and modulation pressure (oil temperature + load, incl. P/N/R)
- W202 gearstick reading
- SPI OLED data output
- Boost sensor reading and boost-limit maps
- Staged boost limiting (e.g. drop boost on pre-shift, then continue shift)
- W124 wire-speedometer
- Fuel pump control on idle
- Vehicle speed from tire size and diff ratio (with and without engine RPM)
- RPM reading
- Electric steering wheel support (manual shifts, menu control)
- Oil temperature
- N2/N3 speed sensors
- Gear evaluation (confirm which gear is engaged)
- Torque converter lock (default: 100% lock in 5th, >80 km/h, low load)
- Percentual map reads (preferably without floats)
- Exhaust pressure sensor and intake/exhaust pressure ratio calculation
- Adaptive shift pressure (transloppy/maps)
Implemented, needs real-world testing:
- W124 RPM meter (works in theory)
Work in progress:
- External datalogging (hardware implementation, visualization)
Schematics target the Teensy and can be used with a Mega to some extent, though Mega support is being deprecated for performance reasons.
transictrl is a ground-up rewrite in Rust with a strong focus on safety,
portability, and lawful interoperability.
- Core logic — hardware-independent, calibration-driven shift state machine,
gear-ratio evaluation, map interpolation, and safety/fault handling (
#![no_std],#![forbid(unsafe_code)], unit-testable on the host) - transictrl-722 — GPL-3.0-derived crate that ports the 722.6-specific shift
planning, sensor scaling, W202 gearstick decoding, and map data from
main/ - transictrl-hal — board-agnostic hardware abstraction traits for solenoids,
PWM, ADC, frequency capture, CAN, persistent storage, serial, and display.
Includes host-testable control primitives: an anti-windup PI current
controller (
current_pi) and a lock-free CAN receive ring + ID filter (can) - Firmware — portable HAL + embassy runtime for RP2040/RP2350 and STM32F4
(
fw-rp2350,fw-stm32); Teensy 4 (fw-teensy4) is a skeleton awaiting a suitable embassy-compatible HAL.fw-rp2350implementsOutputPin,PwmOutput,SolenoidCurrent(closed-loop, INA240/MCP3208),AdcChannel,FrequencyCapture,PersistentStore,CanBus(MCP2518FD),SerialLink, andMonotonicClock, and ships a revL universal-carrier pin config (rev_l) - Host — axum web server with a serial→WebSocket telemetry bridge, a device
simulator, and a calibration validation endpoint; Rust egui dataviz app in
transictrl/host/dataviz - Protocol — open serialization with serde/postcard, plus a no-std binary framing layer for calibration push/pull over serial
- Calibration — open TOML/JSON schema; optional user-supplied importers;
command-line manager in
transictrl/tools/calibration-cli - Map conversion —
transictrl/tools/maps-converter/convert_maps.pyports the legacymain/include/maps.hPROGMEM tables into Rust const map modules
See transictrl/README.md for details.
cd transictrl
cargo test --workspace # run host-side logic tests
cargo run -p server # launch the host web UI (simulated telemetry)
cargo run -p server -- -s COM3 # bridge telemetry from a serial port
cargo run -p calibration-cli -- --help
# Build firmware for your board
cargo build -p fw-rp2350 --target thumbv8m.main-none-eabihf
cargo build -p fw-stm32 --target thumbv7em-none-eabihf
# Regenerate map tables from the original C++ maps.h
python transictrl/tools/maps-converter/convert_maps.py \
main/include/maps.h \
transictrl/crates/transictrl-722/src/generated_maps.rsSensor data is streamed over USB serial and pushed into a local time-series database,
replicated remotely, and rendered by a web frontend for both live and historical
analysis. See datalog/README.md and the dataviz/ app.
Logged channels include vehicle speed, RPM, throttle position, coolant/oil/ATF temperature, calculated load, intake/exhaust pressure and their difference, current boost limit, N2/N3 sensors, evaluated gear, real gear ratio, slippage, and battery voltage. External datalogging is planned to add GPS location and 3-axis acceleration.
Gerber files and BOMs are available under pcb/ with three tested, working
through-hole/SMD revisions (H, I, K) targeting the 722.6 on a Teensy 3.5.
Firmware is compatible across those revisions. See pcb/README.md
for revision notes and assembly caveats. Assembly instructions are welcome as
contributions.
- Working PCB (rev H): http://www.mui.fi/pcb-valmis.jpg
- SMD revision (rev K): http://www.mui.fi/smd-revk.jpg
revL — universal multi-transmission controller (in design, pre-layout): a
new SMD board built around the RP2350B that drives any supported
transmission (4L60E/4L80E, 722.6, 6L80, 4R70W, ZF 8HP, GM/Ford 10-speed) by
exposing a superset of actuator/sensor channels addressed by the transictrl
calibration io_mapping model. Highlights: 6 current-controlled + 4 on/off
solenoid drivers, 3 VR/Hall speed inputs, CAN-FD (MCP2518FD), external SPI ADC
(MCP3208) for current feedback, I²C LED expander, a buck regulator replacing
the 7805, and reverse-polarity protection. Bring-up target is the 4L60E
(the only unit on hand). Full spec, BOM, netlist and a reference outline Gerber
live in pcb/revL/. EDA routing is the remaining
handoff task.
OpenShift is licensed under the GNU General Public License v3.0 (GPL-3.0), the same
license as the upstream 7226ctrl project. See LICENSE for the full text.
Original 7226ctrl work by Markus Kovero ([email protected]), with thanks to:
- Tuomas Kantola — maps and related math
- Tommi Otsavaara — guidance in electronics
- Mikko Kovero and Pete — mechanical side of things
- Jami Karvanen — datalogging and frontend
- Liia Ahola — PCB tracing
- Joosep Vahar — testing
- Toni Lassila and Jan Blonski — ideas
- Krzysztof Dymianiuk — enclosure solution and PCB design
OpenShift fork and the transictrl platform maintained by the OpenShift contributors.