User guide

EucBuddy — User Manual

Everything you need to use your EucBuddy — buttons, favorite wheels, the six ride screens, MyBuddy and Zap Dash, weather, ride history, WiFi, charging, charge control with a smart plug and updates. Covers M5Stick-S3 and LilyGO T-Display-S3.

Checked against firmware 0.5.68. Available builds may differ by device and channel. On-device labels are in English on both boards.

Section 1

Device & buttons

EucBuddy runs on M5Stick-S3 and LilyGO T-Display-S3. Both use the same A/B actions; their button placement and power controls differ.

PartWhat it does
A Main button Large front button on StickS3; upper orange button on T-Display-S3. Short press = next / select; hold ~1.2 s = open menu.
B Action button Small side button on StickS3; lower orange button on T-Display-S3. Short press = confirm / back (context-dependent, e.g. headlight, horn or trip reset — the ride-screen action is configurable, see Section 6).
PWR Power On StickS3, the side button turns on, wakes and switches off the device. On T-Display-S3, use either A or B to wake from sleep; its reset key is handled as a sleep request during normal operation, not a battery-disconnect switch. Both boards have Power off in the menu. Section 11.
USB-C Charging. Plugging into a powered-off device opens the charging screen (Section 10).
Throughout this guide A is the main button and B is the action button.
M5Stick-S3
M5Stick-S3 — EucBuddy runs on it
LilyGO T-Display-S3 with A, B and power controls labelled
LilyGO T-Display-S3 — the same controls, a wider screen
Section 1.1

T-Display-S3: fitting the battery

The T-Display-S3 case arrives without its battery: you fit it once, with a small Phillips screwdriver, in about five minutes. Use the battery listed on the Get one page — other sizes and connectors will not fit. M5Stick-S3 has a built-in battery and needs none of this.

Unplug USB before you open the case, and never use a battery that is swollen, dented or has damaged wires.

The photos show a 702060 test cell. Buy the 702050 battery from the Get one link — the size printed on yours will differ from the photos.

T-Display-S3 case with its two screws marked, next to the battery and a screwdriver
1Open the caseUnscrew the two screws. The other side of the housing is held by a snap-fit clip: lift the housing from the screw side until it releases.
Opened case, the board, the orange parts and the battery laid out
2Fit the batteryPlace the battery between the two black plastic pieces. Note how the orange parts sit before you remove them — they go back exactly the same way and are not reversible.
Battery seated in the case and plugged into the board connector
3Connect itPlug the battery into the connector on the main board. Route the cable so it is not pinched anywhere: a pinched cable can wear through its insulation over time and short-circuit.
Close-up of the battery plug showing the correct wire orientation
4Check the polarityThe connector should not go in backwards, but check that your battery arrived with its wires crimped correctly. The photo shows the correct red/black orientation.
Closing the case and inserting the two screws
5Close it upPut the orange parts back. Holding them in place, slide one side of the housing into the clip and press down on the screw side. Insert the screws and tighten them gently — do not overtighten. Check again that the battery cable is not pinched.

Then charge it over USB-C (Section 10) and continue with first start & pairing.

Section 2

First start & pairing

1 · Turn it on

On StickS3, press PWR. On T-Display-S3, connect USB-C for the first start; use A or B to wake it later. After the splash you'll see the scan screen with an animated radar — EucBuddy is looking for nearby wheels.

2 · Pick your wheel

Found wheels appear in a list (the "SCAN (n)" counter is at the top). Press A to move between entries.

3 · Connect

Press B to connect to the highlighted wheel. EucBuddy remembers it and will reconnect automatically next time.

Too many devices listed? Turn on Only EUC in the menu to show only recognised wheels (Section 6).
EucBuddy works with Begode/Gotway, KingSong, Veteran/Leaperkim, Nosfet and InMotion wheels — it detects the brand automatically and decodes each one's telemetry. Each brand gets its own accent colour on the dashboard.

Through the EUC World app

A phone running EUC World can hand its telemetry on over Bluetooth, so EucBuddy can ride along with a wheel it has no decoder of its own for. Turn the app's BLE server on and it appears in the scan list as EUC World …; connect to it exactly like a wheel.

  • You get speed, wheel battery, distance, temperature and the energy used — rides are logged just like any other.
  • The app's link doesn't carry pack voltage, current or PWM, so those read “--” (and no odometer total, since the count is the app's ride, not the wheel's life).
  • EucBuddy only ever listens here — the headlight, horn and speed limiter need a direct link to the wheel and do nothing over this one.
Section 3

Favorite wheels

Star the wheels you ride so they're always easy to find. Favorites jump to the top of the scan list and get a star ★. You can star up to 32 wheels.

ActionHow
Add / remove a star On the scan list, hold B on the highlighted wheel (high beep = starred, low = unstarred). Hold again to remove.
Give it a name On the WiFi panel's My Wheels page (Section 9) type a custom name for the wheel and press Save.

A custom name then shows in place of the Bluetooth name on the scan list, and top-left on the Dashboard instead of the vendor (e.g. "My Sherman" instead of "Veteran"). Long names scroll by themselves on the highlighted row.

Favorites are remembered across power-offs and firmware updates, and a favorite stays visible on the scan list even with Only EUC on.
Section 4

The six ride screens

Once connected, a short press of A cycles six screens (default order): Dashboard → Custom 3 → Power → Trip → Stats → Custom 1 and back. You can reorder them or hide ones you don't use in the WiFi panel (Section 9). Two of the six are yours to configure — Custom 3 (three values) and Custom 1 (one value) — under Dashboard setup → Dashboard config (Section 6). Each screen is the same idea — a different headline value:

Dashboard screen

1 · Dashboard — live ride

  • Big speed (cyan below 30 km/h, yellow from 30, red from 45 — keyed on real km/h, not miles).
  • Wheel battery %, voltage and current.
  • A short press of B runs your Press B action — headlight by default (if your wheel supports it), or horn. Set it under Dashboard setup (Section 6).
Custom 3 screen, showing PWM

2 · Custom 3 — three values, your choice

  • One big value on the left, two small ones stacked on the right — you pick all three.
  • Out of the box it's the classic PWM safety screen: PWM % big (how hard the motor works; near 100 % = near a cut-out) with speed and voltage beside it. green <80 · yellow 80–90 · red 90+ (back off).
  • Change any slot under Dashboard setup → Dashboard config or in the WiFi panel; short B = your Press B action (headlight by default).
Power screen

3 · Power — battery & output

  • Tall battery gauge and percentage down the left, with voltage and watts below it. The watts are what the pack is actually delivering, and take the same colours as the current below — pink drawing, cyan on regen.
  • Current is the hero on the right — pink when drawing, cyan on regen — over a slim 0–100 A load bar.
  • Speed and temperature sit in the footer.
Trip screen

4 · Trip — distance

  • RIDE — distance of the current ride.
  • TRIP — resettable counter.
  • Press B to reset the trip (confirm popup).
Stats screen

5 · Stats — per-wheel stats

  • TOTAL — wheel odometer.
  • Ride count, top speed and peak current.
  • Press B to clear the peaks (confirm popup).
Custom 1 screen

6 · Custom 1 — one value, your choice

  • A single value, big and centred — you pick which.
  • Speed, battery, voltage, current, power, temp, PWM, trip, ride, total, ride time or energy used.
  • Set via Dashboard config in Dashboard setup or the WiFi panel; short B = your Press B action (headlight by default).

PWM — which wheels report it

Some wheels send their real motor duty over Bluetooth — there you see the exact figure, tagged plainly “PWM”. Wheels that don't report it now show no PWM at all by default: the value reads “--” with a “set calib” prompt. Give that wheel a one-time PWM calibration in My Wheels (Section 6) and EucBuddy then estimates the duty from speed and voltage, tagged “PWM est” — a useful guide, not a precise gauge.

WheelPWM value
InMotion V2 (V11/V12/V13/V14)Exact (from the wheel)
Veteran / Leaperkim / NosfetExact (from the wheel)
Begode / GotwayExact on models that send it, otherwise needs calibration
KingSong · classic InMotionNeeds calibration (then shown as “PWM est”)

Until a wheel that can't report PWM is calibrated, every PWM readout — on Custom 3, on Custom 1 — stays “--”, and the PWM alert won't fire for it.

