ArchLinux Touchscreen-CarPC mit XBMC-Frontend

By 14

Hardware setup

Die Idee hinter der Hardware des CarPCs war, das Ganze möglichst kostengünstig mit bereits vorhandenen Teilen zu realisieren. Deshalb sind einige der Komponenten nicht wirklich optimal. Außerdem hatte ich mir zum Motto gemacht im Zweifelsfall die Dinge lieber selbst zusammenzubasteln als etwas fertiges zu kaufen.

Der Rechner selbst ist ein ASUS EeePC 1000H der wegen eines gesprungenen Display ausgemustert wurde. Um im Auto selbst Platz zu sparen wurde lediglich die Hauptplatine mit der Festplatte eingebaut. Die 160GB Festplatte ist mit SATA direkt auf der Platine angeschlossen und mit Heißkleb fixiert. Zur Kühlung des Netbooks wurde entfernt und durch eine Metallplatte, die auf dem Prozessor (Intel Atom) und dem Chipsatz der Motherboards aufliegt, ersetzt.

Das Auto in dem der CarPC verbaut wird ist ein Nissan Primera. Hier gibt es ein kleines, flaches Fach unter dem Lenkrad, in das die Platine hinein passt. Lediglich für die Stecker die rund um die Platine eingesteckt werden benötigen mehr Platz. In dem Plastik oberhalb des Fachs wurde zusätzlich ein kleiner Lüfter angebracht der die Luft über der Kühlungsmetallplatte in Bewegung hält. Die Kühlung ist auch ohne Kühlrippen ausreichend, das die Wärmeentwicklung so gering ist.

Die Stromversorgung gestaltete sich relativ kompliziert, da der EeePC zwar 12 V Eingangsspannung braucht aber die Spannung des Bordnetzes im Auto zu stark schwankt und der Rechner früher oder später ausgeht. Außerdem stellt sich das Problem wie starke Spannungsabfälle, wie etwa beim Anlassen des Motors, abgefangen werden, damit der Rechner weiterläuft. Ein handelsübliches ATX-Netzteil für den Autobetrieb kann an den EeePC nicht angeschlossen werden und der Originalakku ist auch nicht mehr vorhanden. Für einen eventuellen Neu- oder Nachbau des CarPCs ist hier wahrscheinlich das größte Verbesserungspotential vorhanden.
Letztendlich wird der Rechner von einem KFZ-Netzteil für Laptops mit konstanter 12V Spannung versorgt
Zur Überbrückung von Spannungeinbrüchen wurde zusätzlich ein kleiner 12V Bleiakku mit 3.4 Ah verbaut und mit einer Diode der Stromrückfluss ins Bordnetz verhindert.

Der Plan ist mit einem Microcontroller noch ein automatisches Zuschalten des zusätzlichen Akkus sowie das An-/Abschalten der Rechners mit Drehen des Zündschlüsseln zu verwirklichen.

Angeschlossen an der Rechner sind:

  • 1x Line-Out (Klinke) zum Radio
  • 1x USB Hub im vorderen Bereich des Autos
  • 1x USB Hub im Kofferraum
  • 1x USB für Touchscreen
  • 1x VGA für Touchscreen

Der Bildschirm ist ein resistiver 8″ Touchscreen (lsusb -> Bus 003 Device 006: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen) mit einer nativen Auflösung von 1024×768 Pixeln. Eingelassen ist er in die Mittelconsole etwa auf Lenkrad Höhe. Für den Einbau des Touchscreens wurde das Radio nach unten in die Nähe des Schaltknüppels verschoben und die Lüftungsgitter wurden entfernt.

An den USB-Hub im Kofferaum ist ein GPS-Empfänger angeschlossen, der direkt unter der Heckscheibe befestigt und somit nicht durch die Karosserie behindert wird.

Software setup

Die Softwarebasis des CarPCs stellt eine unveränderte x86-ArchLinux Distribution dar, die nur “Core”-Software bereitstellt, also keine graphische Oberfläche oder unerwünschte, im Hintergrund laufende Daemons die garnicht benötigt werden. Das “Minimal”-Betriebssystem ist besonders praktisch, um eine sehr anpassungsfähige, von der Konfiguration nachvollziehbare und performance-orientierte Architektur unterhalb des eigentlichen XBMC-Frontends zu garantieren. Dieses Tutorial setzt eine mit Standarteinstellungen installierte ArchLinux-Version (linux>3.5,xbmc=11,xorg-server>1.12,systemd) voraus, auf dessen Installation hier aber nicht wieter eingegangen wird.

