GCU Gen 3
This page covers the GCU Gen 3, the current-generation unit: one multicolor status LED and a single 23-pin harness connector. It runs firmware 5.x, shipped as .bin files.
Not sure which unit you have? See Which GCU is in my car?.
Where the USB port is: not on the box. USB-C comes out on a piggyback breakout in the shift harness, alongside a remote reset button. That’s what you plug a laptop into for everything on this page. If your car doesn’t have the piggyback, contact Rush Auto Works — it’s worth having before you need it, because it’s the only way to flash the GCU or read its logs.
The GCU Gen 3’s wiring differs from the older units, so don’t trace it against the Legacy GCU diagram — different connector, different signals. This is the one for your car.
Click any pin for its signal, wire colour, Feather pin, what it runs to, and what a meter should read there. The Connector view draws J2 as it physically sits; Schematic draws the harness runs. The circuit filters narrow it to one part of the harness; the separate Diagnostics group shades the EMI aggressors against the victims and highlights the one known fault.
It opens on its own at manual.rush.sr/gcu-gen3-wiring-diagram.html, and it works offline once the manual is saved to your phone — the Legacy diagrams cannot, because they are served from another origin.
Two things it deliberately does not cover. KLine (Gen1) J2 numbers are unverified upstream and are not published, so a Gen1 car is out of scope until the hardware side is confirmed. And every value is pinned to a specific firmware commit, shown in the footer — if the board revs, the diagram says what it was built against instead of silently aging.
For the older units, see Shift Harness and GCU.
What the GCU Gen 3 Does
Section titled “What the GCU Gen 3 Does”The older unit fires a valve on a timer and assumes the gear went in. This one is wired to the ECU over CAN, so it knows the engine RPM and the gear, and it reads its own gear-position sensor to confirm every shift.
Always on, nothing to configure:
- Money-shift protection — before a downshift it works out the RPM the engine would land on and refuses the shift if that is at or above the limit. Default 11,800 RPM.
- Closed-loop shift confirmation — it watches the gear sensor and confirms the gear in under 10 ms, rather than assuming.
- Automatic retry on a missed 1↔2 shift — a 1st-to-2nd or 2nd-to-1st shift that lands in neutral instead is retried, and the whole event is recorded. Other failed shifts are recorded but not retried. It needs the gear sensor: a car running without one, or with it faulted, shifts on timing alone and never retries. On by default (
misshift_retry_enabled), and a retry also needs the engine turning, so it does nothing on a bench with the engine stopped. - Session logging — everything above goes to 2 MB of onboard flash, numbered files — one per boot, plus another whenever a long outing fills the current one — timestamped against the AiM dash’s GPS clock. A roll mid-run starts the next file rather than overwriting anything, and anything already on flash survives a power cycle. Records are held in RAM until revs drop, though, so cutting power at speed loses whatever had not been written yet. On the bench,
FLUSH_LOGSbefore a dump. - Wheel-speed emulation — the donor Suzuki ECU drops into limp mode without a wheel-speed signal, and the Rush SR doesn’t use the original bike sensors, so the GCU generates the signal itself. Lose that signal and throttle is capped while the engine still revs to redline; lose the gear signal instead and throttle is capped with the engine held to about 6,000 RPM. Both are covered in Limp Mode, No Blip, No Cut.
On by default, on cars wired for it:
- Brake-light control — the GCU switches the brake-light relay from measured brake pressure. If it loses the pressure signal, or the reading is implausible, the light comes on rather than staying dark.
Off by default, turn on in the flasher (see Settings You Can Change):
- Auto-downshift — hold the down paddle and the box walks down for you, each gear firing the instant the money-shift gate allows.
- Neutral below 1st (car mode) — makes a down-pull from 1st gear find neutral, instead of the motorcycle layout where neutral sits between 1st and 2nd.
- Post-shift bounce guard — catches the 2→1 downshift that settles back into neutral, and fires a corrective retry.
Latest Firmware Release
Section titled “Latest Firmware Release”5.0.0 — the first release on the GCU Gen 3. It drives the brake light from brake pressure, makes every auto-downshift refusal explainable in the logs, and records where the shift drum actually went on every shift.
📥 Download: rush_GCU_5.0.0.zip — or from the GCU Firmware Releases page, which also carries the full release history.
This zip was re-issued on September 19, 2026. On some Macs, the flasher in the original download failed with Verify failed and left the GCU in its bootloader. The firmware files are unchanged. If you hit that error, download the zip again from the GCU Firmware Releases page and reflash. Your browser can keep serving the old zip from the link above for up to a day.
AiM Dash Channels
Section titled “AiM Dash Channels”The GCU Gen 3 sends more channels to the dash than the old unit did, and reads the dash’s GPS clock, speed, throttle, and brake back over CAN. Seeing those channels, and sending the GCU its data, means loading an AiM configuration with the GCU’s CAN input and output set up.
📥 Download: Rush_SR_MXS_v1.x_DBW_GCUMk3_5.0.0.zconf2
This config is for an MXS 1.x dash on a drive-by-wire (Gen2) car running GCU firmware 5.0.0. Import it in RaceStudio 3 under Configurations → Import, then send it to the dash. Importing replaces your current config, so note any changes you made to your own before you load it.
Building your own config, or reading the GCU with another CAN tool? These two files describe the GCU’s own frames, 0x700 to 0x704, 32 channels, and nothing else:
- 📥 Download: Rush GCU Mk3 AiM CAN protocol (.xc1), for adding the GCU’s channels to any RaceStudio 3 config.
- 📥 Download: RUSH_GCU_MK3.dbc, the same frames for any tool that reads a DBC.
Pressures in both decode to bar, not PSI. Multiply by 14.5038 for PSI.
Status LED Quick Reference
Section titled “Status LED Quick Reference”One multicolor LED carries all the status. The highest-priority active pattern wins.
| Pattern | Meaning |
|---|---|
| Quick red-yellow-green-blue flick, once | Boot. Roughly 200 ms, so it’s easy to miss. |
| Slow cyan-blue breathing | Idle heartbeat — healthy |
| Solid color during a shift | Shift in progress: green = upshift, red = downshift, cyan = finding neutral |
| Fast amber flash | No gear data. Shifts run on a timer and the safety gates are off. Investigate. |
| Fast yellow flash | Compressor running. Normal during a 70–90 PSI refill. |
| Slow red blink, once a second | Flash safe mode — logging is off after repeated boot failures. Racing is unaffected. |
| White flash, 300 ms on / 300 ms off, forever | Fatal startup error. The board needs attention. |
| One purple flash | Neutral mode switched to car (neutral below 1st) |
| One cyan flash | Neutral mode switched to moto (neutral between 1st and 2nd) |
Flash safe mode clears on a power cycle — unplug the car, don’t press RESET. If it comes back, contact Rush Auto Works.
Dash Warning Byte
Section titled “Dash Warning Byte”The GCU sends the dash one warning byte on CAN, ten times a second.
On current firmware every warning that applies is set at the same time, and the byte reads 0x00 when nothing does. DUMP_STATUS prints the same byte decoded on its DASH_STATUS line, so you can read it over USB without a dash config that decodes it.
| Bit | DASH_STATUS field | Meaning |
|---|---|---|
| 0 | psi_hi | Tank pressure critical, 110 PSI or more. Stays set while it is true. |
| 1 | can_data | ECU data stale or invalid. Also raised while the brake-light failsafe holds the lamp on. |
| 2 | low_rpm | A shift was refused because RPM was too low. |
| 3 | top_gear | An upshift was refused in 6th. |
| 4 | low_gear | A downshift was refused because there is nothing below the current gear. Which gears those are depends on the neutral mode. In motorcycle mode it is 1st only, since a down-pull from neutral is a legal click to 1st. In car mode the check covers both 1st and neutral, but a down-paddle in 1st is sent to the neutral finder before the check runs (see the table above), so in practice this bit means neutral there — unless the shift came from somewhere other than the paddle. |
| 5 | money | A downshift was refused because it would over-rev the engine. |
| 6 | shift_err | A shift failed for a reason the firmware could not classify. |
| 7 | can_err | CAN bus error, or the gear sensor dropped out in the middle of a shift. |
Bit 0 stays set for as long as the pressure is high. Bits 2 to 7 are events: each one holds for three seconds after the dash first receives it, then clears on its own, so a refusal you were not looking at the dash for is still readable when you glance down. Bit 1 is both: the shift-safety path raises it as a three-second event, and the brake-light failsafe holds it for as long as the failsafe is active. The hold is a firmware constant, not a dash setting.
Brake-Light Status Code
Section titled “Brake-Light Status Code”On a car wired for brake-light control, DUMP_STATUS prints a BRAKE_LIGHT line. Its code= field is the module’s state in one number:
code= | Meaning |
|---|---|
| 0 | Lamp off, no fault. |
| 1 | Lamp on. Normally from measured brake pressure, but also what a BRAKE_TEST 1 bench override shows. |
| 2 | The front pressure channel is out: it failed its plausibility check, or its readings went stale. The rear channel drives the lamp. |
| 3 | Total failsafe: the lamp is held on. Both channels are out. It does not always mean two dead sensors. On a car set to brake_front_source 0, where the dash carries both channels, a stale dash alone is enough. |
| 4 | Startup warning in progress. The excluded channel is still shown in excl=. |
src= names the channel driving the lamp, excl= the channels currently excluded, and ovr= is auto normally, or on / off if someone left a bench override set. A BRAKE_SENSOR_FAULT record lands in the flash log at the moment a channel is excluded.
Flashing Firmware
Section titled “Flashing Firmware”You need a laptop and a USB-C cable to the harness piggyback.
- Download the release zip above and unzip it. It contains the firmware, the GCU Flasher app, and the flashing tool. Nothing to install.
- Plug the laptop into the USB-C connector on the harness piggyback. Power the car up first — the GCU runs off 12V and does not self-power over USB, so with the car off no port appears at all.
- Open the GCU Flasher —
GCU Flasher.appon macOS,GCU Flasher.baton Windows. - Pick the firmware from the dropdown. For 5.0.0 that is
release_CAN_feather-5.0.0.bin. - Pick your serial port. Click Refresh if it doesn’t appear.
- Click Flash Firmware and confirm. The GCU reboots into its bootloader on its own.
- Wait for “Flash complete!” in the log.
If the GCU won’t appear over USB at all
Section titled “If the GCU won’t appear over USB at all”Three symptoms that look unrelated are usually one broken wire:
- nothing enumerates when you plug in, or Windows reports a failed device descriptor
- the remote reset button on the piggyback does nothing
- flashing dies at the bootloader step, and pressing the remote reset doesn’t help either
All three run through the same piggyback breakout and share one ground return, so a single open wire takes out the lot. This was found on a car in August 2026 and traced to a mis-built connector, so other cars may carry it. Contact Rush Auto Works rather than chasing it as three faults.
Two things send this diagnosis the wrong way. The GCU does not self-power over USB, so a dead port with the car switched off is the design, not the fault. And automatic bootloader entry is a software reset the firmware runs on itself over USB — it never touches the reset wire — so a dead remote reset button cannot be the reason bootloader entry failed. They look like one theory and they aren’t.
Settings You Can Change
Section titled “Settings You Can Change”The flasher’s Configuration tab lists every setting the firmware exposes, with its range and a description on hover. Changes take effect immediately; Save to Flash makes them survive a power cycle.
To change anything: connect, click View Console, then Enable Write Access in the Diagnostics tab. Write access locks itself again after 5 minutes.
The settings most owners care about:
| Setting | Default | What it does |
|---|---|---|
auto_downshift | off | Hold-to-downshift. See below. |
neutral_button_mode | moto(1n2) | Where neutral lives. See below. |
tank_min_psi / tank_max_psi | 70 / 90 | Compressor cut-in and cut-out pressure |
downshift_block_rpm | 11800 | The money-shift threshold. Lower is more conservative. |
brake_light_enable | on | GCU control of the brake light |
post_shift_validate_ms | 0 (off) | Bounce guard for 1↔2 shifts. Try 150 if you get 2→1 false neutrals. |
Auto-Downshift
Section titled “Auto-Downshift”Off by default. Turn on auto_downshift and the down paddle gains a second gesture: hold it.
- One pull and release is an ordinary downshift, exactly as before.
- Keep holding, and about a fifth of a second after that shift completes the box starts walking down on its own, firing each gear the moment the engine has settled enough that the money-shift gate allows it.
- It stops at 2nd. It will not walk into 1st or neutral.
- Release the paddle to stop. That is the cancel. An upshift cancels it too.
- Holding for more than four seconds disarms it.
It never fires a shift the money-shift gate would have refused, so it cannot over-rev the engine in a way a manual downshift wouldn’t. There is no throttle condition — a manual downshift never had one either.
CAN cars only, since it needs live RPM. If a hold does nothing, run DUMP_STATUS and read the AUTO_DS and AUTO_DS_VETO lines: they count every reason it declined, so “the feature is off” and “the feature refused” look different in the log.
Neutral Position: Moto vs Car
Section titled “Neutral Position: Moto vs Car”The physical shift drum is always 1-N-2-3-4-5-6, with the neutral half-detent between 1st and 2nd. This setting changes only what the paddles do at that boundary.
moto(1n2) — default | car(n12) | |
|---|---|---|
| Down-pull in 1st | Nothing (blocked) | Finds neutral |
| Down-pull in neutral | Goes to 1st | Nothing (blocked) |
| Up-pull in neutral | Goes to 2nd | Goes to 1st |
| Neutral button | Works in both modes | Works in both modes |
Down from 2nd goes to 1st in both modes; it never stops at neutral. Use the neutral button from 2nd to get there.
You can switch modes without a laptop: hold both paddles for 5 seconds with the engine off. The LED flashes purple for car mode and cyan for moto mode, and the setting is stored. It refuses to switch while the engine is running, so the layout can’t change under you mid-session. The heartbeat line reports the current mode as nt_mode=MOTO or nt_mode=BTN.
Pulling Logs over USB
Section titled “Pulling Logs over USB”The GCU Gen 3 logs everything it does, both to USB serial and to onboard flash. The flash logs survive power cycles, so you can pull a whole weekend’s shift history back in the paddock.
Capturing a log
Section titled “Capturing a log”- Connect the GCU over USB and open the GCU Flasher.
- Click View Console. Live lines start streaming immediately.
- In the Diagnostics tab, click Dump Exception Log — failures only, start there — and/or Dump Rolling Log for everything. A large dump takes a few seconds.
- Click Save Log to write the whole console buffer to a timestamped text file. The flasher also offers to save when you disconnect.
For a quick health check without a full dump, send DUMP_STATUS in the command box below the console. It reports the last reset cause, uptime, flash health, CAN status, and the shift counters in one shot.
Multiple sessions in one dump
Section titled “Multiple sessions in one dump”Flash logging keeps at least one file per boot, and starts another when a long run fills one, so a DUMP_ROLLING can hold several sessions back to back — two of which may belong to the same boot, split by --- SESSION N --- markers. The Sessions button does the splitting for you: it lists each session with its start time and an anomaly flag, and lets you preview or save them individually. A single saved session is exactly what you want to hand to the maintenance assistant.
Crash and reboot triage
Section titled “Crash and reboot triage”If a log stops mid-shift and then shows a boot banner, the GCU reset. The banner carries the reason as Reset cause: 0xNN, and DUMP_STATUS repeats the same byte on its RESET_CAUSE line. Read the number:
The Printed as column is the firmware’s own word for each bit, verbatim, mixed case and all.
| Code | Printed as | Meaning |
|---|---|---|
0x01 | power-on | Power-on. The supply collapsed, or the car was just switched on. Mid-shift, this is the valve’s return current dragging the ground rail down. |
0x02 | brownout-core | Brownout on the chip’s core supply. The 12 V feed sagged hard. |
0x04 | brownout-vdd | Brownout on the 3.3 V rail. Same family of fault, a shallower sag. |
0x08 | NVM | Memory-controller reset. Rare. Mention it if it repeats. |
0x10 | external | The RESET line was pulled: the harness button, a programmer, or noise on the reset wire. |
0x20 | WATCHDOG | The firmware hung for more than half a second and reset itself. |
0x40 | system | A commanded reboot (REBOOT CONFIRM, or the handoff after a flash). |
0x80 | backup | Wake from backup mode. Rare. |
More than one bit can be set at once, so read it as a set of flags rather than a single value.
Repeated power-on or brownout resets during shifts point at wiring and grounding, not firmware — a solenoid firing can drag the supply down. Check the power and ground paths in Shift Harness and GCU.
Repeated external resets that nobody asked for are a different fault: the reset wire runs the length of the harness next to a shift-valve wire, and can pick up the switching noise. Both cases are worth a call to Rush Auto Works rather than a firmware reflash.
Reading the Log
Section titled “Reading the Log”You don’t have to do any of this yourself — hand it to the assistant. But if you want to read it, here’s what you’re looking at.
A saved capture mixes four kinds of line:
- Live telemetry —
HB(heartbeat) andAIMlines once a second, plus per-shiftSHIFT/VALVE/COUNTtraces, stamped with uptime as[HH:MM:SS.mmm]. - Flash records — the
DUMP_ROLLING/DUMP_EXCEPTIONSoutput, stamped in raw milliseconds like[1297638], plus wall-clock time once the AiM dash has a GPS fix. - Command responses —
OK ...,ERR ...,VERSION ..., framed byBEGIN/END. - Boot banners and warnings —
RESET_CAUSE,WARN ....
The heartbeat (HB) line
Section titled “The heartbeat (HB) line”Once a second the GCU prints a health snapshot:
[00:01:49.001] HB phase=0 shifting=0 g=2 cg=2 src=GP rpm= 8190 psi= 81 nt_mode=MOTO drop=00000 pdrop=00000 ghosts=00000 doubles=00000 rpmv=1 gearv=1 ...The Live Data tab parses this into a dashboard, but the raw line is worth knowing:
g=andcg=— gear from the GCU’s own sensor, and gear from the ECU over CAN. They should agree.255means unknown.src=— where the gear reading is coming from.GPis healthy.FALLmeans no gear data at all, safety gates off, and matches the amber flashing LED.rpm=andpsi=— engine RPM over CAN, and tank pressure. Pressure should sit in the compressor band, 70–90 PSI by default.- The error counters —
drop,pdrop,ghosts,doubles,bo,emi— should all be zero and stay zero. A growingghosts=oremi=means electrical interference on the paddle wiring. Anybo=at all is a CAN bus fault.
AIM lines are the dash side of the picture: wall-clock time from the dash’s GPS, plus speed, throttle, and brake, once a second. No AIM lines at all means the dash is off or the CAN link between dash and GCU is down.
Watching the compressor and tank pressure
Section titled “Watching the compressor and tank pressure”Watch psi= across consecutive heartbeats. It should climb while the compressor runs (yellow flashing LED) and stop at the cut-out pressure. A compressor that cycles rapidly or never shuts off shows up plainly in that trace — then follow the leak-hunting steps in Shift Debugging, which apply to every car.
Per-shift traces
Section titled “Per-shift traces”Every shift gets an ID like #00042 that appears on every line belonging to it, so you can follow one shift from paddle pull to completion:
[00:04:12.101] SHIFT #00042 start src=user dir=DOWN from=3 tgt=2 nt_mode=moto rpm= 7100 psi= 78 cl=1 tmo= 190 in_id=0117[00:04:12.103] VALVE #00042 DOWN HIGH cmdr=main[00:04:12.165] SHIFT #00042 gchange g=2 at= 62ms[00:04:12.167] SHIFT #00042 success from=3 to=2 in= 64ms[00:04:12.243] SHIFT #00042 complete total= 142msA failed shift prints SHIFT #NNNNN fail instead, with the gear it actually landed in — landed=0 is the classic false neutral — and a reason=. In the flash records, the event names that matter are SHIFT_CL_TIMEOUT, MISSHIFT_RETRY, GEAR_MISMATCH, and PRESSURE_CRIT. Those are the story. The SHIFT_OK records are the background.
src= on the start line says who asked for the shift: user is a paddle pull, nt is the neutral button, auto is auto-downshift, retry is the firmware retrying a missed shift, and prog_neutral is the progressive neutral finder.
Shift counters
Section titled “Shift counters”DUMP_STATUS reports six running totals:
SHIFT_COUNTS up_ok=31 up_fail=16 dn_ok=35 dn_fail=13 nt_ok=3 nt_fail=0The flasher turns the miss rate amber above 20%.
All six reset on a power cycle, so read them before you switch the car off. SHIFT_BLOCKS money=N boundary=N invalid_can=N is the separate count of shifts that were refused before the valve ever fired: money is an over-rev save, boundary is asking for a gear that doesn’t exist, invalid_can is missing engine data.
Event names
Section titled “Event names”Every flash record carries one of these names, after the [<ms>] timestamp and whatever wall-clock context it earned — the name is not the first thing on the line. A record carries the wall clock if the GCU had one when the record was written out, so a log from a car whose dash never got a GPS fix has none at all, and the first records of a session can be missing it while later ones have it. The ones marked fault additionally carry (MM:SS.mmm sess), lap:N and thr:N latg:N long:N. lap:N, thr: and the G pair are frozen at the moment the record was written, and lap:N is missing when the dash was not alive then. The session time is rebuilt when the log is written out, so it appears whenever the dash has broadcast session time at any point in the boot. thr:65535 means the dash was absent. latg: and long: read 0 when the dash sent no G data, and a car really pulling 0 g reads the same, so a 0 there tells you nothing either way. DUMP_EXCEPTIONS shows only the first eight names below (the four SHIFT_BLOCK_* refusals, PRESSURE_CRIT, the two CAN_TIMEOUT_* names, CAN_ERROR) plus SERIAL_OVERSIZE; every other fault is in DUMP_ROLLING only, so a missing GEAR_MISMATCH in the exceptions dump does not mean it never fired.
| Name | Meaning |
|---|---|
SHIFT_BLOCK_MONEY | fault. A downshift was refused: it would have landed at or above the over-rev limit. |
SHIFT_BLOCK_INVALID_CAN | fault. A shift was refused because gear or RPM data was stale or invalid. |
SHIFT_BLOCK_LOW_RPM | fault. A shift was refused because RPM was too low. |
SHIFT_BLOCK_LOW_GEAR | fault. A shift was refused because the car was already in the lowest gear that direction allows. |
PRESSURE_CRIT | fault. Tank pressure reached 110 PSI. |
CAN_TIMEOUT_RPM / CAN_TIMEOUT_GEAR | fault. The ECU’s RPM or gear stopped arriving. |
CAN_ERROR | fault. CAN bus fault, or the gear sensor went invalid in the middle of a shift. |
SHIFT_OK_UP / SHIFT_OK_DOWN | A shift completed. The body is the full trace for an interesting shift, or a one-line g:2->1 rpm_pre:7276 dur:120ms summary for a clean one. |
SHIFT_OK_NT_UP / SHIFT_OK_NT_DOWN | A neutral-button shift completed, into or out of neutral. |
SHIFT_FAIL_UP / SHIFT_FAIL_DOWN | fault. The shift did not reach the gear it aimed for. Two refusals also land here without the valve ever firing: an upshift when already in 6th, and either direction when the safety check returns something it does not recognise. Look for a blocked: line just before it. |
COMPRESSOR_ON / COMPRESSOR_OFF | The compressor relay changed state. Normally that is the automatic hysteresis at tank_min_psi and tank_max_psi (the tunables above), but the critical-pressure cutout and a manual COMPRESSOR command are logged the same way. Constant rapid cycling is an air leak. |
BOOT | The firmware started. A new session. |
HEALTH | A periodic health snapshot. |
SHIFT_CL_OK | The gear sensor confirmed the drum reached the target gear. |
SHIFT_CL_TIMEOUT | fault. The shift did not end on the gear it aimed for. gear: is where the drum was. Several things write it, and the message on the record says which: the confirmation window expired, a retry overshot after the target had already been confirmed (Misshift overshoot), the final push-through failed (Misshift legacy failed), or a retry was abandoned (Misshift retry: gear source invalid, Misshift retry: absolute timeout). On that first abandon message gear: is not proof of where the drum was, since the gear source had already gone bad. One at high RPM is noise; a cluster is real. |
NEUTRAL_CL_OK / NEUTRAL_CL_TIMEOUT | The progressive neutral finder found neutral, or gave up (fault). |
GEAR_MISMATCH | fault. The gear source changed. Usually the gear sensor and the ECU disagreeing, which is harmless for about 100 ms after a shift and meaningful when it persists. The same name also marks the car losing every gear source (passive mode) and getting one back. |
MISSHIFT_RETRY | fault. The firmware started a retry. Three things write it: a 1↔2 shift landing in neutral, post-shift validation catching the drum on any wrong gear after the shift had already been confirmed (Post-shift bounce retry), and the final push-through once the retries run out (Misshift legacy escalation). The first two are written before the corrective pulse, so they do not prove one fired: the drum can reach the target on its own first. |
TIMESYNC | The wall clock was set from the dash’s GPS time. |
RPM_STALE_DOWNSHIFT | fault. The over-rev check ran on an old RPM sample. The shift was still allowed. |
SERIAL_OVERSIZE | fault. The firmware had to split an over-long USB line. A firmware bug; report it. |
CONSTS_MIGRATED | A saved setting was rewritten: the boot-time conversion to a newer format, or a SET correcting a tank pressure pair someone left inverted. |
BRAKE_SENSOR_FAULT | fault. A brake pressure channel was excluded, or the flap diagnostic tripped. |
VERBOSE | An opt-in bench record of a brake or wheel-speed transition. Only appears if someone turned it on, and only on firmware newer than 5.0.0. |
Command reference
Section titled “Command reference”Commands are plain text, typed into the box below the console. Read commands always work:
| Command | What you get |
|---|---|
DUMP_STATUS | Reset cause, uptime, flash and CAN health, shift counters |
DUMP_EXCEPTIONS / DUMP_ROLLING | Failure-only log / full rolling log |
LOG_STATS | Log file sizes and counters |
GET_VERSION / GET_CONSTS / GET_STATE | Firmware version, all settings, live state |
Anything that writes — test shifts, settings changes, clearing logs — needs Enable Write Access first.
Have the Maintenance Assistant Read Your Logs
Section titled “Have the Maintenance Assistant Read Your Logs”You don’t need to interpret any of the above yourself. The owner maintenance assistant knows the GCU Gen 3 log format and will walk a log with you.
- Pull the log as described above. Use Sessions to save just the session where the problem happened.
- Open Owner Maintenance Assistant in the Driver Toolbox.
- Tell it you have a GCU Gen 3 and that you already have the logs — otherwise it will walk you through pulling them first.
- Paste the relevant part: the session around the fault, not the whole file. Include the boot banner and the
VERSIONline if you have them, plus the lines around the failed shift or reset. - Describe what the car did — “missed the 2→1 downshift into T5, ended up in neutral”. It matches your description against the failure events in the log and cites the manual pages for whatever comes next.
The assistant reads logs with the same reading-gcu-logs skill the firmware team uses: the full line-format guide, every event name, the false-neutral failure signatures, and the crash checklist. A copy lives in this manual’s repository under skills/reading-gcu-logs/, and the same skill ships inside every firmware release zip as skill/reading-gcu-logs/. If you use Claude Code or another assistant that takes skills, install it from either place and hand it your log directly.
Related Pages
Section titled “Related Pages”- Shift Harness and GCU — pin-level electrical reference and the interactive wiring diagrams
- Shift Debugging — symptom-based troubleshooting for the pneumatic and mechanical shift system, on every car
- Legacy GCU — firmware and flashing for the earlier unit
