BMW i3 / i3s¶
Vehicle Type: BMWI3
This vehicle type supports the BMW i3 and i3s models. All model years should be supported.
The OVMS support was developed Jan 2021.
It was developed against the author’s 2018 120Ah i3s BEV. I would welcome engagement from the owner of a REX type to further develop metrics related to the REX engine. Testing by drivers of LHD models, as well as those with the smaller batteries will also be helpful.
As of this release this vehicle support is read-only and cannot send commands to the car.
“tba” item are still on the to-do list and are not currently supported.
|Hardware||Any OVMS v3 (or later) module.|
|Vehicle Cable||OBD-II cable: left-handed cable worked best in my RHD car|
|GSM Antenna||1000500 Open Vehicles OVMS GSM Antenna (or any compatible antenna)|
|GPS Antenna||1020200 Universal GPS Antenna (or any compatible antenna)|
|Cabin Pre-heat/cool Control||tba|
|GPS Location||Yes (from modem module GPS)|
|BMS v+t Display||Yes|
|Charge Status Display||Yes|
|Charge Interruption Alerts||Yes|
|Valet Mode Control||No|
|Others||12v battery voltage/current, battery true SOC, etc|
As standard, the i3 will sound the alarm if anything is left connected to the OBD-II port when the car is locked.
A tool like Bimmercode will allow you to disable this. Alternatively you will need to disconnect the OVMS unit before locking the car.
A future version may add a command to allow you to disable this alarm directly from your OVMS shell.
12V Battery drain¶
The i3 has a small 20Ah AGM 12v battery. Whilst care has been taken to minimize OVMS’ power usage, OVMS could eventually drain this battery if the car is left unplugged and locked. OVMS will also send an alert if 12V drops under 12V alert threshold. (See 12V Calibration section).
HOWEVER: If you are going to leave the car for a fews days, it is recommended to unplug OVMS.
The car is accessible over the OBD-II port when it is running (ignition on) and for a short time (40 seconds or so) after it is turned off or the car is “tweaked” (lock button pushed, connected-drive command received, etc).
Unfortunately this means that when your car is standing or charging OVMS only has intermittent access to data from the car.
By observation, whilst the car is charging it wakes up now and then (seems to be every 30 minutes). So at those times we can update our SOC etc.
Metrics “v.e.awake” tells you if the car is awake or not. Metric “xi3.s.age” will tell you how many minutes have passed since we last received data from the car.
You may also refer to metric xi3.s.pollermode as follows:
|0||Car is asleep - no OBD-II data traffic|
|1||Car OBD-II is awake - we are seeing data traffic|
|2||Car is ready to drive or driving|
|3||Car is charging|
|Metric name||Example value||Description|
|xi3.s.age||5Min||How long since we last got data from the car|
|xi3.s.pollermode||0||OBD-II polling mode as explained above|
|xi3.v.b.p.ocv.avg||4.0646V||Main battery pack - average open-circuit voltage|
|xi3.v.b.p.ocv.max||4.067V||Main battery pack - highest open-circuit voltage|
|xi3.v.b.p.ocv.min||4.063V||Main battery pack - lowest open-circuit voltage|
|xi3.v.b.range.bc||245km||Available range per trip computer (based on current driving mode and style)|
|xi3.v.b.range.comfort||217km||Available range if you use Comfort mode|
|xi3.v.b.range.ecopro||245km||Available range if you use EcoPro mode|
|xi3.v.b.range.ecoproplus||247km||Available range if you use EcoPro+ mode|
|xi3.v.b.soc.actual||85%||Actual physical state-of-charge of the main battery pack|
|xi3.v.b.soc.actual.highlimit||93.7%||Highest physical charge level permitted (shown as 100% SOC)|
|xi3.v.b.soc.actual.lowlimit||10.5%||Minimum physical charge level permitted (shown as 0% SOC)|
|xi3.v.c.chargecablecapacity||0A||Maximum power capacity of connected charge cable per the charging interface|
|xi3.v.c.chargeledstate||0||Colour of the “ring light” on the charging interface.|
|xi3.v.c.chargeplugstatus||Not connected||Charging cable connected?|
|xi3.v.c.current.dc||0A||Power flowing on the DC side of the AC charger|
|xi3.v.c.current.phase1||0A||Power being drawn on AC phase 1|
|xi3.v.c.current.phase2||0A||Power being drawn on AC phase 2|
|xi3.v.c.current.phase3||0A||Power being drawn on AC phase 3|
|xi3.v.c.dc.chargevoltage||0V||Voltage seen on the DC charger input|
|xi3.v.c.dc.contactorstatus||open||DC contactor state (closed implies we are DC charging)|
|xi3.v.c.dc.controlsignals||0||DC charger control signals (always see 0?)|
|xi3.v.c.dc.inprogress||no||DC charging in progress?|
|xi3.v.c.dc.plugconnected||no||Is DC charger plug connected (doesn’t seem to work)|
|xi3.v.c.deratingreasons||0||Reasons why charging rate is derated|
|xi3.v.c.error||0||Charging error codes|
|xi3.v.c.failsafetriggers||0||Failsafe trigger reasons|
|xi3.v.c.interruptionreasons||0||Charging interruption reasons|
|xi3.v.c.pilotsignal||0A||Charge rate pilot signal being received from EVSE|
|xi3.v.c.readytocharge||no||Are we ready to charge|
|xi3.v.c.temp.gatedriver||40°C||Charger gatedrive mosfet temperature|
|xi3.v.c.voltage.dc||8.4V||Charger output DC voltage being seen (for AC charging, not DC)|
|xi3.v.c.voltage.dc.limit||420V||Maximum permitted DC voltge|
|xi3.v.c.voltage.phase1||0V||Voltage seen on AC charger input phase 1|
|xi3.v.c.voltage.phase2||0V||Voltage seen on AC charger input phase 2|
|xi3.v.c.voltage.phase3||0V||Voltage seen on AC charger input phase 3|
|xi3.v.d.chargeport.dc||no||Is the charger port DC cover open (doesn’t seem to work)|
|xi3.v.e.autorecirc||no||Ventilation is in “auto-recirculate” mode|
|xi3.v.e.obdtraffic||no||Are we seeing OBD-II frames from the car?|
|xi3.v.p.tripconsumption||127Wh/km||Average consumption for the current or most recent trip|
|xi3.v.p.wheel1_speed||0km/h||Wheel 1 speed|
|xi3.v.p.wheel2_speed||0km/h||Wheel 2 speed|
|xi3.v.p.wheel3_speed||0km/h||Wheel 3 speed|
|xi3.v.p.wheel4_speed||0km/h||Wheel 4 speed|
|xi3.v.p.wheel_speed||0km/h||Average wheel speed|
To be researched¶
Can we start/stop charging?
Can we pre-heat?
Can we lock/unlock the car?
Can we disable the OBD-II alarm
Still looking for the trip regen kWh
Can we get the voltage state of each individual cells rather than just the battery min / max / average?