Documentation
Modified firmware and built-in modules
Built-in wheel modules, safe migration from plugin hosts, plugin-bank cleanup and module settings.
LoEUC firmware now includes its modules in the main firmware image. The app enables and configures them; it no longer uploads executable plugin code. Flashing still requires an image for the exact wheel and stock base. Registry membership does not mean a build has been tested on a real wheel: the firmware card states that separately.
Firmware recognition and migration#
The app recognizes a module host by its live format-2 passport and exact image identity in the bundled registry. Only a recognized build gets module controls. The registry card shows the model, stock base, build, features and validation status. An unknown image requires a separate confirmation before flashing.
Legacy plugin hosts remain view-only: the app cannot establish the version of their installed plugins. Their catalogue is reference material, with no install, individual removal or settings commands. Whole-bank cleanup remains available even when there is no catalogue entry or passport. Update the app together with the firmware. ABI 5 plugin hosts were not released; they are not the migration target.
Lynx-S, Oryx and Sherman P module hosts include motor temperatures, auto-off, parking alarm, PID and directional assist, charge-line diagnostics, power-stage telemetry and PWM beep threshold. Lynx-S also includes the peak-current module. Speed correction, auto light and configurable field weakening are available on Lynx-S, Oryx b39 and Sherman P b14. NOSFET Aeon includes motor temperature, parking alarm, charge-line diagnostics and telemetry, without PID or assist. Existing built-in settings on Lynx 5, NOSFET Apex and Sherman L keep their own interface and have no plugin-bank cleanup action.
Enabling modules#
- Flash the matching modified main image through “Firmware update”. Follow its confirmation and tilt checks; never flash while riding.
- Connect and open “Wheel settings” → “Firmware modules”. Wait for the wheel to identify itself.
- While parked, enable the required module, then use its existing settings editor. The switch follows the wheel's enabled-module mask, rather than assuming a tap succeeded.
After the first migration, modules that change wheel behaviour are off: PID/assist, auto-off, parking alarm, PWM beep, peak current, speed correction and auto light. Data-only modules are on: motor temperatures, telemetry and charge-line diagnostics. Existing module parameters are retained, but a stored parameter does not enable a behaviour-changing module.
Clear plugin bank#
Flashing a new main image does not erase the old plugin bank. The monolith never executes that bank, but an older plugin-host image could execute its contents after a downgrade. Clear it before returning to old firmware.
“Clear plugin bank” erases all 32 pages, including unknown, damaged and partially written plugins. It does not depend on catalogue entries, plugin headers or a compatibility record. Module settings, stock wheel data and calibrations are preserved. The confirmation explains exactly what will be erased.
Keep the wheel parked. On module hosts the app verifies each page in small portions and waits for a fresh passport confirming every page empty. It retries unconfirmed pages a limited number of times, then reports a failure. Progress and confirmation come from the wheel. Legacy hosts cannot prove emptiness: the result says “commands sent, cannot confirm”, or reports that cleanup had no effect if plugin fields remain active.
Disconnection, cancellation or leaving the screen stops the operation. Park the wheel and start again; repeating cleanup is safe. The buttons stay visible but disabled while balancing. Dump playback and demo mode do not expose these actions.
“Reset module settings” is a separate, separately confirmed action on recognized module hosts. It restores defaults and disables behaviour-changing modules, while preserving wheel data and the plugin bank. Success requires fresh confirmation of the default module mask.
An old app may still offer plugin installation on a monolith. The monolith rejects executable writes and old module command identifiers; those old controls cannot configure its modules. Use an updated app.
Modified images are not public downloads. Ask the author for the
appropriate production image. Never flash a DO-NOT-FLASH- emulator image. The section requires
accepting the custom-firmware terms.
Before flashing a NOSFET Apex, use the firmware screen's “Back up calibrations (ConfigData.ini)” action and save the result. This is read-only; the app cannot restore it. Reading that backup has not been validated on a physical Apex.
Parking alarm#
The parking alarm is available for the Lynx-S and NOSFET Aeon. It can only be armed in the real
parking mode, while the wheel panel shows P. Once armed, it remains active even if the wheel is
taken out of parking mode.
A single brief jolt does not start the siren. The module first confirms continued movement, then warns with short beeps and headlight flashes. If the disturbance continues, it sounds a pulsed siren for 30 seconds and then returns to watch mode. If power is removed during an alarm, the siren resumes when the wheel is turned on again.
While armed:
- the wheel does not go to sleep on its auto-off timer;
- the normal long press cannot turn it off;
- a stationary wheel is prevented from entering balancing mode;
- panel buttons are reserved for PIN entry instead of their stock actions;
- a Lynx-S panel displays
ARM P.
The PIN is a sequence of four presses on the three panel buttons. It is created on a dedicated LoEUC screen: press the buttons on the wheel, check the digits mirrored by the app, and then save. The correct sequence disarms without a phone; a wrong sequence immediately starts the siren. The power button neither disarms the alarm nor turns the wheel off, while watching or during the siren. Without a PIN, the alarm cannot be disarmed without a phone: the siren stops on its own after 30 seconds.
The alarm can also be toggled from LoEUC quick actions and a supported external display. The button follows the state echoed by the wheel rather than the tap, so a lost command is not shown as successfully armed.
The latest PIN-enabled alarm has been verified in the firmware emulator. Its sensitivity to wind, surface vibration, and real handling still needs validation on physical wheels.
Pedal feel: Lynx-S PID controller#
The “PID gains” module is only for the LeaperKim Lynx-S 009.0.04. It changes three balancing-loop
gains without replacing the wheel's other settings:
- Ka · push-back — how strongly the pedal resists tilt;
- Kg · settling — how quickly a jolt is damped;
- Kc · pull — how load affects pull; a negative value produces stronger pull.
The old profiles and three opaque sliders have been replaced with a radar containing a separate axis for each gain. The screen always shows the stock value, selected value, and a plain-language description of the expected feel. Stock pedal hardness is on the same screen because the factory gain triplet is derived from it.
Moving a handle only edits a draft. The screen separately shows “Now on the wheel” and “Will become”; writing starts with one “Apply” button and is allowed only while the wheel is stopped. Experienced users can open “Exact values” and set Ka, Kg, and Kc separately. Returning to the centre/Stock disables the override completely and restores the firmware's own calculation.
The change is committed as a transaction: the complete new triplet is prepared separately and then activated together. Losing the connection halfway through should not mix old and new gains. The firmware host independently clamps values to the tested region both on input and on every balancing-loop tick; the app previews when a request has to be limited.
Those checks prevent values outside the researched region. They do not promise that every available combination will suit every rider or remain comfortable at every speed. The bench has verified the limits, stock fallback, and end-to-end application of the gains. Final pedal-feel evaluation must be done cautiously on a physical wheel, starting with a small change in a closed area.
Lynx-S torque-current ceiling (dangerous)#
The “Peak current” module raises the limit up to which the Lynx-S 009.0.04 allows torque
current to be requested, from the factory 380 A up to 420 A, in 5 A steps. The emergency
phase-current trip rises by the same amount with it: at 420 A it becomes 500 A. That is how
the firmware itself is built; the two cannot be changed separately. Thermal derating (the full
limit only with the power transistors at 40–70 °C, never below 350 A) and the 150 A limit on a
Hall-sensor fault work as before.
Any value above 380 A can overheat and burn the controller, including while riding: the wheel cuts out and you fall. Without a bypass, it is best not to touch this at all. Before the module is enabled and before every new value is applied, LoEUC shows this warning and waits for you to tick that you do it at your own risk.
- The value changes only when the wheel is parked, as reported by the firmware (b69 or newer). On a balancing wheel the module refuses the command and the app disables the button.
- The module works only on a Lynx-S with module host b68 or newer and factory limits. On a Sport build (400 / 480 A) it changes nothing and shows “firmware not supported”.
- The module tile shows the limit the firmware actually applies.
- Removing the module does not restore 380 A until the wheel is switched off. Set 380 A before removing it.
Tested on the emulator with the real firmware: the firmware recalculates both limits itself, and the value does not change on a balancing wheel or from commands meant for other modules. Not tested on a real wheel.
Lynx-S, Oryx and Sherman P speed correction#
The “Speed correction” module is part of Lynx-S 009.0.04 from build b74. It corrects speed
and distance inside the firmware, by up to ±20 % in 0.1 % steps. The wheel's screen, its
telemetry, any app and the speed limit all see the corrected values: +3.0 % means the wheel
shows and counts 3 % more than stock. The speed limit and the speed alarms trigger at the
corrected speed. The assist and the InMotion X1 estimator get the corrected speed too. The
motor speed the firmware uses to decide the wheel is standing still is not changed.
- The correction applies as soon as the wheel is switched on; no phone is needed.
- Without X1 the value can be changed while the wheel stands still, even with you on it. With the X1 estimator selected it can be changed only while parked: X1 derives acceleration from the speed, and a jump in the correction while riding would move the pedals.
- While the module is on, the app does not apply its own speed correction, or it would be applied twice. The “Speed and accuracy” screen shows the correction the wheel applies.
- With the module off, speed and distance are computed exactly as in the stock firmware.
- From Lynx-S b77 (and on Oryx b39 / Sherman P b14) the correction applies to the trip and the odometer stays as the factory counts it: it is the wheel's history that servicing goes by, and a tyre correction has no business rewriting it. On b74–b76 the correction changes the odometer too.
Checked on the emulator with the real firmware: at 0 and with the module off the firmware computes speed and distance byte for byte as stock, and with a correction exactly by the set percentage. Not checked on a real wheel.
Lynx-S, Oryx and Sherman P auto light#
The "Auto light" module is part of Lynx-S 009.0.04 from build b75, Oryx b39 and Sherman P b14. It does what the app's
auto light does, but by itself, in the firmware — no phone needed: ride off and the low beam
comes on, stop and it goes out.
- On by speed; off by speed, by a stop timer or by pedal angle (the wheel picked up or laid down); high beam above its own threshold and back to low 5 seconds after dropping below. The module has no time-of-day window.
- On the wheel, auto light is switched on and off by holding the light button for 2 seconds: one short quiet beep means on, two mean off. A normal short press still switches the light, and a normal long press (about a second) still switches the second light.
- Switching the light by hand — with the wheel's button, from LoEUC or from another app — turns auto light off. Turn it back on with the same hold or from the app.
- The auto light state survives switching the wheel off. Changed while riding, it is saved once the wheel is parked.
- While the module is on, the app's own auto light stays idle so that two automations do not fight over one light; the Automation section says so.
The app shows the current value of every module setting from Lynx-S b77, Oryx b39 and Sherman P b14. On b75 and b76 the wheel reported only whether auto light is active and applied the other settings silently, so the module screen showed defaults for them.
Checked on an emulator running the actual firmware code. How the firmware reads the light button was taken from its code and has not been checked on a real wheel.
Lynx-S, Oryx and Sherman P field weakening#
The "Field weakening" module is in Lynx-S 009.0.04 from build b78. At high speed the wheel
weakens the motor field so the battery voltage is enough; stock starts at about 59 % PWM and
ramps linearly to 75 A by 97 %. The module makes that ladder configurable:
- Start — below this PWM the field is not weakened (50–85 %). A later start may reduce current at cruising speed, but raises PWM at the same speed.
- Full at — the PWM where weakening reaches its maximum.
- Maximum FLU — up to the native High speed ceiling plus 10 A; normal mode retains the manufacturer's ceiling. Defaults remain native.
| Model | High speed default | Maximum HS setting | Normal mode |
|---|---|---|---|
| Lynx-S | 75 A | 85 A | 50 A |
| Oryx | 60 A | 70 A | 45 A |
| Sherman P | 70 A | 80 A | 48 A |
| Lynx | 50 A | 60 A | 30 A |
| Sherman L | 70 A | 80 A | 40 A |
The native +10 A limit starts with Lynx-S b80, Oryx b40, Sherman P b15, Lynx b4 and Sherman L b4. Previously stored higher maxima are clamped to the new ceiling; all other settings are retained.
Oryx b39 and Sherman P b14 support all three modules. The ladder, slope relative to stock and Stock button use the connected model's defaults. Voltage correction remains. On these builds, correction changes speed and trip while the odometer remains stock.
The module page draws the ladder next to the stock one. If the start and the full point are too close, the ladder is too steep and the wheel lowers the maximum; the chart and the line under it show to what. Values change while the wheel stands still.
Important. Less or later weakening raises PWM sooner, so the wheel beeps and tilts back earlier. More and earlier does the opposite: PWM reads lower while the torque reserve is thinner than it looks. A disabled module or stock values run the factory law unchanged. Before the module is enabled and before every write of new values LoEUC shows this warning and waits until you confirm you do it at your own risk.
Checked on the emulator with the real firmware: with stock values the current request matches the factory one on every recorded tick, with custom values it follows the module law; acceleration to 110 km/h, a hard push at 96 km/h and the top speed with an 85 % start match stock. Not checked on a real wheel.
New Lynx b3 modules#
Additional settings offers auto light, speed/trip correction, field weakening and separate acceleration/braking assists. All new features start disabled; existing PID, alarm and PIN settings are retained.
Auto light switches the stock headlight on/off; a separate high-beam mode is unavailable. Manual changes pause automatic control. Speed correction changes speed and trip while retaining the stock odometer; the app does not apply a second correction. Each assist has its own strength and angle limit; the stock ThoRa setting still applies. Disabling assists restores stock behavior.
Lynx has its own PWM scale: native weakening starts at about 67% and reaches full strength at about 94%. From b4 the configurable maximum is 60 A in HS, versus 50 A native; normal mode retains its native 30 A ceiling. Voltage adjustment and the ladder slope limit remain. Settings change only at standstill.
Code replaces the stock StR text diagnostic printer, whose pages are no longer printed. Calibration and LittleFS are preserved. This is experimental firmware; bench checks do not constitute validation on a physical wheel.
New Sherman L b3 modules#
Sherman L 006.0.10 b3 adds auto light, speed/trip correction and configurable
field weakening under Additional settings. All three are off after installation.
PID, independent directional assists, parking alarm and the other b2 functions remain.
Upgrading to b3 resets our module settings once: PID, assists, PIN and alarm state. Four journal pages now hold code; old snapshots on the two retained pages are ignored too. Newly saved values survive subsequent boots. The image ends before LittleFS.
- Auto light controls the stock headlight without the phone, using speed, stopping or pedal angle. A manual light change pauses automation; enable it again in the app. This implementation has one light mode, no separate high beam or new button gesture.
- Correction is ±20% in 0.1% steps. Speed and trip change, the odometer stays stock. The app does not apply a second correction while the module is enabled.
- Native weakening runs from about 66% to 97% PWM, with 70 A in High speed and 40 A in normal mode. From b4 an explicitly selected HS maximum can reach 80 A, subject to a slope limit relative to the native law. Disabled or at stock settings, the module retains the native regulator; voltage correction remains.
Settings change only at standstill. While the auto light module is enabled, phone auto light stays idle. Emulator checks do not replace testing on a physical wheel.
Validation status#
Main-image flashing from Android has been tested on a physical Lynx-S and NOSFET Aeon. That does not validate the new monolithic builds, module controls, cleanup or reset on hardware. Use the per-build firmware card for the recorded bench and physical-wheel status. The new module and maintenance paths on iOS have not been validated on a physical wheel.
If the wheel no longer boots after a flash, do not try random images. LoEUC Garage provides a separate “Try firmware recovery” action, but recovery is not guaranteed either and must only be used with an image for that exact model.