You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add control for ventilated front seats. Nothing exists yet. The reporter says the feature may not appear in the iSmart app, so we first need to confirm it exists in the API.
Part of #26. Needs a live capture of the iSmart app traffic from an MG S6 (to be done separately).
@townsmcp, I opened a draft PR for this one so we don't both build it: #59.
It sets one seat per command (front or rear, params 27 to 30, request type 22) and adds the seat ventilation levels to the vehicle status. I wrote it from the app's logic, not from a capture, and I haven't tested it on a car.
Since you said you captured the controls on your S6, could you do one of these?
Share your capture (or just the request bodies, with the VIN removed), so I can compare it with the draft.
@nanomad, a correction on my part and sorry for the confusion: I was wrong about ventilated front seats via iSmart. My car has it when in the car however iSmart doesn’t let me remotely command that. I remember seeing an iSmart image from either an IM5 or IM6 which does allow control via iSmart but the user didn’t have mitmproxy for me to share the script with so I have got a capture yet.
If I come across an owner that can do the captures I can add an update here.
In the mean time I can try your option 2 and let you know how that goes.
Sorry again for the confusion - I rarely use iSmart these days, especially as today has proven yet again how useless it is - I usually get iSmart notifications that tyre pressure is low on one of the wheels when it isn’t. However today I didn’t get a notification (and a car scan showed fine) when it was wrong and should have notified me. In HA I have an automation that notifies me on low pressure (less than 35 psi) and HA pinged me today - I had a look at the tyres and I have a screw in the rear left
@nanomad, I tried #59 on my MG S6 EV (UK, right-hand drive, Trophy, which has ventilated front seats in the car but not in the iSmart app):
Status: none of the new fields come back. frontLeftSeatVentLevel, frontRightSeatVentLevel, secondRowLeftSeatVentLevel and secondRowRightSeatVentLevel are all absent (None), while frontLeftSeatHeatLevel / frontRightSeatHeatLevel come back as 0 as usual.
Control: with the car awake (a status read had just succeeded, so it wasn't asleep), every attempt came back as return code 4, "The remote control instruction failed, please try again later.":
FRONT_RIGHT level 1, with 255
FRONT_RIGHT level 2, with 255
FRONT_RIGHT level 1, without 255
Remote heated seats and the heated steering wheel work on the same car. So I think the S6 simply doesn't accept request type 22 remotely, which fits the app not offering it. It doesn't tell us whether type 22 and params 27–30 are right for cars whose app does show it (IM5 / IM6). I'd keep #59 as a draft until someone with one of those can capture or test it. I'll pass it on if one of our users can help.
One question on #57, while we're on the 255 marker: my S6 captures show the app sending the per-seat heated seat command and the steering wheel command without 255. That's what I based #50 and #49 on, and how they've worked on the car since September. Was adding it in #57 from the app's code for those specific commands? It may well be harmless, but it hasn't been tried on a car as far as I know, so it might be worth testing before it goes into a release.
@townsmcp the "255" is a marker sent by the app, I've added to avoid sending un-initialized data, it shows as 0 anyway so it should be harmless.
For ventilated seats, they are feature-gated in the app so they won't show up on the MG S6, but sometimes the tbox still accepts them :) Too bad it did not
@nanomad, I tested #57 on my MG S6 EV (UK, iOS app). Both commands work with the 255 marker:
Heated seat, front right (driver), request type 5, params [(18, 01), (255, 00000000)]: accepted. frontRightSeatHeatLevel went to 1, and level 0 turned it off again.
Steering wheel, request type 8, params [(24, 01), (255, 00000000)]: accepted, and the wheel heated up.
They also work without it, which is how the iOS app sends them in my capture, and how mg-saic-ha has sent them since September. So the car accepts either, and you're right that it's harmless.
One thing worth knowing for the status: with the wheel on, the car reports steeringHeatLevel = 3, even though "on" is sent as 1. Anything reading it should treat any value above 0 as on.
Activity
nanomad commentedon Oct 25, 2026
@townsmcp, I opened a draft PR for this one so we don't both build it: #59.
It sets one seat per command (front or rear, params 27 to 30, request type 22) and adds the seat ventilation levels to the vehicle status. I wrote it from the app's logic, not from a capture, and I haven't tested it on a car.
Since you said you captured the controls on your S6, could you do one of these?
What a capture would settle:
If you already have a PR for this in progress, tell me. We can close #59 and use yours.
townsmcp commentedon Oct 25, 2026
@nanomad, a correction on my part and sorry for the confusion: I was wrong about ventilated front seats via iSmart. My car has it when in the car however iSmart doesn’t let me remotely command that. I remember seeing an iSmart image from either an IM5 or IM6 which does allow control via iSmart but the user didn’t have mitmproxy for me to share the script with so I have got a capture yet.
If I come across an owner that can do the captures I can add an update here.
In the mean time I can try your option 2 and let you know how that goes.
Sorry again for the confusion - I rarely use iSmart these days, especially as today has proven yet again how useless it is - I usually get iSmart notifications that tyre pressure is low on one of the wheels when it isn’t. However today I didn’t get a notification (and a car scan showed fine) when it was wrong and should have notified me. In HA I have an automation that notifies me on low pressure (less than 35 psi) and HA pinged me today - I had a look at the tyres and I have a screw in the rear left
townsmcp commentedon Oct 26, 2026
@nanomad, I tried #59 on my MG S6 EV (UK, right-hand drive, Trophy, which has ventilated front seats in the car but not in the iSmart app):
Status: none of the new fields come back.
frontLeftSeatVentLevel,frontRightSeatVentLevel,secondRowLeftSeatVentLevelandsecondRowRightSeatVentLevelare all absent (None), whilefrontLeftSeatHeatLevel/frontRightSeatHeatLevelcome back as0as usual.Control: with the car awake (a status read had just succeeded, so it wasn't asleep), every attempt came back as return code 4, "The remote control instruction failed, please try again later.":
FRONT_RIGHTlevel 1, with 255FRONT_RIGHTlevel 2, with 255FRONT_RIGHTlevel 1, without 255Remote heated seats and the heated steering wheel work on the same car. So I think the S6 simply doesn't accept request type 22 remotely, which fits the app not offering it. It doesn't tell us whether type 22 and params 27–30 are right for cars whose app does show it (IM5 / IM6). I'd keep #59 as a draft until someone with one of those can capture or test it. I'll pass it on if one of our users can help.
One question on #57, while we're on the 255 marker: my S6 captures show the app sending the per-seat heated seat command and the steering wheel command without 255. That's what I based #50 and #49 on, and how they've worked on the car since September. Was adding it in #57 from the app's code for those specific commands? It may well be harmless, but it hasn't been tried on a car as far as I know, so it might be worth testing before it goes into a release.
nanomad commentedon Oct 26, 2026
@townsmcp the "255" is a marker sent by the app, I've added to avoid sending un-initialized data, it shows as 0 anyway so it should be harmless.
For ventilated seats, they are feature-gated in the app so they won't show up on the MG S6, but sometimes the tbox still accepts them :) Too bad it did not
nanomad commentedon Oct 26, 2026
Btw, for #57, feel free to test them if you can. I'd rather replicate the official iOS app behaviour
townsmcp commentedon Oct 26, 2026
@nanomad, I tested #57 on my MG S6 EV (UK, iOS app). Both commands work with the 255 marker:
[(18, 01), (255, 00000000)]: accepted.frontRightSeatHeatLevelwent to1, and level0turned it off again.[(24, 01), (255, 00000000)]: accepted, and the wheel heated up.They also work without it, which is how the iOS app sends them in my capture, and how mg-saic-ha has sent them since September. So the car accepts either, and you're right that it's harmless.
One thing worth knowing for the status: with the wheel on, the car reports
steeringHeatLevel = 3, even though "on" is sent as1. Anything reading it should treat any value above 0 as on.