Ride time & energy

Any Custom slot can show TIME — how long the current ride has been running, as mm:ss, rolling over to h:mm:ss once a ride passes the hour — or ENERGY — how many watt-hours this ride has taken out of the wheel's pack. Pick them like any other value under Dashboard setup → Dashboard config, or in the WiFi panel.

  • Both count only while the wheel is connected. A disconnect, a drop-out or a full power-off simply pauses them — EucBuddy never guesses what happened while it wasn't listening.
  • They survive sleep and reconnect: Power save keeps counting with the screen off, and Power off resumes where it left off on wake (the powered-off minutes aren't counted, because nothing was measured).
  • Energy is what you consumed — regenerative braking doesn't count backwards, so the figure only ever goes up.
  • Both are saved with the ride, so you can see them later in Rides (Section 12).
The top-right of every screen shows EucBuddy's own battery (in % or V — your choice in the Battery menu). T-Display-S3 hides unreliable readings on USB and while settling after unplugging; see Charging.
All six ride screens share one background tint — Black, Pink, Blue, Green, Teal or Yellow, all kept deliberately near-black so the telemetry stays readable. Pick it under Dashboard setup → Background, or in the WiFi panel — see all six side by side.
Section 5

Button cheat-sheet

WhereButtonAction
Reconnect screen
(after wake)
B shortAsk to cancel the reconnect — a second B confirms and goes back to scanning
A shortDismiss that question and carry on reconnecting
Scan screenA shortNext wheel in the list
B shortConnect to highlighted wheel
B holdStar / unstar the wheel (favorite)
A holdOpen the main menu (carousel)
Ride screensA shortNext screen (default: Dashboard → Custom 3 → Power → Trip → Stats → Custom 1)
B shortOn Dashboard/Custom 3/Power/Custom 1: your Press B action — headlight (default) or horn · on Trip/Stats: reset (confirm popup)
B holdYour Long press B action — Speed limiter (arm / restore the cap on Begode, KingSong, supported modern Leaperkim/Nosfet wheels and the InMotion P6 and V14; enable Limiter first), Horn or headlight; Section 6
Main menu
(carousel)
A shortNext icon (Dashboard · MyBuddy · Weather · Charge control · Rides · My wheels · Blackbox · Alerting · Connections · Dashboard setup · Settings · Info · Disconnect when connected)
B shortOpen the highlighted item
A holdBack to where you were
My WheelsA shortList: next wheel · detail: next row
B shortList: open the wheel · detail: open EUC health / its rides / adjust calibration (+) / clear
B holdDetail (Spin/Volt row): fast-adjust the calibration value
A holdBack (detail → list → carousel)
EUC healthA shortScroll the health rows
B shortAsk the connected wheel for a fresh reading
A holdBack to the wheel's detail screen
Settings listA shortNext item
B shortSelect / change value
A holdBack
Rides viewerA shortScroll the ride list · in details: next page
B shortOpen / close a ride's details
B holdDelete (list: all rides · details: this ride) — confirm popup
MyBuddyB shortFeed one zap from the bowl, or pet if empty / fully grown
B holdOpen the MyBuddy / Zap Dash selector
Buddy selectorA / BA switches between MyBuddy and Zap Dash; B opens the selected item
Zap DashTap A / BA = duck (about 0.6 s) · B = jump
Hold A / BEnd the run: A (~1.2 s) → main menu; B (~1 s) → Buddy selector
Charge
Charge pageA shortStatistics screen, and back
B shortSwitch the plug on or off
B holdCharge setup
A holdBack to the carousel
Control charging view
(USB, device was off)
A shortNormal start
B shortSwitch the plug (no plug set: either key starts normally)
Charging screen
(Battery / Weather)
A / BNormal start. While an alert is ringing, the first press only silences it.
Charge setup · Connections · Alerting · Blackbox · Dashboard setupA / BA = next row · B = change · hold A = back
WeatherA holdBack to the menu (the page has no other controls — Section 8)
Any popupB / AB = yes/confirm · A = cancel
Power / wakePWRStickS3: turn on / wake / switch off. T-Display-S3: wake with A or B. See the board-specific instructions in Section 11.
The inactivity timer (auto-sleep) is reset by a button press — not by riding. So the device won't sleep while you're tapping on it. Working in the WiFi panel counts as well, and a CSV download holds it awake until it's finished (Section 9).
Section 6

Menu — every option

Hold A from any screen to open the main menu — an animated carousel of icons. A moves between them, B opens the one in the middle, holding A takes you back. The item you're already on is hidden, so you only see where you can go. Names below are the on-device labels:

IconOpens
DashboardBack to the live ride screens (or the scan list when no wheel is connected).
MyBuddyThe virtual pet. Hold B there to choose MyBuddy or Zap Dash.
WeatherThe weather station — clock, temperature, sky and forecast (Section 8). Needs a stored home network.
Charge controlThe charging wheel beside the smart plug feeding its charger, with an automatic switch-off at a level you choose. Hold B there for Charge setup (Section 10.2). The WiFi panel shortens this tab to Charge.
RidesThe Rides viewer — your stored ride history (Section 12).
My wheelsYour favorite wheels — per-wheel rides, lifetime totals and PWM calibration (see below). The WiFi panel writes this as My Wheels.
BlackboxBattery-map logging — records a battery curve to the device (see below).
AlertingSpeed limiter + on-device warning beeps (see below).
ConnectionsEverything WiFi: turn it on, pick Access point or Home WiFi, and see the live link status (see below).
Dashboard setupRide-screen button actions, the two Custom dashboards, background tint, units and temperature unit.
SettingsGeneral device, connection and power options.
InfoDevice ID, firmware version, power-on counter, lifetime ride count and battery. The power-on counter survives a factory reset (a true lifetime total).
DisconnectDrops the wheel and goes back to scanning. Only appears while a wheel is connected. Opened from a ride screen or the scan list, the carousel starts centred on it; from Weather, Charge, Settings and the rest it starts on the first remaining icon.

Dashboard setup

Choose Dashboard setup from the carousel to configure how ride screens behave. Press A to move and B to change a value. The list shows a few rows at once and scrolls as you move through it.

OptionWhat it does
Press BAction for a short B press on Dashboard / Custom 3 / Power / Custom 1: Light (default) or Horn.
Long press BAction for holding B on a ride screen: Speed limit (default), Horn or Light.
Dashboard config >Opens a submenu that assigns a telemetry value to each Custom slot (see below).
BackgroundThe shared backdrop tint for all six ride screens — Black, Pink, Blue, Green, Teal or Yellow. Live swatches sit in the row, so you can see what you're picking. Every tint is deliberately near-black and flat so the telemetry stays crisp — all six are shown below.
Unitskm or miles — converts every speed and distance on screen. MyBuddy is exempt — Section 7.
Temp unit°C or °F — switches every temperature reading on screen.

Same dashboard, one setting — Background repaints only the backdrop. Telemetry, colours and layout never change. Blue is the default; B steps through them and the row's live swatches show what you're picking.

24 km/h
Black
24 km/h
Pink
24 km/h
Bluedefault
24 km/h
Green
24 km/h
Teal
24 km/h
Yellow

The tints are lifted a few percent here so the hues survive a bright phone screen — on the device they sit much closer to black, which is exactly what keeps the telemetry crisp. The coloured frame is just this guide's swatch border.

Dashboard config — the two Custom screens

Four rows, one per slot. B steps each one through the same list of values: speed, battery, voltage, current, power, temp, PWM, trip, ride, total (odometer), ride time (TIME, mm:ss and h:mm:ss past an hour) or ride energy (ENERGY, Wh) — the last two are explained in Section 4.

RowFillsDefault
Custom 1The single big value on the Custom 1 screen (6th by default).Speed
Custom 3 mainThe large left-hand value on Custom 3 (2nd by default).PWM
Custom 3 upperThe small upper-right value on Custom 3.Speed
Custom 3 lowerThe small lower-right value on Custom 3.Voltage

Leaving the defaults alone gives you exactly the old fixed PWM screen. Whenever PWM sits in the Custom 3 main slot it keeps its safety colours and the set calib / PWM est tags described in Section 4. All four slots are also in the WiFi panel.

Settings

From the carousel pick Settings. Move with A, change with B. Names match the on-screen labels.

OptionWhat it does
BrightnessScreen brightness — 3 levels.
Flip screenRotates the screen 180° — for mounting EucBuddy upside-down. The buttons keep working as labelled.
Intro animPlays the animated startup splash (on by default). Turn it off for a quicker turn-on — cold boot goes straight to the scan screen.
SoundUI, MyBuddy and Zap Dash sounds on / off. StickS3 has a speaker. Standard T-Display-S3 builds have no speaker, so this row is hidden (safety alerts use a flashing backlight instead).
Auto-sleepInactivity timeout: 30 s / 1 min / 2 min / 5 min / Off.
Sleep typeWhat that timeout does while connected to a wheel: Power save (screen off, keeps logging the ride) or Power off (full shutdown, reconnects on wake). Disconnected, it always powers off.
Only EUCScan filter — show only recognised wheels (recommended: on).
BatteryWhat to show top-right for EucBuddy's battery: percent (%) or voltage (V).
Begode VBegode pack voltage (67–168 V). Set it to match your wheel so the displayed voltage is correct.
Factory resetRestores defaults and erases all stored rides. Opens a confirm popup (B = yes).
Power offTurns the device off.
Looking for Disconnect or WiFi? Disconnect is on the carousel while a wheel is connected; WiFi, the link type and the connection info are on the Connections screen.
The Units option in Dashboard setup flips every speed and distance on every screen between kilometres and miles instantly — nothing else changes. It's also in the WiFi panel; storage stays metric internally.

My wheels — favorite wheels & PWM calibration

The carousel's My Wheels icon lists every wheel you've starred (Section 3). If you haven't starred any yet, it prompts you to hold B on a wheel in the scan list. A moves down the list, B opens the highlighted wheel. A small cyan dot means the wheel already sends real PWM; a green dot means you have set a PWM estimate calibration. Each wheel's detail screen shows:

RowWhat it does
NameThe heading shows the wheel's given (custom) name when you've set one (Section 3), otherwise its Bluetooth name; a BT line just below always shows the real Bluetooth name, so both are visible at once for a renamed wheel.
VendorThe detected brand (display only), in the brand's accent colour.
EUC healthA one-word verdict — Good, Fault or Unknown — for what this wheel reports about itself. Press B to open the full health screen (below).
RidesThis wheel's lifetime ride count — a running total that survives deleting individual rides and is cleared only by a factory reset. Press B to open a rides list filtered to just this wheel.
SpinPWM-calibration spin speed — the wheel's no-load “spin” (lift-up) speed, 20–150 km/h. B steps +0.5; hold B to fast-adjust (wraps at the top). On a wheel that already sends PWM this row reads PWM = Native.
VoltPWM-calibration voltage — the pack voltage the spin speed was measured at, 10–180 V. Same B / hold-B editing. Native PWM: Calibration = Disabled.
Clear calibPress B to remove this wheel's estimate calibration. Native PWM: the row reads Native PWM and does nothing.

Why calibrate? Wheels that don't report their real motor duty (KingSong, classic InMotion, older Begode) show no PWM until you set the two values above — then EucBuddy estimates the duty from live speed and voltage using your wheel's calibration values (marked “PWM est” on the Custom 3 screen). Wheels that already send real PWM don't need this. Calibration is stored per wheel, kept across power-offs and updates, and can also be set from the WiFi panel's My Wheels page section (Section 9). Editing it while that wheel is connected updates the live estimate at once.

EUC health

Open the EUC health row of a wheel's detail screen to see the diagnostics that wheel broadcasts about itself. A scrolls the rows, B asks the connected wheel for a fresh reading, holding A goes back.

RowShows
OverallThe summary verdict: Good, Fault or Unknown.
ControllerController status and its temperature.
Hall sensorsHall-sensor status.
Battery · BMS 1 / 2Per-pack status, then separate rows for min / max cell voltage and temperature. Cells outside 2.50–4.25 V, a spread over 0.15 V, or a temperature outside −20…80 °C read as a fault. Anything the wheel never sends stays Not sent.

The header says HEALTH LIVE when the wheel is connected right now and HEALTH LAST when you're looking at the last snapshot EucBuddy saw — dimmed, so you can tell at a glance. Missing fields read Not sent rather than pretending to be OK. How much you see depends entirely on how talkative your wheel is.

Blackbox — battery map

The carousel's Blackbox icon opens a small logger that records a battery curve to the device (about one row per second — handy for tuning). Inside:

OptionWhat it does
Battery mapLogging on / off.
SourceHost (EucBuddy's own battery) or Wheel (the connected wheel). Switching clears the file.
Delete logErases the log (confirm popup). The header shows the file size and free space.

Download the CSV from the WiFi panel (Section 9).

Alerting — speed limiter & warning beeps

The carousel's Alerting icon groups the speed limiter and the on-device warning beeps. Move with A, change with B.

OptionWhat it does
LimiterMaster on / off for the speed limiter — off by default. While off, holding B won't arm the cap and the top-bar glyph shows a cross. Turn it on to use the limiter.
Wheel alertWhile the limiter is armed, also set the wheel's own speed warning to 1 km/h below the cap. Available for KingSong, supported modern Leaperkim/Nosfet wheels and the InMotion P6 and V14. Changed while armed, it waits for the same stop as arming and counts only once the wheel confirms it. This row is grey and cannot be changed while Limiter is off.
Speed limitThe hard-cap value the limiter writes to the wheel, in km/h (5 km/h steps). It only ever lowers the wheel's own maximum: set above it, the wheel keeps its own.
Speed alertBeep when your speed reaches the threshold, plus Speed val — the threshold.
PWM alertBeep when the motor load (PWM) reaches the threshold, plus PWM val — the threshold.
Batt alertBeep when the wheel battery drops to the threshold, plus Batt val — the threshold.
Alerting menu
Alerting menu

Speed limiter (hard cap)

First turn on Limiter — it's off by default. Then, on any ride screen (Dashboard, Custom 3, Power, Trip, Stats or Custom 1), hold B to request the cap (with Long press B set to Speed limit). EucBuddy waits for fresh telemetry showing at most 1 km/h continuously for one second before writing and verifying your Speed limit. A blinking green gauge means pending, not an active cap. A second confirmation beep means the cap was verified. If verification still fails after one retry while stopped, EucBuddy cancels the request and restores the original settings. Hold again after it is armed to restore the wheel's original max. EucBuddy saves the wheel's current limit before changing it, so disabling the limiter restores the rider's original setting.

If Wheel alert is on, arming also moves the supported wheel's own warning threshold to cap minus 1 km/h. KingSong's three alarm thresholds are moved together; Leaperkim/Nosfet use their separate speed-alarm setting; the InMotion P6 moves both of its warning levels and the V14 its single warning. EucBuddy saves every affected value first and restores each one exactly when the limiter is released. Changing the option or cap while armed keeps the original snapshot safe.

InMotion P6 and V14: the cap is written the way InMotion's own app writes it. A cap below the wheel's speed warning moves the warning to cap minus 1 km/h even with Wheel alert off, as the app does; it is restored exactly with the cap, also when the wheel's values were set in mph. On the P6, EucBuddy first opens the wheel's settings session, as the app does, so arming can take a few seconds longer. Support for these two wheels is new and still being tested on real wheels.

KingSong: arming temporarily selects the wheel's beep warning mode, even with Wheel alert off. The original voice mode is saved and restored with the limiter, without changing the light mode. Arming is blocked if that original mode cannot be read.

Stop and wait for confirmation when arming or restoring. If restoration is pending, reconnect to the same wheel and let it complete. Restore the original settings before downgrading firmware or factory-resetting EucBuddy. A limiter is not a guarantee against a cutout.

The horn is a momentary wheel command, not a saved wheel setting. It is supported on Begode/Gotway, KingSong, Veteran/Leaperkim, Nosfet and InMotion; on an unsupported wheel the action simply does nothing. EucBuddy plays a short local confirmation cue as well.

The top-bar limiter glyph

A small glyph and number sit on the top bar, just left of EucBuddy's own battery. The number is the wheel's current max-speed limit in km/h (a dash while it's being read, ∞ if the wheel has no limit set); the glyph shows the state. When you arm the cap, the number becomes your Speed limit value:

82% 50 24 km/h
✕ Cross — offThe Limiter switch is off (the default). Holding B does nothing; the number shows the wheel's own max-speed limit.
82% 50 24 km/h
Grey gauge — readyThe limiter is enabled but not armed — the number still shows the wheel's max. Hold B to arm your cap (high two-tone beep).
82% 25 24 km/h
Green gauge — limitingThe cap is armed — the number is now your Speed limit (25 km/h), active on the wheel. Hold B again to restore the wheel's original max (low two-tone beep).
The speed limiter works on Begode/Gotway, KingSong, supported modern Leaperkim/Veteran and Nosfet wheels and the InMotion P6 and V14. On a Leaperkim/Nosfet wheel EucBuddy enables it only when the current tilt-back and alarm values can be read and restored safely; otherwise arming is blocked. Unsupported wheels hide the indicator and hold-B does nothing. The limiter changes the wheel's own max-speed / tilt-back setting — treat it exactly as you would that setting in the official app.
Begode note: stock wheel firmware offers fixed alarm presets, not a numeric in-wheel speed-warning threshold. The Begode app's configurable “speed reminder” is generated by the phone, so Wheel alert leaves Begode alarm presets untouched.
The EucBuddy Speed / PWM / Batt warning beeps are device-side only — they never change the wheel. When one fires a blinking red letter appears on the top bar (S speed · P PWM · B battery); if several are active they take turns. Being safety warnings, they still sound when Sound is off, and they follow the wheel's real telemetry regardless of the km / miles setting.
On a T-Display-S3 without a buzzer, device-side alerts use a flashing backlight instead of sound. An audible wheel horn is a separate command to the wheel, not the device speaker.
Every destructive action uses the same confirm popup — B = yes, A = cancel. That covers trip / peak resets, deleting rides, deleting the battery log and factory reset.

Connections — WiFi & link info

The carousel's Connections icon gathers everything WiFi in one place. A moves between rows, B changes the highlighted one, holding A goes back. WiFi is off by default. Always starts the config connection at boot; Weather can also use the stored home network.

OptionWhat it does
WiFiOff / Session (until power-off) / Always (every boot). This is the WiFi on/off switch.
TypeAccess point (default) — EucBuddy makes its own hotspot and you join it from your phone (Section 9). Home WiFi — EucBuddy joins your network instead, and the same panel is reachable from any device on it.
Info >A read-only screen: the current Type, the Status, which Network you're on and the Address to type into a browser. It refreshes while connecting, so you can watch it come up.
The charging options — Charge screen, the watched Wheel and its Alert — moved to Charge setup: open the carousel's Charge icon and hold B (Section 10.2).

Using Home WiFi

Save your network's name and password in the WiFi panel (Connections page, Home WiFi card) — no update needed — or use Configure WiFi in the web flasher. For the config panel on your home network, choose Type = Home WiFi, then WiFi = Session or Always. Then open http://eucbuddy.local from any device on that network. If that name doesn't load, use the numeric address shown in Connections → Info.

Not sure which to use? Access point needs no setup and works anywhere — it is the right choice for changing settings out on a ride. Home WiFi is for when EucBuddy sits at home and you want to reach it from your normal network without switching your phone's WiFi over.

Weather on the charger

To show weather while USB is charging a switched-off EucBuddy, set Charge screen to Weather in Charge setup (Section 10.2). Section 8 covers that screen in full — both ways in, the glyphs, colours, forecast strip and city.

Section 7

MyBuddy — your virtual pet

MyBuddy is a little pet living inside your EucBuddy. Open it from the menu (MyBuddy).

  • Tap B to feed one zap from the bowl. If the bowl is empty or your buddy is fully grown, you can still pet it for free.
  • Each full kilometre ridden earns one zap, regardless of km / miles display units. Zap Dash is another way to fill the bowl. Feeding, not just earning, advances your buddy's growth.
  • Hold B to open the MyBuddy / Zap Dash selector. Tap A to switch, B to enter; hold A to return to the main menu.
  • Your buddy looks around, yawns, stretches, spins, winks and hops. Feeding triggers chewing; these reactions don't cost extra zaps or create a hunger penalty.
  • Infrared greetings require two IR-equipped devices (StickS3), both showing MyBuddy. Standard T-Display-S3 has no IR. Greetings stop while the selector or game is open.
  • Give it a name in the WiFi panel (Section 9) — it shows top-left on the pet screen.
  • Hold A for the menu, then Dashboard to ride.

Growth stages: Mten → Aero → Lynx → Sherman → Griffin. Their feeding targets are 30 / 60 / 120 / 240 / 480 zaps per stage (930 total to fill the last one). Your buddy gains accessories as it grows; the same character appears in Zap Dash.

MyBuddy screen
MyBuddy screen
Section 7.1

Zap Dash

Wheel charging? Winter keeping you inside? Take your Buddy for a tiny ride. It rolls forward automatically: jump ground obstacles and duck under overhead hazards. A collision ends the run. No wheel connection or WiFi is needed.

Play while stopped and off the wheel — never while riding.

Start a run

  1. Open MyBuddy from the main menu.
  2. Hold B to open the two-item selector, then tap A to highlight Zap Dash.
  3. Tap B to start, then release both buttons. The screen shows READY for about 0.9 s after you release both buttons.

Two buttons, two moves

InputIn a run
Tap ADuck for about 0.6 s (a little longer as MyBuddy grows). You stand up automatically. Tap again for another duck.
Tap BJump. You must land before jumping again. Jumping cancels a duck.
Hold A ~1.2 sEnd the run and return to the main menu after the result.
Hold B ~1 sEnd the run and return to the MyBuddy / Zap Dash selector after the result.

These controls are the same on both boards and do not use your ride-screen B assignments. On the pictured LilyGO, A is the upper orange button and B the lower one; see button locations.

What lies ahead

The first level needs 10 cleared obstacles, and each level after it two more (12, 14, …). Completing a level earns one zap. The pace picks up as you progress through five environments — we'll leave the later ones for you to discover. An obstacle counts only after it has fully left the screen.

Illustrative frames rendered from the game's scenery, character and HUD code, not device photos. Example values; fonts and status-bar styling are approximated. Your Buddy's accessories depend on its growth stage.

Score, levels and zaps

What to avoid

Sound: on StickS3, Settings → Sound enables short cues for the start, jump, duck, cleared obstacle, earned zap and collision. Standard T-Display-S3 has no speaker; silence is expected.

Zap Dash requires firmware 0.5.00 or later; tap-to-duck: 0.5.01; all five environments: 0.5.02; game sounds: 0.5.03; 10+ obstacle levels: 0.5.05; level counter showing the real target: 0.5.07. Check your version in Info and use an available build for your selected board.

Section 8

Weather

EucBuddy can also be a little weather station: a big clock, the temperature right now, the sky outside and what the next few hours look like. It shows up in two places — as its own screen from the menu, and instead of the battery animation while the device sits on a charger. Both need a home WiFi network stored on the device; the forecast is the only thing EucBuddy fetches from the internet.

CHARGING82% 4.05VCPartly cloudyWarsawNEXT 2h19C16:00A / B = power on
On the chargerThe charge state and battery stay in the top bar, so it is still a charging screen. A or B carries on to a normal start; unplug to switch off. T-Display-S3 first settles its battery reading (Section 10).
WEATHER82%CClearKrakowNEXT 4h5C02:00Hold A = menu
From the menuThe same panel with the normal top bar and bottom rail — your own battery, plus a small WiFi fan while the radio is up. Hold A to leave.

Two ways in

WhereHow
From the menu Hold A for the carousel and pick the yellow Weather icon — it sits directly after MyBuddy. Hold A again to go back.
On the charger Set Charge screen to Weather in Charge setup (Section 10.2). Plugging USB-C into a switched-off EucBuddy then opens this instead of the battery gauge (Section 10).

What's on the screen

ElementWhat it tells you
Condition glyphThe sky right now, drawn from the forecast's condition code — and animated (see below).
TemperatureThe current temperature, coloured by how cold or warm it is. Follows your Temp unit setting, so it reads °F if that's what you picked.
ClockThe biggest thing on the screen — a device parked on a charger gets read from across the room. It's set over the internet and follows your chosen city's own time, daylight saving included. Dim --:-- means the time hasn't arrived yet.
Condition text · cityThe condition in words on the left, the city you picked on the right. A long city name is trimmed with a dot rather than painted over the condition.
Forecast stripBelow the divider: one forecast hour at a time, sliding to the next (see below).
Everything current sits on a panel painted in your dashboard background tint (Dashboard setup → Background, Section 6), ending exactly on the divider; the forecast below stays on the plain backdrop. That edge is what separates now from later, which is why neither half needs a label. Pick Black and the panel simply disappears, exactly as it does on the ride dashboards.

The sky glyphs

The forecast's condition codes collapse into eight conditions — a finer set stops reading clearly on a small screen. Clear and partly-cloudy skies each get a second face: a sun by day, a crescent moon with stars by night, chosen from the daylight flag for your city rather than guessed from the hour. Anything the forecast doesn't name at all stays a plain ?.

Clearsun
Clearnight
Partly cloudysun
Partly cloudynight
Overcast
Fog
Drizzle
Rain
Snow
Thunderstorm
The big glyph is alive: rays breathe, clouds drift, rain and drizzle fall on staggered beats, snow falls slower and sways as it goes, fog bands slide through each other and the storm bolt flares white on a strike beat. The small glyph in the forecast strip deliberately holds still — movement that size only reads as noise. (The mockups above animate too.)

Temperature colours

Cold blues through a temperate green into warm ambers, so a glance at the hue tells you the weather before you read the number. The forecast row uses the same scale.

≤ −5 °C−4…45…14 15…2425…30>30

The steps are always these Celsius values — switching to °F changes the number you read, not where the colour turns.

The forecast strip

Four horizons come from the same request — +1 h, +2 h, +4 h and +8 h. The strip shows one at a time, holds it about five seconds and slides the next one in. The quiet time on the right is the hour it actually lands on.

The strip above cycles exactly as the device does.

Tick the ones you want on the WiFi panel's Weather page (Section 9) — all four are on by default. Untick all of them and the strip disappears, leaving just the clock, the temperature and the sky.

Your city

Where to set itHow
Web flasherInside Configure WiFi there's a City box with live search — start typing and pick your town. Set once while you're flashing anyway (Section 13).
WiFi panelThe Weather page has the same search, so you can change city later without re-flashing (Section 9).

While it works — and when it can't

Until there is something real to show, the screen shows no readings at all rather than a half-filled dashboard: an animated mark, what it's doing, and why if it failed. It keeps trying — a refresh every 15 minutes, a retry about a minute after a failure — and never quietly swaps itself for the battery view.

CHARGING82% 4.05VConnectingjoining your WiFiA / B = power on
Working on itConnecting · Syncing (setting the clock) · Updating (fetching the forecast). The mark pulses while something is actually happening.
CHARGING82% 4.05VNo WiFiset it in the flasherA / B = power on
No WiFiNo home network is stored, so there is nothing to connect to — the mark holds still to say so. Set one in the flasher or the WiFi panel.
CHARGING82% 4.05VNo weatherWiFi join failedA / B = power on
No weatherIt tried and failed, with the reason underneath — WiFi join failed, internet request failed, city not found. It retries on its own.

Once it has readings, a later failure is not worth a whole screen — the numbers are simply a little old. The forecast stays put and a small orange ! appears under the top bar until the next refresh lands.

  • Forecast comes from Open-Meteo, a free service that needs no account; the clock is set from public internet time servers.
  • On the charger, a rising two-note chime plays when the first forecast lands, once per start — later refreshes stay silent, and it follows the Sound setting.
  • Only 2.4 GHz networks work, as everywhere else on the device (Section 6).
CHARGING82% 4.05VCOvercastWarsaw!NEXT 1h8C10:00A / B = power on
Stale readings, marked and kept
Section 9

WiFi config panel

EucBuddy can host its own WiFi hotspot with a config panel in your phone's browser — every setting with a bigger screen and a keyboard. WiFi is off by default.

StepDo this
1Open Connections on the carousel and set WiFi to Session or Always. A WiFi icon appears on the top bar — it turns green once a phone is connected.
2On your phone join the EucBuddy-XXXX network (open, no password).
3The panel opens automatically (like hotel WiFi). If not, browse to 192.168.4.1.
Those steps describe Type = Access point, the default. If you switched to Home WiFi (Section 6), EucBuddy joins your own network instead — there is no EucBuddy-XXXX hotspot to join and the panel does not pop up on its own. Open http://eucbuddy.local in any browser on that network. If that name doesn't load, use the numeric address shown in Connections → Info.

The panel is laid out like the device menu. Along the top is one page for each carousel item. Below it, a status bar shows EucBuddy's battery, the connected wheel and its battery, the network, and a pulsing dot while the page is in touch with the device. On a phone or tablet the pages fold into a ☰ menu, and a short status sits next to it. Home has one tile per page with a live summary. Switches and choices save the moment you change them, and a short message confirms each one. Text fields have their own Save button. Changes made on the device show up in the page too.

PageWhat's there
MyBuddyYour pet's name, shown top-left on the MyBuddy screen.
WeatherLocation: your city. Start typing and pick it from the live search. Forecast strip: which steps the strip cycles through, +1 h, +2 h, +4 h, +8 h. All four are on by default; none hides the strip. See Section 8. (Over EucBuddy's own hotspot the page has no internet to search with, so it saves the plain name and the device looks the city up itself.)
RidesYour full ride history: tap a ride to see or edit it, + Add ride, ↓ CSV for everything, and Delete all rides. See Section 12.
My WheelsOne card per favorite: a custom name (shown in place of its Bluetooth name), its PWM calibration (spin km/h + pack V, the same values as on the device, Section 6; wheels that report real PWM just say Native), Save and Remove. See Section 3.
BlackboxThe battery map: logging on/off, the file's size, Download CSV and Delete file.
AlertingSpeed limiter: the hard cap switch, the cap, and the optional in-wheel warning, greyed out until the cap is switched on. Changing it while the cap is armed uses the same safe save-and-restore as the device (Section 6). Buddy alerts: speed, PWM and low-battery beeps, each with its threshold.
ChargeNow: the wheel and the smart plug side by side, with Switch on / Switch off. Smart plug: its address, Find on network, Measure by (battery level, voltage or timer) and the switch-off level, voltage or time. Charging screen: the Battery / Weather / Control view, Watch a wheel and Alert at. See Sections 10.1–10.3.
ConnectionsHome WiFi: the network EucBuddy joins in Home WiFi mode, and the one the weather and the smart plug need.
DashboardRide screens: drag them into order and switch off the ones you don't use. The default order is Dashboard → Custom 3 → Power → Trip → Stats → Custom 1 (the portal labels the first row Speed), and at least one stays on. Buttons: what a short tap and a hold of B do. Custom values: Custom 1 and the three Custom 3 slots. Look & units: background, km / miles, °C / °F.
SettingsDisplay: brightness, flip screen, boot intro, battery as % or volts. Power & sound: sound, auto-sleep, what idling on a wheel does (power off / power save), and a Power off Buddy button. Wheels: Only-EUC scan list and the Begode pack voltage.
InfoRead-only: device ID, firmware, board, battery and voltage, plus how the page is connected, the home network, EucBuddy's IP address and the connected wheel.

In the Home WiFi card, type the network name and password and press Save WiFi, so you can set or replace it without re-flashing. The password is written to the device but never read back to the page; only the network name comes out again. Only 2.4 GHz networks work. Forget (with a confirmation) erases it and puts back what depended on it: the link Type returns to Access point, and Charge screen returns to Battery only if it was Weather (a Control view is left as Control). The link you are reading the panel over is deliberately left alone; the change applies at the next start.

On the Rides page every entry lists its ride time and the watt-hours used, and both can be edited by hand. Type the time as mm:ss (for example 12:34), as h:mm:ss for a long ride, or as plain seconds. Leave a field empty to say that value was never measured; it then shows as a dash instead of a misleading zero. Bad input is refused with a message rather than silently saved.

Downloads

Both CSV exports — Rides and the battery map (Blackbox page) — are run from the panel:

Session = WiFi runs until the next power-off, then starts off. Always = starts on every boot. Note: WiFi and Bluetooth share one antenna, so telemetry may refresh a little slower while WiFi is active.
While EucBuddy's access point is on, discovery of new wheels pauses if no wheel is connected — even before a phone joins. An existing wheel connection stays up. Switch WiFi off to resume discovery.
The access point has no password. Enable it only when needed and switch it off afterwards; nearby people could otherwise open the same settings panel.
Section 10

Charging

Plugging USB-C into a powered-off device opens a dedicated charging screen: dimmed so it can sit on a desk. Choose Battery, Weather or Control in Charge setup → Charge screen (Section 10.2).

DeviceBattery reading on USB
M5Stick-S3Shows an estimated percentage and cell voltage.
T-Display-S3Cell voltage cannot be read reliably while USB is connected, so the percentage / voltage is unavailable, not zero or full. The same applies in the WiFi panel.
SituationBehaviour
Press A or BOn the Battery or Weather view, either key continues to a normal boot. On the Control view with a plug address stored, A boots and B switches the plug (Section 10.2).
Unplug the cableStickS3 powers off. T-Display-S3 waits for its cell reading to settle (at least 1.4 s of steady samples after a short unplug debounce), shows the valid result for about 2 s, then powers off. A or B continues normal use; reconnecting USB cancels the shutdown.
While chargingAuto-sleep is disabled — it won't switch off on its own.
Charging during normal use (device already on) works fine — the charging screen only appears when starting from the off state.
Charging your wheel at the same time? The charging screen can watch it and tell you when it reaches 90 % or 100 %. See Section 10.1.
Section 10.1

Wheel charging monitor

Charge your wheel and EucBuddy side by side, and let EucBuddy keep an eye on the wheel. While it sits on its own charging screen it finds one of your favorite wheels, reads its battery over Bluetooth and shows the level along the bottom of the screen. When the wheel reaches the level you picked, for example 90 % for everyday riding or 100 % before a long trip, the screen flashes and EucBuddy beeps. You don't need to keep checking the wheel or have the phone app open.

It only reads the wheel. Nothing on the wheel is changed, and nothing is recorded as a ride. It does not stop the charger either: unplugging is still up to you.

Before you start

Set it up (once)

  1. Open the carousel's Charge icon and hold B for Charge setup. Move to Wheel with A and press B until your wheel's name shows. Each press steps Off → your favorites, in list order → Off.
  2. Move to Alert and press B to pick a level: Off → 50 → 60 → 70 → 80 → 85 → 90 → 95 → 100 % → Off. The default is 100 %. With Measure by (the row above) on Voltage, the alert is a pack voltage instead: B adds 1 V, hold B to step fast (Section 10.2).
  3. Hold A to leave. Both choices are remembered across power-offs.

Prefer the phone? In the WiFi panel (Section 9) open Charge and use the Charging screen card. Watch a wheel lists your favorites, and Alert at lets you tick several levels from 50 % to 100 % (50, 60, 70, 80, 85, 90, 95, 100). Several levels show on the device as “N levels”. Pressing B on that row afterwards starts again from Off.

Every time you charge

  1. Plug the wheel into its charger and switch the wheel on.
  2. Switch EucBuddy off and plug it into USB-C. The charging screen opens in the Battery, Weather or Control view you chose in Charge screen.
  3. The bottom line shows searching…, then connecting…. Within about half a minute you should see the wheel's name and battery.
  4. Leave both alone. When the wheel reaches your level, EucBuddy alerts you (see below).
  5. Done: press A or B to start EucBuddy normally, or unplug it to switch it off. Either way the monitor lets go of the wheel.
CHARGING4.05V82%Sherman64%>90%
Watching the wheelThe bottom line takes the place of the “A / B = power on” hint: the wheel's name, a battery coloured by level, its percentage and, on the right, the next level that will alert (>90%). The big battery above is still EucBuddy's own.
CHARGING4.15V95%WHEEL 90% A/B = OK
Level reachedThe line turns into a green banner, the backlight flashes and a rising triple beep sounds. The alert repeats every 10 s until you press A or B.

Reading the bottom line

You seeWhat it means
searching…Looking for the wheel. It searches in short bursts with pauses in between, so the Weather view keeps its WiFi time. If it stays here, see the tips below.
connecting…The wheel was found and Bluetooth is connecting.
reading…Connected. The first few seconds of data are skipped on purpose, until the wheel reports a settled level.
Name · battery · 64%The wheel's live level. Its name is the custom name you gave the favorite, otherwise its Bluetooth name. A long name scrolls back and forth. The colour follows the level: green above 30 %, yellow from 16 to 30 %, red at 15 % and below.
>90% on the rightThe next level that will alert.
done on the rightNo alert left to wait for: every level you chose has been reached, or Alert (Charge setup) is Off.
Grey level + offlineThe connection dropped. The last reading stays on screen in grey so you still know roughly where the wheel was, and EucBuddy keeps looking for it. conn in place of offline means it is reconnecting right now.
BLE busyA connect attempt has not finished for 45 seconds, usually a very weak signal: move EucBuddy closer to the wheel. It clears by itself when Bluetooth answers. Charging is not affected. Press A or B: EucBuddy restarts straight into a normal start. Or unplug it to switch off.

When the wheel reaches your level

How alerts are decided

Most wheels work out their percentage from the pack voltage, which sits higher while the charger is pushing current in. The level shown on a charger can run a few points ahead and settle a little lower after you unplug. For a truly full pack, set the alert to 100 % and give the charger some extra time to balance the cells.

If it doesn't find the wheel

Section 10.2

Charge control & smart plug

Charge control shows your wheel and the smart plug feeding its charger on one screen, and can switch the plug off when the wheel reaches a level you choose. Stopping at 80 or 90 % is kinder to the pack than sitting at 100 %, and you don't have to be there to unplug it. EucBuddy talks to the plug directly over your home WiFi: no cloud, no account, no phone app.

What you need: a smart plug running Tasmota firmware (many cheap plugs can be flashed with it, some ship with it), on the same 2.4 GHz home network as EucBuddy, and that network stored on EucBuddy (Using Home WiFi). A plug with an energy meter also shows watts, mains volts and amps.

Two ways to see it

WhereWhen
The Charge pageAny time: open the carousel's Charge icon. Shows the connected wheel, or connects your watched wheel (see The wheel on the page).
Control charging viewSet Charge setup → Charge screen to Control. Plugging USB-C into a switched-off EucBuddy then opens this page instead of the battery animation, with the charging bar on top. It finds the watched wheel by itself and joins home WiFi by itself. B switches the plug on or off (a short high beep; a low beep when the plug isn't answering); A carries on to a normal start. Without a plug set, either key starts normally.

Set it up (once)

  1. Store your home network on EucBuddy (WiFi panel → Connections → Home WiFi, or the web flasher) and put the plug on the same network. Reserve the plug's address in your router, so it never changes.
  2. Open the Charge page and hold B for Charge setup. Move to Plug (it reads Find >) and press B. Confirm Find plug on network? with B (it asks Enable WiFi and find plug on network? when WiFi is off).
  3. A popup shows the search: Joining home WiFi…, then Searching the network N%. It stops at the first plug and ends with Plug found and its address, which is saved (+N more when it saw others too), or No plug found. On a quiet network a full search takes up to about 3 minutes. You can dismiss the popup: the search carries on and reports the result.
  4. Other endings: WiFi join failed (check the home network), Plug search stopped (the WiFi link changed during the search, for example the WiFi panel was switched on; search again), Home WiFi starting (the panel is still joining; try again in a moment) and Already searching. If the panel's Find on network is already running, EucBuddy follows that search instead and nothing is saved: you choose the plug in the panel (see below).
  5. No plug found? Type its address in the WiFi panel: Charge page → Smart plug card → Address → Save address. The router's device list or the plug's own page shows it.
  6. Choose what the alert and the switch-off go by with Measure by (below Wheel): Battery (the wheel's level), Voltage (its pack voltage; then Alert and Plug off at are both in volts) or Timer (the switch-off only; the alert stays in %). Then set Plug off at Off → 50 → 60 → 70 → 80 → 85 → 90 → 95 → 100 %, with Voltage whole volts (see below), or with Timer Plug off after Off → 30 min → 1 → 1.5 → 2 → 3 → 4 → 5 → 6 → 8 h. Arming either also sets the charging screen to Control, because the switch-off works there.
  7. Optional: pick the watched Wheel and its Alert level (Section 10.1).

Opening the page: WiFi

The plug is reached over your home network, so the page may need WiFi. It asks only when it would change something:

SituationWhat happens
WiFi Off, Type Home WiFiAsks Enable WiFi?. Yes switches WiFi on for this visit only; leaving the page puts it back to Off.
WiFi Off, Type Access pointAsks Join home WiFi?.
EucBuddy's own access point is onAsks Pause portal, join home WiFi?: the hotspot has no route to your plug. It comes back when you leave the page.
Already on home WiFiAsks nothing; the plug uses that connection, and the WiFi panel stays reachable at http://eucbuddy.local.
No plug, or no home WiFi storedOpens without touching WiFi and shows the wheel.

Said no, or switched WiFi off later? The plug side shows no WiFi and B asks again. While the page is open it reconnects to the plug by itself if the link drops.

Reading the screen

You seeWhat it means
ON / OFFThe plug's relay. The switch drawing closes or swings open with it. PLUG in grey: no reading yet.
WattsWhat the charger draws now: yellow while it draws, grey when it doesn't (charger finished, or relay off). A plug without a meter shows relay on / relay off.
Moving dots on the wireCurrent is flowing into the wheel. A lit wire without dots: the relay is on but nothing is drawing. A dark wire: the switch is open.
231V 1.04AMains voltage and the plug's current.
needs calib.The plug's readings can't all be right. See Section 10.3.
joining / no answer / no WiFi / no plugJoining your network / the plug isn't answering (switched off at the wall? address changed?) / WiFi isn't on (B asks) / no address stored yet.
off 90% · cut 90% · cut fail · no cut-offThe switch-off level is armed / the plug was switched off there / it was asked to and never confirmed / no level set.
cut skippedThe plug was due to switch off, but you switched it yourself first (B or the portal), so EucBuddy left it as you set it.
other wheelThe wheel on screen isn't the one picked in Charge setup → Wheel, so its level won't switch this plug off.
timer 2:00 · off in 1:24 · timer doneTimer mode: armed and waiting for the plug to come on / counting down / the timer switched the plug off.
~2.1ACharge current worked out from the plug (see below). Without ~ it is the wheel's own reading.
Grey wheel valuesThe last reading, kept while the wheel's link is down.

Buttons

ButtonOn the Charge page
BSwitch the plug on or off. With no plug link yet it offers WiFi again; with no plug stored it says how to find one.
AThe statistics screen, and back.
Hold BCharge setup.
Hold ABack to the carousel.

Statistics (A)

Press A on the Charge page for its second screen, and again to go back. B still switches the plug, and hold B still opens Charge setup.

The wheel on the page

Charge current and the “~”

Most wheels measure current on the controller, not on the charge port: the charger feeds the battery packs directly. A KingSong KS-16X, for example, shows about 0.3 A of its own electronics while its charger pushes more than 2 A into the pack. So EucBuddy works the charge current out from the plug: plug watts × 0.88 (a typical charger's efficiency) ÷ pack voltage. With 236 W and 98.4 V that is about 2.1 A; the wheel's own reading is used instead whenever it agrees with that figure. The estimate is shown with ~, and it is only as good as the plug's watts (Section 10.3).

Switching off at a level

Switching off at a voltage

A wheel whose battery percentage is coarse or jumps on the charger can be cut on its pack voltage instead. Set Measure by to Voltage and choose Plug off at; the Alert row is then a voltage too, set the same way, and fires once when the pack holds it for 3 seconds (a pack already there when watching starts does not alert). Switching to Voltage with no alert voltage yet starts it at the Plug off at voltage. Everything in Switching off at a level above applies the same way: the voltage must hold for 3 seconds, the plug is switched off once per charge, and topping up with B is not fought.

Switching off by timer

Prefer a fixed charging time, or can't connect the wheel? Set Measure by to Timer and choose Plug off after. The clock starts each time the plug turns ON, and when it runs out EucBuddy switches the plug off, with the same popup and beep.

This is a convenience, not a safety device. Charge on a non-flammable surface, use the charger that came with the wheel, and don't leave a charging wheel alone for long periods.

In the WiFi panel

The panel's Charge page (Section 9) has three cards:

CardWhat's there
NowThe wheel (battery, volts, charge current, with ~ when it is worked out from the plug, which the note under the card then says) and the plug (ON/OFF, W, V, A), Switch on / Switch off, today's energy, and a calibration note when the plug's readings disagree.
Smart plugAddress with Save address; Find on network lists the Tasmota devices it finds (up to 8; a note says when there may be more), each with Use, and the saved one reads Saved. Nothing is saved until you press Use. Meanwhile EucBuddy shows the same progress popup and ends with Plug found … choose it in the portal (or already saved) or N plugs found. While EucBuddy runs its own search, the panel answers Buddy is searching for its plug; try again when it finishes; Measure by (Battery level / Voltage / Timer; it also sets whether the charging-screen alert is in % or volts), then Switch off at (Never, 50–100 %), Switch off at in volts (40–200 V to 0.1 V; empty = never) or Switch off after (Never, 30 min–8 h). The Now card shows the time left.
Charging screenView (Battery / Weather / Control), Watch a wheel and Alert at (Section 10.1): levels in %, or with Measure by on Voltage one voltage (40–200 V to 0.1 V).
Over EucBuddy's own access point the panel can't reach the plug: switching and searching need the panel opened over your home network (http://eucbuddy.local). Typing the address works either way.

If it doesn't work

Section 10.3

Plug calibration

A Tasmota plug measures with a small metering chip that is calibrated per plug. Cheap plugs are often sold uncalibrated, or lose it when they are re-flashed, and then report nonsense: the plug this feature was built with said 33 V on a 230 V socket. EucBuddy checks the three readings against each other and, when they can't all be true, shows needs calib. instead of volts and amps. The WiFi panel names the readings that disagree.

EucBuddy flags it whenBecause
Voltage below 90 V or above 265 VNo mains supply anywhere reads like that.
Power above volts × amps (by more than 15 % + 3 W)Real power can't exceed apparent power.
10 W or more with no current, or no voltagePower needs both.

Calibrate it in Tasmota

  1. Open the plug's own page in a browser (its address, for example http://192.168.10.142) → Consoles → Console.
  2. Plug a known resistive load into it and switch it on: a kettle, a heater or an incandescent lamp. Not the wheel charger: its power factor makes watts differ from volts × amps. Wait about 10 seconds.
  3. Voltage: type VoltageSet 230 with your real mains voltage (measure it, or use your nominal 230 / 120 V).
  4. Power: type PowerSet 2000 with the load's real wattage (its rating, or better, a measured value).
  5. Current: type CurrentSet 8696 in milliamps: watts ÷ volts × 1000. For 2000 W at 230 V that is 8696.
  6. Check: Status 8 should now show matching voltage, current and power. EucBuddy shows mains volts and amps again within a few seconds.
The values are stored in the plug and survive restarts; they only change what it measures, never how it switches. Tasmota's guide: Power Monitoring Calibration. The charge current ~ (Section 10.2) uses the plug's watts, so calibrating power makes it right too.
Section 11

Battery, sleep & power-off

Device battery

Sleep & wake

If the wheel link drops mid-ride

When the Bluetooth link drops unexpectedly while a ride screen is showing (even with the screen dark in Power save), EucBuddy doesn't end the ride: it shows “Reconnecting” and tries to get the same wheel back for up to 30 seconds. If it succeeds, the same ride carries on, on the same screen, with the connect chime. If it can't, the ride is saved and you're back on the scan list, with a “Link lost” note saying why. (Firmware 0.5.08 or later.)

Cancelling the reconnect

While EucBuddy is reconnecting — after a wake or a mid-ride drop — you'll see “Reconnecting” with B = cancel reconnect along the bottom. Useful when you've walked away from that wheel, or want to hop onto a different one straight away.

Power off

“Storage full” in red at start-up means the device's settings memory has no room left, and saving has stopped working — settings, favorites and new rides would quietly fail to stick. A Factory reset (Section 6) clears it. Download anything you want to keep from the WiFi panel first (Section 9).
Section 12

Rides — your ride history

EucBuddy logs every ride automatically. Each entry records the wheel, start & end battery, the voltage range (min–max), top speed, peak current, max PWM (highest motor load — see Section 4), distance, the ride time, the energy used (Wh), the odometer at the start, how many times the device slept mid-ride, and the max temperature. A ride is saved whenever you disconnect or the wheel goes out of range.

Ride time and energy are measured only while the wheel is connected and survive sleep and reconnect — see Section 4 for exactly what counts. Hand-added entries you left blank show a dash for them rather than a made-up zero.

On the device — the Rides viewer

In the WiFi panel

Rides are kept across power-offs and firmware updates (room for around twenty thousand). They're erased only by Delete all rides, a Factory reset — or, once, by an update that changes what a ride record stores (see Section 13).
Section 13

Firmware updates

New firmware adds wheel support and features. Updating happens in your browser — no software to install.

StepDo this
1On a computer (Windows, macOS, Linux or ChromeOS), open the flasher in Chrome, Edge or Opera. Phones and tablets can't install firmware.
2Connect EucBuddy with a data-capable USB-C cable and select the exact board: M5Stick-S3 or T-Display-S3.
3Choose an available firmware channel and follow the prompts. Keep USB connected until flashing finishes. If no port appears, expand the flasher's connection help for your selected board.
4First install only: if the device isn't licensed yet, a popup asks for your licence code (from your purchase email) and a nickname. Each code activates one device, once; later updates of that device need no code.

Your settings and remembered wheel are kept across updates.

The flasher also has an optional Configure WiFi tick box. Fill in your home network's name and password there and EucBuddy stores them, so it can join your own network instead of making its own hotspot — see Connections in Section 6. The same box has a City field with live search for the weather screen (Section 8) — optional, and changeable later in the WiFi panel. Nothing you type there is sent to our servers; it goes straight to the device over USB.

Open the web flasher →

Updating in the browser
Updating in the browser
Section 14

FAQ

Where is Zap Dash?

Open MyBuddy, hold B, then select Zap Dash with A and enter with B. If the selector is missing, check Info for your firmware version. See the game guide for controls, supported versions and why standard LilyGO hardware plays silently.

The wheel scan stops when I open the WiFi panel

With no wheel connected, discovery pauses for as long as EucBuddy's access point is on. Turn WiFi off to scan again. Existing wheel links are preserved.

A “Link lost” message appeared

The second line reports why the connection ended, such as a telemetry timeout or a Bluetooth disconnect reason. Note that text and your firmware version when reporting a problem; the message alone does not identify a wheel fault. Deliberate disconnections do not show it. On a ride screen EucBuddy first tries to reconnect for up to 30 seconds (Section 11); the message appears only if that fails.

My wheel isn't in the list

Make sure it's on and nearby. If the list is cluttered, enable Only EUC. Re-detection can take a few seconds.

A wheel shows up as "EUC"

Some wheels (Begode and other HM-10 modules) broadcast their name a moment after they first appear, so they read EUC until the name arrives, then fill in. EucBuddy remembers names it has already seen, so this is brief. ★ Star the wheel to always show its name.

The voltage looks wrong (Begode)

Set Begode V in the menu to match your wheel's pack voltage (e.g. 84 V, 100 V, 134 V). Newer Begodes with a smart BMS report their true voltage automatically and don't need this.

The headlight doesn't respond

With Press B set to Light (the default), a short B on Dashboard, Custom 3, Power or Custom 1 toggles the headlight on wheels that support it (KingSong, Begode, Veteran, Nosfet, InMotion). Trip and Stats still reset. If you set Press B to Horn, short B is the horn instead.

The device keeps switching off

That's auto-sleep. Increase the time or turn it off in Auto-sleep. Sleep is disabled while charging.

The WiFi panel won't open

In Access point mode, join EucBuddy's hotspot and browse to http://192.168.4.1. In Home WiFi mode, open http://eucbuddy.local from the same home network, or the numeric address shown in Connections → Info.

The charging screen never finds my wheel

The wheel has to be switched on while it charges, within Bluetooth range, and not connected to the phone app. It must also be selected in Charge setup → Wheel. See Section 10.1.

My wheel reached 100 % but nothing happened

Check Charge setup → Alert isn't Off. Levels the wheel had already reached when the charging screen started are skipped on purpose, and each level alerts only once per charge.

The Charge page says “needs calib.”

The smart plug's voltage, current and power don't add up, so EucBuddy won't show them as fact. Calibrate the plug in its Tasmota console: Section 10.3.

My wheel shows 0.3 A while charging, but the charger pushes 2 A

The wheel measures its controller, not the charge port. The Charge page works the charge current out from the plug instead and marks it ~: Section 10.2.

PWM shows "--" or "set calib"

Your wheel doesn't report PWM directly, so EucBuddy can't show it until you give the wheel a one-time PWM calibration in My Wheels (spin speed + voltage — Section 6). After that it estimates the duty from speed and voltage, tagged "PWM est" — a useful guide, not exact. Wheels that do report PWM (many Veteran, Begode, InMotion) show the precise value with no tag and need no calibration.

Where is the PWM screen?

It's Custom 3: out of the box it shows PWM big, with speed and voltage beside it. You can swap any of those three values for something else under Dashboard setup → Dashboard config (Section 6).

How do I disconnect from my wheel?

Hold A for the menu. While a wheel is connected, Disconnect is in the carousel; from a ride screen it is already centred, so it's one press of B away.

Where are my rides?

On the device: menu → Rides. With more room: the Rides section of the WiFi panel, where you can also edit, add, delete and export them (Section 12).

It's reconnecting to a wheel I'm not riding

Press B on the “Reconnecting” screen and confirm with B again — you go straight back to the scan list and can pick another wheel. A (or just waiting 10 seconds) keeps the reconnect going. Section 11.

I cancelled the reconnect — did I lose the ride?

No. Choose the same wheel from the scan list within about ten minutes and the ride continues where it left off. Choose a different wheel and the old ride is closed and saved as its own entry first.

Time or Energy shows “--”

That ride has no measurement for it — it was recorded before the feature arrived, added by hand in the WiFi panel, or the field was left empty there. A dash means “not measured”, which is why it isn't shown as 0. New rides fill both in automatically (Section 4).

My ride history is empty after updating

Only an update from firmware older than 0.3.17 does this: that release changed the stored ride format, so the log was cleared once. Settings, favorites and calibrations were kept.

The weather screen says “No WiFi”

No home network is stored yet. Put one in with the web flasher's Configure WiFi box (Section 13) or the Home WiFi card on the WiFi panel's Connections page (Section 9). Remember it has to be a 2.4 GHz network. Section 8.

The weather shows the wrong city

The built-in default is Warsaw. Change it on the WiFi panel's Weather page (or the flasher's City field) — the clock follows the city too, so it moves with it. Section 8.

The forecast strip disappeared

All four forecast steps are unticked on the panel's Weather page — that's the setting for hiding it. Tick any of +1h / +2h / +4h / +8h to bring it back (Section 8).

There's a small orange “!” on the weather screen

The last refresh failed, so what you're reading is a little old. Everything stays on screen and it keeps retrying by itself — the mark clears the moment a fresh forecast lands. Section 8.

Voltage, current and PWM are all “--”

If you connected to EUC World on your phone rather than straight to the wheel, the app's link simply doesn't carry those three. Speed, battery, distance, temperature and energy all work. Connect to the wheel itself for the rest (Section 2).

It switched off when I pressed the power button

On StickS3, PWR both turns it on and switches it off. On T-Display-S3, the reset key is handled as a sleep request during normal operation; wake with A or B. If a wheel was connected, the device reconnects and resumes the ride (Section 11).

It says “Storage full” when it starts

The settings memory has filled up and saving has stopped working, so new settings and rides wouldn't stick. Export what you want from the WiFi panel, then run a Factory reset (Section 6). Section 11.

Questions? Message us on facebook.com/eucbuddy — happy to help.