# microDisplay - Configurable hidden gauges for your dash! - Q&A



## JWardell (May 9, 2016)

I've slowly released my in-dash gauges for Model 3 and Model Y but never made a formal announcement, and would like a thread for any questions or discussion.

The microDisplay can display thousands of signals from your Tesla's CAN bus and is engineer specifically to be hidden within the airvent...but because of its wireless connection you can place them wherever you want!

It's a modular system so you can add additional displays and features as you like. In the near future I hope to have it more polished with easy phone or web configuration and cases. But it is available now for those who can't wait!

Please visit http://www.jwardell.com/microdisplay/ for more information and to order.






More details here:





I would love to know your questions, comments, and suggestions below


----------



## kjtesla (May 29, 2017)

Fantastic!!!! Great thought put into your microDisplay,


----------



## ravisorg (Jun 27, 2018)

That’s really slick looking, nice job!


----------



## JasonF (Oct 26, 2018)

The only comment I might have from looking at the videos: Surround the displays with soft material like foam, so it won't dent the soft dashboard material, and so it won't vibrate or squeak. For that reason also, the USB cable (if included) shouldn't be the super thin hard plastic kind.


----------



## Bigriver (Jan 26, 2018)

JWardell said:


> I would love to know your questions, comments, and suggestions below


You mention blind spot monitoring in a video and have it listed twice in your personal setup. Exactly what is that providing/showing?


----------



## iChris93 (Feb 3, 2017)

Bigriver said:


> You mention blind spot monitoring in a video and have it listed twice in your personal setup. Exactly what is that providing/showing?


Here is an early implementation of the blindspot monitoring where an arrow would appear on the µdisplay.


----------



## JWardell (May 9, 2016)

JasonF said:


> The only comment I might have from looking at the videos: Surround the displays with soft material like foam, so it won't dent the soft dashboard material, and so it won't vibrate or squeak. For that reason also, the USB cable (if included) shouldn't be the super thin hard plastic kind.


They are very snug when installed in the air vent, so they don't move or vibrate. I DO intend to have a case for the displays in the future but chances are it would have to be removed for air vent installation anyway.



Bigriver said:


> You mention blind spot monitoring in a video and have it listed twice in your personal setup. Exactly what is that providing/showing?


The blind spot signal is activated when the center display paints a car in red...so only when you have your turn signal on and the car decides a car in your blind spot. I'm sure it might change with future updates, but it's not as often as you think. When it does though, you can draw red arrows on the display, or if you have an LED board you can light up an LED. The advantage is you have something much closer to your vision then the center display, which is much further from your vision looking at the mirrors.

And come to think of it, you could flash the bargraphs red for blind spot warnings if you want something really noticeable!


----------



## AutopilotFan (Oct 6, 2018)

JWardell said:


> And come to think of it, you could flash the bargraphs red for blind spot warnings if you want something really noticeable!


Be very careful when using flash to be noticed. Flashing lights can set off epilepsy in some people.

Can you perhaps roll the display -- make the bars appear and disappear individually so it looks like it's moving? Gives you the visibility of motion which is just as attention-grabbing as flash. Plus you could roll in the direction of the affected blind spot which may increase the speed at which the driver figures out what the heck is going on.


----------



## JWardell (May 9, 2016)

AutopilotFan said:


> Be very careful when using flash to be noticed. Flashing lights can set off epilepsy in some people.
> 
> Can you perhaps roll the display -- make the bars appear and disappear individually so it looks like it's moving? Gives you the visibility of motion which is just as attention-grabbing as flash. Plus you could roll in the direction of the affected blind spot which may increase the speed at which the driver figures out what the heck is going on.


Probably not a good idea to add a bunch of blinking lights to your dashboard in the first place if you are sensitive to them. All the gagues do change rapidly. (Alternately, they are completely programmable, so you could make them as slow as you want)
Interesting idea to add sequential directional indications to the bargraphs. They aren't capable of that right now.


----------



## JasonF (Oct 26, 2018)

JWardell said:


> Probably not a good idea to add a bunch of blinking lights to your dashboard in the first place if you are sensitive to them. All the gagues do change rapidly. (Alternately, they are completely programmable, so you could make them as slow as you want)
> Interesting idea to add sequential directional indications to the bargraphs. They aren't capable of that right now.


