Subaru Legacy in-Car Screen: What Software?

Hey. This page is more than 5 years old! The content here is probably outdated, so bear that in mind. If this post is part of a series, there may be a more recent post that supersedes this one.

Continuation of the previous post, which was the equivalent, but for hardware. The finale of this post and the last one is that I ended up using Android for my in-car system (as opposed to some base version of Linux)…in fact, I’d say you need not read any further: it’s mostly just babble. It’s actually a bit Troll-ey to be honest.





  • Out-of-the-box touch-based OS for small screens (i.e pretty much perfect for the job)
  • I’ve found BTSSM which shows the ECU data for me from the car’s ODB2 port (via USB). Further down the line hopefully TorquePro, but Torque Pro and two OBD2 port adapters I have just do not want to talk and be friends (Queue Hug ;)).

KKL VAG 409.1 cable

  • I get how to do Android -to- Arduino comms stuff, so I can get at external switches and sensors and stuff – there are some ports from the old system I plan to wire into
  • Loads of apps: Android Auto, Maps etc and I’m relatively proficient in Android/ Java dev so I can tailor my own stuff. And they all are of the same look, and designed for touch.


  • Android not that slick running on a Raspberry Pi 3 whatever way you go – I think it boils down mainly to memory and  CPU/GPU processors, but maybe in part (and hand-in-hand with) optimisations that big phone/hardware companies can exploit but man (or woman) in his (or her) garage do not have the resources to explore:
    • There’s Google’s own Android Things but that does not have a UI, in the Android home screen sense. I think you could make it work, but (lots of extra) work is the salient point. This tutorial has code for a rough-and-ready ‘launcher’, or you could install APK for a 3rd party launcher but I feel you’d keep coming up against hurdles – as described here.  I wish Google would do a full-tilt version of Android for Raspberry Pi that you could take things out of to get Things, rather than vice-versa.
    • There was RTAndroid. Its now transitioned to a freemium kind of model, Emteria OS. Good on them I say. I have been working with the free version. Bar a couple of features and a banner on the bottom of the screen reminding you that the world cannot be free, its the same as the full version. It also reboots every 8 hours…think you’d struggle to drive in New Zealand and not drive into the sea, or end up where you started.
    • I literally just found this free: LineageOS (previously the now-defunct CyanogenMod) build for Raspberry Pi 3…by a man (or woman), KonstaT, probably in a garage, maybe in Finland. I will at some stage try this to compare it with Emteria, in particular, the boot time.
  • Input from external hardware (the ‘comms stuff’ I was so confident on in the PROS) became more convoluted than I’d hoped*

* Bit of a surprisingly one: I had planned not to bother setting up an Arduino as a proper -bespoke’ USB device. FYI the Arduino is the bit in the system taking in info from external sensors, the hard-buttons in the centre dash etc. Instead, I had planned to just use an Arduino Leonardo as an HID keyboard as a short-cut.

The keyboard plan was: buttons and sensor signals come into the Arduino and my Arduino code sends this to the Android device just as a regular keypress (or series of them). As far as Android is concerned it’s just key presses from an external USB keyboard. The hick-up here is that it is not possible (or let’s say ‘it is not straightforward’) to run a background service on Android and listen for USB plugin keyboard key presses: onKeyDown in a service? (Global Hot Keys).

You “CAN’T” or you “CAN (but ought not)”. I dunno, I still kind of feel you can. It’s the pass-ag smiley face. 🙂

I think there are some (convoluted) ways to get around it, there seem to be a few posts and apps that by use the Accessibility API and keyboard maps and blah blah blah…easier to forget the idea and just make the Arduino my own bespoke USB device – then I can do as I wish.

Of course my ‘I think there is a way round it‘ has ABSOLUTELY NO VALUE OR GROUNDING WHATSOEVER against the word of Romain Guy. But that fact I can write it unchallenged (until it’s done and I say “I told you so”) is the beauty of this, the backstreets of the internet blogosphere.

