{"id":139,"date":"2018-09-21T11:44:02","date_gmt":"2018-09-21T09:44:02","guid":{"rendered":"http:\/\/blog.0link.net\/?p=139"},"modified":"2018-10-26T09:33:41","modified_gmt":"2018-10-26T07:33:41","slug":"vga-mit-dualscreen-am-raspi-zweiter-anlauf","status":"publish","type":"post","link":"https:\/\/blog.0link.net\/index.php\/2018\/09\/21\/vga-mit-dualscreen-am-raspi-zweiter-anlauf\/","title":{"rendered":"VGA mit DualScreen am Raspi &#8211; zweiter Anlauf"},"content":{"rendered":"<p>Nachdem ich meinen Raspi irgendwann von Jessie auf Stretch aktualisiert habe, war mein <a href=\"http:\/\/blog.0link.net\/index.php\/2017\/08\/21\/usb2vga-adapter-am-raspberry-pi\/\" target=\"_blank\" rel=\"noopener\">USB2VGA-Adapter von DisplayLink<\/a> nutzlos geworden. Der auf die armhf-Architektur portierte DisplayLink-Treiber steht f\u00fcr Stretch nicht zur Verf\u00fcgung.<\/p>\n<p>Ich hatte mich schon damit abgefunden, dass mein zweiter Monitor f\u00fcr immer dunkel bleiben w\u00fcrde, bis ich letzte Woche durch Zufall auf <a href=\"https:\/\/rasppishop.de\" target=\"_blank\" rel=\"noopener\">rasppishop.de<\/a> das <a href=\"https:\/\/www.rasppishop.de\/GERT-VGA-666-Bausatz-VGA-Port-fuer-Raspberry-GPIO\" target=\"_blank\" rel=\"noopener\">Gert VGA666-Board<\/a> gesehen habe.<\/p>\n<h5>Gert VGA666-Board<\/h5>\n<p>Dort wurde die DualScreen-Funktionalit\u00e4t erw\u00e4hnt und ich vertraute blind. Ein Bekannter warnte mich schon, dass er bei anderen H\u00e4ndlern gelesen h\u00e4tte, dass es nicht so ohne weitere funktionierte.<\/p>\n<p>Gestern konnte ich dann mein Gert VGA666 zusammenbauen, welches als Bausatz daher kommt. Man bekommt eine Platine, ein paar Widerst\u00e4nde und eine Buchsenleiste f\u00fcr die GPIO-Pins und nat\u00fcrlich eine DSub-VGA-Buchse. Man k\u00f6nnte das Gebilde auch komplett ohne den Bausatz nachbauen, denn die Schaltung ist kein Geheimnis. Infos gibts unter anderem \u00fcber <a href=\"https:\/\/github.com\/PiSupply\/Gert-VGA-666\" target=\"_blank\" rel=\"noopener\">GitHub unter PiSupply<\/a>. Das L\u00f6ten erfordert keine besonders hohen L\u00f6terfahrungen und geht recht schnell mit Hilfe der Best\u00fcckungsanleitung aus dem Git.<\/p>\n<p>Danach musste mein TekBerry-Geh\u00e4use dran glauben, damit der VGA-Port seinen Weg nach drau\u00dfen findet. Die notwendigen Treiber sind im Raspian bereits implementiert. Man muss das nur noch in der config.txt das DPI-Interface aktivieren und entsprechend einstellen. Jetzt kann man wahlweise HDMI, Composite oder eben VGA als prim\u00e4re Anzeige verwenden. Mein Monitor am VGA lief sofort ohne Bildfehler, somit war meine L\u00f6tarbeit erfolgreich.<\/p>\n<p>Nun kommt der schwierige Teil &#8211; nativ kann der der Raspberry auch im Jahr 2018 noch kein DualScreen. Man kann zwar zwischen Display per HDMI, SPI, DPI (VGA) und Composite w\u00e4hlen, aber es gibt in der Firmware per default nur ein Framebuffer-Device, sprich eine Adresse und einen Speicherbereich f\u00fcr die grafische Anzeige. Es gibt einen &#8222;workaround&#8220; mit dem man wohl mittels omxplayer ein Video auf den zweiten Screen &#8222;zaubern&#8220; kann, aber eben keinen Desktop. Wenn man sich in den Foren berichte zum Gert VGA666 durchlie\u00dft, st\u00f6\u00dft man immer wieder an diese Grenze.<\/p>\n<h5>DualScreen am Raspi mit Beta-Firmware<\/h5>\n<p>Durch Zufall habe ich dann im Raspberry-Forum einen <a href=\"https:\/\/www.raspberrypi.org\/forums\/viewtopic.php?f=63&amp;t=216399&amp;start=0\" target=\"_blank\" rel=\"noopener\">Beitrag von JamesH<\/a> gefunden, der eben genau an dieser Problematik get\u00fcftelt hat, da auch mit den &#8222;originalen&#8220; SPI-Touch-Displays kein DualScreen m\u00f6glich ist. Er hat sich hingesetzt und die Firmware modifiziert, damit diese einen weiteren Framebuffer bereitstellen kann &#8211; also einen autarken zweiten Screen erzeugt, der dann \u00fcber andere Software angesteuert werden kann.<\/p>\n<p>Gesagt getan &#8211; Downgrade des Kernels auf meinem Raspi (es muss n\u00e4mlich die Kernel-Umgebung exakt zur Firmware passen) und dann Kernel und Firmware von Jamesh in meinen Raspi gespielt. Ein paar \u00c4nderungen an der config.txt vorgenommen und dann den Raspi neu gestartet &#8211; jetzt wacht der zweite Monitor schon mal aus dem PowerSafe auf &#8211; bekommt also Signal aus dem Raspi.<\/p>\n<h5>Xorg &#8211; eine manuelle Konfig muss her<\/h5>\n<p>Nun blau\u00e4ugig wie ich war habe ich meine &#8222;alte&#8220; DualScreen-xorg.conf genommen und ein bi\u00dfchen drin rumge\u00e4ndert &#8211; aber es lief nicht. Der zweite Schirm bleibt schwarz &#8211; als primary Display zeigt er eine vermurkste\u00a0 Grafik &#8211; irgendwas passt also nicht. Ein Test mit fbi (FrameBuffer Imageview) zeigt, dass ohne xorg beide Framebuffer sauber arbeiteten &#8211; aber warum klappt es mit meiner xorg.conf nicht?<\/p>\n<p>Auch dieses R\u00e4tsel konnte ich heute nach nochmaligem Nachdenken und probieren rausfinden. W\u00e4hrend USB2VGA-DisplayLink auf dem zweiten Monitor eine Farbtiefe von maximal 16-Bit erwartet, kam das Gert-Board damit nicht zurecht. Es m\u00f6chte genau wie der HDMI-Port mit 24-Bit angesteuert werden. Nach \u00c4nderung der xorg.conf hat es sofort meinen zweiten Bildschirm erkannt und ich konnte (wie beim DisplayLink) dort einen zweiten Desktop mit zweitem Launcher und eigener Browserinstanz starten.<\/p>\n<p>Wer, anders als ich, einen erweiterten Desktop nutzen m\u00f6chte, kann in der xorg.conf <strong>Xinerama<\/strong> aktivieren. Alternativ d\u00fcrfte auch <strong>Clone<\/strong> m\u00f6glich sein, habe ich nicht getestet, weil ich es nicht brauche).<\/p>\n<p><span style=\"color: #ff0000;\"><em><strong>Nachtrag:<\/strong> ich nutze jetzt seit einigen Wochen Xinerama am Raspi mit HDMI und GERT-VGA &#8211; was soll ich sagen: ich bin sehr begeistert, denn es funktioniert tadellos und ohne merkliche Leistungseinbu\u00dfen auf dem Raspi 3B+.\u00a0<\/em><\/span><\/p>\n<h5>Upgrade des Raspian-Systems<\/h5>\n<p>Damit bei einem Update des Systems der Bootloader und der Kernel im Beta-Status bleiben, muss man vor einer Systemaktualisierung die entsprechenden Pakete auf &#8222;hold&#8220; setzen:<\/p>\n<pre>user@pi:~ $ sudo aptitude hold raspberrypi-bootloader\r\nuser@pi:~ $ sudo aptitude hold raspberrypi-kernel<\/pre>\n<p>Danach werden bei einem <code>apt update<\/code> und <code>apt upgrade<\/code> die beiden Pakete ausgelassen, aber das restliche System wird trotzdem aktuell gehalten.<\/p>\n<p>Ich gehe davon aus, dass irgendwann der Kernel-Hack offiziell in das Raspbian einflie\u00dfen wird.<\/p>\n<h5>Code-Schnipsel<\/h5>\n<h6>config.txt<\/h6>\n<pre><em>[...]<\/em>\r\n\r\n# GERT VGA666\r\ndtoverlay=vga666\r\nenable_dpi_lcd=1\r\n#display_default_lcd=0\u00a0 \u00a0 <em><span style=\"color: #008000;\">## =1 macht den VGA-Ausgang zum prim\u00e4ren Monitor<\/span><\/em>\r\ndpi_group=2\r\ndpi_mode=35\r\nstart_x=1\r\nmax_framebuffers=2\r\nframebuffer_priority=2\u00a0 \u00a0<em><span style=\"color: #008000;\">## =2 macht den HDMI-Port zum prim\u00e4ren Monitor wenn die Beta-Firmware eingespielt ist<\/span><\/em><\/pre>\n<h6>xorg.conf<\/h6>\n<pre>Section \"Device\"\r\n Identifier \"hdmi\"\r\n Driver \"fbturbo\"\r\n Option \"fbdev\" \"\/dev\/fb0\"\r\nEndSection\r\n\r\nSection \"Device\"\r\n Identifier \"vga\"\r\n Driver \"fbturbo\"\r\n Option \"fbdev\" \"\/dev\/fb1\"\r\nEndSection\r\n\r\nSection \"Monitor\"\r\n Identifier \"Terra\"\r\n Modeline \"1280x1024_60.00\" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync\r\n Option \"PreferredMode\" \"1280x1024_60.00\"\r\n Option \"DPMS\" \"true\"\r\nEndSection\r\n\r\nSection \"Screen\"\r\n Identifier \"vga\"\r\n Device \"vga\"\r\n Monitor \"Terra\"\r\n DefaultDepth 24\r\n SubSection \"Display\"\r\n Depth 24\r\n Modes \"1280x1024\"\r\n EndSubSection\r\nEndSection\r\n\r\nSection \"Screen\"\r\n Identifier \"hdmi\"\r\n Device \"hdmi\"\r\n Monitor \"Terra\"\r\n DefaultDepth 24\r\n SubSection \"Display\"\r\n Depth 24\r\n Modes \"1280x1024\"\r\n EndSubSection\r\nEndSection\r\n\r\nSection \"ServerLayout\"\r\n Identifier \"default\"\r\n Screen 0 \"hdmi\" 0 0\r\n Screen 1 \"vga\" RightOf \"hdmi\"\r\n# Option \"Xinerama\" \"on\"\r\n# Option \"Clone\" \"on\"\r\nEndSection<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Nachdem ich meinen Raspi irgendwann von Jessie auf Stretch aktualisiert habe, war mein USB2VGA-Adapter von DisplayLink nutzlos geworden. Der auf die armhf-Architektur portierte DisplayLink-Treiber steht f\u00fcr Stretch nicht zur Verf\u00fcgung. Ich hatte mich schon damit abgefunden, dass mein zweiter Monitor f\u00fcr immer dunkel bleiben w\u00fcrde, bis ich letzte Woche durch Zufall auf rasppishop.de das Gert &hellip; <a href=\"https:\/\/blog.0link.net\/index.php\/2018\/09\/21\/vga-mit-dualscreen-am-raspi-zweiter-anlauf\/\" class=\"more-link\"><span class=\"screen-reader-text\">VGA mit DualScreen am Raspi &#8211; zweiter Anlauf<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.0link.net\/index.php\/wp-json\/wp\/v2\/posts\/139"}],"collection":[{"href":"https:\/\/blog.0link.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.0link.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.0link.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.0link.net\/index.php\/wp-json\/wp\/v2\/comments?post=139"}],"version-history":[{"count":7,"href":"https:\/\/blog.0link.net\/index.php\/wp-json\/wp\/v2\/posts\/139\/revisions"}],"predecessor-version":[{"id":157,"href":"https:\/\/blog.0link.net\/index.php\/wp-json\/wp\/v2\/posts\/139\/revisions\/157"}],"wp:attachment":[{"href":"https:\/\/blog.0link.net\/index.php\/wp-json\/wp\/v2\/media?parent=139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.0link.net\/index.php\/wp-json\/wp\/v2\/categories?post=139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.0link.net\/index.php\/wp-json\/wp\/v2\/tags?post=139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}