Hallo zusammen,
da ich in den letzten Tagen des Öfteren angeschrieben wurde, ob ich hierzu vielleicht etwas schreiben könnte und auch regelmäßig Posts zu diesem Thema im Forum erscheinen, habe ich mich dazu entschlossen, mal ein kleines Tutorial zu schreiben, wie man das C-Berry zum Hauptbildschirm machen kann und alle Anwendungen darüber flüssig laufen lassen kann. Dabei geht das Tutorial über die Installation des Framebuffertreibers von u-voelkel hinaus.
Ich versuche hier den Ablauf genauestens zu beschreiben, damit jeder den Ablauf nachvollziehen kann.
Hinweis:
Ich gehe bei jedem Befehl davon aus, dass man als normaler User eingelogged ist und nicht als root.
Sollte mal bei einem Befehl die Fehlermeldung "Permission denied" erscheinen, dann habe ich wahrscheinlich hier vergessen das sudo vorne an den Befehl ranzuhängen.
0. Den Raspberry auf den aktuellsten Stand bringen
Es könnte für den späteren Verlauf von Vorteil sein, den Raspberry zu updaten, ich habe es zwar ohne update nicht versucht, allerdings kann es sein, dass manche Schritte ohne Update länger dauern, daher:
sudo apt-get update && sudo apt-get upgrade -y
sudo reboot
1. Das Display zum Laufen bringen
Dieser Schritt gilt nur für das C-Berry 3,5''. Für das 2,8'' gibt es im Forum für diesen Schritt auch Anleitungen. Anschließend verfährt man bei jedem C-Berry gleich
Zunächst müsst ihr die Treiber installieren, damit das Display überhaupt laufen kann. Hierzu folgende Befehle:
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.44.tar.gz
tar zxvf bcm2835-1.44.tar.gz
cd bcm2835-1.44
./configure
make
sudo make check
sudo make install
Der nächste Schritt ist nur bei einem Raspberry Pi 2 notwendig, hier müsst ihr den Device Tree aktivieren und anschließend das System rebooten:
sudo raspi-config
=> Advanced Options
=> A5 Device Tree
=>Enable
sudo reboot
:
Der nächste Schritt ist optional, aber dennoch empfehlenswert um zu testen, ob die Treiber richtig bzw. die richtigen Treiber installiert wurden. Hierzu laden wir ein Testprogramm von Admatec herunter und führen es aus:
cd
wget http://admatec.de/sites/default/files/downloads/C-Berry.tar.gz
tar zxvf C-Berry.tar.gz
cd C-Berry/SW/tft_test
make
sudo ./tft_test
Wenn dieses Testprogramm läuft, kann man zu Schritt 2 übergehen - die Installation des Framebuffertreibers.
2. Installation des Framebuffertreibers
Ich beschreibe den Vorgang anhand dieser Anleitung, jedoch versuche ich etwas genauer auf die Vorgehensweise einzugehen
https://github.com/uvoelkel/cberryfb
Bei dieser Anleitung muss man auf einem Buildrechner mithilfe einer Linuxdistribution den Kernel des Raspberry Crosscompilen. Hierzu verwendet man einfach eine aktuelle Ubuntu-Distribution. Funktioniert auch auf einer virtuellen Maschine. Wer das Crosscompiling umgehen will und alles auf dem Raspberry direkt machen will, kann sich an diese Anleitung halten, die ich frecherweise mal von einem Nutzer im Forum verlinke^^
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]https://forum-raspberrypi.de/forum/thread/2…88904#pid1889044[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Folgende Befehle auf dem Buildrechner ausführen:[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Zunächst müsst ihr eine Directory (Ordner) erstellen, in dem ihr den Kernel später kompilieren wollt. Da der Ordnerpfad später noch öfter verwendet wird, schreibt ihr diesen in eine Variable:[/font]
export BUILD_DIR=~/pi
mkdir $BUILD_DIR
cd $BUILD_DIR
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Anschließend müsst ihr euch den Compiler für den Raspberry Pi holen und die Sourcen (Quellcode) des Kernels.[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Danach setzt ihr das Crosscompilerpräfix, also der Dateipfad zum Compiler:[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]
[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]
git clone git://github.com/raspberrypi/tools.git --depth 1export CCPREFIX=$BUILD_DIR/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin/arm-bcm2708-linux-gnueabi-git clone --depth 1 git://github.com/raspberrypi/linux.git
[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Folgende Befehle auf dem Raspberry Pi ausführen:[/font]
Nun müsst ihr euch die aktuelle Kernel Config von eurem Raspi holen. Da seit der Kernelversion 4.X diese nicht mehr gezipped vorhanden ist, müsst ihr diese erstmal erstellen, und zwar mit:
Anschließend:
ssh root@pi
zcat /proc/config.gz > /root/config
exit
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Folgende Befehle auf dem Buildrechner ausführen:[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Nun kopiert ihr euch die Config in eure Builddirectory und updatet eure auf dem Buildrechner:[/font]
scp root@pi:/root/config linux/.config
cd $BUILD_DIR/linux
make ARCH=arm CROSS_COMPILE=${CCPREFIX} oldconfig
Jetzt könnt ihr euch die Sourcen für den Framebuffertreiber laden.
git clone https://github.com/u-voelkel/cberryfb.git drivers/video/cberryfb/
Dann müsst ihr in den Sourcen in eurer Builddirectory Veränderungen vornehmen:
sudo nano drivers/video/Makefile
=> Ans Ende der Datei folgende Zeile anhängen:
obj-$(CONFIG_FB_CBERRY) += cberryfb/
sudo nano drivers/video/Kconfig
=> Ans Ende der Date, aber noch vor das "endmenu" folgene Zeile anhängen:
source "drivers/video/cberryfb/Kconfig"
Jetzt stellt ihr in der Konfig den Treiber ein:
make ARCH=arm CROSS_COMPILE=${CCPREFIX} menuconfig
=> Device Drivers
=> Graphics support
=> <M> C-Berry LCD frame buffer support
=> Exit and save
Jetzt kompiliert ihr den Kernel und die zugehörigen Module dafür. Der Vorgang kann durchaus seine 2 Stunden in Anspruch nehmen. Im Grunde kann man froh sein, wenn es lange dauert, dann kann man ziemlich sicher sein, dass es funktioniert hat 
make ARCH=arm CROSS_COMPILE=${CCPREFIX}
make ARCH=arm CROSS_COMPILE=${CCPREFIX} modules
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Folgende Befehle auf dem Raspberry Pi ausführen:[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Bevor ihr den Kernel übertragt, sichert ihr erstmal euren alten für den Fall, dass etwas schiefgelaufen ist.[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]
cd /bootmv kernel.img kernel_old.img
[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Folgende Befehle auf dem Buildrechner ausführen:[/font][/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Jetzt kopiert ihr den gerade erstellten Kernel auf den Raspberry:
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]
scp $BUILD_DIR/linux/arch/arm/boot/zImage root@pi:/boot/kernel.img
[/font][/font][/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Danach installiert ihr die Module auf eurem Buildrechner (!!) und kopiert sie danach auf den Raspberry:[/font][/font][/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]
export MODULES_TEMP=$BUILD_DIR/modulesmkdir $MODULES_TEMPmake ARCH=arm CROSS_COMPILE=${CCPREFIX} INSTALL_MOD_PATH=${MODULES_TEMP} modules_installrsync --progress -a --no-l -vhe ssh $BUILD_DIR/modules/lib/ root@pi:/lib/
[/font][/font][/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Folgende Befehle auf dem Raspberry Pi ausführen:[/font][/font][/font][/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Fertig, jetzt rebooten und testen ob es funktioniert ;)[/font][/font][/font][/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]
[/font][/font][/font][/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Nach dem Bootvorgang könnt ihr testen, ob euer Treiber geladen wird, das seht ihr allein schon daran, dass die Hintergrundbeleuchtung des C-Berry angeht.[/font][/font][/font][/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]
[/font][/font][/font][/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Damit kann man nun theoretisch schon loslegen. Ihr könnt die Konsole mit folgendem Befehl schon auf dem C-Berry laufen lassen[/font][/font][/font][/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]
FRAMEBUFFER=/dev/fb1 startx
[/font][/font][/font][/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Allerdings funktionieren damit nicht alle Anwendungen (wie z.B. die Emulationstation), weshalb noch ein dritter Punkt abgearbeitet werden muss.[/font][/font][/font][/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]3. Schlusssprint[/font][/font][/font][/font]
Für den letzten Abschnitt bin ich im Grunde dieser Anleitung gefolgt mit Abänderungen für das C-Berry, daher rate ich, sich an die Anleitung, die hier beschrieben wird zu halten. Den Link poste ich trotzdem mal, Quellenangaben müssen sein
https://learn.adafruit.com/running-opengl…ays/pitft-setup
und hab dabei ein paar Schritte verändert. Mein Ablaufplan sah also folgendermaßen aus:
Ihr müsst das PiTFT und kernel Skript laden
cd
curl -SLs https://apt.adafruit.com/add-pin | sudo bash
sudo apt-get -y install raspberrypi-bootloader
sudo apt-get -y install adafruit-pitft-helper
Anschließend das Konfig-Skript ausführen, der Übergabeparameter ist eigentlich egal, es muss sich nur um ein Adafruit Display handeln. Ich hab 35r (also 3,5'' resistiv, anders das c wäre für kapazitiv) genommen, diese Optionen ändern wir später aber wieder. Es geht nur um ein paar Zeilen in einer Datei
sudo adafruit-pitft-helper -t 35r
Anschließend das Programm fbcp installieren, um den Framebuffer von fb0 (HDMI) auf fb1 (C-Berry) zu kopieren. Das Programm an sich limitiert die Frameanzahl auf 20fps, daher muss eine Zeile im Programm entfernt werden:
sudo apt-get install cmake
git clone https://github.com/tasanakorn/rpi-fbcp
cd rpi-fbcp/
sudo nano main.c
=> usleep( 20 * 1000 ) [befindet sich ziemlich am Ende der Datei und muss gelöscht werden]
mkdir build
cd build/
cmake ..
make
sudo install fbcp /usr/local/bin/fbcp
Speziell für Retropie:
Anschließend das Startup Script von RetroPie bearbeiten, damit jedes mal beim Booten das C-Berry geladen wird und fbcp gestartet wird. Ein kleines Schmankerl hierbei ist, dass man im Anschluss den Bootvorgang des Pi auf dem Display sehen kann 
sudo nano /etc/init.d/asplashscreen
Nach "do_start () {" suchen und direkt danach folgendes einfügen
sudo modprobe cberryfb
/usr/local/bin/fbcp &
Ich habe noch eine Zeile eingefügt um das Backlight des C-Berry zu verringen, da es mir per Default zu hell ist, aber das ist Geschmackssache 
Könnt ihr mit folgendem Befehl machen (0 ist kein Licht 255 ist maximales Licht)
sudo echo 127 | sudo tee /sys/class/backlight/cberryfb/brightness
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Mit diesen Einstellungen würde soweit schon alles laufen bei der Emulationstation, allerdings würde beim Starten eines Spiels wieder nur das HDMI-Display ein Bild liefern, weil das Spiel wieder hochskaliert, daher müssen wir noch ein Script modifizieren:[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]
sudo nano /opt/retropie/supplementary/runcommand/runcommand.sh
Nach der Zeile "function get_mode () {" folgendes hinzufügen
mode_new = "DMT-87" return
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Dadurch behält das Spiel die eingestellte Auflösung bei.[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Für alle, die kein Retropie laufen lassen:[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Damit das C-Berry jedes mal nach dem Booten startet, erstellen wir ein Startup-Skript[/font][/font]
sudo nano /etc/init.d/autostart-c-berrycase "$1" in start) sudo modprobe cberryfb /usr/local/bin/fbcp & ;; *) echo "Wrong input" ;;esacexit 0
Damit das Skript ausgeführt wird, müssen die Rechte geändert werden und es muss mit in die Liste der Startup-Skripte aufgenommen werden:
sudo chmod +x /etc/init.d/autostart-c-berrysudo update-rc.d autostart-c-berry defaults
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Ich habe noch eine Zeile eingefügt um das Backlight des C-Berry zu verringen, da es mir per Default zu hell ist, aber das ist Geschmackssache ;)[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Könnt ihr mit folgendem Befehl machen (0 ist kein Licht 255 ist maximales Licht)[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]
sudo echo 127 | sudo tee /sys/class/backlight/cberryfb/brightness
[/font][/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Ab hier wieder für alle:[/font]
Anschließend die Konsole neu konfigurieren, damit man auf dem kleinen Display auch was sehen kann, wenn man später drauf arbeitet
sudo dpkg-reconfigure console-setup
Nun kommt der wichtigste Part: die config.txt anzupassen
sudo nano /boot/config.txt
hier müsst ihr folgende Anpassungen machen:
HINWEIS:
- manche Zeilen sind schon vorhanden, aber auskommentiert (#)
- manche Zeilen haben andere Werte
- manche Zeilen können nicht vorhanden sein, hinzufügen
hdmi_force_hotplug=1hdmi_cvt=320 240 60 1 0 0 0hdmi_group=2hdmi_mode=87suchen nach "dtoverlay=pitft35r,rotate=90,speed=80000000,fps=60"ersetzen durch "dtoverlay=cberryfb,rotate=90,speed=80000000,fps=60"
Für die letzte Zeile habt ihr vorhin das Config Script ausgeführt, man muss nur anstelle des Framebuffertreibers für das Adafruit Display (pitft35r) den Framebuffertreiber des C-Berry laden (cberryfb)
Nun das System neustarten und alles sollte laufen.
Ich hoffe das Tutorial hat euch [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]geholfen und ich habe es einigermaßen gut erklärt.[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Für Verbesserungsvorschläge (auch was das Sprachliche angeht^^) bin ich offen.[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Zum Schluss noch ein Video, damit ihr seht, dass es auch funktioniert ;)[/font]
https://www.youtube.com/watch?v=R5bGKFLmi_o
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Grüße,[/font]
[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Erotzi[/font][/font]