Wednesday, February 22, 2023

The Evolution of Car Infotainment: How TeslAA is Changing the Game for Accessing Android Auto on Any Car

The state of car infotainment has changed significantly over the years.  It used to be that you got what was included in the are from the auto manufacturer, and what was included when the car was built.   This usually meant that if you wanted to add capabilities, (e.g. play back 8-track) you needed to want until you purchased a new vehicle.

During the 1980s high quality audio head units became quite common, and it because easy and common for car owners to replace their audio system to add capabilities.  So if you wanted to add audio CD or mp3 file playback or Bluetooth support, this could be be done fairly easy just by replacing the head unit.  This continued into the 2000s, when it was possible to add in-dash navigation by replacing the head unit (often where the screen extended out of the head unit itself when needed.

More recently, the ability to extend the capabilities of the car infotainment system has gotten more complicated.  Auto manufacturers have been deeply integrating functionality that is required for functionality of the car into the screens.  The common case is that control of the HVAC system is done as part of the infotainment screen, which would likely mean that if the system was replaced, this functionality would be disabled.  An extreme case is seen with the latest Tesla Model S & Model X cars, where the driver needs to use the screen to put cars in drive & reverse.

This trend is coming at a time where the types of media and applications are changing rapidly.  With so much streaming, new services are starting up that have new capabilities.  Often these services are accessed with applications on mobile phones.  This is great as it allows users to customize their experience to meet their exact needs, and to enable the services that they use.

As it is unsafe to use a mobile phone, while driving, Android Auto offers a great experience.  It can leverage the fact that users have installed the applications of the services that they actually use on their phone, Android Auto displays a car friendly experience on the head unit touch display. This allows the driver to play the media that they want in a safe manor.  On my last trip, I rented a car that had built-in Android Auto support.  I was able to easily connect my phone to the car, with a USB cable, and access the applications from my phone.

Unfortunately, my car doesn't have built-in Android Auto support, so officially I only have access to the services that are included in the car itself.  But as I like the car, and it is working quite well, I don't have a reason to upgrade it.  I wanted to find if there is a way to add Android Auto to the car, and I found the TeslAA application.

This is quite an ingenious application that adds Android Auto to cars that have a built-in web browser.  This allows me to access all of the services that are available on Android Auto in my car.  This includes the media, messaging and navigation applications.  I really enjoy this for using the navigation directions offered via Waze.

The reason that I think that this is ingenious is when you think about all of the components to get this to work.  Android Auto is designed to allow the experience to be shown on physical car hardware.  But TeslAA enables this capability with just software.  Configuring the components is quite complex.

It seems that the first thing that TeslAA does is implement the the protocol of the required hardware in software. I imagine that this took a lot of work in order to have Android Auto successfully talk to this "virtual device".

In order get the web browser to display the interface, TeslaAA first enables the WiFi hotspot on the phone, and TeslAA implements a web server that runs on the phone. With this enabled the car can connect to this WiFi network.  But, that in itself is not enough, as by default, phone's WiFi hotspots just route traffic from the WiFi network to the WAN network, so the web browser wouldn't have access to the services on the phone.

The way that TeslAA solves this is by setting up a VPN, which allows it to intercept traffic from the WiFi hotspot.  In addition to the the VPN, TeslaAA also uses some DNS "magic".  To access the Android Auto interface, there is a known domain name.  When the web browser attempts to navigate to this domain, the first thing that it will do is resolve the domain name.  I assume that this will resolve to a local IP address, that is served from the web server that is hosted on the network that was created by the VPN.  

I have been pretty happy with this app, and it allows access to the content that I want while driving.  Unfortunately, there are some stability issues that seem related to the web browser itself.  I don't think that the auto manufacturers assumed that these browsers would be running as long as they are when used for Android Auto navigation.

No comments:

Post a Comment

Unlocking Raspberry Pi Potential: Navigating Network Booting Challenges for Enhanced Performance and Reliability

I've set up several Raspberry Pis around our house for various projects, but one recurring challenge is the potential for SD card failur...