Welcome to Tesla Motors Club
Discuss Tesla's Model S, Model 3, Model X, Model Y, Cybertruck, Roadster and More.
Register

Let the hacking begin... (Model S parts on the bench)

This site may earn commission on affiliate links.
I worked on the camera interface a bit, but I haven't been able to get the display to show the cam input at all yet. I've ordered another camera to try some more with. For for details, it appears that the camera is controlled by an FPGA in the CID unit that sits between the display and the main processor. Then it overlays the camera feed as directed directly to the display output. The video from the rear cam never goes through the OS of the CID. This would explain why Tesla can't utilize the rear camera video for anything related to driver assistance/autopilot. It will also make this particular goal of my project more difficult since there isn't any code or anything I can look at and disassemble to make things easier.

Do you have the time and/or resources to check if the FPGA code is protected?
 
Tesla has been great, actually, with the hacking efforts. I won't really go into detail on any of that without permission, however.

The Radio "app" just seems to be diagnostics for the AM/FM/XM tuners.



*shrugs* Just blocking the CID from connecting out to Tesla's VPN would probably be sufficient, which is pretty simple.

Google Maps and the streaming radio stuff don't go through Tesla. However, blocking the VPN would kill the Tesla mobile app. There is some mechanism for waking the car via 3G/LTE also... unsure exactly how that works.

I would guess SMS.
 
*shrugs* Just blocking the CID from connecting out to Tesla's VPN would probably be sufficient, which is pretty simple.

Google Maps and the streaming radio stuff don't go through Tesla. However, blocking the VPN would kill the Tesla mobile app. There is some mechanism for waking the car via 3G/LTE also... unsure exactly how that works.
That may or may not be an issue, with that level of access you may be able to build your own app. or maybe just find a way to lock down software changes (somehow write protect important files, and deny any upgrades?)

In the end, I'm going to want full control of the device I own, but I'm not going to want to give up the daily convenience features to get it.
 
Do you have the time and/or resources to check if the FPGA code is protected?

I'm not sure. In my experience FPGA stuff is nearly impossible to reverse engineer anyway, so probably not going to try. I'm actually reasonably certain I have the FPGA binary, actually, from an update file.

I would guess SMS.

My guess as well... just not sure exactly how that gets handled.

That may or may not be an issue, with that level of access you may be able to build your own app. or maybe just find a way to lock down software changes (somehow write protect important files, and deny any upgrades?)

In the end, I'm going to want full control of the device I own, but I'm not going to want to give up the daily convenience features to get it.

I suppose you could allow it to connect to the VPN for the remote app, and just squash the updater, ssh access, etc. Locking out software updates would be simple. *shrugs*

Just would depend on what the actual goals are. I'm actually considering pretty much replacing the instrument cluster display software with something custom... as a down the road project. Would be pretty simple, overall. Just a matter of interpreting the flood of UDP messages (basically CAN messages) that come from the gateway and CID and displaying them in a useful fashion.

I'm still trying to determine the purpose of the body CAN connection that the IC has connected directly...
 
However, blocking the VPN would kill the Tesla mobile app. There is some mechanism for waking the car via 3G/LTE also... unsure exactly how that works.

My guess is when we get the point of complete pwn3rship, the talent of people like you and the other tech types that gravitate to Tesla vehicles could probably come up with a pretty bad-ass replacement for it. With a LOT more functionality the masses probably would never care about.

As a former nuclear power plant operator, I'm very disappointed I can't see the coolant loops diagnostic screen as my normal display. Would make me... feel more at home in the car. :rolleyes:
 
... There is some mechanism for waking the car via 3G/LTE also... unsure exactly how that works.

Huh, really? I thought it was done all via SMS since the LTE drops out when the car sleeps.

Edit: Oops, already suggested up thread.

As a former nuclear power plant operator, I'm very disappointed I can't see the coolant loops diagnostic screen as my normal display. Would make me... feel more at home in the car.

Oh, hell yeah! I'd love to get access to the thermal screen.
 
My guess is when we get the point of complete pwn3rship, the talent of people like you and the other tech types that gravitate to Tesla vehicles could probably come up with a pretty bad-ass replacement for it. With a LOT more functionality the masses probably would never care about.

As a former nuclear power plant operator, I'm very disappointed I can't see the coolant loops diagnostic screen as my normal display. Would make me... feel more at home in the car. :rolleyes:

Yeah, most of this stuff is pretty benign. If Tesla made a version of this diagnostic mode that was read only (as in, no buttons to push that actually do anything) I don't see what the harm would be... and it would satisfy most.

I'm going to go ahead and go through some of it any take some screenshots. Most of the fields are blank on my bench setup because the rest of the car is "MIA" (actually used in the error codes)... but at least it gives an idea of the type of data available. Some of it is completely broken on my setup, too... unless I play some real CAN logs into the CAN buses. Then stuff pops to life.

Plus there is the panel on the IC (in my photo above) that has a bunch of cool data that would be awesome to activate. Heck, I'd be happy with just that. :D
 
Since you now have an "in" it would be awesome if you could gently hint that read-only diagnostic access would essentially halt all desire to break-in to the software. I honestly can't imagine that there are blackhat hackers out there wanting to root the CID of the Model S. They've got much bigger targets in mind. I really think diagnostic access is a win-win.

