22 posts / 0 new
Last post
molnarnor's picture
BMW i3 support


I have bought OVMS, and it works fine in my Leaf.

At the moment, I have access to a BMW i3 also, so I would like to try to add some support for these vehicles.

I found some info on the net, and I have found this repo

The guy had reverse engineered a lot's of BMW CAN codes, and put them in a DBC file:

I have copied the content of this file to my OVMS (through the Editor) and saved to /sd/dbc/bmw.dbc

Then I tried these commands:
(I have selected the DBC option from Vehicle in the config)
dbc load bmw /sd/dbc/bmw.dbc
dbc show
dbc dump bmw
dbc show bmw
can can1 dbc attach bmw
can can1 status
can log start vfs crtd /sd/old_can/can_20200212_02.crtd
can log status
can log stop

Of course, under the logging time, I made some activity with the car. Switched on, opened doors, etc.
The log is empty.
can can1 status is showing nothing.

There is no info about the DBC part of OVMS, how it's working, I've just quessed out the above commands.

Can you please give me some more info, how can I get working this?

Yesterday I have made an other approach, not DBC based vehicle, but generic OBDII:
the can can1 status command show quite a lot of traffic, and I have generated some crtd log files also, which are not empty.
(But the reverse engineering from theese logs seems a bigger task :) )

Thank you in advance,

PaulS's picture
I'd also like to get this

I'd also like to get this working. I opened an issue on it a couple of months ago looking for help, but didn't get any responses.

Currently don't have access to an OVMS as I didn't want to purchase before I knew it was possible to get something out of it. (Any owners on the west side of London, UK want to run some experiments?). That said, I've been collecting as much data as I can.

Anyway, best tool I currently know of for enquiring over OBD is https://github.com/uholeschak/ediabaslib  which is an Android App called "Deep OBD for BMW" which uses the definition files from the BMW software. It seems to download these from the authors site and decompress them onto the phone. Currently trying to extract the information out of them into a better format, and understand the communications setup it uses.

The files that you are using are for older BMW models (E8x / E9x. Mid-2000's to Mid-2010's). The i3 is the I01 and is more similar to the F series of ICE cars (e.g. the F30 3-Series). I've identified the definition files for the I01 out of DeepOBD, but I need to be able to read them.

PaulS's picture
A bit more info

I've managed to get Deep OBD working on my i3, and it logs everything it sends to/from the OBD dongle. So I've probably got everything I need to reverse engineer the CANbus setup, and various PIDs.

I'm still learning things, but I think the info is all available now.

Want to pick this up


I want to pick this up to try to get OVMS working for my i3s.

As @PaulS, Deep OBD can get lots of info out over the OBD-II interface.  I also looked inside Deep OBD, found a whole lot of .prg files that come I think originally from something called ediabas.  I found a decompiler for those files and from that output I have many PIDs.

I also have a logs from Deep OBD and the bluetooth-hci "snoop" file so I can see exactly what is sent and received over the bluetooth serial ("rfcomm") link,.

I also have BMW technical training info with block diagrams of the CANBUS architecture.

So that surely is enough to be able to implement support.

So I'm trying to get an OVMS unit sent to South Africa (its not so easy since the SA Post Office must be avoided at all costs).

Is there anybody else interested in support for the i3?

Just to say my OVMS arrived -

Just to say my OVMS arrived - thanks to OpenenergyMonitor who worked with me to get it here.


Jim3cantos's picture
BMW i3 support

Hi, I had OVMS in my old Think City and it worked well. Now with the i3 we have BMW connected app and also Electrified, but probably I would also get OVMS if available for the i3. Good luck with the project! 

ProgressI ca


I think I'm making decent progress - I can build the firmware, and added a "stub" for the i3 which I can select on my unit.

Meanwhile I spent more time on reverse engineering and I think by the end of tomorrow I'll have a list of PIDs and what they do, and I have examples of some of them being used by captures of traffic to a bluetooth obd dongle.

I think the main limitation is that you talk indirectly to the ECUs in the car - the OBD2 isn't on the main buses.  So it remains to be seen whether commands can be sent.

The i3 also turns off power on the obd2 port - need to see what the implications of that are.

And you need to code a setting to stop the car sounding the alarm if you leave a device plugged into the obd2 port.ite f

Still - quite fun.  A lot of German though.  But thanks to the Google Cloud Translate service which is helping me understand it.


Something starting to work


With lots of advice from @dexterbg I'm starting to get some metrics from my i3.