Wurde das Betriebssystem erfolgreich installiert, über LAN mit dem Internet verbunden und ist nach dem Root-Login einsatzbereit, kann die Konfiguration des Betriebssystems vorgenommen werden.

Netzwerk einrichten, Packetquellen einstellen

Mit einen der folgenden Befehle werden die Netzwerkeinstellungen gesetzt (entweder automatisch oder manuell) und danach extra Paketquellen in der Konfigurationsdatei des Paketmanagers hinzugefügt, indem vor der “[Extra]“- und der darunterstehenden “Include”-Zeile die “#”-Kommentarzeichen entfernt werden:

Darauf hin können alle Software-Pakete heruntergeladen und installiert werden, darunter unter anderem:

  • Video-Treiber und X-Server (Touchtreiber: xf86-input-evdev)
  • GPS-Daemon und eine grafische Statussoftware für denX-Server (gpsd, xgps)
  • Netzwerkmanager und Bluetooth-Daemon (wicd, bluez)
  • Audiotools und Audiocodecs (alsa-utils, libvorbis)
  • Xbmc-Mediacenter
  • Automount-Programm (udevils, beinhaltet devmon)

Der Pacman-Wrapper Yaourt wird benötigt um zusätzliche Programme aus dem “Arch User Repository” (AUR) herunterzuladen, unter anderem:

  • Das freie Navigationssystem Navit und für Windows Navigationsprogramme die Laufzeitumgebung Wine
  • ein Touchscreen-Kalibrierungsprogramm (xinput_calibrator)
  • ein Benachrichtigungsprogramm für ein mit Android betriebenes Smartphone (android-notifier-desktop)
  • und ein Freisprechgateway/eine Bluetooth Handsfree-Software namens hfpforlinux

Benutzer erstellen, Zugriffsrechte erstellen

Jetzt wird ein normaler Benutzer ohne administrative Rechte erstellt (der auch Xbmc ausführen soll) und zusätzlich in die sudoers-Datei eingetragen, um bei bedarf wieder “Superuser”-Rechte zu bekommen. Eine Anleitung für ein Autologin findet man hier. Anmerkung: Anstatt vi kann auch z.B. nano als Editor benutzt werden. Vim muss jedoch erst mit dem Paketmanager Pacman installiert werden.

Mit dem Programm visudo folgende Zeile in die sudoers-Datei hinzufügen (in diesem Beispiel heißt der Benutzer carpc!!):

XBMC und X-Server konfigurieren

Mit folgenden Befehlen werden wichtige Addons für XBMC installiert (aber noch nicht aktiviert! see here), wie z.B. ein Wicd-Frontend mit dem man sich innerhalb von XBMC mit WLAN-Netzwerken verbinden kann, sowie das eigentliche Touchscreen-Theme “carpc”:

Die Datei .xinitrc dient dazu, Befehle nach bzw. mit dem X-Server start auf dessen aktivem Display auszuführen. Die hier aufgelisteten Befehle starten zum einen das Navigationssystem im Hintergrund via xvfb und zum anderen ein Automountscript (devmon/udevil) und XBMC.

Folgende Service-Datei startet den X-Server automatisch (für den Benutzer carpc):

Für unseren Touchscreen wurde folgende Konfiguration benötigt. Die Kalibrierungswerte wurden mit dem Programm xinput_calibrator ermittelt, welches leider nach unserer Erfahrung einen Window-Manager benötigt wie Metacity um zuverlässig zu funktionieren (TTY1: export DISPLAY=:0 && xinput_calibrator && metacity –replace).

Navigations-Software

Testweise verwenden wir hierfür die von Nav&Go entwickelte Navigations-Software “iGO 8.3.1.59883 R3-Version PC”, von der es leider keine Updates mehr gibt (letzte Version vermutl. von 2008). Trotzdem ist diese unter Linux via Wine lauffähig, bietet eine hervorragende grafische Touch-Oberfläche, unterstüzt neuste Kartenformate (z.B. Maps Europa TomTom R3 (TeleAtlas)) und lässt sich auch gut in XBMC einbinden. Wine wurde schon vorher installiert, desweiteren müssen noch folgende Programme installiert werden (zum Zeitpunkt der Veröffentlichung des Beitrags, hatte winetricks noch einen Bug bezüglich allfonts):

