Tesla Model 3's long-awaited OBDII port is finally here, enabling deeper diagnostics and customization for car enthusiasts. Discover how this breakthrough impacts Tesla and the automotive industry.

Let's return to the topic of the Model 3 CAN bus and introduce a new one on the onboard diagnostics port type 2.

Tesla Model 3 OBDII Adapter BEFORE January 2019

Tesla Model 3 OBDII Adapter AFTER January 2019

Tesla Model 3 CAN Monitor BEFORE January 2019

Tesla Model 3 CAN Monitor AFTER January 2019

Tesla Model S and Model X CAN Monitor BEFORE 2015

Tesla Model S and Model X CAN Monitor AFTER 2015

In 2013 we bought a Tesla Model S, one of the early ones. They started deliveries in June of 2012 but had by the end of the year put out hundreds of them in the by now familiar Tesla rollout fashion. I got one in February of 2013 and shortly after we were able to purchase a wreck 2013 Tesla Model S and we took it all apart to see what was inside, what made it work.

This goes back to when I was five years old when I started doing that. I always wind up with a lot of extra pieces if I try to put them back together so I don't put them back together anymore. I was fascinated with the drive unit at the time.

We were selling a lot of motors and inverters and so forth to people building electric vehicles and I thought this drive unit was fascinating. 350 kilowatts, fit between the two rear wheels and it had the inverter and the motor and the gear train, the transmission, all in one unit and simply drove the rear axles of the car. But you couldn't just hook up a battery and flip the on off switch because it ran on a CAN bus at the direction of the master control unit or MCU in the car.

As did everything else down to the door locks and the power windows. There were actually four CAN buses in the car. One of primary interest was of course the drive unit, drive train CAN bus.

And so we kind of had to learn about CAN. And the tools were a little rude because there's such a small market for them. Vector had a $20,000 software suite and Kvaser had the adapters which always didn't hook up to anything you wanted to hook up to.

So we developed our own adapter and we developed our own, Colin actually wrote a program called Savvy CAN that basically replicated some of the basics of Vector's Canoe program. It's since he's developed that where it kind of replaces the whole suite and I think does a better job. I'm not busting Vector's chops on having a $20,000 program.

They had a market for this of about 80 people worldwide that worked in automobile manufacturers and needed something to do take CAN with the new ECUs and so forth. The Model 3 had a OBD2 connector but it had one of the obscure little CAN buses on it and 12 volt power and that was about it. We developed an adapter that plugs into a diagnostics port.

Tesla basically reinvented OBD2 on their own port using a very obscure connector below the screen in the flit center console. We developed these tools so we could reverse engineer the CAN necessary to drive the drive unit and we were successful in doing so. I actually had a party here with every smart guy I knew who came in and we did it in a day.

I thought it was going to be a six month project. We were the first to do so. We were the first to make a Tesla drive unit turn outside of the car.

We've since kind of taken that as a mission to reverse engineer Tesla components for other purposes and more recently the batteries. The current vehicle is the Model 3. It doesn't have an OBD2 port at all. It doesn't actually have a CAN port.

Their diagnostics connector is an Ethernet for some dedicated software they use. But the car still runs on CAN. The Tesla Model 3 is the first electric car to receive a waiver from a 1996 legal requirement from the Environmental Protection Agency to provide an onboard diagnostics port for emissions testing.

Volkswagen really introduced the first digital diagnostics port per se in the early 70s. General Motors and Ford and really all the automakers eventually followed suit and they would have test equipment at the dealership that they could plug into these connectors to analyze the state of the engine and it was entirely for internal combustion engines. In 1996 the EPA mandated a specific connector, a J1962 female, be located within a certain distance of the steering column and that it provides a standard set of SAE parameter identifiers, PIDs, and that that be a requirement to sell a car in the United States.

And the reason they did this is so they could plug in their diagnostics equipment and no matter what the manufacturer it would support these basic standardized PIDs, about 100 of them maybe. And most of them are really no use to an electric car at all. They're about oxygen sensors, mass air flow, inlet air temperature, exhaust gas temperature, percent of engine load, torque and so forth, primarily used on the dynamometers where they tested emissions.

