Smart ED/EQ Gen.4 (453)
Vehicle Type: SQ
Warning
Potential HV battery contactor cycle counter glitch on Smart 453 (Smart ED/EQ Gen.4)
Smart/Mercedes have documented that the use of third-party OBD devices on the Smart 453 (model variants 453.091/391/491) may impair the contactor ageing counter of the high-voltage battery, causing the counter to reset to “0” within a short period. When this occurs the HV contactors will no longer engage and the vehicle will be undriveable. Smart/Mercedes also state that this voids the warranty and goodwill entitlement on the HV battery.
There is at least one reported case of this fault occurring on a Smart 453 with OVMS installed, although the community has not yet conclusively established whether OVMS specifically triggers this behaviour, or whether it is a more general response to permanently-installed OBD devices or just incidental behaviour. The recoverable fix is a BMS counter reset (performed by specialist workshops in Europe); full HV battery replacement is not required for this fault.
Users of the Smart 453 should weigh this guidance carefully before
installing OVMS. If you choose to proceed, consider monitoring the
contactor cycle count via xsq hvcycles and disconnecting the
module if any unexpected change is observed.
References:
The Smart BMS counts down remaining contactor cycles from 200,000 down to zero. When zero is reached, the BMS shuts down HV battery access permanently and asks for replacement. Normal usage results in single contactor counts per HV battery activation (i.e. driving, charging, preconditioning, 12V maintenance charges), amounting to just a couple of counts per day depending on the actual vehicle use.
The BMS glitch manifests as an unbased sudden high counter decrement, usually by a multiple of 1,000. This happens within seconds, there is no physical relay activation involved, it’s a purely internal counter register value change.
The glitch is triggered by an unknown condition, most probably a combination of multiple factors, potentially involving some combination of add-on devices and BMS versions, but also potentially just an internal/hidden fault occurring randomly.
Beginning with release 3.3.006, the module offers monitoring and alerting for this. The contactor
cycle counter is read (when polling is enabled) and provided via metric xsq.bms.contactor.cycles,
and in readable text report form by command xsq hvcycles. In the Android App, the cycle
counter can be displayed by a long press on “Service”.
If a very low remaining cycle count is read, or if a counter change of at least 100 cycles is detected between two readings, the module will sent an alert notification. In the latter case, as a safety measure CAN polling will be automatically disabled, so you need to re-enable it to get further readings.
Historical data on the contactor counter decrements is collected on and can be downloaded from
a V2 server in table XSQ-BMS-ContactorLog. If only using V3/MQTT, please consider setting
up a V2 connection as well, to collect the data. Another option is to run an MQTT recorder
saving all contactor log messages received.
When encountering the issue: please send your contactor log along with the alerts to the Smart maintainer(s) for analysis. Please include all info on other devices plugged in or installed, even dumb devices connected to the 12V system. If enough cases can be collected, there may be a chance to narrow down potential triggers.
Support Overview
Function |
Support Status |
|---|---|
Hardware |
OVMS v3 (or later) |
Vehicle Cable |
OBD-II to DB9 Data Cable for OVMS (1441200 right, or 1139300 left) |
GSM Antenna |
1000500 Open Vehicles OVMS GSM Antenna (or any compatible antenna) |
GPS Antenna |
1020200 Universal GPS Antenna (SMA Connector) (or any compatible antenna) |
SOC Display |
Yes |
SOH Display |
Yes |
Range Display |
Yes |
GPS Location |
Yes (from modem module) |
Speed Display |
Yes |
Temperature Display |
Yes (External Temp and Battery) |
BMS v+t Display |
only Cell Volts atm. |
TPMS Display |
Yes pressure & enable at TPMS settings -> temperature / battery low & sensor is missing (TPMS alert) |
Charge Status Display |
Yes |
Charge Interruption Alerts |
No |
Charge Control |
No |
Cabin Pre-heat/cool Control |
Yes (only 5/10/15 Minutes Pre-heat/cool and timebased Pre-heat/cool App/Web, no Temperature control and SoC > 30% needed) |
Lock/Unlock Vehicle |
No (not really Implementet, only when the car is open, you can close it. But the lock indicator shows unlocked!) |
Valet Mode Control |
No |
Maintenance Reminders |
Yes |
12V Battery Monitoring |
Yes (if 12V alert raised, the car starts the 12V charging process for 15 Minutes. (homelink 3)) |
DDT4all simple Support |
Yes (a List of all possible commands at www.smart-EMOTION.de) |
Known Issues
HV battery contactor cycle counter glitch (Smart 453): see the warning above. Smart/Mercedes’ documentation identifies the use of third-party OBD devices as a risk factor for premature reset of the HV battery contactor ageing counter. At least one OVMS user has experienced this fault. Cause-effect is not conclusively established in the community, but installing OVMS on a Smart 453 carries the risk of HV battery warranty voidance per the manufacturer’s stated position.
Lock/Unlock: The Lock/Unlock function is not really implemented. You can only lock the car when it is open, car is not secured locked.
Valet Mode: Not implemented.
Charge Control: Not implemented.
Using Cabin Precond-heat/cool:
Only 5 Minutes preconditioning are implementet by Vehicle
Shell commands:
climatecontrol on = 5 Minutes
homelink 1 = 5 Minutes
homelink 2 = 10 Minutes, auto restart after 5 Minutes
homelink 3 = 15 Minutes, auto restart after 5 and 10 Minutes
For Timebased Pre-heat/cool you can use the Android App or Web UI.
Vehicle shell commands:
Command |
description |
|---|---|
xsq mtdata |
maintenance data |
xsq ddt4all <number> |
Execute DDT4all command by number |
xsq ddt4list |
List all available DDT4all commands (see below for details) |
xsq canwrite <params> |
Send custom CAN command (see below for details) |
xsq calcadc [voltage] |
Recalculate ADC factor (optional: 12V voltage override) |
xsq wakeup |
Wake up the car |
xsq ed4scan |
Output ED4scan-like BMS diagnostic data |
xsq preset |
Apply smart EQ config preset |
xsq default |
Set smart EQ config to default values |
xsq tpms stat |
Show smartEQ TPMS status incl. battery & missing |
xsq tpms setdummy |
Set TPMS dummy value for testing |
xsq show start |
Show OBD trip start data |
xsq show reset |
Show OBD trip total data |
xsq show counter |
Show vehicle trip counter |
xsq show total |
Show vehicle trip total data |
xsq hvcycles |
Show HV contactor cycle counts |
Vehicle metrics:
Metric |
description |
|---|---|
xsq.v.bus.awake |
CAN bus awake status [bool] |
xsq.v.bat.serial |
Battery serial number (hex string) |
xsq.v.energy.used |
Energy used since mission start [kWh] |
xsq.v.energy.recd |
Energy recovered since mission start [kWh] |
xsq.v.aux.consumption |
Auxiliary consumption since mission start [kWh] |
xsq.v.bat.consumption.worst |
Worst average consumption [kWh/100km] |
xsq.v.bat.consumption.best |
Best average consumption [kWh/100km] |
xsq.v.charge.bcb.power |
BCB power from mains [W] |
xsq.v.reset.time |
Trip time (reset) [hh:mm] |
xsq.v.reset.consumption |
Average trip consumption (reset) [kWh/100km] |
xsq.v.reset.distance |
Trip distance (reset) [km] |
xsq.v.reset.energy |
Trip energy consumption (reset) [kWh] |
xsq.v.reset.speed |
Average trip speed (reset) [km/h] |
xsq.v.start.time |
Time since start [hh:mm] |
xsq.v.start.distance |
Trip distance since start [km] |
xsq.adc.factor |
Current ADC factor for 12V calculation |
xsq.adc.factor.history |
Last calculated ADC factors (ring buffer) |
xsq.poll.state |
Current poll state (OFF/ON/RUNNING/CHARGING) |
xsq.ed4.values |
ED4scan: number of cells to show |
xsq.ddt4all.canbyte |
DDT4all CAN response bytes [hex string] |
xsq.odometer.start |
Odometer at trip start [km] |
xsq.odometer.start.total |
Odometer at total trip start [km] |
xsq.odometer.trip |
Current trip distance [km] |
xsq.odometer.trip.total |
Total trip distance [km] |
xsq.obd.charge.duration |
OBD charge duration [min] |
xsq.obd.mt.day.prewarn |
Maintenance pre-warning days [days] |
xsq.obd.mt.day.usual |
Usual maintenance interval [days] |
xsq.obd.mt.km.usual |
Usual maintenance interval [km] |
xsq.obd.mt.level |
Maintenance level status |
xsq.tpms.lowbatt |
TPMS low battery status vector |
xsq.tpms.missing |
TPMS missing transmission status vector |
xsq.tpms.dummy |
Dummy pressure for TPMS alert testing [kPa] |
xsq.bcm.state |
BCM vehicle state |
xsq.bcm.gen.mode |
BCM generator mode |
xsq.evc.hv.energy |
EVC HV energy [kWh] |
xsq.evc.12V.dcdc.act.req |
DCDC active request [bool] |
xsq.evc.12v.dcdc |
EVC 12V system values vector: [0]=dcdc_volt_req(V), [1]=dcdc_volt(V), [2]=dcdc_power(W), [3]=usm_volt(V), [4]=batt_volt(V), [5]=batt_volt_req(V), [6]=dcdc_amps(A), [7]=dcdc_load(%) |
xsq.evc.traceability |
EVC frame traceability information [string] |
xsq.obl.fastchg |
Fast charge active [bool] |
xsq.obl.volts |
OBL voltage phases vector [V] |
xsq.obl.amps |
OBL current phases vector [A] |
xsq.obl.power |
OBL power phases vector [kW] |
xsq.obl.misc |
OBL miscellaneous data vector: [0]=freq(Hz), [1]=ground_resistance(Ohm), [2]=max_current(A), [3]=dc_current(mA), [4]=hf10kHz_current(mA), [5]=hf_current(mA), [6]=lf_current(mA) |
xsq.obl.leakdiag |
OBL leakage diagnostic status |
xsq.bms.prod.data |
BMS production data formatted (serial, MM/YYYY) |
xsq.bms.temps |
BMS temperature sensors vector [°C] |
xsq.bms.voltages |
BMS voltage values vector: [0]=cell_min(V), [1]=cell_max(V), [2]=cell_mean(V), [3]=link_volt(V), [4]=pack_volt(V), [5]=ocv_volt(V), [6]=12v_system(V) |
xsq.bms.contactor.cycles |
HV contactor cycles vector: [0]=max, [1]=remaining, [2]=counted |
xsq.bms.soc.values |
SOC values vector [0]=kernel, [1]=real, [2]=min, [3]=max, [4]=display [%] |
xsq.bms.soc.recal.state |
SOC recalibration state |
xsq.bms.soh |
State of Health [%] |
xsq.bms.cap |
BMS capacity values vector: [0]=usable_max(Ah), [1]=init(Ah), [2]=estimate(Ah), [3]=loss_pct(%), [4]=usable_capacity(Ah) |
xsq.bms.mileage |
Battery mileage [km] |
xsq.bms.energy.nominal |
Nominal battery energy [kWh] |
xsq.bms.voltage.state |
Voltage state description |
xsq.bms.cell.resistance |
Cell resistance values vector |
xsq.bms.batt.power |
Battery power [kW] |
xsq.bms.contact |
HV contactor state text |
xsq.bms.ev.mode |
EV mode text |
xsq.bms.interlock.hvplug |
HV plug interlock status [bool] |
xsq.bms.interlock.service |
Service interlock status [bool] |
xsq.bms.fusi |
FUSI mode text |
xsq.bms.safety |
Safety mode text |
xsq.12v.trickle.count |
12V trickle charge counted in 24h, reset to 0 after 24h. Alert if count == 3 in 24h [count] |
Using xsq ddt4all:
- Syntax:
xsq ddt4all <number>
- Parameters:
number- DDT4all command number from the list- Examples:
xsq ddt4all 42
- Output example:
Executing DDT4all command number: 42
Using xsq canwrite:
The xsq canwrite command allows sending custom CAN commands directly to the vehicle.
Requirements:
CAN write access must be enabled:
config set xsq canwrite yesDDT4all session must be active:
xsq ddt4all 999// activates for 5 minutesCommand cooldown: 10 seconds between executions
Syntax:
xsq canwrite <txid,rxid,hexbytes[,reset,wakeup]>
Parameters:
txid- Transmit CAN ID (hex, with or without 0x prefix)rxid- Receive CAN ID (hex, with or without 0x prefix)hexbytes- Hex data bytes to send (multiple bytes separated by /)reset- (optional) Reset CAN session after command (default: false)wakeup- (optional) Wake up vehicle before command (default: true)
Examples:
- Single command
xsq canwrite 745,765,3B5880,false,true
- Multiple data bytes (open tailgate 5x)
xsq canwrite 745,765,300500/300500/300500/300500/300500,false,true
- Indicator 5x on
xsq canwrite 0x745,0x765,2E012100/2E012100
Output example:
Sending CAN command:
txid: 0x745
rxid: 0x765
data: 30082002 / 30082002
reset: false
wakeup: true
Command executed successfully