Nice work!! Still trying to wrap my head around this though. So you are able to grab UART type signals from the original canbus from the car and then created your own canbus firmware that gets uploaded to the little can box? It will then be up to Dudu to map those in their firmware. So until they update the Dudu firmware we might be left with what we have anyway???
RFI: CANbus decoder w. best support and its UART byte sequence mappings
- Edited
Almost:
I am leaning on the work done by others that have mapped out a few different UART protocols. I will use the Raise VW(PQ) protocol which allegedly (hopefully) has good support from DUDUAUTO / the head unit.
I have used a canbus sniffer (an Arduino due) to identify the messages that my car uses and have mapped them here such that they will relay the relevant UART sequences to the head unit: https://github.com/erik-rosen/canbox-xc90-my2008/blob/main/cars/xc90_2008my.c
I have flashed the little canbus decoder box (OD-OLO-02) with this new firmware.
If the Raise VW (PQ) protocol is indeed well supported with my head unit, then I wont have to wait for anyone else to do work
I think we can really help each other out here
I have a 2007 XC90 (facelift) and have been using a modded canbus box for a while but trying to get even more out of it but my knowledge is limited, you seem clued up though so maybe you might know more and we could get something better between us? I would very much like for you to reach out directly to me either on here or on github
Firstly creating a new 2008MY for the canbus box is not the right way to go as 2007MY and 2008MY are the same, in fact all facelift XC90 from 2006-2014 all use same canbus commands so just updating the 2007MY is enough, only earlier prefacelift use different canbus address'
So got some reading for you, have a look at these threads:
https://github.com/smartgauges/canbox/issues/1
https://github.com/smartgauges/canbox/issues/11
https://github.com/smartgauges/canbox/issues/10
jesusvallejo has made some real progress and got a lot of things working that originally did not however some things are not perfect.
Also quickly would like to point out that my XC90 has been upgraded with LED daytime running lights and auto headlight switch so how my headlights function will vary from you so don't worry as much about this, if I could get mine fixed that would be great but I'm not expecting it and I just change the Dudu between day/night manually
So far what's working:
More buttons/control however these are limited - read https://github.com/smartgauges/canbox/issues/10
Open door notifications
Parking sensors
Steering geometry
Lights - read https://github.com/smartgauges/canbox/issues/11
A/C Very limited and a bit buggy - Unless jesusvallejo or someone else can help I think this will never work properly
Probably more I forgot
Hope to hear from you soon...
- Edited
To Dudu developers
It is possible for us to get all canbus buttons to send data to Dudu unit, if Dudu unit had option to remap all canbus buttons we could easily have all buttons do anything we want...
Other firmware's have options to remap canbus buttons...
Redmod for example allows you to remap all canbus buttons: https://firmware-an21.wixsite.com/redmod
liamstears Not to distract from the above topic, I currently have a kia sportage 2012 with no canbus wiress to from the car to the back of the OEM headunit. I am looking at engineering this by tapping to the CAN H and CAN L from the BCM (body control unit) of the car. Is this the right approach? What suggestions or wiring will you add please?
liamstears Firstly creating a new 2008MY for the canbus box is not the right way to go as 2007MY and 2008MY are the same, in fact all facelift XC90 from 2006-2014 all use same canbus commands so just updating the 2007MY is enough, only earlier prefacelift use different canbus address'
I dont think this is true: From sniffing the canbus and testing the SWC buttons on my 2008MY, the relevant bits between pickup and hangup are swapped, and left and right are swapped on the rti-nav buttons. Have only checked the SWC and parking sensor signals though.
Will have a read through on the issues you linked.
It's literally just because some stuff has been mapped wrong in the original 2007 file, it's not because they are different as far as I'm aware, next/previous buttons are also the wrong way I believe
- Edited
Installed the CANbus decoder with the new firmware and set the protocol to Raise / VW / PQ / HIAMP in the head unit in my car today. Pickup and hangup now do something, back and enter too. Parking sensors also have visual indications in the head unit. I need to implement appropriate button mappings for the other buttons (seems like the PQ might not have any nav buttons that correspond to left or right) as you discovered here @liamstears https://github.com/smartgauges/canbox/issues/10).
Would love some input from the DUDUAUTO devs (@dudu-lai?) on which UART protocol that has the broadest support and it's corresponding messages/buttons to byte sequence mappings per my original post.
My SWC has the following buttons:
Next, Previous, Volume up, Volume down, Pick up, Hang up, Enter, Back, Up, Down, Left, Right.
If there is a protocol that covers all of those, I would be very happy . Per @liamstears, Raise/Toyota/* seems like it has most of what I am looking for: https://github.com/darkspr1te/Work/blob/master/MctCoreServices/src/com/mct/carmodels/RZC_ToyotaSeriesProtocol.java but could you please confirm?
- Edited
Hopefully helpful for the next guy: I tested implementing the Raise/Toyota/* protocol to see if it would unlock more things I could do with my steering wheel buttons (enter/back/up/down/left/right).
While the Raise/Toyota/All/* protocol has support for more buttons, what these buttons do in the head unit is pretty duplicative:
Essentially, all of the different variations of left/right/up/down in the Raise/Toyota/* protocol just map to switching to the next or previous track on the head unit. (Same as MENU_UP/MENU_DOWN in the Raise/VW/PQ protocol, which also results in changing to next or previous track) https://github.com/smartgauges/canbox/issues/10#issuecomment-2607626000
ENTER will toggle playing a track and BACK will shut down the current app in focus or sleep the head unit.
Would be cool if these commands would actually allow users to navigate menus in the head unit, but seems that is not what they do right now.
- Edited
For whoever has a Volvo XC90 MY2008 and an OD-OLO-02 CANbox, an ST-Link v2 programmer and who isn't afraid to do a bit of soldering, you can make use of this firmware: https://github.com/erik-rosen/canbox-xc90-my2008/blob/main/volvo_od2.bin. Instructions to flash here: https://github.com/erik-rosen/canbox-xc90-my2008/blob/main/volvoxc90.md (courtesy of Jesus Valleo).
After installing, set the CANbox to be Raise/VW/PQ/HiAMP on your head unit.
What works (that doesn't on the unmodified OD-OLO-02 canbox):
- All SWC buttons do something (Pick up/Hang-up opens the phone app or picks up and hangs up the current call, enter opens the voice assistant, back/left/right buttons swaps between open apps, up toggles play, down mutes)
- Rear parking distance sensors and steering wheel lines work
- Night/day mode of HU is consistent with that of the stereo and DIM
- Fuel level
- Odometer
- Door status
Some TODO's that requires CANbus message reverse engineering:
- Seatbelt status
- Wiper fluid level
- Parking brake status
- Exterior temp
- CCM integration
This is really great news! I look forward to trying it, I also did email you directly using your email address from GitHub, I really would like to talk to you directly...
- Edited
For those looking to do something similar for a different car, I created this pretty nifty Arduino Due sketch that was very useful to reverse engineer the CAN messages of my car:
Sketch: https://github.com/erik-rosen/can_sniffer_tools/blob/main/change_monitor.ino
Readme: https://github.com/erik-rosen/can_sniffer_tools/blob/main/README.md?plain=1
I use it with an Arduino Due, a CAN transceiver and an ODB2 connector.
The UART protocols can be found here (or rather reverse engineered from the code in this repo): https://github.com/darkspr1te/Work/blob/master/MctCoreServices/src/com/mct/carmodels/
A bit disappointed in the lack of guidance from the DUDU devs here, but hopefully this will be useful to the next guy!
edog
Wow this is cool. I am willing to learn and want to get, at the very least, speed from my Nissan Qashqai. There is no digital speedometer in the North American version of these cars and it’s my kids car. The GPS speed is so slow to update and not useful. I don’t even know where to start but would like to talk to you edog. How can I contact you?
- Edited
If you want to reuse what I've built upon, you will need an STM32-based canbox that is flashable (like the OD-OLO-02). Don't worry about the listed car make since you will be replacing the firmware with your own - all you need to worry about is that the pinout to the canbox matches that of your wire harness. Here (top left) you can see the pinout for the OD-OLO-02.
You are going to need to extend the firmware code to support your own car. Here is an example for my car (Volvo XC90 MY2008). To do that you are going to need to reverse engineer the CAN messages sent on the CANbus (essentially you need to find which CAN ID and bits correspond to things like speed, SWC button presses etc). You can do that with what I linked here, or you might get lucky and find someone who has done something similar for your car. I found a bunch of IDs from googling around.
You will then need to solder connectors to the CANbox PCB and hook it up to a STLINK V2 programmer and flash the CANbox with the new firmware that you have created.
Be aware that while it is quite rewarding, the learning curve can be quite steep if you are new to programming and embedded systems.
This is great topic. Do you know how to recognize if the specific canbox is STM32-based?
- Edited
ciubaka You need to open up your CANbox and look at the markings of the MCU chip (most likely the largest one). Put those markings into google and you’ll be able to see if it is an STM32-based chip.
After that you need to figure out which pins correspond to SWDIO, SWDCLK, V3.3 and GND and if there are existing pads connected to those pins that you can solder connector pins to so you can connect the STlinkV2 and reprogram the MCU. Mine (OD-OLO-02) happened to have some. If yours does not, it will be very difficult to do this.
Here are the markings on the OD-OLO-02 for reference.
- Edited
Hello. I'm new here. I came here looking for a solution to the problem of no sound signal from parking sensors in Volvo XC90 2006 on Android radio. I installed an Android 10.1" radio in my Volvo XC90 2006 with the assigned Can Bus Decoder OD-OLO-02. Identical to the one mentioned in this topic.
After reading the entire topic, I noticed that the parking sensor problem was fixed on this Can Bus Decoder. In addition, someone managed to obtain some interesting information about the car. For example: door status, fuel level, odometer.
In my Volvo, after configuring the Can Bus Box as: [Oudi]-[Volvo]-[XC90]-[04-13], all 4 steering wheel control buttons worked correctly. However, no other functions that this Decoder could and should visualize work.
What I care about most is the sound signal from the rear parking sensors when approaching an obstacle.
I am attaching a screenshot of the HEX information that is displayed on the radio after engaging and disengaging reverse gear.
I would like to point out that due to lack of specialist knowledge I cannot interpret this information in any way.
Can I count on some help and advice here?
I will be happy to answer any additional questions.
If it does not violate the rules of this forum I would like to ask for contact from someone who could sell me a corrected and reprogrammed Can Bus Decoder for Vovlo XC90 2006.