In 2008 that mandate was altered to require, and there were a number of protocols, five of them actually, that emerged over the OBD2 port, but they mandated the ISO 15756 CAN protocol on PIN 6 and 14. As of 2008, and that's very similar to the Bosch-invented controller area network CAN that they invented in 1988 and that almost all cars use today. And so since 2008, almost every car has that ISO 15756 CAN.

That can be at 250 kilobits or 500, but everybody uses 500. And Tesla uses 500 in their drivetrain CANs on all models. And so it's emerged, a kind of ecosystem has developed around the OBD2 port since it's there and it's a standard.

And so one of the issues was that the OBD2 port is connected to the engine control unit or vehicle control unit, the little computer that runs the car. And so one of the first things to happen is the car makers would have this engine light on the dash and it would light up if there were any trouble codes. And then you would take it to the dealer, and they would analyze the trouble codes and see if you had a problem and then repair it and clear the engine light.

Well, the first thing they did when you brought it to the dealer was clear all the codes and run the car a little bit and see if it came back up. And in about 90% of the cases, that fixed it. 200 bucks please.

And they would tell you if it comes back on again, bring it back. Well yeah, they get $200 every time. Such a deal, it's kind of like smart car keys.

It's good to be a dealer. And so people developed little handheld devices that you could plug in and clear your engine light yourself and all the trouble codes. And originally that's all they did was just clear the codes.

If the engine light didn't come back on, you just saved yourself $200. Eventually they developed that to start to decode some of the engine codes. And if you had the readily available manual from the manufacturer, it would even indicate if you got a code 38 that here's what you probably needed to change.

And so people were enabled to work on their cars. That developed further into the race guys wanted a big RPM gauge on the dash that would alarm at certain set revolutions to give them shift points that were optimum for acceleration. Those were popular.

Today we have head up displays that will shine data on to the vehicle windshield where it looks like a fighter display. You look at the windshield, you see a faint imprint of your speed and your RPM, battery voltage perhaps, coolant temperature, that sort of thing. And those were connected to the OBD2 ports.

Today they're more connected to your phone and use the GPS in your phone to get speed and so forth. But there's still some out there that connect to the OBD2 port. Along the way, there was another emerged device, the Elm 327, and that would plug in.

Here's a little Elm 327 adapter, and that would plug in to an OBD2 port. And you can plug a USB cable into that, and it would translate that CAN into ASCII text and add a little command language and so forth. So you could communicate with your OBD2 from your laptop or your Arduino or whatever.

That's since developed into serial Bluetooth and then Wi-Fi. And now Bluetooth lower energy as different kinds of connection protocols. And you don't need a USB port at all, making the whole thing smaller and lighter and less expensive.

And they're not expensive now. I ordered one this morning at $79, but there's versions out there for $29 or $39. Elm 327.

This is the adapter we developed so I could capture CAN data from the Model S. And this plugs into a diagnostics port under the console and allows us to capture all the CAN frames while I go drive around the town. And we can take those log files and then analyze them in depth for months to derive what messages do what and so forth. That's a pretty nerdy activity.

But we were not alone, and we probably sold 200 of these over the course of four or five years. And it's got two CAN ports on it, or one CAN port and a USB port. But it's a pretty select group of people.

Now the Model 3 has come out, and they're selling a lot of these cars, a lot more than the Model S ever sold. And it doesn't have an OBD port at all. As I said, it was the first electric car to get a waiver to not have the port at all, even though it did nothing on the S and X. They were still required to have it.

And so they actually also paid a $244,000 fine for not filing an emissions report with the federal government. And they said, well, we don't have any emissions. And the answer was, well, yeah, but you're still required to file the report, and the fine is, in this case, $244,000.

So they did provide the OBD-II ports on the S and the X. They don't do a damn thing. In fact, they're positioned such that it's very difficult to even connect to them. But why would you want to? It doesn't really do anything.

Model 3 doesn't have the port at all. We have recently talked about an adapter to plug in between two connectors in the console. At the rear of the console, at the floor, there is a plastic kick panel you can just pull off.