So far I'm collecting SOC%, HV battery voltage and current flow.

It's very very far from finished but you can find the work in progress in the "bmwi3" branch at https://github.com/elbow/Open-Vehicle-Monitoring-System-3


PaulS's picture
Hey Elbow,

Hey Elbow,

Nice work on getting something going. Think I'll put my order in, then I can at least test out what you're doing. Maybe even start helping out.


Hi Paul,

Hi Paul,

I'm confident that I will get to something useful.

You see sensible stuff in the Android and IOS apps, and the plugin to feed ABRP also works.

Here's an example of the data I am already able to collect.  I've got a few things I'd like to improve then I'll clean up and send Mark and Michael a PR.

But you can build my code from my fork anytime.

So I don't think that you will waste your money buying an OVMS.

Note that if you want to leave OVMS connected to the OBD-II port when the car is off you will need also to buy Bimmercode and code off the alarm that otherwise goes off.

Is your car LHD or RHD?  And does it have REX?

Mine is 120Ah RHD BEV so I'd like to see what happens on other variants.

Elbow (Steve)


m.egpio.input                            0,1,2,3,4,5,6,7,8,9
m.egpio.output                           3,4,5,6,7,8,9
m.freeram                                3890716
m.hardware                               OVMS WIFI BLE BT cores=2 rev=ESP32/1
m.monotonic                              80218Sec
m.net.mdm.iccid                          8944500609193285768
m.net.mdm.model                          35316B12SIM5360E
m.net.mdm.netreg                         RegisteredRoaming
m.net.mdm.network                        MTN-SA Hologram
m.net.mdm.sq                             -83dBm
m.net.provider                           DvDevs
m.net.sq                                 -74dBm
m.net.type                               wifi
m.net.wifi.network                       XXXXX
m.net.wifi.sq                            -74dBm
m.tasks                                  17
m.time.utc                               1609315040Sec
m.version                                3.2.015-267-g39dba375-dirty/ota_0/main (build idf v3.3.4-845-gd59ed8bba-dirty Dec 26 2020 15:37:52)
s.v2.connected                           yes
s.v2.peers                               0
s.v3.connected                           yes
s.v3.peers                               0
v.b.12v.current                          9.03999A
v.b.12v.voltage                          12.74V
v.b.12v.voltage.alert                    yes
v.b.12v.voltage.ref                      14.55V
v.b.cac                                  121.86Ah
v.b.consumption                          0Wh/km
v.b.coulomb.recd                                                // Still need to work on these "coulomb" (Ah) metrics
v.b.current                              0A
v.b.energy.recd                                                 // TODO
v.b.energy.recd.total                                           // TODO
v.b.energy.used                          67.7941kWh             // Not working right yet
v.b.energy.used.total                                           // TODO
v.b.health                               Excellent
v.b.p.level.avg                          94.16%
v.b.p.level.max                          94.77%
v.b.p.level.min                          93.52%
v.b.p.temp.avg                           23.56°C
v.b.p.temp.max                           23.59°C
v.b.p.temp.min                           23.51°C
v.b.p.voltage.avg                        4.1885V
v.b.p.voltage.max                        4.1902V
v.b.p.voltage.min                        4.1869V
v.b.power                                0kW
v.b.range.est                            249km                  // This comes from the KOMBI ECU, but isn't the same as what's on the dash
v.b.range.full                           249km
v.b.range.ideal                          249km
v.b.soc                                  100%
v.b.soh                                  97%
v.b.temp                                 23.56°C
v.b.voltage                              402.1V
v.c.charging                             no
v.c.climit                               0A 
v.c.current                              0A
v.c.efficiency                           0%
v.c.mode                                                       // Don't think the i3 has the charging modes this refers to.
v.c.pilot                                yes
v.c.state                                idle
v.c.temp                                 24.2268°C
v.c.time                                 0Sec
v.c.voltage                              0V
v.d.cp                                   yes
v.d.fl                                   no
v.d.fr                                   yes
v.d.hood                                 no
v.d.rl                                   no
v.d.rr                                   no
v.d.trunk                                no
v.e.awake                                no
v.e.charging12v                          no
v.e.drivetime                            0Sec
v.e.gear                                 0
v.e.locked                               no
v.e.on                                   no
v.e.parktime                             60530Sec
v.e.regenbrake                           yes
v.e.temp                                 21°C
v.e.throttle                             0%
v.i.temp                                 0°C
v.m.rpm                                  0
v.m.temp                                 24.4296°C
v.p.altitude                             22.4m
v.p.direction                            221.6°
v.p.gpshdop                              0.9
v.p.gpslock                              yes
v.p.gpsmode                              AN
v.p.gpsspeed                             0km/h
v.p.latitude                             -34.XXXX
v.p.location                             Home
v.p.longitude                            18.XXXX
v.p.odometer                             14806km
v.p.satcount                             11
v.p.speed                                0km/h
v.p.trip                                 188km
v.tp.fl.p                                                       // Can't find the TPMS pressure numbers which is irritating.
v.type                                   I3
v.vin                                    WBY8P62060XXXXXXX
xi3.s.pollermode                         1
xi3.v.b.p.ocv.avg                        3.8576V
xi3.v.b.p.ocv.max                        3.86V
xi3.v.b.p.ocv.min                        3.856V
xi3.v.b.range.bc                         245km
xi3.v.b.range.comfort                    240km
xi3.v.b.range.ecopro                     260km
xi3.v.b.range.ecoproplus                 278km
xi3.v.b.soc.actual                       93.5%
xi3.v.b.soc.actual.highlimit             93.6%
xi3.v.b.soc.actual.lowlimit              10.5%
xi3.v.c.chargecablecapacity              32A
xi3.v.c.chargeledstate                   0
xi3.v.c.chargeplugstatus                 Connected
xi3.v.c.current.dc                       -51.1A                  // This is juice coming from charger on DC side. Generally works but this
xi3.v.c.current.dc.limit                 -51.1A                  // doesn't look credible and it probably some "don't know" value.
xi3.v.c.current.dc.maxlimit              16A
xi3.v.c.current.phase1                   0A
xi3.v.c.current.phase2                   0A
xi3.v.c.current.phase3                   0A
xi3.v.c.dc.chargevoltage                 0V                      // Of these xi3.v.c.dc metrics, only the contactorstatus seems to be useful.
xi3.v.c.dc.contactorstatus               open
xi3.v.c.dc.controlsignals                0
xi3.v.c.dc.inprogress                    no
xi3.v.c.dc.plugconnected                 no
xi3.v.c.deratingreasons                  0
xi3.v.c.error                            0
xi3.v.c.failsafetriggers                 0
xi3.v.c.interruptionreasons              0
xi3.v.c.pilotsignal                      12A
xi3.v.c.readytocharge                    yes
xi3.v.c.temp.gatedriver                  0°C
xi3.v.c.voltage.dc                       0V
xi3.v.c.voltage.dc.limit                 420V
xi3.v.c.voltage.phase1                   0V
xi3.v.c.voltage.phase2                   0V
xi3.v.c.voltage.phase3                   0V
xi3.v.d.chargeport.dc                    no
xi3.v.e.obdtraffic                       yes
xi3.v.p.gps_speed                        0km/h
xi3.v.p.tripconsumption                  145Wh/km
xi3.v.p.wheel1_speed                     0km/h
xi3.v.p.wheel2_speed                     0km/h
xi3.v.p.wheel3_speed                     0km/h
xi3.v.p.wheel4_speed                     0km/h
xi3.v.p.wheel_speed                      0km/h