Der Befehl lsusb zeigt das GPS-Device an, hier nur in Form eines USB-Serial-Wandlers. Desweiteren sollte auch ein ttyUSB0-Interface auftauchen, für das mittels gpasswd der User leserechte erhält (alternativ kann dies auch mit udev-rules bewerkstelligt werden). Für die Windows-Anwendung iGO wird dieses Interface als virtuelle Schnittstelle in den dosdrives Ordner gesymlinkt. Welche Port-Nummer hierbei das Gerät hat ist irrelevant, solange iGO dieses noch automatisch finden kann (also ca. com1-com6). Mit cat lässt sich nun der GPS-NMEA Stream anschauen, der im roh-format die aktuelle Position beinhaltet.
Die Baudrate des angeschlossenen GPS-Devices lässt sich mit stty ermitteln, falls man diese manuell später in iGO festlegen möchte:

In ~/.wine/user.reg müssen noch folgende zwei Zeilen hinzugefügt werden, um das Wine-Systray zu deaktivieren:

In dem Script, das gestartet wird, wenn man in XBMC den Menüpunkt Navigation auswählt, muss in den ersten Zeilen auch der Pfad zu der iGO.exe angegeben werden. Dieses Tutorial geht, wie vielleicht bei Befehlen zuvor schon gemerkt von einer Installation in /opt/iGO8.3_PC aus: ~/.xbmc/addons/skin.carpc/script/script
Es muss zudem sichergestellt sein, dass der WM XBMC nicht in den “floating” o.ä. Mode setzt, sondern wie ein normales Fenster behandelt. Ansonsten starten iGO aus dem Skript nicht ordnungsgemäß heraus. Mittels der “\”-Taste (Backslash) kann in XBMC der Modus zwischen Vollbild und Fenstermodus gewechselt werden. Falls die rc.conf noch nicht editiert wurde (wie später beschrieben) und auch noch kein Neustart durchgeführt wurde, kann der virtuelle X-Server, in dem iGO dann ausgeführt wird, auch manuell schon gestartet werden via: sudo /etc/rc.d/xvfbd start

Anmerkung: Laut einem Beitrag bei mp3car.com ist es für andere Anwendungen wie Garmin PC Mobile oder Sygic Drive notwendig eine Devicemap der Serial-Ports in der Wine-Registry anzulegen.

Kleinere Systemeinstellungen

Für ein deutsches Keyboard-Layout innerhalb des X-Servers muss folgende Datei angelegt werden:

Zuletzt sollte noch mit einem Befehl die aktuell, mit z.B. alsamixer gesetzte Lautstärke persistent gespeichert werden. Mit dem Befehl systemctl enable werden die Dienste bluez und wicd automatisch gestartet:

Work in progress …

Die nächsten Schritte des Projektes sind:

  • Eine Freisprechanlage, realisiert mit hfpforlinux (Projektseite), die sich via. Bluetooth mit dem Android-Handy des Fahrers verbindet.
  • Sprachausgabe für Navit.
  • Alternatives Navigations-System Navigator 11 von Mapfactor (ist kostenlos!)
  • Alternative Setups mit Android 4.0 x84 (es gibt auch schon VBox-Images für 4.1), Win7 (CPOS CarPC-Software / iCT(inCar Terminal) /Centrafuse) und Windows 8 mit MetroUI
  • Automount funktioniert leider noch nicht ganz.
  • XBMC-Theme fertigstellen
  • Gpsd.conf fehlt noch
  • Android-Telefon automatisch mti Obexfs mounten und Multimediadateien in XBMC einbinden und z.B. einen Bluetooth-Audiogateway für Handys bereitstellen.
  • Bluetooth-Audiogateway mit PulseAudio, um die Audioausgabe eines Mobiltelefons direkt an den CarPC weiterzuleiten.
  • (Infrarot)Webcam, um z.B. schwer einsehbare Straßenabschnitte auf dem CarPC sichtbar zu machen oder auch um in bestimmten Zeitintervallen einzelne Bilder aufzunehmen (für Zeitraffervideos)

Credits:

Anmerkungen:

Ich bitte darum, Kritiken, Verbesserungsvorschläge oder Alternativkonzepte in den Kommentarbereich zu schreiben. Es ist nicht einfach, einen Überblick über vorhandene CarPC-Projekte und dazugehörige Software im Internet zu finden, deswegen würden wir uns über jede Anregung freuen, danke.