And there's one connector, evidently, in there, a 20-pin connector. And you separate that and plug this in between it. We had found another connector under the drink holders.

And I really like that better, but it was very difficult to get a connector. They sent us six of them as a sample, but then they wanted an order of 20,000 of them to actually get any. And so we didn't.

And it took a lot of disassembly of the console to put that in. And this is pretty simple. You just pull this plastic kick panel off, plug this in between the two connectors.

We made it long enough where you can fold one of them into a little cubby hole they have there so you can get the plastic cover back on. So you don't need any tools. But, of course, Tesla has changed the connector as of January 19th.

And so we've got these for the pre-version. And I have an order in for 100 of the version with the new connector. Should be here soon.

And so that's an adapter to do, really very similar to the original adapter for the S. A couple of things. We have an upgraded controller that we use for a lot of things around here. And it's based on an Espressive ESP32 chip, which is four or five times faster, has two cores, and it has built-in wireless and Bluetooth in the chip.

And when we designed that, we put two CAN ports on it instead of one that we had on our earlier controller. That kind of opened a target of opportunity here. And so what we're doing at the moment is we tap in with CAN0 into the vehicle CAN bus using this adapter plug.

And we've added an OBD2 J1962 female connector, just as is in most cars, to the other port. And so we can capture the Tesla vehicle bus CAN and extract data from that. And then do kind of a software bridge to present J1939 SAE pins out the added OBD2 port on CAN1.

And so that'll give us the basic OBD2 functionality, 12 volts on pins 2 and 16. CAN high is on pin 6, and CAN low on pin 14 at 500 kilobits per second. As I said, most of the SAE pins we do not provide because they don't make any sense.

There's no analog to the oxygen sensors in an electric car. As I said, they don't have a mass airflow sensor because they don't have mass airflow. They don't have exhaust gas temperature because they don't have exhaust gas.

And so it goes. But some of the pins are standard and do make sense. Speed, the odometer, revolutions per minute, your fuel state.

We would associate with state of charge of the battery. And there's some additional ones we need, like the voltage of the battery, that we can repurpose pins that weren't used very much anyway and have the right mathematics to them that we can convert the Model 3 data to those pins and so get them out the J1939 port. So we're kind of doing a very specialized Model 3 version of OBD2 and J1939 that you can use for a number of things.

As I said, the ESP32 chip already has wireless and Bluetooth built in. We picked wireless. And so it would not be expensive to buy an Elm 327 and connect it to this port.

But we already have wireless built in. So we have done away with the necessity for an Elm 327 by doing a TCP IP Wi-Fi wireless connection using exactly the same port address and IP number and so forth that the Elm 327 does. And so things that normally talk to that will do it.

The real, what's emerged as the real application for wireless or Bluetooth, Elm 327, is to connect them to smartphones or tablets. And so what we've been using as our standard to make sure we're sending the data correctly is an Android program called Torque. It was written by Ian Hawkins of Buckinghamshire, England.

And he's done rather well with this. This has kind of become his profession. He started writing code for Android as soon as it came out, 2010.

He hasn't done a lot of programs. He's mostly done Torque, Torque Lite, Torque Pro, Torque Scan, different plug-ins for Torque. And he charges a very modest $4.66, I think, or $4.95 for this application, available only for Android over Google Play.

But at five bucks a pop, he does about $80,000 a month now on just Torque. And the program appears to be virtually unsupported at this point. He's not doing much to upgrade it and he's not doing much to support it.

And that's kind of a problem. But it is kind of an astonishing program. It basically is a car guy's Mr. Potato Head busy box.

It lets you design your own dream dash with different kinds of dials and indicators and displays and graphs and bars and so forth to display PID data that it gets either over Bluetooth or Wi-Fi onto an Android device. And they have dozens, if not hundreds, of themes, backgrounds, dial background, dial sets, gauge types, and so forth, where you can kind of design your own little screen display to display PID data from your car. There are programs for iOS, OBD2 Fusion, or CarScan, spring to mind, but they're a little ugly and their mother dresses them funny.

