GM BAC-0281 Project: Programming on the road

PeterT12

1 mW
Joined
Sep 3, 2015
Messages
12
I'm planning to use a Goldenmotor BAC-0281 controller, together with their HBS36R motor and a 48V battery.
I don't have any of this hardware yet, so any experiences you guys can provide are most welcome!
Since this setup won't be exactly legal (Thanks, EU) I will need some way to limit the performance on the fly, without carrying a pc with me.
What I intend to do is to run on full power while off-road, and before going on the street flip a switch to limit performance to 25 Km/h, to avoid unwanted attention :lol:

What I have already figured out:
-the BAC controllers can be programmed with a USB cable, in which you can set the max speed setting. ( it will take some experimenting to see how that setting correlates to real world speed)
- The controller needs to be off before you can program it
- It seems the GM USB cable is just a simple FTDI Serial (RS232) to USB converter, providing the PC with a virtual COM port.
I've seen this fact mentioned somewhere on these forums (can't find the exact thread anymore) and the 4pin connector ( probably Vdd, TX, RX, GND) all point to this.
CONFIRMED:
This video https://www.youtube.com/watch?v=wBsP8q40Vws confirms these suspicions. It seems the Goldenmotor cable uses the popular CH340 usb to serial chip.
On a side note: This makes the 33$ GM asks for a PI-0200E cable completely ridiculous, this cable is just a 5$ item, nothing special. Get yours here for 3$ + free shipping

What I hope to find out:
[strike]-Does anyone know if it really is a RS232 interface (Could also be CAN or something even more obscure, although that's not very likely)[/strike] Confirmed
[strike]- If RS232, What is the interface voltage level? (My money would be on 5V, but 3V3 is also possible)[/strike] This link shows the pinout and indeed, the 5V
[strike]- What is the pinout of the BAC programming connector (if it is standard FTDI cable, this should be easy based on wire colors)[/strike]
EDIT: this thread has some more pointers on the cable and pinout.

What I want to achieve (and obviously share on the forum when it's working)
- Figure out the protocol GM uses to program their BAC controller:

GM uses the "Personalized Settings Unit" software. It seems that all settings are stored in a .MXF file, which is then uploaded as a whole to the controller. This is actually pretty neat, because it would allow a "replay" sort of solution, that doesnt require reverse engineering of all the different settings. Steps I need to take:

- Set the settings to the value you want on a pc, using the Personalized Settings Software, in my case, limit the top speed.
- Program the controller with these settings, while capturing all traffic on the Serial port.
- Save the exact communication profile, and mimic this using a microcontroller.

UPDATE:
A first look at a HEX dump of the generated MXF files (without actually connecting to a BAC controller) shows that this might be easier then expected. It seems the MXF files just store a simple 15 byte configuration string, which can then be sent over to the controller.
This makes sense when looking at the Personalized Settings software, which has 15 separate settings (buttons/sliders). 1byte per setting sounds reasonable enough right? :D
I generated some different settings files, each with the same settings except for the "FWD speed %" option:

HEX code as found in the .MXF file
FWD speed 0% 0a 28 b0 57 14 f0 00 00 01 01 00 00 00 00 00
FWD speed 25% 0a 28 b0 57 14 f0 00 00 01 3f 00 00 00 00 00
FWD speed 50% 0a 28 b0 57 14 f0 00 00 01 81 00 00 00 00 00
FWD speed 99% 0a 28 b0 57 14 f0 00 00 01 fd 00 00 00 00 00
FWD speed 100% 0a 28 b0 57 14 f0 00 00 01 00 00 00 00 00 00

This clearly shows the setting for the FWD speed being set in the 10th byte.
There are 256 values available for the speed settings where any number between 0x01 and 0xFF (that is, 1 and 255 respectively) seem to be reserved for the speed limit percentage.
0x00 (or, 0) which corresponds to the 100% setting seems to be treated as a "special" case, perhaps because this means "no speed limit" or "Speed limit off"

So next thing is waiting until my BAC arrives in the mail, and then I will do my best to break the communications!


Ultimately this will lead to:
- Have a system on my bike consisting of a small microcontroller that, on the flip of a switch, turns off the controller, connects to it over Serial and programs the speed limit to be 25Km/h.

Anyone with experience with this controllers, feel free to contribute!
 
Great idea, one issue I see is making a harness that both serves to program and to carry the wires for the brakes, throttle, pas, horn etc as on my Gm external controller you have to undo the molex style clip before plugging in the stupidly overpriced programmer lead. No reason why you can do all of what you're saying though. Would like to help but no time. Good luck.
 
Hi, did you have any luck? I'm thinking of making this happen for a smart-pie 4 which I am about to buy and any insights woud be appreciated
 
I'm thinking it'd be easier just to have a switch that connects a resistor in series with the throttle signal line to limit full throttle voltage to whatever equates to 25kmh
 
Back
Top