• Hello ES! We could use some help to get us past the finish line on building the new knowledgebase for the forum.
    Can you donate? Please see our fundraising page. Thank you!

BionXtool: My BionX diagnostics, CAN sniffing, and config tool

buxtronix

New here
Joined
Mar 1, 2026
Messages
5
Location
Sydney, AU
I needed to change the settings on my BionX G2 system to comply with updated local legislation, and didn't want
to spend $100+ on a BBI tool plus find the software.

So I found the old BigXionFlasher project and re-wrote it to use cheap (<$10) USB CANBus adapters, then
added a bunch more features. It supports querying and tweaking all the usual hardware info and settings, plus
arbitrary other settings too - it also supports sniffing and decoding of the running system CANBus traffic.

It's on my Github and runs on any Linux system (incl RPi): GitHub - buxtronix/BionXtool: A tool for diagnostics, configuration, and real-time monitoring of BionX e-bike components

I also wrote a bunch of documentation on the wiring and protocol, as well as designs for a cheap (~$5) shim PCB
made to easily tap into the CANBus (I also mention other options).

mount.png

Code:
usage: BionXtool [-d <device>] ...
 -d <device> .............. CAN device (default: can0)
 -l <speedLimit> .......... set the speed limit to <speedLimit> (1 - 70), 0 = remove the limit
 -m <minSpeedLimit> ....... set the minimum speed limit to <minSpeedLimit> (0 - 30), 0 = remove the limit
 -t <throttleSpeedLimit> .. set the throttle speed limit to <throttleSpeedLimit> (0 - 70), 0 = remove the limit
 -a <assistLevel> ......... set the initial assist level after power on (0 - 4)
 -v <voltage> ............. set the battery accessory voltage (e.g. 6.0 or 12.0)
 -A <0|1> ................. set the battery accessory power (0=off, 1=on)
 -o <level> ............... set the mountain cap level (0% - 100%), use 55%
 -c <wheel circumference> . set the wheel circumference (in mm)
 -R <node|id> <reg> ....... read a specific register from a node (e.g. -R battery 0x3B)
 -W <node|id> <reg> <val> . write a specific register value to a node (e.g. -W motor 0xA5 0xAA)
 -s ....................... print system settings overview
 -S ....................... sniff CAN bus
 -C ....................... sniff CAN bus, only display changes
 -M ....................... monitor CAN bus (real-time TUI)
 -f <pcapfile> ............ sniff from a pcap file
 -p ....................... power off system
 -n ....................... don't try to put console in slave mode
 -z ....................... put console in slave mode
 -x ....................... skip automatic system shutdown when setting new speed limit. (should not be used)
 -i ....................... don't display private serial and part numbers
 -h ....................... print this help screen

I hope others find this useful!
 
Wow, neat, thanks for publishing that! I have an old BionX setup laying around that jumps to full speed any time the min speed is reached. Maybe I can use your project to disable the PAS, but keep throttle functionality. I can get the console to calibrate and display throttle input. I assume just the torque sensor is broken on.

I think the console only allows setting a gain range above zero:
> 0007: Sensor signal gain, 0.1 to 4.0

But maybe your project will allow setting gain to zero to disable the broken PAS, something that doesn't seem possible from the console.
 
Wouldn't just setting the assist level to 0 with the buttons achieve the same? Throttle still works but no PAS.

But otherwise, you might be able to set the gain to zero, else possibly instead set the motor and throttle max speed to what you want whilst setting assist max speed to something like 1. All the individual registers can be tweaked with this tool.
 
Back
Top