Loading...
Tech

Reverse Engineering Shimano DI2

This one was quite hard and temporarily expensive to do but it has been something that has been on my mind for a while. So firstly, if you want to do stuff with the Shimano DI2 buttons start at my github here and check out the Wiki as it contains the equivalent of a profile document in the wiki style.

Alright so ANT+ has been around the block for a while, and while not as cool as BLE it tends to own the cycling world still. BLE is still struggling. I mean what even is “Zwift compatibility mode”. It’s not an official mode, it’s just the profile with a single connection and properly understanding the power data. I can’t believe 5 years on from when I first saw BLE powermeters it’s still an incomprehensible joke. It sort of works, but sort of is how it should have been 6 years ago.

But something else happened around that time 5 years ago…. Shimano Private ANT. See there was this perfectly good profile called “Shifting Profile” under ANT+ that told the cycle computer what gear you were in and what your battery status was. There was a second profile called the “controls” or Generic Controls profile, which could control just about everything. It’s last revision was in 2013 when cycle computers were basic and supported three sensors. So these combined to give a user the ability to tell a cycle computer what gear it’s in, the status of it’s battery, and potentially remotely control other devices. Except the story messed up when one group set company decided to write there own. As you’ll see in the video it’s not pretty and it’s like they left in so much bad code and debug code. Well, at least in their first generation hardware… the word amateur is used A LOT!. It’s a mess. They hammer the transceiver over and over and over. It gets worse depending on the cycle computer connected. Wahoo Elemnt Bolt can’t configure the buttons to do anything like the Garmin can, but it properly responds to the commands while the Garmin Edge 520 just blast the D-Fly with responses constantly in a “I don’t care” method.

This amateur hour is all the result of making stuff up without industry involvement. It’s just dumb frankly. The only advantage they have is that they combined the remote functions into the same channel, and to ensure things worked used Acknowledgement transmissions, ones that the cycle computer must send something back to say it got them. And frankly this should be in the shifting profile now if only to save power and reduce the annoyances. As I talk about in the video, the Remote profile doesn’t provide sufficient function control to the cycle computers.

The other side is that the industry isn’t chasing hard because of the directions they went. SRAM etap and AXS don’t have the ability to remotely control anything due to lack of buttons. FSA WE… I still haven’t seen in the wild but same thing I think (If it has extra buttons not for shifting let me know). And that means the only other electronic groupsets are Campagnolo and Shimano. Campagnolo used the Shifting profile and over a year ago added Generic Remote controls for Page Next and Lap buttons. Shimano did their own thing.

So we now have a fracture of a nice to have piece of technology. Annoying. So I intend to change that. This is the second original D-Fly unit and it’s a great opprotunity to reverse engineer the thing needed. The ANT network key, the timing / transmission rate, and RF frequency.

The one thing that peeve’s me is that is uses frequency 2457Mhz that is suppose to be reserved for ANT+. While not actually in an ANT+ agreement that I can find, it says specifically on many official websites that this frequency is suppose to only be used with ANT+. Again…. amateur hour. Watch the video to find out more and check out the github.