OBD support for 2026+ Subaru Solterra
I have a 2026 Solterra and the ODB dongle OBDLink CX. Get error “Error while handling ODB data commands” “We could not find SoC in the car data response” The car configuration loads and the connection to the dongle is successful, it just will not connect to the car.
- What type of vehicle connection is this?
Log in to comment and vote
Kanchana Marasinghe
Mar 20
After playing with this for a few hours and tons of trial and error I was finally able to get SOC working. You have to add the following as a custom PID settings and it should work. I'm going to try to get power usage sorted next but I'm not sure if I'll be able to. I'll update here if/when I'm able to figure that out.
Keep in mind that the formula for SOC may be a little inaccurate. I haven't tested it below about 75% SOC yet, but it should be easily adjustable once I have more data points.
Make sure the protocol is set to 7. No need for a keep alive command. The initialization commands need to be in the order shown here.
if anyone else manages to get this to work, let me know.
Kanchana Marasinghe
Mar 20
For the voltage and current I'm not sure if ABRP in its current way can handle it. The correct PID is 22F49A however it's a multi frame response split across 2 frames. All the data is there but ABRP cannot parse and split the data correctly.
So voltage and current are in the same response. Because they're not single frame results for voltage and current individually, it can't be used to derive power. I'm fairly sure at this point ABRP needs an update to handle this.
The good news is that at least it's usable with SOC.
ABRP User #2450112
Mar 20
Hey.
I just tried this on my Bz (bz4x) 2026.
Didn't work.
But I have a Vlinker MC+, maybe that is the problem. 😞
Kanchana Marasinghe
Mar 20
How did you try it out? I believe this should work with most/any adapter. Once you have the PIDs set, did you try the “Test Pids” button? Once in there you have to press the test button. I have to use that to force the app to realize there’s a connection it can use since OBD isn’t properly supported yet.
ABRP User #2450112
Mar 20
When I test PID it says:
Failed to parse respons
OBD command: NaNTS
Raw OBD-respons: ASP7OK
Got respons null
OBD command: ATSP7
Raw OBD-respons: ATSP7OK
The same with:
ATSH18DA5AF1, ATCRA18DAF15A AND 22F45B
Kanchana Marasinghe
Mar 20
Can you post screenshots of your settings? The same 3 screenshots I have posted just so we can verify the difference.
ABRP User #2450112
Mar 21
Kanchana Marasinghe
Mar 21
Hmmm that's exactly the same as what I have. It might actually be down the adapter then? Maybe there's a firmware update available for it? I know the vLinker modules can be upgraded.
ABRP User #2450112
Mar 22
Thank you for looking into it.
I have the latest firmware, so maybe I must consider to by the OBDlinker CX
ABRP User #2450112
Mar 23
Now it is working, at least on my last trip.
Don't know what exactly I did differently, because I didn't change the PID setup. only thing I did this time was create a new vehicle. The only thing is that the soc doesn't quite fit, don't know if it's the right thing to do, but I changed 1.16 to 1.11. now the soc fits at 80%
Thank you so much for sharing 👍🙂
Kanchana Marasinghe
Mar 23
Glad you got it working. I’m not super happy with the formula myself - I’ve tweaked it a ton over the last few days to get it to fit with with the vehicle’s SOC properly, but I haven’t quite nailed it down. You’ll notice it’ll fit well at high SOC only for it to deviate by 2-3% when its low, or vice-versa.
Just a matter of figuring out the right formula :)
ABRP User #2450112
Mar 23
I have no idea what the numbers in your formula means 🤣
Is there any place that I can read about it? So I know what to change.
Kanchana Marasinghe
Mar 23
There isn’t - its just a standard linear fit formula.
The only thing you shouldn’t change is the A/255 part because that’s what converts it from hex to decimal. The *100 part then just makes the 0-1 decimal into a percentage value. The other parts for subtracting and the multiplier are just values to try to get the SOC reported by the computer to match what the car’s display shows. There’s nothing special about it, just mostly “random” values to try to fit the curve as closely as possible.
ABRP User #2450112
Mar 23
👍 thanks
I will se how close it is when the soc drops.
ABRP User #2450112
Mar 29
Hey.
Have you hit the right numbers?
My car has the 73,1 kWh battery
My formula is now:
A*100/255 - 1.3) * 1.23
But don't think it's very good when I hit higher Soc.
Kanchana Marasinghe
Mar 29
I haven't updated my formula yet.
I noticed that on the pre 2026 models the formula for SOC is just A. Ie, no adjustment to match the displayed soc. Maybe that's what we should do too and just accept that they'll not be in sync. The main issue with that being it'll show more range than you can practically use at low SOCs.
Kanchana Marasinghe
Mar 29
One option is to just use A as the formula and then make a full map of displayed SOC vs ABRP’s SOC. That way we can make a more accurate formula. We'd need everything from basically 0% (in the car's display) all the way to 100% and what is reported via obd at the same time.
I haven't had the chance to do that because it'd have to be a pretty manual process.
ABRP User #2450112
Apr 4
I could maybe do that.
But I don't really know how to do it.
I assume you have to use the equation: (A*100/255) and then see what abrp reports back at each percentage the car shows. but how do you get that into an equation in abrp?
It could also be that it's too difficult for me when I don't understand this, and don't know anything about coding.
I'm a toyota mechanic, and I've been looking at data lists in various ecu's in the car. But I don't think I've found anything useful here.
Kanchana Marasinghe
Apr 4
Yes you'd have to use that formula you mentioned and then write down everything on a piece of paper. If you have that I can put it into Excel or something and get a formula from the data.
Kanchana Marasinghe
Apr 7
I went on a road trip this weekend and was able to gather some data. I manually wrote down what the displayed SOC was at every SOC pulled via OBD.
It’s not perfect, I’m missing data between 100% to 82%, some between 79% to 68%, and below 30%. This is because I was recording this manually. However, the trend is still very clear:
It looks like the new formula should be:
1.1285 * (A/255 * 100) - 6.5302I think ABRP may freak out at very high SOC’s (like when the car is charged to 100%) and the formula returns over 100%. If that happens, this formula should work (at the cost of very slightly less accuracy):
1.12 * (A/255 * 100) - 6.4I haven’t tried these formulas yet (just got back from gathering data), so please let me know how well this tracks now if you end up using it.
It's also worth noting that I have the 77kwh Canadian market model. The US models are 75kwh, and I'm unsure about other markets. I have no idea how this factors into the formula and calculations - I assume not much since the difference is small and the scaling is probably similar.
ABRP User #2450112
Apr 7
Great work.
Much better than the standard one.
My battery is 73.1 kWh with the new formula, which I don't know if I wrote correctly:
(A*100/255 * 1.1285) - 6.5302
It is about 2% off.
Have tested from 100 - 33
At 100 abrp shows 98
At 33 abrp shows 30
ABRP User #2450112
May 3
Hey.
Sorry to contact you again 🫣
My formula is as close as I think that is can come now. Thank you very much for pointing me in the right direktion.
My formula: (A*100/255 * 1.1) - 3.0
Have you succeded to get any other data (battery temp, capacity, current, voltage)?
Derek Meek
May 12
keep in mind this same PID should apply to all the various 2026 Subaru & Toyota EVs so those of us with other models would like to see this too.
Kanchana Marasinghe
May 18
https://abrp.featurebase.app/p/odb-support-for-2026-subaru-solterra/comment/69bcc89f5f0e284fdbce3258
Voltage and current exists, but there’s no way to properly extract that data in ABRP to my knowledge.