Welcome to Tesla Motors Club
Discuss Tesla's Model S, Model 3, Model X, Model Y, Cybertruck, Roadster and More.
Register

Successful retrofit of passenger lumbar on 2021 Model Y

This site may earn commission on affiliate links.
I know the independent shop wants to ensure they have business but it would be helpful if we understood how they did it.

Were you able to get the service center to reactivate your lumbar controls? If so, what exactly did you have to do or say to get them to reactivate it?
The service centers in Arizona won’t do any route *sugar*. They suck. I have hepa and lumbar. Eff me I guess
 
  • Like
Reactions: gleearch
I just had my 2021 MY's passenger seat replaced due to the occupancy sensor failing twice. The "new" seat came with the lumbar button, but it didnt work. I took off the back panel and all the lumbar hardware is there. I rebooted the car and replugged the lumbar control module, no luck. Sucks they turned off the retro via OTA....
 
I just had my 2021 MY's passenger seat replaced due to the occupancy sensor failing twice. The "new" seat came with the lumbar button, but it didn't work. I took off the back panel and all the lumbar hardware is there. I rebooted the car and replugged the lumbar control module, no luck. Sucks they turned off the retro via OTA....
That's just another level of low. If they replaced it with a seat having the hardware, at least change your configuration to indicate it has it. Have you requested the SC to change it for you? Then tweet Elon since he said he wanted to know about service issues.
 
That's just another level of low. If they replaced it with a seat having the hardware, at least change your configuration to indicate it has it. Have you requested the SC to change it for you? Then tweet Elon since he said he wanted to know about service issues.
Just because the seat has the hardware doesn't mean that the rest of the car does. (I thought they removed the supporting hardware from the VC Right controller. The wiring harness may not be complete either. Though a 2021 might have all of that.)
 
Just because the seat has the hardware doesn't mean that the rest of the car does. (I thought they removed the supporting hardware from the VC Right controller. The wiring harness may not be complete either. Though a 2021 might have all of that.)
There's no evidence that's the case (well wiring could hav been removed, but the controllers are the same worldwide regardless of LHD/RHD status)
 
Just because the seat has the hardware doesn't mean that the rest of the car does. (I thought they removed the supporting hardware from the VC Right controller. The wiring harness may not be complete either. Though a 2021 might have all of that.)
For those of us who retrofitted the car with the right hardware, the seats worked until sometime mid of this year when a software update bricked the seats. Please read through this thread from the start. The OP has already indicated he checked his replacement seat, observed the controller and hardware is in place. The issue is the cars built after June 2021 did not include the controllers due to the parts shortage. Some of us bought the parts and retrofitted the cars and they worked until they did an update to the firmware about the middle of this year and bricked all the retrofitted cars.
Note that if you continue to read through that there are some who have taken their car to a third party and were able to get the seats working again after some reprogramming. It's a firmware issue. Some others have swapped out with a BMW controller and managed to get it working again. This thread is mainly for those of us trying to find a way to get them to work again.
 
Mobile service came by for an unrelated minor issue today and took a look at my lumbar controls. The tech was really friendly and helpful and indicated that to change the configuration would require the help of engineering and none of the techs would be able to do it. He was going to ask engineering who was in the SC at that time and would get back to me. Last message in the app is - "cars built after April/ May 2021 would not be supported". It looks like unless you have a third party service that knows what they are doing, you are not going to get lumbar support even if you self install the controls.
 
  • Informative
Reactions: tm1v2
Got my parts in from Tesla. Good news is the tubes fit the BMW module perfectly and the plastic mount is identical to the Tesla module. Power also seems to still be present at the Tesla harness, so don't have to go too crazy with the wiring (unless Tesla decides to disable power to that harness in the future, in which case a separate 12v source would be needed).

The seat switch as expected does have different resistor values than the BMW switch. I'll have to study the circuit a little bit to figure out which resistors to change, but it should be doable.

Now one minor complication might be that the Tesla lumbar switch seems to allow the buttons to be pressed in diagonals while the BMW switch limits you to the 4 directions. I don't think this is a huge issue (the way the resistances seem to be setup, the BMW modules would likely evaluate diagonals as the forward/backward directions), but might result in subtly different behavior than the factory setup.

View attachment 852173

Will try to post detailed steps once I'm ready to complete this
Just wanted to follow up and see if you successfully pulled this off using the BMW modules? If you did, please provide a step by step is possible. I don't read electric circuitry but can follow pics and written instructions. My wife just realized her lumbar controls don't work anymore. Getting this to work again will be helpful.
 
Just wanted to follow up and see if you successfully pulled this off using the BMW modules? If you did, please provide a step by step is possible. I don't read electric circuitry but can follow pics and written instructions. My wife just realized her lumbar controls don't work anymore. Getting this to work again will be helpful.
Well I got busy with work and haven't really messed with that too much.

With the above info of potentially being able to change the gateway config, I decided to install the tesla module. I got access to toolbox and now I'm trying to figure out what to do there. So far I'm unable to open a shell into the gateway.

There is a promising action available within toolbox, but I can't figure out the syntax for the parameters
1669507703909.png



Reading parameters is easy enough
1669507731566.png


In the above I requested config 28 and 32, and that shows they're both set to 02. 28 being the headlamps (02 = global / matrix). 32 being the lumbar type (02 being driver only).

Have roughly a month to figure this out I guess. I think it's doable, whether that's by using the toolbox action or figuring out how to open a shell into the gateway.

In the worst case the BMW module is totally feasible with some resistor changes.
 
Well I got busy with work and haven't really messed with that too much.

With the above info of potentially being able to change the gateway config, I decided to install the tesla module. I got access to toolbox and now I'm trying to figure out what to do there. So far I'm unable to open a shell into the gateway.