Linux – as a distro running on a Raspberry Pi3


I struggle to find any pros with this really. Pain in the arse. It would just be shit.


Lots I can think of:

  • Is there a touch-friendly Linux UI? Is everything you run in that UI going to adhere to the same UI design language? Quick answer: no to both of those I think (well I have not found one) if you are planning on using Raspbian as the OS.
  • Actually, the answer to the two points above is ‘Kind of yes’…Android (I suppose), or Sailfish, or Samsung’s Tizen or Palm OS: all open source and runnable (but I am not sure how well) on Raspberry Pi. But nothing decent that sits nicely, for lazy me,  on top of Raspbian, I don’t think. There is actually a for-a-car version of Kodi which might have been an option (running on Raspian) – that’s probably the way I would have gone had I not gone with Android and Emteria OS. Kodi plug-ins are written in Python which I’d quite happily re-visit.

In-car skin for Kodi – could run on top of Raspbian

  • Or you could create your own ‘in-car OS’ running in and on top of Raspbian, like these guys/gals at I-carus (I get it!) seem to have done. I kind of wonder why they don’t just swap to Android, the screenshots look shocking (or badly photoshopped?).

‘intellectual’? Is that what the in iPhone stands for “Intellectual Phone”? Or maybe that’s their get-out-of-the-grasp-of-Apple’s-lawyers. Dunno. I do know that thing isn’t going to lean on the mantlepiece in a polo neck, light up a pipe and quote Plato to me. I do like the on-off switch.

  • I think this was the wrong way to go for them. I’d slate them (more) but:
    • (i) looking at the site’s forum …people have bought their system …or a bit of it
    • (ii) they have kind of done what I have done but integrated it in a single board. They even have a module for the OBD2 data.
    • (iii) they have a shop of ‘bits’ and gizmos that are either as-per-I-have or I might buy off them.
  • I’d shout “Dahhhhhhh! I should have just bought their ICR board for 99 Euros”, but their UI just kills it, and I am not sure I could/ one can easily port it all over to Android or at least prettyify it.

The iCarus options. I just help thinking “It’s going to be a bit flaky”

    • ECU info: this is what put the brakes on me going any further (would have been too far) down this road. For some reason, I bought a K-LINE VAG USB cable off eBay and found that although it did not work with Torque pro’s SSM2 beta (Android) it did work with FreeSSM on a Windows PC- SSM is Subaru Select Monitor, Subaru’s own special blend of ODBII. I found this guy, Nikolay Marinov,
      who presented a video of how he had been working on all sort of magic to get FreeSSM going on raspberry pi and modified the UI to be a little more touch-friendly. A YouTube vid of him presenting it at some OpenFest conference in Bulgaria is below:

  • He also talks about plugins that a little server in the background so you can poll FreeSSM for info for other programs. Despite this, his fork on GitHub of the FreeSSM has just remained as per the main branch. I  emailed him and messaged him a couple of times but never heard from him. I wondered if it was just vapourware…maybe he’d ‘faked’ in the presentation on the video? I would not mind per se, except he was presenting at the Open-source conference so it seemed a little disingenuous.
  • That was a while ago and it since looks now like he and the guy who developed have been communicating with the latter his reviewing changed to code prior to merging it, but seems a little weird. why wouldn’t you just reply? Anyway. FreeSSM uses QT, which is a cross-platform GUI system for C++ developed my Nokia, I think a little like Swing for Java maybe. QT does not seem that mainstream though (in an I‘d-never-heard-of-it way), although some big players use it in some big applications, including Tesla in on their in-car screens (apparently?!?). I guess if C++ is your thing, QT is a/the go to? I did get FreeSSM going on raspi – you have to jump through a trhoguh hurdles to get QT running (


Series Navigation

<< Subaru In-Car Screen: Kenwood FGZ204F2 Wire PortsAndroid and Arduino Code for In-Car Screen >>