Since my Chevy Volt comes with Bluetooth only for hands free calling I have to use third-party transmitter and AUX input for music. Unfortunately steering wheel controls are not working with AUX input, so I figured a workaround.
I could sniff for packets sent on CAN bus when button on steering wheel is pressed, and then command my phone to change song by emulating keyboard press of media buttons. Bluetooth LE supports HID devices like keyboards natively, so all I have to do is build a Bluetooth LE keyboard which is controlled not by buttons, but with CAN-bus messages.
While idea is pretty simple, execution involves a lot of knowledge and work. I'm trying to describe all my struggles down below in project logs, so feel free to take a look and maybe learn something new along with me. As a fan of open-source ideology, I publish my work on GitHub - all feedback much appreciated.