There is a promising action available within toolbox, but I can't figure out the syntax for the parameters
View attachment 878604


Reading parameters is easy enough
View attachment 878605

In the above I requested config 28 and 32, and that shows they're both set to 02. 28 being the headlamps (02 = global / matrix). 32 being the lumbar type (02 being driver only).

Have roughly a month to figure this out I guess. I think it's doable, whether that's by using the toolbox action or figuring out how to open a shell into the gateway.

In the worst case the BMW module is totally feasible with some resistor changes.
If you are able to figure out how to get the Tesla module working via the toolbox or if you are able to get the BMW module to work, that would be great. Keep us updated.
 
Yeah I intend to post whatever I figure out publicly.

Digging through the javascript files, "PROC_ICE_X_SAFE-SET-VEHICLE-CONFIGS" does seem to be the action the service/dealer level toolbox interface calls when using the gateway change interface. So while we don't get the pretty gui, we do seem to have access to the actual command.

The input is where I'm stuck. When digging through the vehicle configuration function in the javascript (even though we don't have front end access to the interface, the code that generates it seems to be present in the js files), I can find this relevant excerpt: (my best attempt at making it semi-readable - everything is on a single line by default)

Code:
onSaveChanges: function () {


      return e(function (e, t) {


        var r = t(), n = r.odin, o = r.user, a = n.connection.params, i = a.host, s = a.platform, c = o.username, l = Object.values(n.config.changes), u = Object(sl.p)(s), d = lG(u), p = "gen3" === Object(mC.d)(u).gen, f = l.map(function (e) {


          var t = e.accessId, r = e.value;


          return p ? {configid: t, data: r.toString(16).padStart(2, "0")} : [t.toLowerCase(), r, c];

The code is somewhat obfuscated, but from what I can gather, if the car is a model3/y, the parameter passed to the function is {configid: t, data: r.toString(16).padStart(2, "0")}. While if it's a (presumed legacy) s/x, the parameter passed is [t.toLowerCase(), r, c] which translates to accessId, value, username. This actually does correspond to the method described in the script on the model S jailbreak page

I tried {32, 01} and every possible iteration with and without quotation, spaces, different bracket types etc. And I largely get an error about the input not being able to be cast as a List.

Now where I can see a potential issue is that it's not t(accessId) and r(value) being passed to the model 3 function, it's configid: t, and data: r -- which to me suggests the actual parameters are being retrieved from a dictionary and then passed, But so far I have not had luck tracking that down.
 
Last edited:
Wouldn't the lumbar pump be supplied by a simple 12vdc?
If it is 12 vdc, there's a simpler way to get lumbar support to the passenger seat. Just get a switched 12 vdc source. There are many underneath that seat already. Tap into it and provide the power to the switch / pump modules to replicate the OEM configuration?
Are there other factors to deal with in addition to this, just to get it to work?
 
Power is already there - I confirmed it is still live even without the lumbar being disabled. The problem is the module (which is built into the valve body) is controlled by the lin bus and the car won't send the LIN commands to control the valves and motor without the configuration being set to do so. So your options are to either change the configuration or bypass the tesla module altogether
 
  • Helpful
Reactions: Georgesb2
Power is already there - I confirmed it is still live even without the lumbar being disabled. The problem is the module (which is built into the valve body) is controlled by the lin bus and the car won't send the LIN commands to control the valves and motor without the configuration being set to do so. So your options are to either change the configuration or bypass the tesla module altogether
Is there a way to bypass the controller and find the pump power leads?
 
Yeah I intend to post whatever I figure out publicly.

Digging through the javascript files, "PROC_ICE_X_SAFE-SET-VEHICLE-CONFIGS" does seem to be the action the service/dealer level toolbox interface calls when using the gateway change interface. So while we don't get the pretty gui, we do seem to have access to the actual command.

The input is where I'm stuck. When digging through the vehicle configuration function in the javascript (even though we don't have front end access to the interface, the code that generates it seems to be present in the js files), I can find this relevant excerpt: (my best attempt at making it semi-readable - everything is on a single line by default)

Code:
onSaveChanges: function () {


      return e(function (e, t) {


        var r = t(), n = r.odin, o = r.user, a = n.connection.params, i = a.host, s = a.platform, c = o.username, l = Object.values(n.config.changes), u = Object(sl.p)(s), d = lG(u), p = "gen3" === Object(mC.d)(u).gen, f = l.map(function (e) {


          var t = e.accessId, r = e.value;


          return p ? {configid: t, data: r.toString(16).padStart(2, "0")} : [t.toLowerCase(), r, c];

The code is somewhat obfuscated, but from what I can gather, if the car is a model3/y, the parameter passed to the function is {configid: t, data: r.toString(16).padStart(2, "0")}. While if it's a (presumed legacy) s/x, the parameter passed is [t.toLowerCase(), r, c] which translates to accessId, value, username. This actually does correspond to the method described in the script on the model S jailbreak page

I tried {32, 01} and every possible iteration with and without quotation, spaces, different bracket types etc. And I largely get an error about the input not being able to be cast as a List.

Now where I can see a potential issue is that it's not t(accessId) and r(value) being passed to the model 3 function, it's configid: t, and data: r -- which to me suggests the actual parameters are being retrieved from a dictionary and then passed, But so far I have not had luck tracking that down.
I won't pretend to know what you are doing with the code but is it possible to identify the configuration that works for the driver seat and try those iteratively for the passenger seat? If someone has a working lumbar control in their pre April 2021 build and could let you know what the parameters are, that would save you a ton of time trying.
I know Tesla employees are on this forum. It would be nice if they could provide that info.