Yes, we have fitted a Yamaha motor into a Giant, using a Yamaha controller and it would not talk to the battery.
Damn.
Makes sense too, i bet Giant changed the Canbus ID for their proprietary “Syncdrive“stuff so it was no longer on the Yamaha DBC.
For those who dont understand what that means, the CANbus is simply a very robust communication system that allows a single pair of cables (A bus) to send thousands of messages (I call them passengers) at the same time and have all the hardware items on that bus route receive the same data (Motor, battery and RCone in our cases)
The system allows units on that bus route to talk to whatever passenger it is interested in and ignore the rest. This means we just fire all the data onto the same line with a unique identifier and tell the interested units what identifier to listen to.
This has completely replaced running separate wires for every signal which used to need miles of heavy wire and hundreds of connections. Now the same pair of wire carry the lot. Its hugely cheaper and very robust, plus its reasonably impervious to electrical interference due to the CRC system in place.
I expect the host controller in our case is RCOne and in later bikes it will be the unit down by the motor.
The RCOne will power the CAN wake up line (Pink i recall), and then issue a canbus power up command to the BMU.
The BMU (Battery management unit) will then check cell status and wiring integrity and issue an ok signal back to RCOne. This will send back the OK to enable the main battery power output connector (The big + one) which will power the motor up. Any issues at that stage and the BMU will issue an immediate shutdown command because lets face it, these batteries are literally bombs. I think its here that our bikes fail with the common “Wont stay on” issue due to damp. The wiring resistance check fails or we short out the message bus lines.
If all is well, the motors controller firmware will power up and do similar checks on wiring integrity and to its own sensors and sends all this data back down the canbus to RCOne and the battery as CANbus messages for applied torque, cadence, bike inclination and wheel speed as well as motor temperature and current usage I expect.
Getting to the problem….
All these CANbus messages are encoded and the decoding file is called a DBC file.
Cars typically have an OBD2 encoding format. Trucks a J1939 format and there are others for marine and military etc.
Every manufacturer can have his own, unique identifiers and DBC file which keeps them at the top of the tree when it comes to data processing. Trade secrets if you like. And quite rightly too.
Petrol heads can liken this to the difference between a genuine BMW or Ford diagnostic tool and a normal OBD diagnostic tool.
One decodes far more data as it has the manufactuers proprietary DBC file in it which will allow it to decode thousands more messages on the same CANBus connector (OBD Port) than the freely available OBD2 DBC file which can only decode the OBD2 DBC stream that was made law for all vehicles to have freely available on the bus.
Bottom line here is Bearing Man is no doubt correct that you would have to change every message receiver and transmitter to one that talks the same language in order for them to work in harmony.
I wonder if HAIBike have done the same? Any ideas?