ArchLinux Touchscreen-CarPC mit XBMC-Frontend
Veröffentlicht von onny
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 der 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.0,xbmc=10.1,xorg-server>1.11) 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.
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:
ifconfig eth0 <IP> && route add default gw <IP des Gateways> && sh -c "echo "nameserver 8.8.8.8" > /etc/resolv.conf"
vi /etc/pacman.conf
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 dazu passendes Statusprogramm (gpsd, xgps), Netzwerkmanager und Bluetooth-Daemon (wicd, bluez), Audiotools (alsa-utils, libvorbis)und das Xbmc-Mediacenter. Der Pacman-Wrapper Yaourt wird benötigt um zusätzliche Programme aus dem “Arch User Repository” (AUR) herunterzuladen, unter anderem: Das freie Navigationssystem Navit, ein Touchscreen-Kalibrierungsprogramm (xinput_calibrator), ein Automount-Skript (udiskie) und ein Benachrichtigungsprogramm für ein mit Android betriebenes Smartphone (android-notifier-desktop):
wget http://aur.archlinux.org/packages/package-query/package-query.tar.gz
tar zxvf package-query.tar.gz
cd package-query
makepkg -si
cd ..
wget http://aur.archlinux.org/packages/yaourt/yaourt.tar.gz
tar zxvf yaourt.tar.gz
cd yaourt
makepkg -si
cd ..
rm -r yaourt* package-query*
yaourt -S navit xinput_calibrator udiskie android-notifier-desktop
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.
gpasswd -a carpc audio video storage
vi /etc/sudoers
- In /etc/sudoers nur folgende Zeile hinzufügen: (in diesem Beispiel heißt der Benutzer carpc!!)
carpc ALL=(ALL) NOPASSWD: /sbin/poweroff,/sbin/shutdown,/usr/bin/killall,/usr/sbin/console-kit-daemon
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 “touched”:
unzip script.linux.wireless-0.0.5_offline_arch.zip .xbmc/addons/
wget http://project-insanity.org/wp-content/uploads/2011/12/Skin.touched.tar.gz
unzip skin.touched.tar.gz .xbmc/addons/
rm Script.linux.wireless-0.0.5_offline_arch.zip Skin.touched.tar.gz # aufräumen
- Für das Automount-Script udiskie muss folgende Datei angelegt werden (mit SU-Rechten) um allen Benutzern der Gruppe das automatische Einhängen von Wechseldatenträgern zu erlauben:
Identity=unix-group:storage
Action=org.freedesktop.udisks.*
ResultAny=yes
ResultInactive=no
ResultActive=yes
- Die Datei .Xinitrc dienst dazu, Befehle nach bzw. mit dem X-Server start auszuführen auf dem aktiven Display. Hier sind es z.B. Befehle die console-kit aufgrund eines Bugs neustarten müssen, damit udiskie funktioniert (optional). Vorallem aber, startet hier die Xbmc-Instanz.
sudo killall console-kit-daemon &
sudo /usr/sbin/console-kit-daemon &
udiskie &
xbmc
- Folgende Datei startet immer wieder den X-Server neu, falls dieser abstürzt. Dazu wird das Automount-Script udiskie gestartet und für XBMC eine SDL-Einstellung setzt, die fehler in der Touchsteuerung behebt.
export SDL_MOUSE_RELATIVE=0
udiskie &
exec startx
fi
- 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).
Identifier "evdev pointer catchall"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection
Section "InputClass"
Identifier "evdev keyboard catchall"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection
Section "InputClass"
Identifier "evdev touchpad catchall"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection
Section "InputClass"
Identifier "evdev tablet catchall"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection
Section "InputClass"
Identifier "evdev touchscreen catchall"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
Option "InvertX" "on"
Option "InvertY" "on"
Option "Calibration" "103 1890 157 1911"
EndSection
- Nach der Zeile “button/power)” in /etc/acpi/handler.sh folgende Zeile hinzufügen:
Für ein deutsches Keyboard-Layout innerhalb des X-Servers muss folgende Datei angelegt werden:
Identifier "Keyboard Defaults"
MatchIsKeyboard "yes"
Option "XkbLayout" "de"
EndSection
Zuletzt sollte noch mit einem Befehl die aktuell, mit z.B. alsamixer gesetzte Lautstärke persistent gespeichert werden. In der Datei /etc/rc.conf muss der Daemon-Arry mit weiteren Diensten ergänzt werden, die automatisch mit dem System starten sollen:
vi /etc/rc.conf
In der Datei anpassen:
Work in progress …
Die nächsten Schritte des Projektes sind:

- Eine Freisprechanlage, realisiert mit einem Asterisk-Server auf dem CarPC, der über WLAN (/Bluetooth?!) sich mit dem Android-Handy des Fahrers verbindet.
- Verbesserte Integration des Navigations-Systems in XBMC. (Navit oder iGO-Navigationssoftware mit Wine ausprobieren, wie hier schon erfolgreich getestet wurde.)
- Sprachausgabe für Navit.
- Alternative Setups mit Android 4.0 x84 und Win7 (CPOS CarPC-Software / iCT(inCar Terminal))
- Automount funktioniert leider noch nicht ganz.
- XBMC-Theme fertigstellen
- Gpsd.conf fehlt noch
- Android-Telefon automatisch mti Obexfs mounten und Multimediadateien in XBMC einbinden
Credits:
Original skin: http://forum.xbmc.org/showthread.php?t=105142 (thx Jezz_X!)
Original wicd-plugin: http://forum.xbmc.org/showthread.php?t=90410 (thx vikjon0!)
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
- XBMC.org – Webseite der freien Multimediacenter-Software
- 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)







