Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Volvo V/S90 front seats retrofit/standalone.
#31
Damn I think I am too much of a noob on Arduino to get this to work, I think I am going to have to butcher the seat wiring, I cannot get the seat to respond no matter what file I upload. I have 2.9v on the CAN H and 1.8 on CAN L, powered up the Arduino with laptop, shared ground on seat and Arduino, 12v to seat module, absolutely nothing.
Reply
#32
Scratch everything, I got it, thanks everyone!
Reply
#33
(08-30-2025, 09:20 PM)Sparkfire7 Wrote: Damn I think I am too much of a noob on Arduino to get this to work, I think I am going to have to butcher the seat wiring, I cannot get the seat to respond no matter what file I upload. I have 2.9v on the CAN H and 1.8 on CAN L, powered up the Arduino with laptop, shared ground on seat and Arduino, 12v to seat module, absolutely nothing.

You need to have total 60 ohm resistance in the CAN network (between the can H and CAN L). 
The MCP board has a 120 ohm jumper on it. Make sure it's connected. On the other end where the module is connected, put 120 ohm resistor between CAN H and CAN L. 
The unit must receive a configuration message to wake up and enable the functions.
Reply
#34
(09-01-2025, 04:20 AM)IMAY2023 Wrote:
(08-30-2025, 09:20 PM)Sparkfire7 Wrote: Damn I think I am too much of a noob on Arduino to get this to work, I think I am going to have to butcher the seat wiring, I cannot get the seat to respond no matter what file I upload. I have 2.9v on the CAN H and 1.8 on CAN L, powered up the Arduino with laptop, shared ground on seat and Arduino, 12v to seat module, absolutely nothing.

You need to have total 60 ohm resistance in the CAN network (between the can H and CAN L). 
The MCP board has a 120 ohm jumper on it. Make sure it's connected. On the other end where the module is connected, put 120 ohm resistor between CAN H and CAN L. 
The unit must receive a configuration message to wake up and enable the functions.


Thanks IMAY, it actually ended up being that the CAN wires were too short (which I have never seen before, and I just tried it on a whim). I got it all working using a file from one of the guys on here, now the hard part is going to be finding the right seating position, holy adjustments batman!
Reply
#35
I have a seat i like to test on, is it possible to get the arduinofile? (arduino IDE file or binfile)
I have the canbus card and a arduino uno or esp32 i only needed some code to start from...
Thanks
Reply
#36
I have spent about 12 hours now trying to get it to work, and I simply cannot...personally written code, AI written code, nothing seems to want to get the seats running. This is using either of the data files

@SparkFire7 or @The Stig, I don't suppose you could possibly place the Arduino code here? (And which Arduino did you use specifically, I had substantial issues with variable sizing etc. for the data!)

Thanks!!!
Reply
#37
I have this code up and running (thanks to the stig) and its working so i have no reason to change anything :-)

My seat are from V90 2018

I use a ESP32C3 mini board with the MCP2515 board and a 12volt to 5v stepdown board, connected like this between esp and mcp:

INT ---not connected
SCK --- 4
SI --- 6  (MOSI)
SO --- 5 (MISO)
CS --- 10 (can be change in the code)
GND --- gnd
VCC --- +5v

i also use a jumper for 120 ohm termination on the mcp board


Attached Files Thumbnail(s)
       

.zip   volvo_canbus_sender.zip (Size: 3.99 KB / Downloads: 2)
Reply
#38
(09-14-2025, 06:45 PM)ElMyggo Wrote: I have this code up and running (thanks to the stig) and its working so i have no reason to change anything :-)

My seat are from V90 2018

I use a ESP32C3 mini board with the MCP2515 board and a 12volt to 5v stepdown board, connected like this between esp and mcp:

INT ---not connected
SCK --- 4
SI --- 6  (MOSI)
SO --- 5 (MISO)
CS --- 10 (can be change in the code)
GND --- gnd
VCC --- +5v

i also use a jumper for 120 ohm termination on the mcp board


Thanks so much for passing this over!!!!

I have now dug through the commands and identified there is only 1 command the seats need to fire up. The list of 1000 was mostly AI hallucinations as far as I can see, the original data only had 100 rows (and the AI hallucination had 870 dupes)

I have also fixed the slowness, it fires up in about 60ms rather than 16.5s

My seat is live by the time I finish plugging my Arduino into my battery bank

Thanks so much again for passing over - it looks like the issue with my code was almost certainly using the incorrect canbus speed, I can't believe it!


Attached Files
.zip   SPASeatCanbusActivator.zip (Size: 612 bytes / Downloads: 1)
Reply
#39
Quote:Thanks so much again for passing over - it looks like the issue with my code was almost certainly using the incorrect canbus speed, I can't believe it!

For anyone who wants to dig into VOLVO canbus. 
the new gen VOLVO (SPA, CMA) has several isolated CAN BUS networks and all of them are operating in 500kbps. There is no low canbus network. 

Second important point. 
There is no individual message ID for each operational command such as window down / up, climate control. 
Instead, Can BUS nodes send (broadcast) messages with different message IDs continuously while changing only one byte within the same message. 
This makes it really hard to hack the canbus. 
Let's say you want to control the fan speed from an app on your phone. 
There are two different message IDs which are sent by the CEM to the CCM every 10ms to 20ms for this. The source of the initial command to CEM is the IHU via Flexray. 
One byte in one message ID controls which fan motor (ventilated seats or main or back ) to turn on and the other 1 byte in another message ID commands the speed of the fan.

Even though external device / software catches and sends the exact message to turn on the FAN,    10ms to 20ms later, CEM sends the default message then CCM turn the fan off. This happens because IHU did not send turn on FlexRay message to CEM at the first place.   


On the other hand, 
All diagnostic commands are one time commands with specific bytes. The reply message if an info requested such as coolant temp, always has the same message ID for reply.  All there is left to do is parsing the message.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)