esk8 calc donate now

The Definitive Guide to Metr App / Metr Pro


Metr App is probably™️ the most advanced telemetry app for electric skateboards. As amount of features continued to grow over the years the time has come for the proper guide to explain the basics and some hidden secrets in the app.

This guide will be improving over time and hopefully some day will cover everything the app has to offer. Before you start reading there are two very important things you need to know. In order to use it you must have:

If your skateboard has another controller, the app will not work for you. For example Boosted, Evolve, Mellow, Meepo, WowGo, Backfire have another type of controller and are not compatible.


:hatching_chick: First time setup
:gear: Metr Pro firmware
:chart_with_upwards_trend: Realtime
:snail: Modes
:record_button: Records
:bust_in_silhouette: Account
:stop_sign: Faults
:mortar_board: Expert
:zap: Discharger
:mega: Announcements
:gear: Settings
:bridge_at_night: TCP Bridge
:1234: Overlay
:battery: DieBieMS
:battery: FlexiBMS
:battery: LLT BMS
:hammer_and_wrench: Troubleshooting

🐣 First time setup

Follow the instructions at

⚙️ Metr Pro firmware

In order to use all applications latest features it is important that your Metr Pro has the latest firmware. You can check it by going to Settings and clicking on the blue gear near the module name.

Click Upgrade and wait until firmware update over BLE is complete.

📈 Realtime

Shows values such as voltage, current, temperature from your VESC at any given time. Each value is displayed in it’s own cell. Following cells are available:

  • Voltage
  • Cell voltage (per cell)
  • Battery charge (%)
  • Battery current
  • Motor current
  • ESC temperature
  • Motor temperature
  • Distance
  • Duty cycle (%)
  • Amp hours (+regen)
  • Watt hours (+regen)
  • Speed, GPS speed
  • Elevation (above sea level)
  • Consumption (Wh/km)

It is possible to arrange/show/hide/resize/recolour cells:

  • Long press anywhere on Realtime page to enter Layout Editing mode
  • Tap a cell to show / hide
  • Drag to change position
  • Long press and drag to resize
  • Touch colour palette to change colour, long press a colour to expand more colours

There is an indicator in the bottom which shows currently selected BLE module and connection status, ESC hardware name and firmware version. It blinks every time new packet from VESC is received.

There are 2 Realtime screens available. You can customize any of them.

You can click on small watch icons to select which data will be displayed on the smart watch. Apple watchOS and Android Wear is supported. You can select up to 4 cells.

🐌 Modes

You can setup a number of modes (profiles) to change max speed, acceleration and braking power. The recommended way to create a new mode is to read existing config from VESC and then change values.

To apply a mode, swipe it to the right. The mode will be automatically applied to all VESCs connected via CAN bus

To rename a mode, open it and click on the name

You can also share modes

⏺ Records

Records can be started and stopped automatically (configurable in Settings → Records). If the app is running in the background it will automatically detect selected BLE module, connect to it and start a new record.

To export raw JSON data open your record in the browser and add ?format=json in the address bar.