They have very limited capabilities compared to Torque. The strength of Torque is you get to design the dash, and it's very good at letting you do that. It's not perfect, but it's very good.

This is on the screen, a screen capture from the Android that shows a screen that I kind of cobbled together here, and we'll go over that in a minute. But we've got this working pretty well at this point. I'm still validating kind of the trail from the Model 3 all the way to the gauge to make sure all our mathematics is correct and so forth.

Colin ginned up the basic program in about three days, and it's going to take me the rest of my natural life to get this thing production ready, but it's a fun project, and it's really kind of interesting to drive down the road and see this program. So we're going to take a little bit of a look at what's on my dash and what that consists of, and then we're going to go for a drive and show you this thing in action with live data and then talk a little bit more probably about the design of it. But the bottom line, I guess, is we're growing perilously close to having an adapter you can install with no tools in five minutes and be able to use any manner of things.

There's a lot of other applications for OBD2 that have become somewhat more serious. A lot of insurance companies and fleets have applications now that use a device that plugs into it and has a GSM cell phone, and so they can pass data on your driving habits to the insurance company to get a much lower rate based on the number of miles you drive and how you drive them. My brother drives around with one of these cars all the time.

It sounds like a real privacy infringement. He doesn't care. He gets a lot lower insurance, and he doesn't really do a lot of quarter mile stuff anyway, and so he's quite happy with that.

Fleets often use them to track their vehicles and what their drivers are doing with their trucks or whatever. The Model 3, these things just don't work on them, and they have to come up with other strategies and so forth. We think it's probably easier just to provide the basic data and an OBD2 port to do that, and so we're growing perilously close to doing that.

As I said, we've got the adapter connector here and enough cord where you can put this in the little cubby in the console. We've got an on-off switch. Mostly it lets you reset it to reset this thing.

The thing powers up. It's not powered on all the time. It only powers up when the car is energized.

You open the door or something, and so you don't have to turn it off or anything, but there's no real way to reset it without waiting for the car to power back down or pulling the connector, so we put a little power switch on here. It still has a USB port. We're working on connecting it to Savvy Can over wireless automatically, and of course your G1962 connector, and so that's the current project.

It's kind of a fun one. Let's take a look a little bit at the torque program for Android and why we think this will make an interesting display for any Model 3 owner even if they're not a techno geek who has to pore through thousands of pages of catalog trying to read messages from God in cloud formations that instead they can use a torque application and get the basic data that they might want that way. Stay with us.

All right, this is actually just a screen capture that I'm recording on a laptop because it lets me blow it up a little bit, get a little better video, and Android quite does. We'll do some of that. This is one of 10 Brazilian backgrounds.

This is a carbon fiber looking background, and I'm given the old style steam gauges. You're not limited to that at all. I want to stress at every step that you can use any of dozens of different kinds of display.

This is a busy body Mr. Potato Head kit that you can make a dash any way you want. This is just to demonstrate the basic concept and give us a test bed for tracking data from the CAN0 port all the way through the OBD2 port and out to a program that we didn't make to make sure everything is to the right protocol. At the center of the display, the main thing is, of course, our miles per hour, and it's displayed in miles per hour.

We can kind of switch that based on the... There's actually a CAN byte in the Model 3 that tells us whether it's using kilometers or miles per hour. We get a digital display of it and a needle, and the reason I have it so big is it's a simple toggle using the settings down here to toggle this into a heads-up display where the whole display is reversed and you shine it on in the windshield and you can see it in the glass. You can't see it great, but obviously they use a lot of white characters and so forth, and you can design to optimize that capability.

Within the miles per hour, it's conventional to have an odometer, which this one would stretch left and right and I could squash it down a little bit, but this shows you the number of miles that are on the car net, too, as reported by CAN. In the upper right, I have a voltmeter that runs from 280 to 400 volts, and that's a good range for the high-voltage battery, but I also have a CAN message that gives me the 12-volt battery, and I use a pin to put that in this little box here. This is our battery state of charge.

It's showing 33.7%, and you have kind of a slider here.