BionXtool is a tool for diagnostics, configuration, and real-time monitoring of BionX e-bike components (Console, Battery, and Motor). Together with a cheap ($10) USB-CAN interface, it can replace almost all of the functionality of the official BBI Software and hardware interface ($100).
It is a fork of the original BigXionFlasher project, with the following enhancements:
- Uses a cheap off the shelf USB Canbus adapter and standard Linux CAN networking
- Read and write any bike registers
- Real-time sniffing of the CANbus for diagnostics and more
- Sniff from PCAP files for offline analysis
I write this fork as I had dusted off my old mothballed BionX system, and needed to adjust some limits to comply with updated legislation in my jurisdiction. With the company defunct, I couldn't get a dealer to reset it, and wanted to use a cheap Aliexpress CAN adapter.
Warning
A non-compliant system must not be ridden in public spaces, any limits changed with this tool must be compliant with local regulations. As well as legal trouble, raising speed limits can put yourself, others, and your bike in danger.
Warning
Setting certain registers may leave your system unusable or difficult to recover. Please take extra care when manually setting registers.
- System Diagnostics: View detailed hardware/software versions, serial numbers, and health statistics (cycle counts, temperature, voltage).
- Configuration: Modify speed limits (Assist, Throttle, and Min Speed), console preferences, accessory voltage and more
- Advanced Sniffing: Real-time or file-based (PCAP) CAN-bus monitoring with automatic register decoding into human-readable names and values.
- Direct Register Access: Read and write any specific BionX register from any node using hex IDs or friendly names.
For a detailed description of the BionX CANBus protocol, see PROTOCOL.md..
- A BionX e-bike system using the CANBus protocol (post 2009 with G1/G2 console)
- A USB CANBus interface running Candlelight (e.g CANable 2.0)
- A way to physically connect to the bike CANBus (see below).
- A Linux system with SocketCAN support.
gccandmakebuild tools.libncursesfor monitor mode.
git clone https://github.com/buxtronix/BionXtool.git
cd BionXtool
makeThere are a few ways to interface with the CANBus on the bike. For reference, see this wiring diagram.
The official way to connect (which is what the dealer interface does) is to use a tap cable inline where the console connector plug is. To do this, you need a pair of Hirose connectors (HR30-6J-6P and HR30-6P-6S), wire all 6 pins up in a straight through configuration, and tap off the GND, CAN_L and CAN_H connections into the CANBus adapter.
The connectors are however fairly expensive (about $20/pair).
The cheapest way is to tap lines off the battery connector by just soldering wires to them.
To access this, you need to remove the battery bracket off the bike, unscrew the two Torx screws underneath, remove the metal bracket and you will get access to the back of the plug. You may need to remove some hot glue first. Then you just solder wires to tap off pins 2 (CAN_H), 5 (CAN_L) and GND. You need to take care not to short or unsolder the wrong wires as there are high currents and moderate voltages (50v) present.
I have developed a slim flex PCB that slides under the console where it taps off the pogo pins. This is quite cheap, about $5 delivered from JLCPCB, then once mounted you solder wires to the flex PCB that sticks out from under the console.
For details, see here.
Most CANable adapters come from the factory with slcan firmware, so you will need to flash the candlelight firmware onto it instead. This is really simple, you just plug it into a computer and click a couple of buttons on the updater page.
BionX systems communicate at a bitrate of 125,000 bits/s. Before running the tool, you must bring up your CAN interface with the correct settings.
# Bring up can0 with the BionX bitrate (125k)
sudo ip link set can0 type can bitrate 125000
sudo ip link set can0 upIf you are testing without hardware, you can use a virtual CAN interface:
sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set vcan0 up
./BionXtool -d vcan0 -SBionXtool provides several modes of operation, from high-level configuration to low-level protocol analysis.
Retrieve a comprehensive report of all connected components, including software versions, battery health, and odometer.
# Print all system settings and statistics
$ ./BionXtool -s
BionXtool V 0.1 (BionXtool)
(c) 2026 by Ben Buxton <bbuxton@gmail.com>
console already in slave mode. good!
Console information:
hardware version ........: 0x15
software version ........: 0x64
manufacture date ........: 13/01/2014
assistance level ........: 3 (0x03)
part number .............: 03205
item number .............: 00342
max limit enabled .......: yes
speed limit .............: 26.0 km/h
min limit enabled .......: yes
min speed limit .........: 0.2 km/h
throttle limit enabled ..: yes
throttle speed limit ....: 6.0 km/h
wheel circumference .....: 2075
mountain cap ............: 54.69%
odo .....................: 14258.40 km
Battery information:
hardware version ........: 0x63
software version ........: 0x112
manufacture date ........: 07/09/2017
part number .............: 05560
item number .............: 00342
voltage .................: 53.13 V
battery level ...........: 100.00%
maximum voltage .........: 112.08%
minimum voltage .........: 95.42%
mean voltage ............: 110.00%
resets ..................: 0
lmd .....................: 10.40 Ah
cell capacity ...........: 2.15 Ah
charge time worst .......: 113
charge time mean ........: 0
charge cycles ...........: 268
full charge cycles ......: 0
power cycles ............: 969
battery temp max ........: 80°C
battery temp min ........: -17°C
accessory voltage config.: 8.20 V
RTC timestamp............: 2088d 16:40:16
charge level @ 010% : 0015
charge level @ 020% : 0015
charge level @ 030% : 0072
charge level @ 040% : 0088
charge level @ 050% : 0023
charge level @ 060% : 0028
charge level @ 070% : 0020
charge level @ 080% : 0004
charge level @ 090% : 0003
charge level @ 100% : 0003
total # of charges .: 0271
balancer enabled ...: no
voltage cell #01 ...: 4.085V
voltage cell #02 ...: 4.083V
voltage cell #03 ...: 4.080V
voltage cell #04 ...: 4.086V
voltage cell #05 ...: 4.081V
voltage cell #06 ...: 4.088V
voltage cell #07 ...: 4.086V
voltage cell #08 ...: 4.091V
voltage cell #09 ...: 4.098V
voltage cell #10 ...: 4.083V
voltage cell #11 ...: 4.066V
voltage cell #12 ...: 4.114V
voltage cell #13 ...: 4.088V
temperature pack #01: 29°C
temperature pack #02: 29°C
temperature pack #03: 29°C
temperature pack #04: 29°C
temperature pack #05: 14°C
Motor information:
hardware version ........: 0x32
software version ........: 0x102
manufacture date ........: 09/11/2017
temperature .............: 37°C
speed limit .............: 26 km/h
wheel circumference .....: 2075
part number .............: 05989
item number .............: 00342
Adjust the behavior of the bike to match local regulations or your preferences.
# Set assist speed limit to 32.0 km/h (0 for unlimited)
./BionXtool -l 32.0
# Set throttle speed limit to 20.0 km/h
./BionXtool -t 20.0
# Set minimum assist speed (speed at which motor kicks in)
./BionXtool -m 2.0
# Update wheel circumference (in mm) for accurate speed/distance
./BionXtool -c 2073
# Set initial assist level on power-up (0-4)
./BionXtool -a 2
# Set mountain cap level (assist percentage)
./BionXtool -o 55
# Set clock to current local time
./BionXtool -TConfigure battery-specific settings like accessory port voltage.
# Set accessory port voltage (6.0V to 14.0V)
./BionXtool -v 12.0
# Enable/Disable accessory power (1=On, 0=Off)
./BionXtool -A 1Analyze the live communication between the console, battery, and motor.
# Real-time TUI dashboard (Top-like interface)
./BionXtool -M
# Stream every CAN packet with human-readable decoding
./BionXtool -S
# Stream only when a register value changes
./BionXtool -C
# Analyze a previously captured PCAP file
./BionXtool -f capture.pcapIncluded in this repo are two captures. bike-on-off.pcap is a raw PCAP sniff
from my bike being turned on, then turned off shortly after. bike-on-off-txt
is the same but decoded.
Read or write individual registers on any node. Useful for advanced features or deep troubleshooting.
# Read Battery Hardware Revision (0x3B)
./BionXtool -R battery 0x3B
# Set config to enable accessory power at bike turn-on.
./BionXtool -W console 0x80 0x1An almost complete list of all registers is in registers.h. Note that interacting with the console requires first setting it into slave mode (-z), however this is not required for other components.
Force system states or perform remote operations.
# Power off the entire system
./BionXtool -p
# Force console into slave mode (for external control)
./BionXtool -z
# Run commands without attempting to trigger slave mode
./BionXtool -n -S| Option | Argument | Description |
|---|---|---|
| Global | ||
-d |
<device> |
CAN device interface (default: can0) |
-h |
Print help screen | |
| Information | ||
-s |
Print system settings overview | |
-i |
Hide private serial and part numbers | |
| Configuration | ||
-l |
<speed> |
Set assist speed limit (0-70 km/h, 0=unlimited) |
-t |
<speed> |
Set throttle speed limit (0-70 km/h) |
-m |
<speed> |
Set minimum assist speed (0-30 km/h) |
-c |
<mm> |
Set wheel circumference (in mm) |
-a |
<level> |
Set initial assist level (0-4) |
-o |
<pct> |
Set mountain cap assist level (0-100%) |
-v |
<volt> |
Set battery accessory voltage (6.0 - 14.0V) |
-A |
<0|1> |
Set battery accessory power (0=off, 1=on) |
-T |
Update clock (RTC). Stored in battery | |
| Sniffing | ||
-M |
Monitor Mode: Interactive TUI dashboard | |
-S |
Sniff Mode: Stream decoded packets | |
-C |
Change Sniff: Stream only changed values | |
-f |
<file> |
Sniff from a PCAP file |
| Low-level | ||
-R |
<node> <reg> |
Read specific register (hex) from node (name or hex) |
-W |
<node> <reg> <val> |
Write value to specific register |
-z |
Force console into slave mode | |
-n |
Do NOT attempt to trigger slave mode | |
-p |
Power off system |
- 2026-04-14: rtc support. various register clarifications
- 2026-03-28: added adapter pcb info
- 2026-03-06: initial version
BionXtool is licensed under the GPLv3.
This project is a fork of BigXionFlasher, originally developed by Thomas König. It includes software developed by the BigXionFlasher Project (http://www.bigxionflasher.org/).
Gemini CLI is used to assist coding tasks. Actual hardware engineering lovingly done by hand :)
Author of this fork: Ben Buxton bbuxton@gmail.com (2026)