I3 support merged into OVMS github project


I'm happy to say that BMW i3/i3s support has been merged into the OVMS master source.

I'd be happy for some others to give it a try.  

To try it you'll need to download the OVMS source code from https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3 , compile it and flash the resulting binary image to your OVMS.


Jim3cantos's picture
Hi elbow,

Hi elbow,

Can you share some screenshots from the app connected to the i3?  I think still there is no picture for the car in the app, right?


Jim3cantos's picture
OVMS now working in my i3. No

OVMS now working in my i3. No need to download rhe source code because the support for the i3 is included in the current version of the firmware that can be downloaded when configuring the module. The only thing missing are the pictures of the car in the app.

This is great news,

This is great news, especially with BMW not offering a 4G upgrade for the i3.

John NZ

Thanks everyone for the work that has gone into getting the i3 integrated - really appreciate the effort as I have recently bought an i3 and am looking forward to hooking it up with OVMS once the new units are available from Fasttech with the new modems.

On a related note is there going to be an i3 section in the forums? 

When I joined up recently, I was offered options to get emailed notifications of new posts to the different Vehicle Support forum sections, but the i3 is not one of them.  I assume this is because the i3 is a relatively new arrival on the scene.  But with all the progress that has been made getting it operating on the platform, I think it would be worth it having a dedicated section for the i3.


