C-Berry zum Hauptdisplay mit Framebuffertreiber machen (auch für RetroPie)

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • 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:

    Code
    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:

    Code
    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:

    Code
    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:

    Code
    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]

    Code
    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"]

    Code
    apt-get install git

    [/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]

    Code
    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:

    Code
    sudo modprobe configs


    Anschließend:

    Code
    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]

    Code
    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.

    Code
    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:

    Code
    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:

    Code
    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 ;)

    Code
    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"]

    Code
    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"]

    Code
    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"]

    Code
    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"]

    Code
    shutdown -r now

    [/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"]

    Code
    modprobe cberryfb

    [/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"]

    Code
    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 :D
    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

    Code
    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

    Code
    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:

    Code
    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 :)

    Code
    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)

    Code
    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"]

    Code
    sudo nano /opt/retropie/supplementary/runcommand/runcommand.sh


    Nach der Zeile "function get_mode () {" folgendes hinzufügen

    Code
    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]

    Code
    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:

    Code
    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"]

    Code
    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

    Code
    sudo dpkg-reconfigure console-setup

    Nun kommt der wichtigste Part: die config.txt anzupassen

    Code
    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

    Code
    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]

    Einmal editiert, zuletzt von Erotzi (26. Dezember 2015 um 16:37)

  • C-Berry zum Hauptdisplay mit Framebuffertreiber machen (auch für RetroPie)? Schau mal ob du hier fündig wirst!

  • Sitze hier seit Tagen an dem gleichen Project. Bekomm es auch nach deiner Anleitung nicht zum laufen.

    Problem Nr.1 : sudo apt-get -y install raspberrypi-bootloader
    Dieser Befehl zerstört mir meinen Kernel mit dem cberryfb

    Problem Nr.2 : sudo nano /opt/retropie/supplementary/runcommand/runcommand.sh
    In diesem File gibt es keine function get_mode nur get_all_modes


    Wie hast du dein System aufgebaut und mit welcher Softwareversion ?

    Hast du einen Tip für mich ?


  • Problem Nr.1 : sudo apt-get -y install raspberrypi-bootloader
    Dieser Befehl zerstört mir meinen Kernel mit dem cberryfb


    Das liegt vermutlich daran, dass im Paket des Raspberrypi Bootloaders auch ein (temporärer) Kernel mitenthalten ist, der deinen kernel und deine modules zerschießt.
    Update mal zuerst den Bootloader und kopiere dann erst den kernel und installiere dann die modules von cberryfb.


    Problem Nr.2 : sudo nano /opt/retropie/supplementary/runcommand/runcommand.sh
    In diesem File gibt es keine function get_mode nur get_all_modes


    Welche Version von Retropie verwendest du? Ich hab nicht die aktuellste, ich verwende Version 2.6, es kann sein, dass get_mode in einer aktuelleren Version durch get_all_modes ersetzt wurde.
    Wenn du im richtigen Pfad bist und die richtige Datei editierst, dann passt es auf jeden Fall, dann schreibe die Änderungen nach get_all_modes.

    Grüße,
    Erotzi

  • Moin moin,

    ich habe deiner Anleitung Schritt für Schritt gefolgt. Nach mehrmaligen Versuch tritt bei mir aber immer das gleiche Problem auf. Ich kann über den Befehl fbcp das Display ansteuern und sehe auch die Konsole dadrauf. Allerdings kann ich nachdem ich die Schritte ab 3.0 mache nach dem Neustart nichts auf dem Cberry sehen. Wenn ich über HDMI einen normalen Bildschirm anschließe kommt die Meldung, dass das ich mich in einem ungeeignetem Modus befinde. Kann es sein, dass die Daten die fürs Cberry bestimmt sind nicht über die GPIOs sondern über HDMI ausgegeben werden? Bin ein ziemlicher Linux newbie. Hast du eine Idee was ich falsch machen könnte?

    Gruß Shofap

  • Also egal wie und was ich mache, bei ssh root@pi ist schluss. Dort wird ein Passwort verlangt welches ich nicht habe. Selbst wenn ich Root ein password zuweise ist dies angeblich IMMER falsch, des selbige gilt auch für scp

  • Diese Anleitung ist wirklich zum verteufeln für Anfänger. Hab mich wirklich geärgert jetzt:

    1.) Bitte darauf hinweisen, dass man den SSH root-Zugriff erst aktivieren muss

    Code
    nano /etc/ssh/sshd_config


    Suchen nach "PermitRootLogin" und aus "without-password" ein "yes" machen
    Danach via

    Code
    sudo passwd root


    ein eigenes root-Passwort aussuchen

    Sonst klappt die Anmeldung mit SCP nicht!

    2.) Vergiss nicht, dass bei nem nackten Ubuntu kein LIBNCURSES5-DEV installiert ist => da versagt das menuconfig ohne dem. Zumindest wars bei mir so.

    Code
    sudo apt-get install libncurses5-dev

    Danke&Liebste Grüße

    Einmal editiert, zuletzt von freakedenough (16. März 2016 um 18:50)

  • Code
    root@raspberrypi:~/pi/linux# make -j 5 ARCH=arm CROSS_COMPILE=${CCPREFIX}
    /root/pi/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin/arm-bcm2708-linux-gnueabi-gcc: 1: /root/pi/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin/arm-bcm2708-linux-gnueabi-gcc: Syntax error: word unexpected (expecting ")")
    scripts/kconfig/conf  --silentoldconfig Kconfig
    /root/pi/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin/arm-bcm2708-linux-gnueabi-gcc: 1: /root/pi/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin/arm-bcm2708-linux-gnueabi-gcc: Syntax error: word unexpected (expecting ")")

    Kommt beim kompillieren!
    Versuche über den RPI3 für den RPI1 zu kompillieren.

    Einmal editiert, zuletzt von freakedenough (20. März 2016 um 12:08)

  • Ich hab den Kernel nun hin bekommen! Wow, Wahnsinn und ich werde verrückt! :geek:

    Ich hab schlicht aus

    Code
    make ARCH=arm CROSS_COMPILE=${CCPREFIX}
     make ARCH=arm CROSS_COMPILE=${CCPREFIX} modules


    ein

    Code
    make
     make modules


    gemacht. Nachdem der RPi3 auch ARM hat, funzt der Kernel auch am RPI1. Auch die Module.

    modprobe cberryfb geht auch, dmesg zeigt admatec an bei fb1.
    Dann geht der Ärger aber weiter, da mein RPi nicht mehr bootet, wenn ich Schritt 3 (und dieses Pseudo-Gameboy-Zeugs lass ich natürlich aus) durch gehe.

    WP_20160320_17_49_11_Pro1.jpg => da bleibt er einfach stehen. Keine Ausgabe am C-Berry. Keine Reaktion über PuTTY!

    Wenn ich Teil 3 von dieser Anleitung über den Haufen werfe und in folgender Reihenfolge via .bash_profile den X-Server lade, dann geht es:

    Code
    /home/pi/fb2cberry &
    modprobe cberryfb
    FRAMEBUFFER=/dev/fb1 startx


    Im Gegensatz zum nackten fb2cberry ist das Bild ruckelfrei, flüssig. Also direkt die Framebufferausgabe.
    Das X-Server-Bild ist aber dummerweise verruscht, siehe WP_20160320_19_41_26_Pro.jpg - die Konsole ist unten einzeilig sichtbar..?
    Lass ich fb2cberry weg, kommt auf HDMI und C-Berry kein Bild :@

    Ich verzweifel jetzt wirklich schon mit dem Teil! :wallbash:

  • Hallo Leute,
    ich versuche mich daran den Kernel mit cberryfb zu kompilieren. Leider kommt bei dem Schritt mit >>oldconfig<< eine Abfrage, was ich alles genau installieren will. Da es aber in keinem Tutorial erwähnt wird, frage ich mich wo mein Fehler ist. Habe ich etwas vergessen?
    Danke für die Hilfe im Vorraus.


  • Hallo Leute,
    ich versuche mich daran den Kernel mit cberryfb zu kompilieren. Leider kommt bei dem Schritt mit >>oldconfig<< eine Abfrage, was ich alles genau installieren will. Da es aber in keinem Tutorial erwähnt wird, frage ich mich wo mein Fehler ist. Habe ich etwas vergessen?
    Danke für die Hilfe im Vorraus.

    Hallo,

    die Abfragen erhielt ich nur, wenn die Config-Datei des alten Kernels nicht richtig kopiert wurde.

    am Pi, wo der Kernel dann hinkommt, musst du folgendes ausführen:
    [code=php]
    sudo -su root
    cat /proc/config.gz > /root/config[/php]
    Wenn das richtig funktioniert hat, dann kommt keine Meldung, also er wartet dann wieder direkt auf eine Eingabe von dir.

    Und dort, wo der neue Kernel gemacht wird, ("Buildrechner") dann:
    [code=php]scp root@IPADRESSE-DEINES-PIS-WO-DER-KERNEL-SPÄTER-HIN-KOMMT:/root/config linux/.config
    cd $BUILD_DIR/linux
    make ARCH=arm CROSS_COMPILE=${CCPREFIX} oldconfig[/php]

    Und nur dann gibt es bei oldconfig keine Abfragen. Sonst schon, er hat keine Konfiguration vorliegen und möchte eine Brandneue erstellen.

    Einmal editiert, zuletzt von freakedenough (14. April 2016 um 17:40)


  • Hi freakedenough,
    erst einmal möchte ich dir für die ausführliche Antwort, mit genauer Erklärung woran es liegt, danken.
    Allerdings habe ich es bisher auch genauso verstanden und habe es jetzt nocheinmal mit deiner Erklärung versucht. Du hast geschrieben, dass man die config auf dem Raspberry mit >>cat<< anstatt >>zcat<< entpacken soll. Ich weiß nicht genau was diese Befehle machen und mit cat ist die config Datei kleiner. Außerdem bekomme ich dann beim Schritt oldconfig Fehlermeldungen und danach kommen andere Abfragen was ich kompilieren will. Wahrscheinlich liegt der Fehler also beim entpacken der config.
    Weiß da jemand, woran es weiterhin liegen kann?

    Einmal editiert, zuletzt von eduard9119 (16. April 2016 um 15:18)

  • Vielleicht sollte ich dazu sagen, dass ich mein RPi2 neu aufgesetzt habe. Darauf ist mit NOOBS Raspbian installiert und anschließend habe ich
    - sudo apt-get update
    - sudo apt-get upgrade
    - sudo reboot
    ausgeführt. In /lib/modules ist bei mir als aktuelle Kernel-Version 4.19 zu finden.
    Ich hoffe diese Informationen helfen weiter.

    Einmal editiert, zuletzt von eduard9119 (26. April 2016 um 11:02)

  • wäre jemand so nett und uploaded ein aktuelles retropie Image mit laufendem C-Berry?

    Ich denke viele Leute googlen genau nach diesem Problem und bekommen es nicht auf die Reihe.

    wäre sehr dankbar dafür =)

  • Zitat


    ssh root@pi
    zcat /proc/config.gz > /root/config
    exit

    1. Frage: bedeutet jetzt bei dir ssh root@pi, dass ich mich als root anmelden soll?

    Zitat


    scp root@pi:/root/config linux/.config
    cd $BUILD_DIR/linux
    make ARCH=arm CROSS_COMPILE=${CCPREFIX} oldconfig

    2. Frage: bedeutet nun der Befehl "scp root@pi:/root/config linux/.config", dass ich root@pi gegen die IP-Adresse des PIs ersetzen muss?

    3. Frage: Kann ich das crosscompilen über einen weiteren PI machen? Ich habe noch einen RPI 2 mit Raspbian im Netzwerk am laufen... könnte mich da mit Putty einloggen.
    Das C-Berry TFT soll an einem Pi3 laufen mit Retropie 3.7 drauf.

    4. Frage: ich möchte generell, dass der Gameboy Pi dann über den C-Berry läuft. Allerdings soll eine Ausgabe am TV kommen sobald man den Gameboy per HMDI am TV anschließt. Ist das gegeben oder muss ich dafür weitere Einstellungen vornehmen?

    Einmal editiert, zuletzt von sh4dow (25. April 2016 um 15:21)

  • Die Konsole spuckt immer folgenden Fehler aus... was kann ich tun?

    root@retropie:~# wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source -O /usr/bin/rpi-source && sudo chmod +x /usr/bin/rpi-source && /usr/bin/rpi-source -q --tag-update
    --2016-04-26 05:14:58-- https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source
    Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.31.17.133
    Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.31.17.133|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 12471 (12K) [text/plain]
    Saving to: ‘/usr/bin/rpi-source’

    /usr/bin/rpi-source 100%[=================================================>] 12.18K --.-KB/s in 0.001s

    2016-04-26 05:14:59 (19.8 MB/s) - ‘/usr/bin/rpi-source’ saved [12471/12471]

    ERROR:
    Couldn't download https://api.github.com/repos/notro/rp…fs/heads/master, URLError: (SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)'),)

    Help: https://github.com/notro/rpi-source/wiki
    root@retropie:~#

    // edit:
    ich habe eine Lösung gefunden

    https://discourse.osmc.tv/t/problems-wit…6-01-1/13007/10

    hier wird erklärt wie man sich das zertifikat selbst erstellt. hat geklappt! bin grade am kompilieren

    Einmal editiert, zuletzt von sh4dow (26. April 2016 um 23:03)

  • 192.168.1.99

    1. Frage: bedeutet jetzt bei dir ssh root@pi, dass ich mich als root anmelden soll?


    2. Frage: bedeutet nun der Befehl "scp root@pi:/root/config linux/.config", dass ich root@pi gegen die IP-Adresse des PIs ersetzen muss?

    3. Frage: Kann ich das crosscompilen über einen weiteren PI machen? Ich habe noch einen RPI 2 mit Raspbian im Netzwerk am laufen... könnte mich da mit Putty einloggen.
    Das C-Berry TFT soll an einem Pi3 laufen mit Retropie 3.7 drauf.

    4. Frage: ich möchte generell, dass der Gameboy Pi dann über den C-Berry läuft. Allerdings soll eine Ausgabe am TV kommen sobald man den Gameboy per HMDI am TV anschließt. Ist das gegeben oder muss ich dafür weitere Einstellungen vornehmen?

    Hi sh4dow,

    • Ja, du sollst dich da als root anmelden. Dazu muss man mit

      Code
      sudo passwd root

      ein Passwort für den root-user einrichten und anschließend

      Code
      sudo nano /etc/ssh/sshd_config

      öfnen und die Zeile "PermitRootLogin" zu "yes" ändern.

    • Auch das ist richtig. Wenn die IP deines Pi zb. 192.168.1.99 wäre, musst du

      Code
      scp root@192.168.1.99:/root/config linux/.config

      ausführen.

    • Du kannst zwar den RPi3 mit einem RPi2 Cross-Compilen, allerdings denke ich, dass es leichter wäre dann direkt auf dem RPi3 den Kernel zu kompilieren. Wenn ich es richtig verstanden habe, ist der große Vorteil des Cross-Compilings, dass ein Rechner schneller beim Kompilieren ist, womit das Crosscompilen mit dem RPi2 wenig Sinn machen würde.


    Zu Frage 4 kann ich dir leider nichts sagen, sorry. Da findet sich bestimmt noch jemand.


  • Das liegt vermutlich daran, dass im Paket des Raspberrypi Bootloaders auch ein (temporärer) Kernel mitenthalten ist, der deinen kernel und deine modules zerschießt.
    Update mal zuerst den Bootloader und kopiere dann erst den kernel und installiere dann die modules von cberryfb.

    -_- mir ist anscheinend genau das gleiche passiert. ich war schon soweit, dass ich eine consolen-ausgabe auf dem C-berry hatte.
    nachdem ich

    Code
    [font="Courier New"]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[/font]

    ausgeführt hatte, hat er den

    Code
    [font="Courier New"]modprobe cberryfb[/font]

    [font="Courier New"]Befehl nicht mehr ausgeführt. Er sagte, dass Modul existier nicht.[/font]

    [font="Courier New"]Muss ich jetzt nochmal komplett von vorne anfangen und den kernel neu kompilieren? :([/font]
    [font="Courier New"]... das darf doch alles nicht wahr sein :/[/font]


    Welche Version von Retropie verwendest du? Ich hab nicht die aktuellste, ich verwende Version 2.6, es kann sein, dass get_mode in einer aktuelleren Version durch get_all_modes ersetzt wurde.
    Wenn du im richtigen Pfad bist und die richtige Datei editierst, dann passt es auf jeden Fall, dann schreibe die Änderungen nach get_all_modes.

    Grüße,
    Erotzi

    Einmal editiert, zuletzt von sh4dow (27. April 2016 um 09:17)

  • root@retropie:~# cd C-Berry/SW/tft_test
    root@retropie:~/C-Berry/SW/tft_test# make
    make: Nothing to be done for 'all'.

    hat jemand noch das gleiche problem?... bekomme nicht mal das test bild auf den schirm o_0

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!