JSON data format:

  "ah":0.49,                         // Total charge consumed, Ah
  "ahRegen":0.02,                    // Total regen-braking charge, Ah
  "altitude":[0,0,-0.1,-0.2],        // Relative altitude change, m
  "appver":"4.6.10",                 // Metr app version
  "consumption":[11.2,11.3,11,10.5], // Consumption, Wh/km
  "current":[-0.02,0.92,2.46,2.38],  // Battery current, A
  "current2":[],                     // Battery current ESC#2, A
  "current3":[],                     // Battery current ESC#3, A
  "current4":[],                     // Battery current ESC#4, A
  "description":"",                  // Long record description, text
  "distance":2353.07,                // Total covered distance, m
  "duration":430471,                 // Total duration, ms
  "duty":[23.7,25.6,25.5,25.7],      // Duty cycle, %
  "elapsed":[359,683,877,1346],      // Time, ms
  "elapsedAh":[0,0.01,0.02,0.02],    // Charge consumed, Ah
  "elapsedAhRegen":[0,0,0,0],        // Regen braking change, Ah
  "elapsedDistance":[0,0,0.5,1.9],   // Covered distance, m
  "elapsedWh":[0,0,0.1,0.1],         // Spent energy, Wh
  "elapsedWhRegen":[0,0,0,0],        // Regen-brakign energy, Wh
  "end":1602758871101,               // Record end timestamp, ms since Epoch
  "escCount":1,                      // ESC count
  "faultCode":[0,0,0,0],             // ESC fault code
  "faultsCount":0,                   // Number of ESC faults
  "fw":"23.46 UNITY",                // ESC firmware
  "latitude":[59.29341,59.29341],    // Latitude, degrees
  "longitude":[18.00459,18.00459],   // Longitude, degrees
  "motorCount":2,                    // Number of motors
  "motorCurrent":[0,1.99,5.7,5.4],   // Motor current, A
  "motorCurrent2":[0,1.6,5.57,5.57], // Motor#2 current, A
  "motorCurrent3":[],                // Motor#3 current, A
  "motorCurrent4":[],                // Motor#4 current, A
  "motorTemperature":[23,23,23,23],  // Motor temperature, C
  "motorTemperature2":[24,24,24,24], // Motor#2 temperature, C
  "motorTemperature3":[],            // Motor#3 temperature, C
  "motorTemperature4":[],            // Motor#4 temperature, C
  "rpm":[16007,16019,16038,15999],   // ESC rpm
  "speed":[16.08,16.09,16.11,16.07], // Speed, km/h
  "start":1602758440630,             // Record start timestamp, ms since Epoch
  "temperature":[26.7,26.7,26.7,26], // ESC temperature, C
  "temperature2":[],                 // ESC#2 temperature, C
  "temperature3":[],                 // ESC#3 temperature, C
  "temperature4":[],                 // ESC#4 temperature, C
  "title":"bad weather,              // Record short description, text
  "version":18,                      // Record format version
  "voltage":[49.1,49,48.8,48.8]      // Voltage, V

👤 Account

You can sign in to your account at and view stats and all records for currently selected Metr Pro module. The sign in is done using public key cryptography instead of a password. You need to have active connection to Metr Pro in order to sign in.

🛑 Faults

All faults that happen to VESC while it’s connected to the app are recorded and can be seen in a separate tab

🎓 Expert

Expert is for expert use only. It allowes to change and tweak all possible configuration parameters on VESC. Both motor configuration and app configuration. It automatically detects all VESCs connected via CAN bus so you can switch between them and change settings. There is a super convenient omnibox to easily search what you want to change

It is also possible to do motor detection (both BLDC and FOC) in Expert. Click menu → Detect motor

Metr app fetches motor and app configuration every time connection is made with Metr Pro and saves a backup. To check history of changes click menu → History.

For DieBieMS / FlexiBMS too!

⚡️ Discharger

You want to discharge battery pack in some cases, for example before winter. Storing battery discharged will increase its longevity. Sometimes you think about it too late and the weather is already bad to discharge the normal way. Fortunately there is a feature in metr app to help with that. To use discharger, open Expert tab, click menu → Discharger

It uses foc_openloop command to discharge battery. Battery current goes through motors, but they are not spinning, just heating.

:stopwatch: Takes several hours to discharge a battery
:seedling: Quiet and about 5x faster than freespin
:1234: Uses multiple VESCs/motors over CAN bus
:chart_with_upwards_trend: Continuously sends COMM_ALIVE packets and monitors realtime data
:fire: Motor temperature limit 60℃, VESC temperature limit 70℃
:white_check_mark: Turns off when reached storage level

📣 Announcements

Announcements is a very useful feature that literally tells you realtime data without you having to look at it.

You can customize which kind of data you want to hear and how often.

⚙️ Settings

Very importaint, make sure motor settings are configured correctly

It is recommended to enable Location

and Notifications

To switch between metric and imperial go to Settings → Miscellaneous

And when viewing a record in a browser

🌉 TCP Bridge

Connect to Metr Pro and start TCP Bridge from Settings tab

Then open VESC Tool and use the same IP address

🔢 Overlay

An easy way to add telemetry to your videos. You can film the video with the camera of your choice and record the telemetry data separately with the metr app. Then you combine them together.

Open your record in the browser and add ?format=fit in the address bar. Wait until telemetry file is downloaded

Start GARMIN VIRB® Edit and import your video
Click Import G-Metrix and use the .fit file that you downloaded

🔋 DieBieMS