Weiterführende Links:

  • Car-PC.info – Webseite mit Forum, Wiki (Anleitungen) und einer Übersicht (zum Teil veraltet) zu verschiedener CarPC-Software.
  • Android-Notifier Google-Code Projektseite
  • Mp3Car.com – Forum mit vielen hilfreichen Beiträgen zum Thema CarPC
  • Liste mit alternativen CarPC-Systemen sowie weitere Software
  • nghost2 – Eine leider seit 2008 nicht mehr weiterentwickelte, native CarPC-Software. Benutzt SDL++-Library für die grafische Darstellung (SourceForge Projektseite)
  • nghost3 – Ein relativ aktueller Prototyp und kompletter rewrite von nghost2 auf Basis von QT4 und Clutter (GitHub Projektseite)
  • centrafuseauto 4.0 beta gibt es auch für Linux, zwar noch in der Beta, aber schön zu sehen, dass sich die Entwickler die Mühe machen, so ein großes Projekt auch für andere Systeme lauffähig zu machen. Da es sich um eine frühe Beta-Version handelt, ist es in diesem Fall abzuraten, die Software als Alternative schon einzusetzen. Wohingegen die Windows-Version schon richtig gut funktioniert, aber leider noch nicht so viele Modifizierungsmöglichkeiten anbietet. (Projektwebseite)

Changelog:

  • 09.12.2013 – Kleinere Korrekturen
  • 10.10.2012 – Aktualisierte Version, mit: Xbmc 11, Kernel 3.5, Xorg 1.13, Systemd, iGO 8.3 (Navigations-System), skin.carpc 1.0
  • 23.12.2011 – Originaler Beitrag
p5rn7vb

Posted in Hardware, Linux, Software/ Coding
14 comments
+ Add Comment
  1. hoohead sagt:

    verdammt cool :D

  2. JKatXGME sagt:

    Übergut! Werde mir überlegen, demnächst ein ähnliches Projekt zu beginnen.

  3. Danie sagt:

    Hallo,

    wie machst du das denn genau mit XBMC und dem Touchscreen.
    Ich bekomme mein XBMC nur im Fenstermodus zum Laufen.
    Hast du da eine Lösung gefunden?

    Ich suche schon eine Ewigkeit.. :/

    Danke schonmal!

  4. Logipex UG sagt:

    Hallo, wie kann man den “Erbauer” des CarPC´s erreichen?
    Per Email, oder ICQ, Skype?
    Unter logipex.com kann der Erbauer uns erreichen.
    Um Rückmeldung würden wir uns sehr freuen!
    MFG
    Das Logipex-Team.

  5. Andrei sagt:

    Hi!

    I have a new post with my CarPC project.
    http://www.engineering-diy.blogspot.ro/2013/08/car-pc-project.html

    Andrei

  6. onny sagt:

    @Andrei: Looks really interesting, thank you for noticing :)

  7. Andrei sagt:

    Correct link for CarPC is:
    http://www.engineering-diy.blogspot.ro/2013/08/car-pc-projectaugust-2013-update.html

    Andrei

  8. Fabian sagt:

    Hallo,

    finde deinen XBMC Skin sehr cool. Leider kann ich ihn nicht mehr runterladen. Kannst du den Link vielleicht aktualisieren oder mir den Skin per Mail schicken.

    Danke

    Grüße
    Fabian

  9. onny sagt:

    @Fabian: Danke für das Kompliment, auch wenn das Original nicht von mir ist. Der Link funktioniert wieder :) Viel Spaß beim ausprobieren.

  10. Fabian sagt:

    Dieser:
    http://onny.project-insanity.org/files/skin.carpc.tar.gz ? Beim mir leider nicht :-(

  11. onny sagt:

    probiers nochmal, sry

  12. Fabian sagt:

    Super, danke dir. Der Link geht jetzt. Eine Frage noch: Hast du in dem Skin auch eine Lautstärkeregelung? Hab die nicht gefunden.

  13. onny sagt:

    @Fabian: Nein leider nicht, soweit Ich weiß wurde bei uns die Lautstärke ausschließlich über den Auto-Verstärker geregelt.

  14. foxes sagt:

    I think the admin of this web page is in fact working hard for
    his web page, as here every information is quality based data.

Your email address will not be published. Required fields are marked *