I believe the reason a lot of manufacturers use a tiny stationary orange light to the mirror for blind spot warning is so it won't jump out at you while you're driving, making you look that direction, and distracting you. It's designed so you generally won't even notice it unless you glance that direction, such as when you're (supposedly) checking the mirror before changing lanes.

So I would suggest doing the same, for the same reason. Use an unusual shape or color so it sits there and glows gently as a reminder, but doesn't take attention away from driving. Moving and/or flashing lights should be reserved for stuff like an imminent crash alert of some kind.

I'm not trying to tell you how to customize your own car interior, just saying to keep in mind that auto companies paid people a lot of money to figure this stuff out, so you may as well use what they learned for your own benefit.


----------



## PaulK (Oct 2, 2017)

I love the idea of having more data available. It would be very interesting to know the battery temp, and see it change during high power or extended regen.

I’d also love to know when resistive cabin heat is active. Also if recirc is on, I find myself tapping on the fan icon to open the climate info just to see if recirc is on or off. 

That said, I wish there was a way to force recirc on with a single tap. If I see a skunk or nasty truck belching coal, by the time I get into the control it’s often too late. But I know that is beyond the scope of Teslax and micro display.

When I have time to tackle the small project I’ll be signing up to buy one! Thanks for your hard work on this.


----------



## JWardell (May 9, 2016)

PaulK said:


> I love the idea of having more data available. It would be very interesting to know the battery temp, and see it change during high power or extended regen.
> 
> I'd also love to know when resistive cabin heat is active. Also if recirc is on, I find myself tapping on the fan icon to open the climate info just to see if recirc is on or off.
> 
> ...


I agree, to me the battery temperature in the colder months is the single most informative piece of data that I want to monitor. It tells you how much you can regen, or how far away you are from having any, and how fast you can charge, if at all.

There are a lot of hidden touch sequences that Tesla as in the UI. For example, you can drag on the temperature and fan to adjust them immediately. You can hold down the fan to turn off. Maybe there is something for recirc....if not, it's a perfect thing to tweet Elon about.


----------



## JWardell (May 9, 2016)

Finally, long overdue, CAN Server installation video!


----------



## Ren001 (Nov 8, 2017)

I have received my CANServer yesterday. Tried to install it today - but there is no module underneath the passenger seat! Looks like my european M3P (built 6/2019) has a different electrical layout than yours.
Any hints? Has anyone else in Europe been successful in finding the module where one can connect the CANserver (not the OBD version)?


----------



## JWardell (May 9, 2016)

Ren001 said:


> I have received my CANServer yesterday. Tried to install it today - but there is no module underneath the passenger seat! Looks like my european M3P (built 6/2019) has a different electrical layout than yours.
> Any hints? Has anyone else in Europe been successful in finding the module where one can connect the CANserver (not the OBD version)?
> 
> View attachment 35138


Oh wow! There should be an identical one under the driver's seat as well. Can any other folks in europe confirm?


----------



## Ren001 (Nov 8, 2017)

JWardell said:


> There should be an identical one under the driver's seat as well.


Just had a look under the driver seat - no module there as well...


----------



## JWardell (May 9, 2016)

This is the problem with Tesla continuously changing software, and hardware too. Asking lot of folks to check and figure out when the design change occurred, and hope I can research an alternate location. Hopefully most people also have the OBD harness to plug into the console as well.


----------



## JWardell (May 9, 2016)

The software we've all been waiting for has been released! You no longer need programming skills to configure or update displays! The Canserver can now be setup with any web browser, to configure microDisplays, to pick CAN signals, and even record logs to SD card!


----------



## PaulK (Oct 2, 2017)

Great news, And thank you!

So I understand this correctly...
If I buy the $99 server (OBD+Chassis) and one micro display, I will be able to use the (free?) TesLax app to view any/all of the signals?

Plus if I purchase the micro display for $59 it will display any one signal I select using a web based interface?


----------



## JWardell (May 9, 2016)

PaulK said:


> Great news, And thank you!
> 
> So I understand this correctly...
> If I buy the $99 server (OBD+Chassis) and one micro display, I will be able to use the (free?) TesLax app to view any/all of the signals?
> ...


Essentially yes, I believe you have to unlock one of the paid subscription tiers in Teslax to add any signal.


----------



## JWardell (May 9, 2016)

Here's a walkthrough of the new CANserver web interface, where you can now easily set up displays:


----------



## Enginerd (Aug 28, 2017)

