J2534 is a standard that lets a diagnostic tool talk to a car’s computers for programming. It helps technicians reflash or update modules using compatible equipment.
The immobilizer is an anti-theft system that prevents the engine from starting unless the correct key is recognized. “Key and immobilizer” programming typically involves synchronizing the key’s authorization with the vehicle’s immobilizer control logic so the car can start normally after service.
“EPROM work” means updating or changing the car computer’s stored software data. It’s like rewriting the permanent memory that controls how the module behaves.
A 2017 Subaru Legacy is a regular family car with lots of computers inside. The episode uses this specific car to show how a wrong replacement computer can cause confusing error codes.
When you replace a car computer, you often have to “set it up” so it works with the rest of the car. Otherwise the car may think something is broken even when the new part is installed correctly.
A control module is one of the car’s computers that runs a particular system. Sometimes the car’s computers can blame the wrong computer first, so diagnosis has to be careful.
Coding is the process of programming a module with the correct configuration so it matches the vehicle it’s installed in (VIN/variant, calibration strategy, and compatibility). The host emphasizes that a module can be physically installed but still not “agree” with the car’s other modules because of shared data and factory setup differences.
Subaru’s Eyesight module is the computer that runs the driver-assist features. It works with cameras on the windshield, so if there’s a fault or calibration issue, the system may not function correctly.
The dual camera is the pair of cameras Subaru uses to “see” the road. Since it’s used to judge distance, it has to be aimed and calibrated correctly or the system can act up.
ADAS systems are the car’s driver-assist features that use sensors and cameras to help you. They often need careful calibration, so if something is slightly off, they can fail or warn you.
Calibration is adjusting and verifying the camera/sensor so it measures distances and angles correctly. If it’s not calibrated, the driver-assist features can be inaccurate or throw errors.
The Subaru Crosstrek is a small SUV-style car made for regular driving, with extra ground clearance. People talk about it in repair and diagnostic podcasts because problems can sometimes show up around the roof area, like leaks or how well parts fit together. A roofline-focused episode usually means the podcast was checking things like seals and drainage.
EyeSight is Subaru’s camera-based safety system. Calibration is the process of lining it up so the cameras “see” the road correctly; if it’s off, the system can’t work reliably.
B28A0 is a specific error code from Subaru’s EyeSight system. It means the EyeSight module thinks the car is one configuration, but the car is actually another, so the system flags it.
“Vehicle model judgment” is basically the EyeSight system verifying that it’s been programmed for the right car. If it doesn’t match, it turns on warnings and stores an error.
Reverse automatic braking is a safety feature that can help stop the car if it senses something behind you. If EyeSight has an issue, other systems like this can also throw related errors.
Subaru puts the car’s configuration codes on a sticker on the B-pillar. That sticker helps you confirm what the EyeSight module should be programmed to match.
The Crosstrek is the Subaru’s compact SUV-style model. If the podcast mentions bending or changing something related to “cross track,” it’s usually about checking or adjusting measurements that affect how the car tracks straight. Those checks can matter for things like steering feel and tire wear.
SSM4 is Subaru’s official diagnostic software for programming and troubleshooting Subaru modules. Here, the speaker tried SSM4 and aftermarket tools to see if they could write the EyeSight camera’s configuration code, but they got the same outcome.
A “model code” is a setup number the car uses to confirm it’s been programmed for the right vehicle configuration. If the camera’s code doesn’t match what the car expects, the car can flag an error.
CAN bus is the car’s internal “data network” that different computers use to talk to each other. The camera checks what the car is reporting, and if it doesn’t line up, it can set an error.
“Special functions” are the deeper menu options in a diagnostic tool that go beyond just reading trouble codes. The host tried to find the camera’s setup code there but couldn’t.
The ABS module is the computer that controls your anti-lock brakes. It helps keep the wheels from locking up when you brake hard. This episode is about how replacement ABS modules may not work if the module’s internal code doesn’t match the car.
A scan tool feature is something your diagnostic computer can do through the car’s system. Here, it means you can enter a code using the scan tool rather than doing a full reprogram of the module. The host is saying this is why new modules can be set up, but used ones may be stuck with their existing code.
These are steps in the scan tool process: one part confirms the action and another part writes the code into the module. In this case, the host says they could write the code, but they couldn’t easily see what code was already inside the module. That makes it harder to verify compatibility with a used part.
A trouble code is an error message stored in the car’s computers when something goes wrong. The host is pointing out that the system might be unhappy even if it hasn’t saved a specific error code.
A mismatch code is basically the car saying, “Something doesn’t match what I expected.” In this case, the ABS computer seems to have the wrong setup information for the car it’s installed in.
ABS is the system that helps prevent wheel lockup during hard braking. A communication code means the ABS computer isn’t “agreeing” with the other computers in the car, or it can’t properly exchange the expected data.
A data stream is the live information the car’s computers send out while you’re scanning it. Sometimes the scan tool shows it clearly, and sometimes it’s hidden or encoded so you can’t easily read it.
This is a “test by isolation” where the ABS is disconnected so it can’t talk to the rest of the car. If the warning goes away, it suggests the ABS was the part causing the problem.
Bleeding the brakes means pushing out trapped air in the brake lines. If you don’t, the brake pedal can feel spongy and braking can be less effective.
LIVE
Welcome to the Automotive Diagnostic Podcast.
We're going to explore ways to sharpen our diagnostic skills, find learning resources,
and hear from experts in the automotive field.
This episode is brought to you by L1 Automotive Training and Keith Perkins. If you're looking
for education on module programming, J2534, eProm work, key and immobilizer, electrical
over 60 hours of training videos on all those subjects and more.
When I first started out doing mobile, I utilized Keith's videos on module programming and J2534
in order to get my head wrapped around what I would need for the tooling, the computers,
the software setups, what kind of obstacles I would be up against when I'm out there programming
modules on cars, and it was a huge benefit to me. And I continue to use the training videos
that he has on his website. So I strongly recommend checking out L1Training.com. The link is in the
show notes. Hey, what's going on Automotive World? Welcome to another episode of the Automotive
Diagnostic Podcast. My name is Sean Tipping. I'll be your host once again for this week's episode.
Thank you so much for joining me. On the show this week, I'm going to talk about a 2017 Subaru
legacy that we had some module replacement programming issues. And what it ended up being was
one of the modules on the car was incorrect for that vehicle. It had been replaced with a used
unit. And the problem it caused made it look like another control module was at fault. And we run
into this from time to time. I'm sure you've seen it on vehicles too. I mean, sometimes the wrong
control module stands out very obvious that control module is wrong. It has codes, it doesn't
function. Other modules have codes saying it's bad. And then it's fairly obvious it's just a matter
of can we correct the software in that module? Or is it the wrong physical part? Is the hardware
incorrect, right? And that's a whole other thing. And of course, we run into that all the time.
But sometimes we get a situation where there are codes in a particular module. And it makes it
seem like that module has an issue, has a problem, or might even just be, hey, this module's wrong
for the car like it was in this situation. But really, it is because of a second module on the
vehicle that most likely has been replaced. That was the situation here. But the module that had
actually been replaced with the wrong part didn't have any codes and wasn't showing any signs that
it was incorrect. And the reason that this happens, not only in this particular Subaru,
but other vehicles, is modules are going to share data, they're going to share information.
And how that works exactly on each individual car, system and network, and
pieces of information within the network, of course, that's different across all of those.
And so you're going to have different modules, different networks, different scenarios,
based on what you are dealing with. So you can't necessarily take this one example and just apply
it to everything across the board. I mean, if you could, I probably would have spotted this one
quicker than I did. But that's why I'm talking about it on the show. This can be a difficult
situation to recognize right off the bat that, hey, this module's coding. It's coding saying that
it's wrong for the vehicle or it doesn't agree with the vehicle. But really, it is because of the
data that is being shared with or pulled or sent to from another module. They're sharing information
and just because of the strategies and the codes and how those particular modules are set up from
the factory from Subaru, one module codes, the other one doesn't. Okay, so you kind of know where
we're going with this. I won't spoil the actual module that was failed, although I bet you if you
do enough Subaru work, you can probably guess. But I'll share some interesting specific details
about this Subaru and how you would be able to pick this out if you got into this situation.
Because I can guarantee you both of these modules are likely to be replaced for one reason or
another. So anyways, again, to recap 2017 Subaru Legacy, and it came to us as a diagnostic and
there was a code in the eyesight module. Okay, so this is the dual camera or the stereo camera up
at the top of the windshield. I've talked about the eyesight systems plenty of times on the show.
They are the absolute worst to calibrate for the target board and the ADAS systems
have absolutely just kicked my ass. If you go way back a few years ago, I had an episode about a
Subaru Crosstrek where the roof line or the angle that the roof line was sitting at was off by a
few degrees and so, you know, it could never get calibrated until that was repaired. Anyways,
even with a vehicle that's sitting correctly, I have trouble with the eyesight calibrations. I mean,
sometimes they go through, you know, get 98%, 99%. And it's like, well, what am I doing differently?
You know, I measured the same way I'm using the same target. Anyways, they're frustrating in their
own right, but this is different. This is not a calibration issue. The code that I've got in the
eyesight module is a B28A0. Okay, and what this is standing for is, I'm going to read off what it
actually says, vehicle model judgment. Okay, so it's saying that the model of the vehicle
does not agree with what is programmed into the eyesight module. Okay, now, of course, we got a
bunch of lights on the dash, and this is a hard code. It resets every time you clear it. And
that's the one that is persistent. Now, there was also a code in the reverse automatic braking
module that just basically says there's a problem in the eyesight system. And there's also a code
in the power steering control module that says there's a problem in the eyesight system. And
that's it. And of course, this code that I'm focusing on the B28A0, that's the one I'm like,
okay, I have to figure this out. Now, if you read this code, it's pretty straightforward
on what you need to do or what you need to look at or why it would be there. So really,
all it's saying is that the applied model code that has been programmed into the eyesight module,
the camera, is not correct for the actual vehicle's applied model code. So this applied model code gets
shared with other control modules on the bus. And if they don't agree, okay, we get a code,
that's a problem. I don't belong here. I don't agree with the other modules that are sharing
the applied model code. So what is the applied model code? If you're not familiar with Subaru's,
you can find this on modern Subaru's. On the right side B pillar, there's a black sticker with white
writing. You have the option code and then the applied model code. And it's going to be just
specific details about that car. It's not quite like a VIN number, but it's going to be, you know,
the year, the model, the platform, it doesn't have eyesight or not, things like that. And you
can find this on any Subaru. And if you've programmed some modules or set up some modules
on Subaru's, you may have had to get this number and actually enter them into the control module
when they're replaced, the camera being one of those modules. Now, I've replaced a number or I
come into program after replacement, a number of cameras in these Subaru's with the eyesight system.
And I've done new and I've also done used modules. And what I found with them is that some of them
even used, you can change that applied model code. It's like a five digit Alpha Numeric code.
And you actually do this through a special function in the scan tool. If you go into the
eyesight module, it says confirm parameter or write parameter. And so you can see what the
applied model code is, you can write the applied model code. Although reading what the applied
model code is, doesn't always, it's not always as straightforward as it sounds. It doesn't just put
it out in plain text, at least not on this one, and not some of the other ones I've dealt with,
but you can write it. Now, I've been able to change that on some, not all of them.
So I know I did a 19, I might actually bend that cross track that I was talking about,
and I was able to change the applied model code, because I had the wrong one, and I went in and
allowed me to change it, and then that code was gone, and then I needed to do the calibration
portion of it. But on this particular 17 legacy, and I tried both with aftermarket tooling,
used, tried the top down, tried the hotel, and I even tried the Subaru program, which is SSM4.
And they were identical from one to another. There was no difference in the tooling and no
difference in the result. So when I went into the special functions, it has the
write parameter or confirm parameter, and the parameter would be the applied model code,
and when you click on them, it just says fail. Now, that's in the aftermarket tooling.
And when I went to the Subaru tooling, it doesn't even have those as an option, or at least it
didn't for me in the tool that I was using. I didn't even have an option to write that in the camera.
Okay, so it doesn't look like I'm going to be able to change it. And so what I told the shop was,
because they, it's a used car lot, they get these cars from auction or,
you know, elsewhere. And for them to have the wrong part on vehicle, it's totally likely. And
I told them, I was like, Hey, here's what you got this camera saying it doesn't agree with the applied
model code of the car. I tried all my tools. I don't have an option to change it. So you're
just going to have to get a camera that you know is out of the same car. Here's what you use is
this sticker on the right side B pillar, it's applied model code and match that up to the car
you're getting it out of. And of course the part number, but this applied model code actually
really does matter, explain that. And said, you know, call us when you get a new one in there,
we'll probably just have to do an eyesight calibration and be done with it. Okay, so
they get another camera, which is a used one as well, can use car lot. So I was trying to
save some money. They get another used one with the junkyard tells them it's out of the same car.
They matched all the options. I on this first one, I don't know if they actually got a clear
for sure this applied model code is correct, but they said they had one out of the same car. So
they put it in there, they said same thing, same code. And I was like, Are you sure? Did they send
you a picture of the tag of the car they pulled it out of? Because that's my concern is like
they're just they're getting it close, but not close enough. And so it's setting these vehicle
model judgment air codes. And they're like, Well, we'll figure it out. And so they find another
place that actually takes a picture of the tag that applied model code sends them the camera out
of that car, it matches up exactly. And we still get the same code. And so I said, Okay, well,
I apologize, send you on a wild goose chase here. But let me look into this a little bit more
and see what else am I missing here. So dig into this one. And what I try to find out is
who else does this camera compare the applied model code to? Well, first thing I did was a
little bit of research on the code, just to make sure like I'm not missing anything. There's not
like a dual meaning or different reason this can set or, you know, maybe some, you know,
power ground or calibration, like maybe just needs to be calibrated. It was none of that.
This show was brought to you by auto rescue tools and Isaac Rotel. If you've been looking for a
programming laptop, you're not sure which one to buy, or how to set it up, especially if you want
to program multiple brands. You know, you've got some domestic vehicles, you've got European vehicles,
can the same software go on the same laptop? What size hard drive do I need? All those questions.
Isaac's your guy, he can custom set up programming laptops that are ready to tackle any make or
model. I got one of these laptops myself. And I can say that it is outstanding. And it really
streamlines the process by having everything you need in one device. So if you're looking for
something like that, I highly recommend checking out auto rescue tools.com. You'll also find scan
tools, diagnostic equipment, key cutting equipment and much more. Check out the link in the show notes.
I highly recommend it. It just came back to the same thing that it just says the applied
model code that's programmed into the camera is compares to what's being shared on the can bus.
And if they're different, it sets this code. It's that simple. Now, what I tried doing was going
through everything in the camera so that I could find the applied model code, like in plain text.
I was not able to do that. Now, there's a gazillion data pins in the eyesight modules,
and maybe it's in there somewhere. I wasn't able to find it. And again, I wasn't able to read it
through the special functions. Now, the part number on it matches, they showed me the tag
the car came out of with the correct applied model code. And so, you know, three cameras,
same code. It seems very doubtful that they're all incorrect for the vehicle. It could totally be
possible. But with this last one, especially proof of what it came out of, I'm like, I need to start
looking elsewhere. Now, again, I couldn't find exactly what model code was in the camera. But
I can look and see who else shares this applied model code on the rest of the vehicle. Now,
I already know from working on Subaru's getting called in a program Subaru's that the ABS control
module also shares the applied model code. And the reason I know that is because I've done programming
on both new and used ABS modules or VDC modules on the Subaru's, and you have to write the applied
model code. And if that is wrong in the past, when I've seen that, you know, used ones put in,
you get a code saying, hey, you know, there's an issue with the vehicle model judgment or whatever
the code is for ABS, or at least that's what I remember. But if you get a new module, you can
write that applied model code, and it is a one time deal, meaning that whatever number you put in,
that's what it's going to keep, and it's not going to change. So you better get it right. So if you're
doing a new ABS module, make sure that you do it correctly. Now, it is just a scan tool feature,
it's not like an actual programming, you just type it in on your scan tool, and that's it. And
hopefully it will match the car. But with the used ones, and shops have tried many
used ABS module on these things. I can tell you there, I think I've had only one time out of,
I don't know, 50 that the shops actually got in the ABS module, right? It seems like every single
time we get called for a used ABS module on one of these Subaru's, it ends up being the wrong module.
And I have not found a way to change it on a used ABS module on one of these Subaru's. Now,
if somebody else out there has a way to do it, please let me know. And I've been doing pretty
well on the request for help here on the show. I think the last two or three episodes, or more
than that, people have reached out to me that are in the know for that one specific brand or
application or problem. And then like, oh, yeah, you just do this, or, oh, here's the way to get
this done, which is really cool. So I bet you somebody else out there knows how to do this.
I have not found a way to do it. Again, I've tried with Subaru tooling, I've tried with
aftermarket tooling. Once it seems to have that applied model code in the ABS, you don't seem to
be able to change it. Now, again, new, just write it with any old aftermarket tool, and it's not a
problem. Now, because I know this, that the ABS module has this, it's the first thing I'm thinking
of looking at. Now, is that the only thing that shares that, you know, applied model code on the
bus? I'm not sure at this point. But I'm gonna start there. And I'm gonna start looking at the
ABS. So I go into my scan tool, and I want to try to read what number is in there. And I didn't
seem to be able to do that either. This had the confirm parameter and write parameter as well
within the special functions. But it wouldn't give me in plain text what model code it actually had.
Of course, I want to see if it matches what's on the sticker. But I did find out this, if
you type in the applied model code, when you go to write the applied model code in the special
function to the tool, because I was just going to try to write the number that was already in there.
So let's say the, you have the applied model code off of the vehicle, it's five digits,
whatever they are. And then you go to the ABS and you punch it in, you try to write that
into the module. If the module already has a number and it's different, it will fail. Okay.
But if you type in the correct number, right, the number that is actually programmed into
that ABS control module, and of course matches the car, it'll give you a thumbs up like, yep,
you did it, because it's already the same, you didn't change anything, you just got it right.
And for me, at least right now, that's my way to confirm if the number is correct in the
ABS module. Now, how did I know this? Because I just happened to have another Subaru
cross track that was sitting outside. And I was comparing the two, I'm like, okay, when I type in
the vehicles applied model code to the ABS module, it airs out. Let me go try on this one outside.
It was only like a year or two different. Got the number off of the applied model code,
went into the scan tool, tried to write, it gave me a thumbs up. I figured I was like,
I'm just going to try to change it. I don't think it's going to work. I don't think I'm going to
screw anything up. It gave me a thumbs down air can't do this. I think I think it actually tells you
that the model code differs when you try to type in the wrong one. Okay, so back to my 17,
I'm trying to type in the number that is on the sticker, which belongs to the car into the ABS
module that is on the car. And it's giving me an air. Okay. So how else could I prove not
because I'm leading towards the ABS and that the ABS has been replaced, and it has a different
model code than what the rest of the car is, particularly the camera. Now,
why doesn't have any trouble code set? I don't know. But can I prove this out another way?
And I was like, well, what if I unplug the ABS module? Will that get rid of the code in
the eyesight module for the model judgment here, right? If it's if the ABS module is the wrong
one, it's got the wrong code. And that's what's triggering the eyesight module to say, Hey,
this is the wrong vehicle. If I take the ABS module out of the picture, that should get rid of that
mismatch code, you would think or at least that's something I want to try. And it turns out it worked.
Now you do get an ABS communication code. That's in place of the mismatch code,
but the vehicle model judgment air is now gone. And all of that together was enough for me to say
this ABS module must have been replaced at some point. Now, hard to say just by looking at it,
it's been in the vehicle for a little while. I don't know how long. But that to me is pointing
that this ABS module has the wrong model code in it. Okay. And for whatever reason,
the camera is the thing that is coding, not the ABS. So I said, Hey, call up that junk
here, we got the camera from if you want to go use it, the same ABS module or the ABS module
out of the same car. Okay, you want to buy a new one, we'll code it for you. I knew these
guys didn't want to do that. So they got that, they put it in, all good to go. They put the
original camera back in and all three of them would have worked as far as the model judgment
went. But it was the ABS module that had the wrong number at and using the attempt to write with
the scan tool was the effective way for me to verify if the model code in the ABS matched the
car. Now, again, maybe Subaru guy out there will tell me, I'll just look here and you can,
you know, find what that number is. I didn't see it. it in the module information.
I didn't see it in the data stream. But maybe there's a way I'm sure there is.
Same thing for the eyesight, I couldn't find it in plain text, but unplugging the ABS got rid
of the mismatch code, meaning that what's happy if there's other modules on the car that are
sharing that code, it's happy with them. And if the ABS is the only thing, okay, well, now
there's no more mismatch anymore, because it's not being sent the wrong model code,
it's being sent none. There's an argument that could be made that the communication code
supersedes other codes from setting. And that test maybe is not 100% effective. But
in hindsight, I do know that it fixed the car. So I might use it in the future.
The last thing and I've considered this is that could you change the applied model code in the
ABS module if you went board level. And there's a number of different reasons I've never gone this
way on one of these. Number one, if you've ever tried to get the plastic casing off of ABS control
modules, like any of them, it becomes very difficult without breaking anything. And then
even if I did, I found the eProm, I managed to change it. Then there's the question of
is the hardware even right for the vehicle, right? I don't know. I don't have a reference for all of
what wrong ABS module will work in what other Subaru, like that's just not a reference that I have
or care to build. So when it's wrong, I just say, Hey, this is the wrong module, you have to get the
right one. So I just don't feel as though trying to change that one particular thing at a board
level is worth the effort when there's a very good chance it's just the wrong module anyways.
What I don't know is that number that you put in with a new module, like how much
wiggle room do you have or how many option codes could you program into one particular module?
Of course, you have a hardware, you know, specification for that vehicle, but how many
cars does that hardware model apply to? I don't know. And I don't know that I'll really take
the time to find out. But it's a question that shops ask, you know, it's like, can you change
this? Can you make this work? Because they bought the module, they went through the trouble of
installing it probably already, you know, bleeding the brakes, getting it ready to program, they
don't want to do it again, they don't want to buy a new one. The new ones are relatively expensive.
You know, it's all perspective. But we do see a lot of used ones get thrown in these. So
that was a fix. Used ABS module, been put in this thing at some point with the wrong model code,
got it out of the correct vehicle, it worked. And the way that you could pick this out is by
trying to program the car's model code into the ABS and see if it gives you a thumbs up or thumbs
down. That was what worked for me on this one. So that's where I'm going to wrap this episode up.
Hopefully you found that was interesting. Maybe you have a little bit of something to add to that.
Or maybe you have another example of where one module that has been replaced on the car causes
another one to code. And it's not so obvious that the first one is the odd man out. So I'd like
to thank everybody for listening to the show. I always appreciate it. But in the meantime,
let's get out there, start fixing the world one car at a time.
About this episode
A 2017 Subaru Legacy came in with Eyesight trouble after a module replacement went sideways: the wrong used unit produced misleading fault indications, even when it showed no codes. The host explains Subaru’s “applied model code” logic—how it’s shared on the CAN bus and compared against what modules expect—then walks through B28A0, scan-tool special functions, and why calibration and correct coding matter. Tests point to an ABS module model-code mismatch triggering the Eyesight “wrong vehicle” judgment.
This week on the show I share a case study on a 2017 Subaru Legacy that sets a Model judgement error code in multiple eyesight cameras. Are all 3 cameras wrong for the vehicle? Am I missing something with programming? Or is something else the issue?