Telematic Communication Box replacement?

As mentioned in some previous posts, with the 3G TCB going obsolte and with little or no BMW support to upgrade exiting cars with 4G modules, there's a group looking to roll their own hardware.  Most of the interesting stuff is on K-CAN4.  Does anyone have any experience with using the OVMS hardware and connecting it to other CAN buses, other than the OBDII port?

markwj's picture
So long as it is standard 2

So long as it is standard 2 wire CAN at the standard bit rates, it should be fine. OVMS supports up to 3 CAN buses, and several vehicle support modules use more than 1 CAN bus.

I've got my ovms module

I've got my ovms module connected to the CAN line from the i3's original 3G module, and I can capture CAN data, but ovms doesn't recognize any of the i3 metrics. Any ideas?

K-CAN4 / preconditioning

A total noob here so please go easy on me. I am wanting to tap the K-CAN4 near the NBT / headunit (under the back seat) and route that up to the OVMS near the OBD port in order to send pre-condition messages. Here is what I am planning:

1. Since I already have an HDMI MMI I have easy access to K-CAN4 via the included harness. I plan to tap using twisted wires I have on hand

2. I am planning on using pin 7 and 17 on the DB26 on the OVMS to bring this CAN bus into CAN1

3. I will need to try and figure out some way to send the following (found on the internet)

CAN4: 00 F2 to address 0x2A2: Trigger precondition.
C8 FF to address 0x3A3: Unlock doors.
4. Since the I3 sleeps all the time, will have to figure out a way to queue this message up and send it when it wakes up or figure out a way to wake the car from CAN4 ?
Does anyone see any issues with this plan? Thank you in advance!
jollyjinx's picture
I'm new here as well. I am

I'm new here as well. I am very anxious about the battery beeing emptied by the module.

Should it not be a viable way to send a connected drive command that wakes up the system (like preheat)  and get the car charge up the 12v battery again ? 

Furthermore, the navigation system in the i3 has the current vehicle location - is there not a way to get to that. I would rather have the position from the car then from the gps mode. Esp. as OVMS currently does not calculate the position on last gps position and vehicle velocity and steering angle ( I think that is what BMW's navigational system probably does ).

jollyjinx's picture
OVMS Battery drain solved ! Can bus question

Is there still anyone using OVMS with BMW i3 ? 

OVMS Battery drain solved

I have now my OVMS module a couple of months. I first tried to patch the source code of the module to get the module use less power as my modules were all using way too much power to be left on alone for a couple of days. I first improved the voltage curve so that the voltages would be correct over all modules after one initial calibration.

After that I was able to let the module sleep as soon as I turned off the car. But it was using too much power still as the module would power on the gps/modem module every time it booted from sleep to see if the voltage was high enough for a full boot. 

So I fiddled with the esp kernel and kept the module in kernel deep sleep when the voltage was low , but when going into deep sleep the gps/modem module would still drag way too much power sometimes. So I ditched the idea of getting OVMS to be nice and less power hungry. 

I finally went for the cheap solution: I cut the 12v cable on the OBD connection and am using now the power from USB port of the OVMS module which is plugged in a 12V to USB Adapter under the main ventilation. This 12V power, as well the USB adapters in the car, are shut off after some time the car sleeps. So perfect for my need as I have BMWs connected drive to wake up the car when I need it :-D

This has been working for a couple of months now in the three BMWs I have access to. The car no longer is in any danger of draining the battery due to OVMS plugged in.


CAN Bus question

As I've written a software for myself to track the car, I'm seeing that for sometimes OVMS seems to loose the can bus while driving ( in all three cars ).

Has anybody an explanation for that ?

Furthermore I see that during AC charging the car, OVMS is on, but SOC is only on the can bus every half hour or so. A problem I have now is that when I only want to charge to x% I will find that OVMS gets only data again when the car is sometimes over 70% already - is there maybe a better CAN bus to connect to than the OBD port - like under the rear seats ?

I'm using bimmerconnected to stop the charging when the desired level is reached as I move the charging time window to 23hours into the future ( and update that charging window every 12 hours).


So what is the problem with the loosing of the CAN bus data while driving / charging and can that be fixed with using one of the can busses under the rear seat?







Using bummercode

I am about to order OVMS for my BMW i3.

The document says that the OBD2 switching off when the car is locked can be disabled using bimmercode.

I want to confirm that the OVMS adaptor can be used with bummercode to disable it

Log in or register to post comments