@JWardell , thank you. This is really cool stuff. I'm still slightly on the fence about pulling the trigger. I think if I had a better idea what data was available on the bus, I would probably be enticed to jump in. Is there a list or menu somewhere that would give a flavor of what parameters are on the various buses? Some of my main interests are AP & NOA & FSD. If it would be interesting to peek under the hood while those systems are operating, I might just have to do that.


----------



## iChris93 (Feb 3, 2017)

Enginerd said:


> @JWardell , thank you. This is really cool stuff. I'm still slightly on the fence about pulling the trigger. I think if I had a better idea what data was available on the bus, I would probably be enticed to jump in. Is there a list or menu somewhere that would give a flavor of what parameters are on the various buses? Some of my main interests are AP & NOA & FSD. If it would be interesting to peek under the hood while those systems are operating, I might just have to do that.





JWardell said:


> In general, of course, the battery and motors are on vehicle not chassis, so performance signals will want an OBD server, while autopilot and driver assistance signals are only on chassis.


----------



## JWardell (May 9, 2016)

Enginerd said:


> @JWardell , thank you. This is really cool stuff. I'm still slightly on the fence about pulling the trigger. I think if I had a better idea what data was available on the bus, I would probably be enticed to jump in. Is there a list or menu somewhere that would give a flavor of what parameters are on the various buses? Some of my main interests are AP & NOA & FSD. If it would be interesting to peek under the hood while those systems are operating, I might just have to do that.


Most people probably are interested in the powertrain data from motors and battery that are on the vehicle bus, but you and I find the autopilot & driver assistance data interesting on the chassis bus. You can order now and connect to one or the other, or wait a few more weeks when I hopefully have a dual (simultaneous) bus canserver. (Of course if folks are waiting, I would love to know interest ahead of time)


----------



## mmckay (Sep 20, 2020)

Looking forward to a dual server, and finished display cases. How is that going? Also still looking at partnering with Abstract Ocean?

Thanks


----------



## JWardell (May 9, 2016)

I don't know anyone at AO, if and when volume/demand is up I will reach out to a few of those places.
I'm waiting on cases, and waiting on dual-bus firmware. I thought they would be ready a few weeks ago but think folks have been busy for the end of the summer.
The nice thing about the slow trickle, other than being able to handle the building etc, is small bugs and improvements are addressed over time.


----------



## JWardell (May 9, 2016)

I *finally* have some handmade 3D printed cases available, although just for one item...but my hope is the bargraph/display with case will satisfy most people.


__ https://twitter.com/i/web/status/1311830657090322439


----------



## JWardell (May 9, 2016)

It appears (at least for some of us?) that 2020.40.4 stops transmitting the can message with DisplayOn that I use to turn the displays black when the center display turns off, so they will turn black as soon as they connect.

For now my work around is to instead use the DriverPresent signal, so the displays only turn of when the driver's butt is in the seat!

If this happens to you, you can log into your CanServer, and click on the analysis tab, and copy this text and paste it in to create a new signal:


```
{
    "n": "VCFRONT_driverPresen",
    "fid": 929,
    "sb": 7,
    "bl": 1,
    "f": 1,
    "so": 0,
    "s": false,
    "bo": true,
    "v": 1
}
```
Then for each of your display scripts, replace the top three lines with this new code:


```
if (CANServer_getAnalysisVar("VCFRONT_driverPresen") < 1) then
    return "1m t0b1000r"
end
```


----------



## CoastalCruiser (Sep 29, 2017)

Nice job Mr. Wardell! Lots of extensibility the way you designed it. In my current Bolt EV I can run Torque to gather telemetry thanx to someone figuring out all the PIDs the car spits out. So nice to know I will have something similar once I get in to my Y. Again, good job and thank you!


----------



## JWardell (May 9, 2016)

A really nice demo of microDisplays while supercharging by @Randy Spencer !


__ https://twitter.com/i/web/status/1354215269162344448


----------



## Ren001 (Nov 8, 2017)

I would appreciate some help regarding the format of the speed displayed in kmh. Currently the speed is displayed with thenth of a kilometer. I would prefer to only see full kmh.
How can I change the field format of displaySpeed to full numbers in the scripting session?