Yeah, that widget on the IC is kinda cool. What data actually populates battery temp? I thought the battery had a total of like 16 sensors, so do they all get averaged when reported as pack temp or is one randomly selected?
 
My guess is when we get the point of complete pwn3rship, the talent of people like you and the other tech types that gravitate to Tesla vehicles could probably come up with a pretty bad-ass replacement for it. With a LOT more functionality the masses probably would never care about.

As a former nuclear power plant operator, I'm very disappointed I can't see the coolant loops diagnostic screen as my normal display. Would make me... feel more at home in the car. :rolleyes:

I would really like to see cooling information as well as cooling fan speed and real-time kW usage from pack heater.
 
Since you now have an "in" it would be awesome if you could gently hint that read-only diagnostic access would essentially halt all desire to break-in to the software. I honestly can't imagine that there are blackhat hackers out there wanting to root the CID of the Model S. They've got much bigger targets in mind. I really think diagnostic access is a win-win.

I did talk briefly about a "geek mode." Seems there are, rightfully, things with higher priority.

Yeah, that widget on the IC is kinda cool. What data actually populates battery temp? I thought the battery had a total of like 16 sensors, so do they all get averaged when reported as pack temp or is one randomly selected?

I think the "Battery" one is an average of all of the sensors, and the "Batt Outlet" one is the sensor at the end of the cooling loop. Brick min and max are the lowest and highest individual cell group voltages from the whole pack. BMS is the full pack voltage. All of this gets populated when I play CAN recordings to the power train CAN of my bench setup.

I would really like to see cooling information as well as cooling fan speed and real-time kW usage from pack heater.

Me too. Lots of data here.

And here is the part where some people will get angry at me for some reason... (maybe because I'm using too much bandwidth? :p )

(Click to get full quality versions)

thumb-screen-cid-2016-01-06-20_38_04.jpg thumb-screen-cid-2016-01-06-20_38_13.jpg thumb-screen-cid-2016-01-06-20_38_35.jpg thumb-screen-cid-2016-01-06-20_38_52.jpg thumb-screen-cid-2016-01-06-20_39_04.jpg thumb-screen-cid-2016-01-06-20_39_16.jpg thumb-screen-cid-2016-01-06-20_39_23.jpg thumb-screen-cid-2016-01-06-20_39_34.jpg thumb-screen-cid-2016-01-06-20_39_55.jpg thumb-screen-cid-2016-01-06-20_40_11.jpg thumb-screen-cid-2016-01-06-20_40_28.jpg thumb-screen-cid-2016-01-06-20_40_40.jpg thumb-screen-cid-2016-01-06-20_41_03.jpg thumb-screen-cid-2016-01-06-20_41_13.jpg thumb-screen-cid-2016-01-06-20_41_41.jpg thumb-screen-cid-2016-01-06-20_50_08.jpg thumb-screen-cid-2016-01-06-20_50_20.jpg thumb-screen-cid-2016-01-06-20_50_26.jpg thumb-screen-cid-2016-01-06-20_50_31.jpg thumb-screen-cid-2016-01-06-20_50_51.jpg thumb-screen-cid-2016-01-06-20_50_56.jpg thumb-screen-cid-2016-01-06-20_51_02.jpg thumb-screen-cid-2016-01-06-20_52_23.jpg


All shots taken with the screenshot save program the car uses when sending bug reports and such... and a few of them somewhat sanitized to scrub potentially identifying info, obviously, and added my little watermark.

The DOCS tab isn't interesting... just has some images of a few of the manual pages describing the under-hood fuses... nothing important. The APPS tab you see in my earlier photo.

The cool thing is, when I play back CAN data this info is updated in near real-time. This is how everything looks with just the CID and IC connected. I didn't get a shot of the BMS screen since it doesn't work until I play some CAN data and I didn't have that set back up yet.

The CAN tab is awesome. I mean, pretty much EVERYTHING the car does can be monitored from there. There are hundreds... perhaps thousands of variables that can be shown.

There is nothing really secret in these screenshots, so I really don't see any harm in posting them. Enjoy.
 
Amazing work, I'm really enjoying reading this thread ;)

I count 18 entries listed in the boot loader sections, beside the obvious ones like BMS, have you identified what & where are the different controllers/ECU are and their fonctions ?
That many different places to tinker with ....
 
My guess as well... just not sure exactly how that gets handled.

Since the goal is power savings, my guess is the radio/cellular module has a signal line to the CID that changes state upon receiving an SMS to wake it up. This way only the radio module has to stay powered. "Always connected" keeps the CID powered and the VPN up, and energy savings OFF keeps everything powered.

Have you found a way to determine the car's mobile number? It would be interesting to test if the receipt of any SMS causes it to wake up, or only from a specific sender, or if the payload itself has an authenticator.
 
Since the goal is power savings, my guess is the radio/cellular module has a signal line to the CID that changes state upon receiving an SMS to wake it up. This way only the radio module has to stay powered. "Always connected" keeps the CID powered and the VPN up, and energy savings OFF keeps everything powered.

Have you found a way to determine the car's mobile number? It would be interesting to test if the receipt of any SMS causes it to wake up, or only from a specific sender, or if the payload itself has an authenticator.

Looks like the mobile number, IMEA, etc are on the MCU screenshot but obfuscated.
 
Here's how it looked in my car:

Data - MCU.jpg