buxtronix
New here
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).

I hope others find this useful!
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).

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!