Skip to content

Decode Zero log files from the mobile application into text files

Notifications You must be signed in to change notification settings


Repository files navigation

Zero Log Parser

This is a small decoder utility to parse Zero Motorcycle main bike board (MBB) and battery management system (BMS) logs.

  • It is designed to emulate Zero Motorcycles' own official log parser, that turns the binary-encoded event log into a mostly-readable text file.
  • If you send a log to Zero Customer Support, they should provide you with a text file in response. (Often, a phone call prompts them to process the log file)
  • If you run this script, and the script does not parse some entries correctly, we can upgrade the log parser to handle them if we have a copy of Zero's official log. So try to provide us with examples like this to help the development of the parser.


Getting Logs

You can extract logs from the bike using the Zero mobile app:

  1. Download the Zero mobile app.
  2. Pair your motorcycle with it via bluetooth.
  3. Once the pairing is working, select Support > Email bike logs.
  4. Enter your email address into the To: line to send the logs to yourself rather than / in addition to Zero Motorcycles support.
  5. Open the email and download the attachment.


You'll need to install Python 3 somehow from

$ python3 <logfile.bin> [-o output_file]


If you want to run using Docker, there's only two steps: build, then run.

Docker Build

docker build . -t "zero-log-parser"

To explain:

docker build

Build a new Docker image


Use a Dockerfile in the current directory ("/.")

-t "zero-log-parser"

Tag it as "zero-log-parser"

Docker Run

We will change directory to where the logs are, then run the tool against a log.

cd ~/zero-logs
docker run --rm -v "$PWD:/root" zero-log-parser /root/VIN_BMS0_2019-04-20.bin -o /root/VIN_BMS0_2019-04-20.txt

To explain:

cd ~/zero-logs

Go to the directory where the logs are stored. Change this to the correct directory for you

docker run

Run a Docker image as a container


Don't keep the image when it exits

-v "$PWD:/root"

Mount the current working directory as a volume inside the container at /root


What Docker image to run


Name of the binary file. You can get this by doing an ls after the cd before this command. Make sure to add /root/ before it since the path in the container is different

-o /root/VIN_BMS0_2019-04-20.txt

Save the decoded log file as VIN_BMS0_2019-04-20.txt in /root, which will save it in the current working directory outside of the container


Basic log documentation is at

If you want to debug the script and contribute, it's helpful to be able to run the tests. These currently look at a suite of log files and just run the parser to look for errors.


$ python3 develop


$ python3 <directory of log files>


Originally developed at


Decode Zero log files from the mobile application into text files







No releases published