Kernel Programmierung

  • Hi ich suche jemanden der sich mit der Kernel Programmierung auskennt. Es geht darum eine Schnittstelle zu implementieren, wodurch mein Programm den Bildschirm um 90,180 bzw 270 grad dreht. Denn zur Zeit, kann man dies nur beim Booten festsetzen, was meinen Anforderungen nicht ausreicht (Betriebssystem: Raspbian). Wenn jemand sich das zutraut und Lust dazu hat, würde ich um eine Privat Nachricht mit vorgestelltem Entgelt freuen.


    Beste Grüße :)

  • Dann sag mir mal deine Entgelt Vorstellungen, denn technisch kann ich
    dir das machen, aber preislich übersteigt das wahrscheinlich deinen Vorstellungen.
    Da reden wir über 1000€ aufwärts, da brauchen wir kein Geheimnis draus machen.


    Kernel Entwicklungen sind kompliziert und zeit aufwändig!
    Zahlt sich in den meisten Fällen nicht aus…


    grüße
    Andreas

  • Ja dann werd ich mich gerne melden... wen es bei mir wider
    etwas ruhiger ist... damit wir ein Meeting vereinbaren können.


    grüße
    Andreas

  • Hmmm hört sich interessant an... habe auch vom Teamdevel den Tipp erhalten mit xrandr die zu rotieren. Auf meinem Ubuntu funktioniert das auch aber wenn ich das aufm raspi eingebe bekomme ich folgende Fehlermeldung:


    Code
    pi@raspberrypi ~ $ xrandr --output default --rotate left
    xrandr: output default cannot use rotation "left" reflection "none"


    woran kann das liegen?

  • Teamdevel ist sowieso ein ganz großer...
    Warum nicht einfach

    Code
    display_rotate=0        Normal
    display_rotate=1        90 degrees
    display_rotate=2        180 degrees
    display_rotate=3        270 degrees
    display_rotate=0x10000  horizontal flip
    display_rotate=0x20000  vertical flip


    In die config...

  • danke, aber mein Programm soll dynamisch den Bildschirm drehen können (innerhalb von 1 - 1,5 Sekunden). In der config geänderte Daten muss ein Neustart folgen, was viel zu lange dauert...


  • danke, aber mein Programm soll dynamisch den Bildschirm drehen können (innerhalb von 1 - 1,5 Sekunden). In der config geänderte Daten muss ein Neustart folgen, was viel zu lange dauert...


    Hi,


    das könnte evtl. noch über den framebuffer gehen.
    Ich gebe allerdings eines zu bedenken: die CPU ist ziemlich schwach, mit 512 MB ist der Speicher auch nicht gerade üppig, und einen reinen Grafikspeicher, über den Du etwas manipulieren kannst, hast Du auch nicht zur Verfügung.


    Der RPi kann noch nicht einmal einen MPEG-2 stream ohne Hardware-Unterstützung abspielen. Wie sollte er diesen screen auch noch dynamisch drehen können?


    Ich denke, damit dürfte er hoffnungslos überlastet sein, denn so ein Desktop besteht ja nicht nur aus statischer Grafik. Und da wäre es imho schon mehr als eine Herausforderung.


    cheers,
    -ds-

  • kann das der Grund sein, dass xrandr nicht funktioniert?



    Code
    pi@raspberrypi ~ $ xrandr --output default --rotate left
    
    
    xrandr: output default cannot use rotation "left" reflection "none"
  • Tach,


    ich kann das nicht mit Sicherheit sagen, aber es ist imho durchaus nachvollziehbar, dass die Drehfunktionen auf eine Einstellung beim booten beschränkt sind, um die entsprechenden "Filter" oder "Spiegel" fest für die Bildausgabe zu installieren.


    cu,
    -ds-

  • Und was meinst du zum Cubieboard? Dieser hat:


    SoC: A10 @ 1Ghz
    DRAM: 1GB DDR3 @ 480MHz


    Könnte das ausreichen (Intuitiv) ?

  • Hi,


    dazu kann ich ad hoc nicht viel mehr beitragen.
    Meine letzte Aktion in Richtung Grafik war vor einigen Jahren eine Software-MPEG4 Encoder/Decoder Lösung mit synchronem Audio über ISDN.
    Was die aktuellen Grafik-Chipsätze leisten bin ich auch nicht mehr auf dem Laufenden - und das meiste sollte sich imho über den Grafikchipsatz lösen lassen. Alles andere ist m.E. ein tierischer Rechenaufwand.


    Was andere Boards in dieser Richtung leisten, kann ich noch nicht mal mutmassen - deshalb kann und möchte ich auch keine Empfehlung hier abgeben.
    Das Cubieboard ist scheinbar performanter - aber ob das reicht?
    Also da kann vielleicht ein anderer Spezialist in dieser Ecke mehr sinnvolles dazu beitragen.


    Ich kann nur meine Meinung in Richtung RPi dazu beitragen, und die ist, dass er damit imho überfordert wäre.


    Sorry,
    -ds-

  • Super, danke für deine Einschätzung! Trotzdem würde ich mich mal kurz mit dem Framebuffer auseinandersetzen, auch wenn das nicht funktionieren sollte, ist das sicherlich interessant. Kannst du mir dazu ein Buch oder irgendwelche Seiten empfehlen?

  • Nur noch mal zur info ....
    der kernel bzw. die firmware beinhaltet alles um das zu
    bewerkstelligen ... mehr kann man dazu nicht sagen ...


    hier ein auszug aus dem interface header ...


    [font="Courier New"]
    /*[/font]
    [font="Courier New"]Copyright (c) 2012, Broadcom Europe Ltd[/font]
    [font="Courier New"]All rights reserved.[/font]


    [font="Courier New"]Redistribution and use in source and binary forms, with or without[/font]
    [font="Courier New"]modification, are permitted provided that the following conditions are met:[/font]
    [font="Courier New"] * Redistributions of source code must retain the above copyright[/font]
    [font="Courier New"] notice, this list of conditions and the following disclaimer.[/font]
    [font="Courier New"] * Redistributions in binary form must reproduce the above copyright[/font]
    [font="Courier New"] notice, this list of conditions and the following disclaimer in the[/font]
    [font="Courier New"] documentation and/or other materials provided with the distribution.[/font]
    [font="Courier New"] * Neither the name of the copyright holder nor the[/font]
    [font="Courier New"] names of its contributors may be used to endorse or promote products[/font]
    [font="Courier New"] derived from this software without specific prior written permission.[/font]


    [font="Courier New"]THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND[/font]
    [font="Courier New"]ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED[/font]
    [font="Courier New"]WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE[/font]
    [font="Courier New"]DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY[/font]
    [font="Courier New"]DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES[/font]
    [font="Courier New"](INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;[/font]
    [font="Courier New"]LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND[/font]
    [font="Courier New"]ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT[/font]
    [font="Courier New"](INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS[/font]
    [font="Courier New"]SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.[/font]
    [font="Courier New"]*/[/font]


    [font="Courier New"]// Display manager service API[/font]


    [font="Courier New"]#ifndef _VC_DISPMANX_H_[/font]
    [font="Courier New"]#define _VC_DISPMANX_H_[/font]


    [font="Courier New"]#include "interface/vcos/vcos.h"[/font]
    [font="Courier New"]#include "interface/vctypes/vc_image_types.h"[/font]
    [font="Courier New"]#include "vc_dispservice_x_defs.h"[/font]
    [font="Courier New"]#include "interface/vmcs_host/vc_dispmanx_types.h"[/font]
    [font="Courier New"]#include "interface/vchi/vchi.h"[/font]


    [font="Courier New"]#ifdef __cplusplus[/font]
    [font="Courier New"]extern "C" {[/font]
    [font="Courier New"]#endif[/font]
    [font="Courier New"]// Same function as above, to aid migration of code.[/font]
    [font="Courier New"]VCHPRE_ int VCHPOST_ vc_dispman_init( void );[/font]
    [font="Courier New"]// Stop the service from being used[/font]
    [font="Courier New"]VCHPRE_ void VCHPOST_ vc_dispmanx_stop( void );[/font]
    [font="Courier New"]// Set the entries in the rect structure[/font]
    [font="Courier New"]VCHPRE_ int VCHPOST_ vc_dispmanx_rect_set( VC_RECT_T *rect, uint32_t x_offset, uint32_t y_offset, uint32_t width, uint32_t height );[/font]
    [font="Courier New"]// Resources[/font]
    [font="Courier New"]// Create a new resource[/font]
    [font="Courier New"]VCHPRE_ DISPMANX_RESOURCE_HANDLE_T VCHPOST_ vc_dispmanx_resource_create( VC_IMAGE_TYPE_T type, uint32_t width, uint32_t height, uint32_t *native_image_handle );[/font]
    [font="Courier New"]// Write the bitmap data to VideoCore memory[/font]
    [font="Courier New"]VCHPRE_ int VCHPOST_ vc_dispmanx_resource_write_data( DISPMANX_RESOURCE_HANDLE_T res, VC_IMAGE_TYPE_T src_type, int src_pitch, void * src_address, const VC_RECT_T * rect );[/font]
    [font="Courier New"]VCHPRE_ int VCHPOST_ vc_dispmanx_resource_write_data_handle( DISPMANX_RESOURCE_HANDLE_T res, VC_IMAGE_TYPE_T src_type, int src_pitch, VCHI_MEM_HANDLE_T handle, uint32_t offset, const VC_RECT_T * rect );[/font]
    [font="Courier New"]VCHPRE_ int VCHPOST_ vc_dispmanx_resource_read_data([/font]
    [font="Courier New"] DISPMANX_RESOURCE_HANDLE_T handle,[/font]
    [font="Courier New"] const VC_RECT_T* p_rect,[/font]
    [font="Courier New"] void * dst_address,[/font]
    [font="Courier New"] uint32_t dst_pitch );[/font]
    [font="Courier New"]// Delete a resource[/font]
    [font="Courier New"]VCHPRE_ int VCHPOST_ vc_dispmanx_resource_delete( DISPMANX_RESOURCE_HANDLE_T res );[/font]


    [font="Courier New"]// Displays[/font]
    [font="Courier New"]// Opens a display on the given device[/font]
    [font="Courier New"]VCHPRE_ DISPMANX_DISPLAY_HANDLE_T VCHPOST_ vc_dispmanx_display_open( uint32_t device );[/font]
    [font="Courier New"]// Opens a display on the given device in the request mode[/font]
    [font="Courier New"]VCHPRE_ DISPMANX_DISPLAY_HANDLE_T VCHPOST_ vc_dispmanx_display_open_mode( uint32_t device, uint32_t mode );[/font]
    [font="Courier New"]// Open an offscreen display[/font]
    [font="Courier New"]VCHPRE_ DISPMANX_DISPLAY_HANDLE_T VCHPOST_ vc_dispmanx_display_open_offscreen( DISPMANX_RESOURCE_HANDLE_T dest, VC_IMAGE_TRANSFORM_T orientation );[/font]
    [font="Courier New"]// Change the mode of a display[/font]
    [font="Courier New"]VCHPRE_ int VCHPOST_ vc_dispmanx_display_reconfigure( DISPMANX_DISPLAY_HANDLE_T display, uint32_t mode );[/font]
    [font="Courier New"]// Sets the desstination of the display to be the given resource[/font]
    [font="Courier New"]VCHPRE_ int VCHPOST_ vc_dispmanx_display_set_destination( DISPMANX_DISPLAY_HANDLE_T display, DISPMANX_RESOURCE_HANDLE_T dest );[/font]
    [font="Courier New"]// Set the background colour of the display[/font]
    [font="Courier New"]VCHPRE_ int VCHPOST_ vc_dispmanx_display_set_background( DISPMANX_UPDATE_HANDLE_T update, DISPMANX_DISPLAY_HANDLE_T display,[/font]
    [font="Courier New"] uint8_t red, uint8_t green, uint8_t blue );[/font]
    [font="Courier New"]// get the width, height, frame rate and aspect ratio of the display[/font]
    [font="Courier New"]VCHPRE_ int VCHPOST_ vc_dispmanx_display_get_info( DISPMANX_DISPLAY_HANDLE_T display, DISPMANX_MODEINFO_T * pinfo );[/font]
    [font="Courier New"]// Closes a display[/font]
    [font="Courier New"]VCHPRE_ int VCHPOST_ vc_dispmanx_display_close( DISPMANX_DISPLAY_HANDLE_T display );[/font]


    [font="Courier New"]// Updates[/font]
    [font="Courier New"]// Start a new update, DISPMANX_NO_HANDLE on error[/font]
    [font="Courier New"]VCHPRE_ DISPMANX_UPDATE_HANDLE_T VCHPOST_ vc_dispmanx_update_start( int32_t priority );[/font]



    usw ... usw ...
    das ist noch um einiges länger...



    dan gibt es noch das tv-service interface ...


    [font="Courier New"]


    /*[/font]
    [font="Courier New"]Copyright (c) 2012, Broadcom Europe Ltd[/font]
    [font="Courier New"]All rights reserved.[/font]


    [font="Courier New"]Redistribution and use in source and binary forms, with or without[/font]
    [font="Courier New"]modification, are permitted provided that the following conditions are met:[/font]
    [font="Courier New"] * Redistributions of source code must retain the above copyright[/font]
    [font="Courier New"] notice, this list of conditions and the following disclaimer.[/font]
    [font="Courier New"] * Redistributions in binary form must reproduce the above copyright[/font]
    [font="Courier New"] notice, this list of conditions and the following disclaimer in the[/font]
    [font="Courier New"] documentation and/or other materials provided with the distribution.[/font]
    [font="Courier New"] * Neither the name of the copyright holder nor the[/font]
    [font="Courier New"] names of its contributors may be used to endorse or promote products[/font]
    [font="Courier New"] derived from this software without specific prior written permission.[/font]


    [font="Courier New"]THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND[/font]
    [font="Courier New"]ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED[/font]
    [font="Courier New"]WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE[/font]
    [font="Courier New"]DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY[/font]
    [font="Courier New"]DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES[/font]
    [font="Courier New"](INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;[/font]
    [font="Courier New"]LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND[/font]
    [font="Courier New"]ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT[/font]
    [font="Courier New"](INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS[/font]
    [font="Courier New"]SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.[/font]
    [font="Courier New"]*/[/font]


    [font="Courier New"]/*[/font]
    [font="Courier New"] * TV service host API,[/font]
    [font="Courier New"] * See vc_hdmi.h for HDMI related constants[/font]
    [font="Courier New"] * See vc_sdtv.h for SDTV related constants[/font]
    [font="Courier New"] */[/font]


    [font="Courier New"]#ifndef _VC_TVSERVICE_H_[/font]
    [font="Courier New"]#define _VC_TVSERVICE_H_[/font]


    [font="Courier New"]#include "vcinclude/common.h"[/font]
    [font="Courier New"]#include "interface/vcos/vcos.h"[/font]
    [font="Courier New"]#include "interface/vchi/vchi.h"[/font]
    [font="Courier New"]#include "interface/vmcs_host/vc_tvservice_defs.h"[/font]
    [font="Courier New"]#include "interface/vmcs_host/vc_hdmi.h"[/font]
    [font="Courier New"]#include "interface/vmcs_host/vc_sdtv.h"[/font]


    [font="Courier New"]/**[/font]
    [font="Courier New"] * \file[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * This API defines the controls for both HDMI and analogue TVs. It allows[/font]
    [font="Courier New"] * the user to dynamically switch between HDMI and SDTV without having[/font]
    [font="Courier New"] * to worry about switch one off before turning the other on. It also[/font]
    [font="Courier New"] * allows the user to query the supported HDMI resolutions and audio[/font]
    [font="Courier New"] * formats and turn on/off copy protection.[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * There are three ways to turn on HDMI: preferred mode; best matched mode[/font]
    [font="Courier New"] * and explicit mode. See the three power on functions for details.[/font]
    [font="Courier New"] */[/font]


    [font="Courier New"]/**[/font]
    [font="Courier New"] * TVSERVICE_CALLBACK_T is the callback function for host side notification.[/font]
    [font="Courier New"] * Host applications register a single callback for all TV related notifications.[/font]
    [font="Courier New"] * See <DFN>VC_HDMI_NOTIFY_T</DFN> and <DFN>VC_SDTV_NOTIFY_T</DFN> in vc_hdmi.h and vc_sdtv.h[/font]
    [font="Courier New"] * respectively for list of reasons and respective param1 and param2[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @param callback_data is the context passed in during the call to vc_tv_register_callback[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @param reason is the notification reason[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @param param1 is the first optional parameter[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @param param2 is the second optional parameter[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @return void[/font]
    [font="Courier New"] */[/font]
    [font="Courier New"]typedef void (*TVSERVICE_CALLBACK_T)(void *callback_data, uint32_t reason, uint32_t param1, uint32_t param2);[/font]


    [font="Courier New"]/* API at application start time */[/font]
    [font="Courier New"]/**[/font]
    [font="Courier New"] * <DFN>vc_vchi_tv_init</DFN> is called at the beginning of the application[/font]
    [font="Courier New"] * to initialise the client to TV service[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @param initialise_instance is the VCHI instance[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @param array of pointers of connections[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @param number of connections (currently this is always <DFN>1</DFN>[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @return Zero is successful A negative return value indicates failure (which may mean it has not been started on VideoCore).[/font]
    [font="Courier New"] */[/font]
    [font="Courier New"]VCHPRE_ int vc_vchi_tv_init(VCHI_INSTANCE_T initialise_instance, VCHI_CONNECTION_T **connections, uint32_t num_connections );[/font]


    [font="Courier New"]/**[/font]
    [font="Courier New"] * <DFN>vc_vchi_tv_stop</DNF> is called to stop the host side of TV service.[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @param none[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @return void[/font]
    [font="Courier New"] */[/font]
    [font="Courier New"]VCHPRE_ void vc_vchi_tv_stop( void );[/font]


    [font="Courier New"]/**[/font]
    [font="Courier New"] * Host applications should call <DFN>vc_tv_register_callback</DNF> at[/font]
    [font="Courier New"] * the beginning to register a callback function to handle all notifications.[/font]
    [font="Courier New"] * See <DFN>TVSERVICE_CALLBACK_T </DFN>[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @param callback function[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @param callback_data is the context to be passed when function is called[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @return void[/font]
    [font="Courier New"] */[/font]
    [font="Courier New"]VCHPRE_ void vc_tv_register_callback(TVSERVICE_CALLBACK_T callback, void *callback_data);[/font]


    [font="Courier New"]/**[/font]
    [font="Courier New"] * <DFN>vc_tv_unregister_callback</DNF> removes a function registered with[/font]
    [font="Courier New"] * <DFN>vc_tv_register_callback</DNF> from the list of callbacks.[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @param callback function[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @return void[/font]
    [font="Courier New"] */[/font]
    [font="Courier New"]VCHPRE_ void vc_tv_unregister_callback(TVSERVICE_CALLBACK_T callback);[/font]


    [font="Courier New"]/**[/font]
    [font="Courier New"] * In the following API any functions applying to HDMI only will have hdmi_[/font]
    [font="Courier New"] * in the name, ditto for SDTV only will have sdtv_ in the name,[/font]
    [font="Courier New"] * Otherwise the function applies to both SDTV and HDMI (e.g. power off)[/font]
    [font="Courier New"] */[/font]


    [font="Courier New"]/**[/font]
    [font="Courier New"] * <DFN>vc_tv_get_state</DFN> is used to obtain the current TV state.[/font]
    [font="Courier New"] * Host applications should call this function right after registering[/font]
    [font="Courier New"] * a callback in case any notifications are missed.[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * Now deprecated - use vc_tv_get_display_state instead[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @param pointer to TV_GET_STATE_RESP_T[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @return zero if the command is sent successfully, non zero otherwise[/font]
    [font="Courier New"] * If the command fails to be sent, passed in state is unchanged[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] */[/font]
    [font="Courier New"]VCHPRE_ int VCHPOST_ vc_tv_get_state(TV_GET_STATE_RESP_T *tvstate);[/font]


    [font="Courier New"]/**[/font]
    [font="Courier New"] * <DFN>vc_tv_get_display_state</DFN> is used to obtain the current TV display[/font]
    [font="Courier New"] * state. This function supersedes vc_tv_get_state (which is only kept for[/font]
    [font="Courier New"] * backward compatibility.[/font]
    [font="Courier New"] * Host applications should call this function right after registering[/font]
    [font="Courier New"] * a callback in case any notifications are missed.[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @param pointer to TV_DISPLAY_STATE_T[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] * @return zero if the command is sent successfully, non zero otherwise[/font]
    [font="Courier New"] * If the command fails to be sent, passed in state is unchanged[/font]
    [font="Courier New"] *[/font]
    [font="Courier New"] */[/font]
    [font="Courier New"]VCHPRE_ int VCHPOST_ vc_tv_get_display_state(TV_DISPLAY_STATE_T *tvstate);[/font]



    usw ... usw ...





    Ist leider sehr schlecht dokumentiert aber vorhanden...
    grüße

  • Gibt es sonst jemanden der Interesse hätte so etwas zu Programmieren? Oder kann mir jemand weiterhelfen wo ich jemanden finden würde? Denn Teamdevel ist leider anscheinend zu beschäftigt.
    Freue mich auch über jeden Tipp wo wie ich jemanden finden kann...

  • Kernel mit framebuffer Support.


    xorg.conf die Section Device anpassen für fbdev



    Code
    Section "Device"
    Identifier "devname"
    Driver "fbdev"
    #Option Rotate "inverted"
    #Option Rotate "UD"
    EndSection



    Der neue XServer hat normalerweise keine xorg.conf, daher müsstest Du sie wenn dann komplett mit allen Sections korrekt erstellen oder mit einem Tool dafür erstellen.
    Alternativ als Serverargs an den XServer diese Optionen übergeben. Wühl Dich mal durch /etc/X11/* da XSession, XSessionrc usw. genauer angucken, da drin solltest Du die passenden Files finden in denen Du die Parameter setzen musst. Hatte jetzt nur kurz geguckt und auch keinen Nerv da jetzt komplett durch zugehen, benutze eh keinen XServer um das gegen checken zu können.


    Versuch mal folgendes:


    Code
    Section "Device"
      Identifier "Card0"
      Driver "fbdev"
      Option "Rotate" "CW"
    EndSection


    In dieser Datei eintragen:

    Code
    /usr/share/X11/xorg.conf.d/01-device.conf



    xrandr ohne Parameter aufrufen gucken welches Device erkannt wurde. Das richtige raussuchen und dann das Rotate auf das richtige Device anwenden.

  • Hej
    er dreht tatsächlich den XServer nach dem Booten im Uhrzeigersinn und wenn ich jetzt xrandr eintippe bekomme ich:


    Code
    pi@raspberrypi ~$ xrandr
    Randr extension missing


    also mit CW und CWW ändern und den X11 neu starten funktioniert jetzt... etwas langsam ( 5 Sekunden bei max. Übertaktung) aber es funktioniert :D .

  • Noch eine Frage wie könnte ich den eventuell noch schneller zum drehen bekommen mehr GPU? schnellere SD Card?
    Und gibt es eine Möglichkeit dass ich den Bildschirm zu drehe ohne dass ich Midori neu starten muss? Denn das kostet wieder Zeit...