```
-- display2

-- Display speed, with blindspot overlay arrows

local bsr = CANServer_getAnalysisVar("BSR");

local bsl = CANServer_getAnalysisVar("BSL");

local bsd = 0;

local rtime = 100;



if (bsl == 1 or bsl == 2) then

bsd = 1;

rtime = 800;

end

if (bsr == 1 or bsr == 2) then

bsd = bsd + 2;

rtime = 800;

end

if (bsd > 0) then

CANServer_setDisplayString(2, bsd .. "v63488c6m1000r")

else

local speedUnitText = "HMK"

local displaySpeed = CANServer_getAnalysisVar("VehSpeed")

if (CANServer_getAnalysisVar("DistanceUnitMiles") == 1) then

speedUnitText = "HPM"

displaySpeed = displaySpeed * 0.6213712

end

CANServer_setDisplayString(2, "65535c" .. math.floor(displaySpeed * 10) .. "v" .. speedUnitText .. "u" .. disp0bar .. "b" .. rtime .. "r0m0o")

end
```


----------



## pyjamasam (Feb 25, 2020)

You are going to want to round/truncate the speed to get the number you want.

The variable displaySpeed contains the speed in KM/h or MPH depending on the car setting. 
To just truncate the speed to an integer you can use the Lua function: 

```
math.floor(displaySpeed)
```
That will turn a number like 123.45 into 123 with no regard for rounding.

If you want to round the number you can bias the number UP by 0.5 and then floor it:

```
math.floor(displaySpeed + 0.5)
```
That will make 123.57 show up as 124 and 123.21 show up as 123

Hope that helps.

chris.


----------



## Ren001 (Nov 8, 2017)

Thanks a lot, Chris!

What I was wondering ist why the above posted script, which is currently deployed, displays the displaySpeed not in full numbers (i.e.truncated).

Lets say VehSpeed is 5,03 (I assume ist a tenth of the real speed), so the displaySpeed is also first set to 5,03.


```
local displaySpeed = CANServer_getAnalysisVar("VehSpeed")
```
To be displayed in kmh, this line of code is used:


```
CANServer_setDisplayString(2, "65535c" .. math.floor(displaySpeed * 10) .. "v" .. speedUnitText .. "u" .. disp0bar .. "b" .. rtime .. "r0m0o")
```
So its 5,03*10 = 50,3 to be truncated to 50 - but I see 50,3 on the display.

Any hints on this?


----------



## pyjamasam (Feb 25, 2020)

Yaaa this post's math is all wrong. My brain wasn't working. Ignore it and see stuff posted down further by Randy and my self.

Its the * 10 inside the math.floor that's doing it.

For the micro displays you need to send the value you want to display * 10. Basically you convert decimal values to an integer and then the micro displays do the conversion the other way. 
So they don't have to deal with parsing decimal numbers internally. Everything is an integer.

So they code you posted is taking 5.03 and doing * 10 to give you 503 and then calling math.floor on that value. Its already an integer so nothing really changes. The micro display then receives 503 and does /10 to generate the number to show on the screen. 5.03

You want to do:

```
math.floor(displaySpeed) * 10
```
That will result in math.floor converting 5.03 into 5 and then * 10 will give you 500 which will result in the micro display showing 5

Its an order of operation kinda thing that's tripping you up.

The full display string syntax is listed here: https://github.com/joshwardell/CANserver/wiki/DisplayCommands

chris.


----------



## Randy Spencer (Jul 9, 2016)

@pyjamasam, in what universe does 5.03*10 not equal 50.3?

Don't forget, if you are using Mode 0 (Value, Unit) and you do NOT want the decimal displayed you simply add 10,000 to the number:


```
CANServer_setDisplayString(0, "0m" .. battCoolant * 10 + 100000 .. "vBDu")
```
You still have to multiply by 10 as the display will still divide by 10, but it won't show the decimal point afterwards.

Doesn't work for negative numbers, so only use for unsigned variables. If you want a negative you will have to get the positive value add 10,000 and then turn it negative first, or just add -10,000.


----------



## Ren001 (Nov 8, 2017)

@Randy Spencer

You tell me using this code


```
CANServer_setDisplayString(2, "65535c" .. math.floor(displaySpeed * 10 + 10000) .. "v" .. speedUnitText .. "u" .. disp0bar .. "b" .. rtime .. "r0m0o")
```
instead of


```
CANServer_setDisplayString(2, "65535c" .. math.floor(displaySpeed * 10) .. "v" .. speedUnitText .. "u" .. disp0bar .. "b" .. rtime .. "r0m0o")
```
would do the trick and truncate the speed displayed to full numbers?


----------



## Randy Spencer (Jul 9, 2016)

