An Extra Display for my Model 3

After purchasing of my Model 3 Long Range, in March 2020, I spent more than a month (also thanks to the lockdown) to install any kind of accessory available online for my new toy (!).

Like most Model 3 customers, I greatly appreciate the cleanliness of the center console, with no air vents, knobs and all “old school” controls; on the contrary, it seem to me that the large central display is distracting while driving.

While for normal settings, for music and for the navigator the 15 “tablet is perfect, when you need to keep an eye on the fundamental things (speed, regeneration, lights) the eye moves continuously from the road to the left side screen.

So I decided to re-use some of my work skills and adapt something done in the past years to create an additional display on which to show the “basic” information, namely

  • The essential lights (belts, arrows, headlights, alarms, etc.)
  • Speed (possibly both analog and digital) 
  • Power consumed and regenerated 
  • (eventually) torque delivered and rpms

In addition, my monitor had to have the following mechanical characteristics:

  • be pleasing to the eye;
  • seamlessy integrated with the steering wheel, leaning on the steering column so as to be removable if necessary;
  • of same color and finish as possible as the on-board tablet

so a DIY project was born which kept me busy (in my spare time) for a few months, and which I present to you

It is a high brightness 7-inch display at 1024×600 resolution, combined with a Raspberry PI embedded computer. This PC, the size of a credit card, allows you to mount Linux as an operating system, and to use new generation graphics libraries with 3D acceleration, for the best visual rendering.

Raspberry PI 3A+

A board has been designed around this well-tested platform, (I had already used it in other projects). This board supplies power to everything and interfaces Raspberry with the on-board bus (Vehicle CanBus). A myriad of messages travels on the bus. which contain information on the various on-board services, the problem is to decode them to understand which ones to “listen” in order to extract the messages of interest.

To solve this problem, the American Teslaownersonline forum was of great help. Here various geeks started to decode and catalog all (or almost) the messages that travel on the various CanBus of our Model 3 (yes, there are at least three CanBus in Model 3!).

To pick up the Canbus signal, as well as a + 12V power source for my display I used the wiring that runs in the back of the central tunnel. Under rear air vents runs a wiring with a pair of connectors that carries the signals I needed. In order not to tamper with the existing wiring in any way, I got a wiring extender online, from which I took the signals I needed. The extender fits between the two existing connectors and can therefore be removed at any time.

CanBus adapter, installation

I then routed the cable inside the left side of the tunnel, which loosens without too many problems, finally making it come out under the steering wheel. In this way the cable remains almost invisible without having to disassemble important parts.

Case

On the market there are cases for Raspberry but they are all quite deep and unfit for positioning as a dashboard. Since I couldn’t find anything nice, I preferred to design the container and 3D-print it at home. I detected the shape and size of the steering column, in order to design a container to be placed upon it.

Rendering of case

Since I decided to make the 3D printed container, I preferred to break it into three parts: front, rear body and rear lid. The project is ready to be converted into a file for a professional stereolithographic print, in fact I plan to use an external service for the realization of next prototypes.

To secure everything and prevent the display from moving due to vibrations, I drew two slits in the lower ears. A Velcro strip is passed through these slots and closes in the lower part of the steering wheel, making it invisible and allowing everything to be removed in a matter of seconds.

Securing tape

The container was 3D printed in ABS Pro, a very interesting and sturdy filament. It was then sanded to remove as much of the horizontal layer marks as possible, then grouted, painted with a paint shop with a similar tint to the back of the main monitor. A coat of opaque clear protective gave the final touch.

Electronics

As said, all the control electronics is built around a Raspberry, the PI 3A + model to be precise. It is smaller and cheaper than the classic Raspberry, but – more important – it is lower, which helps in order to limit thickness of the container. Apart from that, a power supply module and a CanBus interface similar to some shields on the market have been designed, all using smt components and putting everything on a single printed circuit. A special flat HDMI connection cable has been created to carry the video signal to the 7-inch monitor.

Back of display showing electronics

Software

Basically it is necessary to communicate with the bus of the car and convert the information into icons and animations on the screen. Furthermore, the graphic interface must be attractive and match well with the native resolution of the screen. This “creative” part took quite a bit of time, but drawing graphic situations and then animating them via software gives great satisfaction. I chose to use the Qt library (Qt Quick to be precise), a tool appreciated by many for its relative ease of use and the excellent results it allows to obtain.

GUI has been coded withQt Quick

The graphic part was written in QML and the communication part in C ++.

I paid attention to making the Linux filesystem resident on board robust, as the display does not have to suffer in the event of a sudden power cut. This in theory never happens, as the system detects when the car goes into standby, and after a certain time starts the automatic shutdown. However, especially with these systems, caution is mandatory.

Btrfs (butter filesystem) was chosen as the file system that allows data mirroring and automatic repair of any errors. To minimize possibility of data loss, the system uses two logical drives in RAID, obviously on the same SD Card, perhaps SD Card is the weak point of the whole chain (see below “next developments”).

The downside of such an organization (btrfs + RAID) is the (relatively) slow system startup (about 30 seconds). This is normally not a problem. I get in the car, enter the PIN to drive, choose a piece of music, enter reverse gear… and my display is operational!

Il display installato

Road test

The display was mounted on my Model 3 and tested for a couple of months, behaving very well: I have never had a problem starting Linux or communicating with the CanBus.

On the road !

I still have to check the resistance of everything in harsh conditions such as those that occur in summer, if you leave the car in the sun and temperatures at the dashboard level can easily exceed 60 °C. I will probably add a small cooling fan to my project.

Next steps

In order to make system more compact and reliable, I am thinking about replacing Raspberry PI 3A + with its counterpart Compute Module 4, created specifically for embedded applications. It is more complicated to use but offers some advantages, including availability for at least 7 years and greater resistance to vibrations, since it uses an eMMC, a memory soldered directly to the card, instead of removable SD card.

Raspberry Compute Module 4

Someone wants it ?

The display was shown on a couple of Facebook groups of enthusiasts and Tesla owners and garnered some interest. To answer a few questions that I was asked “will you produce some to sell?” …. Why not? if I received a certain number of requests I could evaluate the creation of a small series for some “colleague” !