EucBuddy — User Manual
Everything you need to use your EucBuddy — buttons, favorite wheels, the six ride screens, the full menu, MyBuddy, the weather screen, ride history, the WiFi panel, charging and updates. Simple and clear.
Device & buttons
EucBuddy runs on a small M5Stick-S3 with a screen, a battery and a USB-C port. It's driven by two buttons plus a power button.
| Part | What it does |
|---|---|
| A Main button | Large front button. Short press = next / select; hold ~1 s = open menu. |
| B Side button | Small side button. Short press = confirm / back (context-dependent, e.g. headlight, horn or trip reset — the ride-screen action is configurable, see Section 6). |
| PWR Power | Side button. Turns on, wakes from sleep — and a press while the device is running switches it off (the menu's Power off does the same). Section 11. |
| USB-C | Charging. Plugging into a powered-off device opens the charging screen (Section 10). |

First start & pairing
1 · Turn it on
Press PWR. 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.
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.
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 have as many as you like.
| Action | How |
|---|---|
| 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 | In the WiFi panel's Favorite EUC section (Section 9) type a custom name next to the wheel's Bluetooth name. |
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.
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:

1 · Dashboard — live ride
- Big speed (colour shifts cyan → yellow → red).
- Wheel battery %, voltage and current.
- A short press of B runs your Short B action — headlight by default (if your wheel supports it), or horn. Set it under Dashboard setup (Section 6).

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 Short B action (headlight by default).

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.

4 · Trip — distance
- RIDE — distance of the current ride.
- TRIP — resettable counter.
- Press B to reset the trip (confirm popup).

5 · Stats — per-wheel stats
- TOTAL — wheel odometer.
- Ride count, top speed and peak current.
- Press B to clear the peaks (confirm popup).

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 Short 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.
| Wheel | PWM value |
|---|---|
| InMotion V2 (V11/V12/V13/V14) | Exact (from the wheel) |
| Veteran / Leaperkim / Nosfet | Exact (from the wheel) |
| Begode / Gotway | Exact on models that send it, otherwise needs calibration |
| KingSong · classic InMotion | Needs 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 — two new values
Any Custom slot can now 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).
Button cheat-sheet
| Where | Button | Action |
|---|---|---|
| Reconnect screen (after wake) | B short | Ask to cancel the reconnect — a second B confirms and goes back to scanning |
| A short | Dismiss that question and carry on reconnecting | |
| Scan screen | A short | Next wheel in the list |
| B short | Connect to highlighted wheel | |
| B hold | Star / unstar the wheel (favorite) | |
| A hold | Open the main menu (carousel) | |
| Ride screens | A short | Next screen (default: Dashboard → Custom 3 → Power → Trip → Stats → Custom 1) |
| B short | On Dashboard/Custom 3/Power/Custom 1: your Short B action — headlight (default) or horn · on Trip/Stats: reset (confirm popup) | |
| B hold | Your Hold B action — Speed limiter (arm / restore the cap on Begode, KingSong and supported modern Leaperkim/Nosfet wheels; enable Limiter first), Horn or headlight; Section 6 | |
| Main menu (carousel) | A short | Next icon (Dashboard · MyBuddy · Weather · Rides · My Wheels · Blackbox · Alerting · Connections · Dashboard setup · Settings · Info · Disconnect when connected) |
| B short | Open the highlighted item | |
| A hold | Back to where you were | |
| My Wheels | A short | List: next wheel · detail: next row |
| B short | List: open the wheel · detail: open EUC health / its rides / adjust calibration (+) / clear | |
| B hold | Detail (Spin/Volt row): fast-adjust the calibration value | |
| A hold | Back (detail → list → carousel) | |
| EUC health | A short | Scroll the health rows |
| B short | Ask the connected wheel for a fresh reading | |
| A hold | Back to the wheel's detail screen | |
| Settings list | A short | Next item |
| B short | Select / change value | |
| A hold | Back | |
| Rides viewer | A short | Scroll the ride list · in details: next page |
| B short | Open / close a ride's details | |
| B hold | Delete (list: all rides · details: this ride) — confirm popup | |
| MyBuddy | B short | Pet your buddy |
| Weather | A hold | Back to the menu (the page has no other controls — Section 8) |
| Any popup | B / A | B = yes/confirm · A = cancel |
| Anywhere | PWR | Turn on · wake from sleep · switch off while running (Section 11) |
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:
| Icon | Opens |
|---|---|
| Dashboard | Back to the live ride screens (or the scan list when no wheel is connected). |
| MyBuddy | The virtual-pet screen (Section 7). |
| Weather | New. The weather station — clock, temperature, sky and forecast (Section 8). Needs a stored home network. |
| Rides | The Rides viewer — your stored ride history (Section 12). |
| My Wheels | Your favorite wheels — per-wheel rides, lifetime totals and PWM calibration (see below). |
| Blackbox | Battery-map logging — records a battery curve to the device (see below). |
| Alerting | Speed limiter + on-device warning beeps (see below). |
| Connections | New. Everything WiFi: turn it on, pick Access point or Home WiFi, and see the live link status (see below). |
| Dashboard setup | Ride-screen button actions, the two Custom dashboards, background tint, units and temperature unit. |
| Settings | General device, connection and power options. |
| Info | Device ID, firmware version, power-on counter, lifetime ride count and battery. The power-on counter survives a factory reset (a true lifetime total). |
| Disconnect | Drops the wheel and goes back to scanning. Only appears while a wheel is connected, and the carousel opens centred on it so it's the first thing offered. |
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.
| Option | What it does |
|---|---|
| Press B | Action for a short B press on Dashboard / Custom 3 / Power / Custom 1: Light (default) or Horn. |
| Long press B | Action 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). |
| Background | The 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. |
| Units | km 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. |
The six backgrounds
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.
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 new, see Section 4.
| Row | Fills | Default |
|---|---|---|
| Custom 1 | The single big value on the Custom 1 screen (6th by default). | Speed |
| Custom 3 main | The large left-hand value on Custom 3 (2nd by default). | PWM |
| Custom 3 upper | The small upper-right value on Custom 3. | Speed |
| Custom 3 lower | The 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.
| Option | What it does |
|---|---|
| Brightness | Screen brightness — 3 levels. |
| Flip screen | Rotates the screen 180° — for mounting EucBuddy upside-down. The buttons keep working as labelled. |
| Intro anim | Plays the animated startup splash (on by default). Turn it off for a quicker turn-on — cold boot goes straight to the scan screen. |
| Sound | Sounds on / off. |
| Auto-sleep | Inactivity timeout: 30 s / 1 min / 2 min / 5 min / Off. |
| Sleep type | New. What 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 EUC | Scan filter — show only recognised wheels (recommended: on). |
| Battery | What to show top-right for EucBuddy's battery: percent (%) or voltage (V). |
| Begode V | Begode pack voltage (67–168 V). Set it to match your wheel so the displayed voltage is correct. |
| Factory reset | Restores defaults and erases all stored rides. Opens a confirm popup (B = yes). |
| Power off | Turns the device off. |
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 green dot marks wheels that already have a PWM calibration. Each wheel's detail screen shows:
| Row | What it does |
|---|---|
| Name | The 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. |
| Vendor | The detected brand (display only), in the brand's accent colour. |
| EUC health | A one-word verdict — Good, Fault or Unknown — for what this wheel reports about itself. Press B to open the full health screen (below). |
| Rides | This 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. |
| Spin | PWM-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). |
| Volt | PWM-calibration voltage — the pack voltage the spin speed was measured at, 10–180 V. Same B / hold-B editing. |
| Clear calib | Press B to remove this wheel's calibration (back to no PWM estimate). |
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 Favorite EUC 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.
| Row | Shows |
|---|---|
| Overall | The summary verdict: Good, Fault or Unknown. |
| Controller | Controller status and its temperature. |
| Hall | Hall-sensor status. |
| Battery · BMS 1 / 2 | Per-pack status, cell count, the lowest and highest cell voltage and the pack's max 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. |
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. Anything the wheel simply never sends stays Unknown 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:
| Option | What it does |
|---|---|
| Battery map | Logging on / off. |
| Source | Host (EucBuddy's own battery) or Wheel (the connected wheel). Switching clears the file. |
| Delete log | Erases 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.
| Option | What it does |
|---|---|
| Limiter | Master 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 alert | While the limiter is armed, also set the wheel's own speed warning to 1 km/h below the cap. Available for KingSong and supported modern Leaperkim/Nosfet wheels. This row is grey and cannot be changed while Limiter is off. |
| Speed limit | The hard-cap value the limiter writes to the wheel, in km/h (5 km/h steps). |
| Speed alert | Beep when your speed reaches the threshold, plus Speed val — the threshold. |
| PWM alert | Beep when the motor load (PWM) reaches the threshold, plus PWM val — the threshold. |
| Batt alert | Beep when the wheel battery drops to the threshold, plus Batt val — the threshold. |

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 arm the cap. If the wheel is already stationary, EucBuddy writes and verifies your Speed limit. If you request it while riding, it confirms the request, makes the limiter gauge blink green, and waits until the wheel has been stopped for about three seconds before writing it. 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. 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.
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:
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 and EucBuddy never switches its radio on by itself.
| Option | What it does |
|---|---|
| WiFi | Off / Session (until power-off) / Always (every boot). This is the on/off switch — it used to live in Settings. |
| Type | New. Access point — EucBuddy makes its own hotspot and you join it from your phone (Section 9; this is how it has always worked). Home WiFi — EucBuddy joins your network instead, and the same panel is reachable from any device on it. |
| Charge screen | What you see while EucBuddy sits on a charger: Battery (the usual gauge animation) or Weather — a clock, the temperature now, the sky outside and the hours ahead (Section 8). Weather needs a stored home network, so it is only offered once you have set one. |
| Info > | New. 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. |
Using Home WiFi
Home WiFi needs your network's name and password, and those are entered in the web flasher — tick Configure WiFi before you update the firmware. EucBuddy stores them and preselects Type = Home WiFi, so afterwards you only have to open Connections and set WiFi to Always.
- Only 2.4 GHz networks work — the chip has no 5 GHz radio.
- A popup reports the result: WiFi connected with the address, or WiFi failed with the reason. A failed join is deliberate about giving up — the radio goes back off and WiFi returns to Off rather than retrying and draining the battery.
- If you pick Home WiFi without having set a network, EucBuddy says No home WiFi — Set it in flasher and stays on Access point.
- A Factory reset erases the stored network along with everything else.
Weather charging screen
With Charge screen set to Weather, plugging a charger into a switched-off EucBuddy shows a weather dashboard instead of the battery animation: a clock, the temperature right now, the sky outside, and the hours ahead. Press A or B to carry on to the normal screens, or unplug to switch off — exactly as before.
- It joins your home network to fetch this, so it needs one stored (see above). This is the only time EucBuddy brings up WiFi on its own — and only ever while it is plugged in.
- The same screen is now also a menu page you can open any time, from the carousel's yellow Weather icon.
- Forecast comes from Open-Meteo, a free service that needs no account. The clock is set from public internet time servers and follows the city you pick (the default is Warsaw).
- It updates every 15 minutes. While it is still connecting you will see Connecting… or Updating… in place of the conditions.
MyBuddy — your virtual pet
MyBuddy is a little pet living inside your EucBuddy. Open it from the menu (MyBuddy).
- B — pet your buddy (it reacts).
- Your buddy grows as you ride — it feeds on zaps (1 zap = 1 km), so it counts the same whether your screen is set to km or miles.
- When two EucBuddies are close, their pets can "greet" each other over infrared.
- 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.

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.
Two ways in
| Where | How |
|---|---|
| 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 Connections (Section 6). Plugging USB-C into a switched-off EucBuddy then opens this instead of the battery gauge (Section 10). |
- No network stored? Both routes say Weather needs WiFi — Set it in flasher and nothing else happens. Store one in the web flasher or the WiFi panel first (Section 9).
- WiFi switched off? Opening Weather from the menu asks first — B turns the radio on just for this page and puts your WiFi setting back to Off when you leave. On the charger it needs no permission: the device is on external power by definition, which is the one case where EucBuddy brings up WiFi by itself.
- While the page is open it owns the radio, so an active config panel pauses and comes back when you leave. WiFi and Bluetooth share one antenna (Section 9).
What's on the screen
| Element | What it tells you |
|---|---|
| Condition glyph | The sky right now, drawn from the forecast's condition code — and animated (see below). |
| Temperature | The 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. |
| Clock | The 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 · city | The 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 strip | Below the divider: one forecast hour at a time, sliding to the next (see below). |
The sky glyphs
The forecast's condition codes collapse into eight conditions — a finer set stops reading clearly on a 240×135 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 ?.
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.
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.
Your city
| Where to set it | How |
|---|---|
| Web flasher | Inside 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 panel | The Weather card has the same search, so you can change city later without re-flashing (Section 9). |
- The built-in default is Warsaw, and a Factory reset puts it back.
- The clock follows the city: the time offset comes down with the forecast (already adjusted for daylight saving) and is remembered, so the clock is right from the next start. Right after a change the time is hidden until the new one lands.
- Opened over EucBuddy's own hotspot, the panel has no route to the internet to search with — it saves the plain name and the device looks up the coordinates on its next fetch. Nothing to do differently; it just resolves a moment later.
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.
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).
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.
| Step | Do this |
|---|---|
| 1 | Open 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. |
| 2 | On your phone join the EucBuddy-XXXX network (open, no password). |
| 3 | The panel opens automatically (like hotel WiFi). If not, browse to 192.168.4.1. |
In the panel you can set: battery / device ID / firmware (read-only), the MyBuddy name, brightness, sound, auto-sleep, Only-EUC, battery readout (% / V), flip screen, Begode voltage, battery-map logging (with the CSV download — Section 6), and a power-off button.
The Dashboard setup card matches the device menu: configure Short-tap B, Hold-B, what Custom 1 shows, all three Custom 3 slots (main / upper / lower), the dashboard background, units, and the temperature unit in one place.
The Speed limiter & alerts card mirrors the device's Alerting menu: master limiter, cap, EucBuddy speed/PWM/battery warnings and the optional in-wheel speed warning. That last switch is greyed out until the limiter master is enabled; changing it while the cap is armed uses the same safe save-and-restore behavior described in Section 6.
The Home WiFi card holds the network EucBuddy joins in Home WiFi mode, and the one the weather screen needs (Section 8): 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 this network (same card, with a confirmation) erases it — and puts back what depended on it: the link Type returns to Access point and Charge screen to Battery, since neither could work without a network. The link you are reading the panel over is deliberately left alone; the change applies at the next start.
The Weather card sets your city — start typing and pick it from the live search — and which forecast steps the strip cycles through: +1h, +2h, +4h, +8h, all four on by default, none = no strip. See Section 8. (Opened over EucBuddy's own hotspot the page has no route to the internet to search with, so it saves the plain name and the device looks the city up itself.)
It also has a Favorite EUC section: give each favorite a custom name (next to its Bluetooth name), set its PWM calibration (spin km/h + volt V — the same values as the on-device My Wheels screen, Section 6), or remove a favorite with the ✕ button. See Section 3.
A Dashboards section lets you drag the six ride screens into the order you want and untick any you don't use — the device's screen cycle and dots update to match (at least one stays on). The default order is Speed → Custom 3 → Power → Trip → Stats → Custom 1 (“Speed” is the main Dashboard). What the two Custom screens actually show is set in the Dashboard setup card described above.
And a Rides section with your full ride history: tap any ride to see its details, edit values by hand, add a ride, delete one, or download everything as CSV. Every entry now also 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. See Section 12.
Downloads
Both CSV exports — Rides and the battery map — are meant to be run from the panel and simply work now:
- The battery-map button fetches the file in small verified pieces and shows “Downloading … %” as it goes, retrying a piece by itself if the WiFi hiccups. A large log no longer stalls part-way through on some phones.
- Using the panel counts as activity, and a download in progress holds the device awake for the whole transfer — auto-sleep can't shut the hotspot down mid-file.
- If something does go wrong (busy device, empty log), you get a clear message instead of an empty or truncated file.
Charging
Plugging USB-C into a powered-off device opens a dedicated charging screen: a battery animation, the percentage and the voltage, dimmed so it can sit on a desk.
| Situation | Behaviour |
|---|---|
| Press A or B | Continues to a normal boot (pairing / riding). |
| Unplug the cable | The device powers off. |
| While charging | Auto-sleep is disabled — it won't switch off on its own. |
Battery, sleep & power-off
Device battery
- EucBuddy's battery is shown top-right (% or V — the Battery option).
- The percentage is a smoothed estimate tuned to the battery's real discharge curve, so it stays steady and counts down evenly instead of jumping around or dropping fast under load.
- At a low level the device beeps a warning.
- At a critically low level it powers off with a "battery depleted" notice (except on the charging screen) — plug in USB-C.
Sleep & wake
- After the inactivity timeout (Auto-sleep) the device sleeps. A button press resets the timer — riding doesn't. Using the WiFi panel counts too, and a CSV download keeps the device awake until it finishes (Section 9).
- Wake it with the PWR button.
- If it sleeps while connected to a wheel, it tries to reconnect on wake and resume your trip without resetting the counter.
- It also comes back to the ride screen you were last on — not the first one — after a connected sleep or reconnect. (If you'd since hidden that screen, it falls back to the first one.)
Cancelling the reconnect
While EucBuddy is reconnecting after a wake 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.
- Press B — a “Cancel reconnect?” popup appears. A second B stops trying and takes you back to the scan list; A closes the popup and carries on. Ignore it and it disappears by itself after 10 seconds, reconnecting as usual.
- The reconnect keeps working underneath the popup — deciding to continue costs you nothing.
- A button you were already holding when the screen appeared is ignored, so waking the device with a long press can't cancel anything by accident.
- Cancelling doesn't throw your ride away. Pick the same wheel from the scan list within about ten minutes and the ride carries on where it stopped; pick a different wheel and the old ride is closed and saved first.
Power off
- Press PWR while the device is running — the screen goes dark and it switches off. Press it again to start up.
- Or menu → Power off, or the WiFi panel's power-off button. All three do the same thing.
- Switching off while connected to a wheel keeps your place: the next start reconnects to that wheel and resumes the ride, exactly like waking from sleep.
- On a charger the device cannot cut its own power while USB is feeding it, so it goes dark and quiet instead. A or B brings it back; pull the cable and it is properly off.
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.
On the device — the Rides viewer
- Open it from the carousel (Rides). It works like MyBuddy — a separate screen.
- A scrolls the list (newest first); B opens a ride's details — three big fields at a time across four pages (press A to flip pages, B to close). Time and Energy sit on page 3, next to distance.
- Hold B to delete — all rides from the list, or this ride when its details are open (each asks to confirm). Hold A for the main menu.
In the WiFi panel
- The Rides section lists everything with room to scroll back through older rides. Each row shows battery, top speed, peak current, distance, time, Wh, sleeps and max temperature at a glance.
- Tap a ride for a details pop-up; edit any value by hand — including ride time (mm:ss, or h:mm:ss past an hour) and energy — add a ride manually, or delete one. Clearing a time or energy box marks that value as “not measured”.
- Download CSV to keep or analyse your whole history on a computer — the export now carries ride_seconds and energy_Wh columns as well.
Firmware updates
New firmware adds wheel support and features. Updating happens in your browser — no software to install.
| Step | Do this |
|---|---|
| 1 | Open the flasher page in Chrome or Edge (on a computer). |
| 2 | Connect EucBuddy with a USB-C cable. |
| 3 | Click and follow the prompts — the rest is automatic. |
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.

FAQ
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
Toggle the light on any ride screen except Trip and Stats with B, on wheels that support it (KingSong, Begode, Veteran, Nosfet, InMotion).
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
Browse to 192.168.4.1 manually. On some phones, turning off "Private DNS" helps.
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 did the PWM screen go?
Nowhere — it's now called Custom 3, and out of the box it shows exactly what it always did (PWM big, speed and voltage beside it). The difference is that you can now 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 the carousel opens right on Disconnect, so it's one press of B away. It used to live in Settings.
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
The update that added ride time and energy changed the stored ride format, so the log is cleared once on the first start. Settings, favorites and calibrations are kept. Download the CSV before updating if you want the old rides (Section 13).
The battery-map CSV download used to stall
Fixed — the panel now pulls the file in small verified pieces with a “Downloading …%” counter and retries any piece that fails, and the device stays awake until the download finishes (Section 9).
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 WiFi panel's Home WiFi card (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 in the WiFi panel's Weather card (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 in the panel's Weather card — 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
That's what it's for now — PWR is a power button in both directions. Press it again to start up; if you were connected to a wheel, it reconnects and carries the ride on (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.