Almost, if you look at my code you see I added 100,000 as the order of operations is * and then +. You could use parens to force the addition before the multiplication, however... My way is just lazy coding


----------



## pyjamasam (Feb 25, 2020)

Randy Spencer said:


> @pyjamasam, in what universe does 5.03*10 not equal 50.3?


You're totally right Randy. My brain was apparently in a totally different universe. Sorry about that.

The issue is actually solvable with Randy's solution. Its too early here and I am apparently not functioning correctly.
yes if you want to drop the decimal completely (and not just make it 0) then shifting the number UP by 100000 will do the trick as he outlined.

Thanks for catching that I was doing all my math in my mythical universe.

Sorry for misleading you there Ren001.

If we assume the following value

```
local displaySpeed = 50.3
```
Here are some variations on the display code and what they produce:


```
CANServer_setDisplayString(0, "65535c" .. math.floor(displaySpeed * 10 + 100000) .. "v100r0m" )
```
This will produce a display that says

```
50
```


```
CANServer_setDisplayString(1, "65535c" .. math.floor(displaySpeed) * 10 .. "v100r0m" )
```
This will produce a display that says

```
50.0
```


```
CANServer_setDisplayString(2, "65535c" .. math.floor(displaySpeed * 10) .. "v100r0m" )
```
This will produce a display that says

```
50.3
```
chris.


----------



## Ren001 (Nov 8, 2017)

Understood - many thanks to both of you!


----------



## Ren001 (Nov 8, 2017)

deleted


----------



## Randy Spencer (Jul 9, 2016)

pyjamasam said:


> ```
> CANServer_setDisplayString(1, "65535c" .. math.floor(displaySpeed) * 10 .. "v100r" )
> ```
> This will produce a display that says
> ...


The code for display 1 and display 2 look identical to me despite the claim of different output. Perhaps you were meaning to remove the math.floor function on the display 2?

Oops! I see it, you moved a paren... That's actually a good reminder to check one's code. I get bit by these ALL the time


----------



## pyjamasam (Feb 25, 2020)

Heheeh Ya. It was just the floor acting on the pre multiplied value or the post multiplied value. 

just for reference here are the displays. Numbered from left to right 0, 1, 2 and their resulting screens.


----------



## Randy Spencer (Jul 9, 2016)

I did buy and install this cable yesterday, now that I have three displays as well, to power them all. Ended up being a foot too short, but I already had a 1 foot USB extension cord that I used so this was a perfect replacement for ALL the cords and splitters I was using:


----------



## JWardell (May 9, 2016)

pyjamasam said:


> You're totally right Randy. My brain was apparently in a totally different universe. Sorry about that.
> 
> The issue is actually solvable with Randy's solution. Its too early here and I am apparently not functioning correctly.
> yes if you want to drop the decimal completely (and not just make it 0) then shifting the number UP by 100000 will do the trick as he outlined.
> ...


Yes. This was a "feature" added to the display firmware last summer on request by someone else who wanted whole numbers, without breaking compatibility with older displays. It can be sightly confusing with the multiply and divide by 10, but it does work! Assuming your display has Aug 5 2020 firmware or newer.


----------



## Ren001 (Nov 8, 2017)

@JWardell Do you know how the displays behavoir was before the firmware update? Obviously I have one of these older ones (I got it in July 2020). When the scripting looks like


```
CANServer_setDisplayString(0, "65535c" .. math.floor(displaySpeed * 10 + 100000) .. "v100r0m" )
```
the display shows "0000" or, to stick with our example, "0050". I would like to get rid of the leading zeros...

Can I do a firmware update of the display?

Edit March 8th:

I found a solution which fits my needs. I mainly need the add't display on the racetrack because it is direct in my viewing angle. There is only a limited number of slow corners on the track, so the display shows speeds of more than 100 km/h most of the time.

By adding this line


```
end
    displaySpeed = math.floor(displaySpeed + 0.5)
    CANServer_setDisplayString(2, "65535c" .. math.floor(displaySpeed * 10) .. "v" .. speedUnitText .. "u" .. disp0bar .. "b" .. rtime .. "r0m0o")
```
just before the calculation of the display string I get a display like 50,0 for speeds below 100 km/h and like 154 for speed above 100 km/h. Thats fine for me, as the speed display now only changes with whole km/h changes.
So I see my speed (approaching a corner) with a short glimpse - which is important for me as the Tesla does not have revs like my touring cars.

Thanks again for all your valuable input!


----------