DieBieMS is a smart BMS (Battery Management System). If you have DieBieMS connected via CAN bus it will be automatically detected in the Metr App (no extra setup is needed). DieBieMS provides such information as individual cell voltages and state of charge / discharge, consumption based battery percent data.

To see individual cell voltages, click Battery percent cell on the Realtime page.

When you plug in the charger, DieBieMS view will automatically open and show charging current / balancing state. Glowing dots on the cells mean they are balancing at the moment.

It is possible to configure DieBieMS through the Metr App. When you open Expert page, DieBieMS shows up and you can read / write settings. This is a quick and convenient way to change some settings when you are on the go and don’t have access to full DieBieMS Tool.

🔋 FlexiBMS

FlexiBMS is similar to DieBieMS except it is a charge-only BMS. Please read the previous section DieBieMS.


LLT BMS comes with it’s own BLE module instead of CAN bus. It is possible to pair Metr Pro with LLT BMS using following steps:

  • Make sure you are connected to Metr Pro
  • Navigate to Settings → Battery

  • Click on “Pair with BMS”

  • Select LLT BMS
  • Go back to Realtime tab and click on Battery percent cell. You should see cell information

🛠 Troubleshooting

A good advice is to search for information on forum and forum. Maybe you will find the solution.

If you didn’t find anything relevant, could be that you found a bug! The bugs are always there🐛 and once in a while a new one pops out. If you want to report it, please collect the log file from the app. Open Settings and click on “Show Logs” button. Send log file toghether with the bug description, screenshots or video. Log file resets every day so don’t forget to collect it after you experienced the problem.

This guide is written in Markdown and is available at

GitHub (contributions welcome) (ask your questions here)




What an amazing work !!
That will help for qure, thanks !


I’ve got 2 modules ready for 2 builds. Is it possible to use just a standard Metr pro with unity? Or do I need to have the unity version?

You can indeed use the normal module with the unity.
The unity version of the module is just more convenient for the unity as it keeps the other UART connector clear whilst having a minimal footprint


Well done :smile: :+1:


Hey Roman, can the metr log records if I don’t open the app? Like just turn on the board and go, or does it have to be connected to my phone?

I always forget to open the app. With how much gear I put on and also needing to remember to open my other riding app (strava) I sometimes forget to open metr. I assume the module doesn’t have any storage for this though? Would be cool on future iterations.


Thx for the great guide introduction!!!

Is it possible to write a created mode to both vescs on a dual setup
Without changing the vesc ids or sonething like this
So just swipe a legal mode and apply it to both vescs?

I think so, I had trouble with that before where it wouldn’t connect to the slave vesc, but it works for me now for some reason. I have never changed the vesc id’s but I did change some other stuff in both metr and bldc tool so something did it. I think you just have to set up the metr settings like in the setup guide. Perhaps someone else can tell you more.

1 Like

Ok this would definetly be a reason to change to the metr app and bluetooth module
Right now im using the xmatic app and there i need to write the modes first to the focbox0 master then change to canbus fwd and write it to the focbox1 slave


Yah once you get it working it will write to both with a single swipe. Pretty quick too

1 Like

This would be real cool in case the police pulls you over

I second this, a standalone metr with integrated GPS and room for lots of records

1 Like

@Sharky modes are applied to both VESCs

To apply a mode, swipe it to the right. The mode will be automatically applied to all VESCs connected via CAN bus

@Saturn_Corp you don’t need to open the app every time, just don’t force close it

Records can be started and stopped automatically (configurable in Settings → Records). If the app is running in the background it will automatically detect selected BLE module, connect to it and start a new record.

I also updated the first post with new info, thanks!


ohhh great tht sounds super ill give it a try

@rpasichnyk I think I need some help…

I was trying to get my METR Pro 1.0 set up with my FSESC 6.6 and while updating it I got a call which disconnected the Bluetooth or something at around 15% through the update. The module has one red and one blue light on all the time and my phone doesn’t recognize it anymore. Is there a way to reflash it manually?

Unpair (forget) the module in system settings, then Scan it again in Metr app, connect, enter PIN code, does it work?

Did that, it just doesn’t show up in the app

Edit: you mean forget through the phone settings?

Yes, forget / remove in phone settings

1 Like

IT WORKS!! @rpasichnyk you are a fucking genius with the design of this module

QQ is it normal for the batter voltage to spasm from 64% to 78% at maybe 5 times a second?

1 Like