Tesla Model S/X GEN2 Charger
Overview
The Tesla GEN2 on-board charger (OBC) is a single/three phase 10kW AC charger that was fitted in the Model S from approx. Oct2013[1] until it was replaced in the 2016 'facelift' model with GEN3. It was the first Tesla OBC capable of fully utilizing external 3-phase AC; previous Tesla OBCs lacked the external wiring for three phases.
One or two GEN2 chargers are installed beneath the rear seats in the Model S for AC charging.
The charger is made up of three 3.3 kw modules, each sitting on a liquid cooling plate. This assembly enables both single and multi phase AC charging.
Important Considerations
Output Voltage Range
HEED DAMIEN'S WARNING:[2] |
Supported Tesla Part Numbers (TPN)
It has been found that early revision units will not work with the OI control boards.[3]
TPNs to avoid:
- 1014963-05-B and 1014963-05-C
TPNs tested and known good:
- 1014963-00-C/E/F/J/K/L
- 1014963-00-C [4]
- 1014963-00-G is likely also good, just wasn't mentioned by name in the referenced thread
Supported Software Revisions
At this time, it is not known why but it appears that some firmware revisions of this charger will have problems with maintaining a steady charge. Symptoms of this can be either surging (current goes up, drops to near zero, then surges back) or modules coming online singly followed by all modules going offline, repeat forever. In either case, charge power will be limited. We do not yet know what, exactly, is causing this. However, it is confirmed that swapping charger units but keeping the OI control board can produce working results.
Cooling
The direction of flow in the cooling plate does not seem to matter.[5] The charger should likely be on the same cooling loop as the batteries themselves. This coolant loop should be separate from the loop with the motor and inverter (they get far too hot.) Limited testing (esp 110V, 1kw) can be done without the coolant lines hooked up. However, it would be unwise to attempt 10kw charging for any length of time without liquid cooling.
Replacement Control Boards
Replacement control board https://github.com/damienmaguire/Tesla-Charger
v5 kit: https://www.evbmw.com/index.php/evbmw-webshop/tesla-boards/tesla-gen-2-charger-logic-board-kit
v5 partially built board: https://www.evbmw.com/index.php/evbmw-webshop/tesla-boards/tesla-gen-2-charger-logic-board-partially-built
github: https://github.com/damienmaguire/Tesla-Charger
Charger Connections

