rascafr / 9-analyzer

Segway Ninebot serial communication analyzer (ESCx such as Voi, Circ / Flash, Bolt, Dott, Jump, Tier...)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

9-analyzer

Introduction

This is a quick Node.js project developped to demonstrate how to parse communications logs extracted from the Ninebot electric scooters internal serial communication bus.

Roadmap

  • Decoding address ✅
  • Read ASCI formatted logs ✅
  • Decoding commands and arguments meanings ✅
  • Read pure hexfiles logs ✅
  • Group dataframes together
  • Display visual frame transaction sequences ✅
  • ...
  • Elon Musk on Mars

Install

git clone https://github.com/rascafr/9-analyzer.git

cd 9-analyzer

npm i

Run

Either production or development (code monitoring, nodemon required)

# prod
npm start

# dev
npm run dev

UML

PlantUML sequence diagram can be generated using this tool.

You need to download the PlantUML jar executable on your machine.

Then, just set the environment variables PLANTUML_JAR as the path of the executable.

Example: (MacOS / Linux)

export PLANTUML_JAR="~/Documents/plantuml.jar"

The generated file will look like:

Getting new logs

Use a serial-USB adapter, and use the following settings:

  • 115200 bd/s
  • 8 data bits
  • 1 stop bit
  • no parity

Incoming data will be sent by the scooter on the yellow wire connected to the dashboard.

Ground (OV) is the black wire. Connect both files to your serial-USB adapter on RX and GND.

Arduino

Some Arduino code is present insinde of this repos, can be used to parse on the fly some of the serial commands in "realtime".

Sources

Some reverse engineering on my own.

Also, lot of information here about the protocol: https://github.com/etransport/ninebot-docs/wiki/ES2ESC

About

Segway Ninebot serial communication analyzer (ESCx such as Voi, Circ / Flash, Bolt, Dott, Jump, Tier...)


Languages

Language:JavaScript 80.2%Language:C++ 19.8%