A1 | A2 | A3 | A4 | A5 | B1 | B2 | B3 | B4 | B5 | B6 | |
---|---|---|---|---|---|---|---|---|---|---|---|
OUT2 - AC present | D1 - enable | 12V supply | CANH | Control Pilot | |||||||
A6 | A7 | A8 | A9 | A10 | B7 | B8 | B9 | B10 | B11 | B12 | |
OUT1 - HV enable | D2 - 3p | GND | CANL | Proximity |
Connector part numbers
AC and DC power connections (Molex Sabre series):
- housing: 044441-2006
- pins: 043375-3001 (18-20AWG), 043375-0001 (14-16AWG)
Logic connectors (Molex MX150L series):
- housing: 10-way 19418-0014, 12-way 19418-0026
- pins: 33012-2002 (18-20AWG), 33012-2001 (14-16AWG)
Replacement board connectors
If you can desolder 24 pin SMD connector off of the OEM control board otherwise to order 24 pin connector from Mouser P/N is:
The 30 pin connector is very difficult to desolder and resolder. Replacement P/Ns are:
- IPS1-115-01-S-D-PL, SAMTEC - IPS1-115-01-S-D-PL - SOCKET, 2.54MM, 2X15WAY
- NOTE: One of the pins is missing from this connector variant, but according to this forum post, it's ok as long as you solder it in the correct orientation.
- IPS1-115-01-L-D, SAMTEC
- Has all 30 pins.
Programming
You'll need a ST-LINK/V2 smt32 programmer. Unofficial ones are cheaply available from amazon and ebay.
- ST-LINK programming utility: https://www.st.com/en/development-tools/stsw-link004.html
- stm32_loader.hex https://openinverter.org/forum/viewtopic.php?f=7&t=1119
Two options:
- Charger_gen2_v5.hex https://github.com/damienmaguire/Tesla-Charger/tree/master/V5/Software/Binary
- openinverter style firmware https://openinverter.org/forum/viewtopic.php?t=1323 (only available via patreon for next few weeks)
Click "Target --> Connect" from top menu. You want to see the screen get filled with a data dump of symbols. In the upper right of the screen you can see it identified the device.
In the main viewing window are multiple tabs, click the "Binary File" tab to select it.
This will ask to open a file, you choose: "stm32_loader.hex" from openinverter.org, download ahead of time. This will change what shows up in the viewing window.
Click "Target --> Program and Verify" from the top menu. This pops up a window, and you can probably just click "Start" on that window. This programs the STM32 chip with the stm32_loader.hex file.
The STM32 on your v5 gen2 Tesla charger Board can now load other files.
You can close the stm32_loader.hex tab, and go back to the "Binary File" tab, which will ask to open another file.
You choose: "Charger_Gen2_v5.hex"
Same as last time, click "Target --> Program and Verify" from the top menu. And click Start.
The STM32 on your v5 gen2 Tesla charger Board now also has the software to run.
You are now done with the ST-Link USB dongle, it's no longer needed.
Future updates can be done via WiFi. (must have esp8266 WiFi module programed https://openinverter.org/forum/viewtopic.php?f=5&t=8 )
External CAN bus
The V5aB2 version of the board has no connection to the external CAN bus (V5aB3 has) but you can add it with two bodge wires as shown in the picture. You will find CANH and CANL on the 3 pin header underneath the WiFi module. Route them over to CONN6 as shown. CONN2.1 (CANH) is connected to CONN6.24, CONN2.2 (CANL) to CONN6.26.
Revision V5aB3 does not need this modification. On Revision V5aB3 you MUST close the solder jumper unless your charger is on an already terminated bus (that is, if the bus already has 2 termination resistors, one on each end, and measures 60 ohms with all devices powered off). If you do not use the external CAN, terminate the bus. If you have only two devices on the bus, terminate the bus. If you aren't sure, double check. Bus termination is important.
If you attach to the external CAN bus, be aware that all internal CAN traffic is also seen on the external CAN bus. The following IDs are already used and mustn't used by any other device on the bus:
207, 209, 20b, 217, 219, 21b, 227, 229, 22b, 237, 239, 23b, 247, 249, 24b, 327, 329, 32b, 347, 349, 34b, 357, 359, 35b, 367, 368, 369, 36b, 377, 379, 37b, 537, 539, 53b, 717, 719, 71b.
Functionality of external CAN bus
With the CAN bus now available externally you can remote control your charger via CAN and also receive some values from it. The mapping is similar to the CHAdeMO CAN protocol. The feature is only available in the commercial firmware.
ID | Direction | Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 |
---|---|---|---|---|---|---|---|---|---|
0x102 | Receive by charger | DC voltage limit MSB | DC voltage limit LSB | DC current set point | ==1 enable charging | SoC | |||
0x108 | Transmit by charger | Version=0 | Max DC voltage MSB | Max DC voltage LSB | Max DC current | ||||
0x109 | Transmit by charger | Version=0 | DC voltage MSB | DC voltage LSB | DC current | 0 when off, 5 when charging |
Example: transmit "0x102 # 0 0x1 0x86 0x14 0x1 50 0 0" to enable charging up to a voltage of 390V and a DC current of 20A, report SoC of 50%
ID | Direction | Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 |
---|---|---|---|---|---|---|---|---|---|
0x102 | Receive by charger | DC voltage limit MSB | DC voltage limit LSB | DC current set point | ==1 enable charging | SoC | |||
0x108 | Transmit by charger | Version=0 | Max DC voltage MSB | Max DC voltage LSB | Max DC current | ||||
0x109 | Transmit by charger | Version=0 | DC voltage MSB | DC voltage LSB | DC current | 0 when off, 5 when charging |
LR: Personally I think the data for DC voltage limit is incorrect. The above states Motorola but only when I set all signals (so not only DC voltage limit as also the start bit count (sometimes) varies) to Intel it works for me.
openinverter style charger firmware
In addition to the open source firmware there is also an openinverter style firmware. It adds advanced features:
- Support for the standard open inverter web interface
- Parameter handling as known from the inverter firmware (see picture)
- Spot value handling like inverter including plotting, gauges, and logging
- Over the air update like inverter
- DC current control
- CAN control as described above
The firmware requires the board to be flashed with stm32_loader.hex. An Olimex MOD-ESP8266 must be programmed with the openinverter web interface. See Olimex MOD-WIFI-ESP8266 and this forum thread for flashing instructions. With that done, future updates will happen via the web interface.
The firmware will soon be fully published and is only available via patreon for now: https://www.patreon.com/openinverter
Connecting to the Web interface
Depending on the version of your Olimex wifi dongle they are "open" or you need a password to connect.
By default you can connect to the network (Access Point) and browse to: 192.168.4.1
By default all charger kits will have SSID : charger PASSWORD : charger123
Note: Its recommend that you change it. Nobody wants to drive and have some joker with a phone finding this information and accessing your charger.
Missing IC4 Chip
According to this forum post, IC4 used to be populated with a USB to serial FTDI chip. However, on the latest boards, all settings are configured via wifi so it is no longer needed.
Registration
This step is no longer needed as the firmware will soon be published. It is already available on patreon: https://www.patreon.com/openinverter
If you bought a fully assembled V5aB3 board from the EVBMW webshop you can skip this step.
Latest Software for V5 boards and later
Tesla Model S/Tesla Gen23 V5 Software
Additional Resources
Videos by Damien Maguire showing internals of the charger, CAN IDs, wiring, and development of the board:
The Tesla Project : 10 Kw Gen 2 Charger
The Tesla Project : Charger Progress
The Tesla Project : 10kW Charger Charging
The Tesla Project : More Charger Hacking
The Tesla Project : Charger 10kw Run
A 15 min intro from a user perspective: https://www.youtube.com/watch?v=ibtr6v1k0cA
Common Issues
- The Tesla chargers are very sensitive to grounding. The case MUST be connected to vehicle 12v ground AND evse earth/ground when charging. [1]
- With V5aB2, If you do NOT use the external CAN bus or are not properly terminated, remember to close the solder jumper next to R1 under the WiFi module. When in doubt, check the resistance of the CAN bus with all devices off. It should be 60 ohms ideally. If you are not using the external CAN then it should be 120 ohms.
- People had problems with unreliable connectivity between ESP8266 & the charger board [2]
- Firmware 1.09 and 1.10 can lose the CAN map, making the logic board go silent, reset instructions here: [3]
- If a module within the charger is enabled (and all three are enabled by default) then it MUST see AC and DC voltage when charging starts. If it does not then no current will flow on any module. So, triple check your wiring before starting. It can be easy to mix up the line and neutral wires of the AC input. This will not blow up anything but it won't work either. Mixing up the DC wires is a recipe for a bad time.
- Some chargers are just raised wrong. As covered above, for reasons we don't know, some modules will simply refuse to work properly. Most often this will happen to chargers that were previously used in super charger stations but it can happen to chargers that were pulled from Model S cars as well. There is not yet any known fix for this. If it happens the only current solution is a different charger or you live with slow charging.
- Did you set the D1 enable pin to be high (+12v?) It must be high in ANY mode in order for charging to start. It is OK to tie it to the +12 incoming power if you are using something like Type2 where charging is controlled by the proximity and control pilot signals.
Errata
Charger Dimensions: 500x300x100mm
More specific dimensions and CAD info here: https://openinverter.org/forum/viewtopic.php?p=3641#p3641CAD
Notes
- ↑ https://teslamotorsclub.com/tmc/posts/6560948/
- ↑ https://openinverter.org/forum/viewtopic.php?p=9994#p9994
- ↑ https://openinverter.org/forum/viewtopic.php?t=932
- ↑ https://openinverter.org/forum/viewtopic.php?p=34710#p34710 and also by Lars on June 25th 2024
- ↑ https://openinverter.org/forum/viewtopic.php?p=2030#p2030