Embedded Systems / F&S Boards

Weston customizations

At this point, you should have your efus MX8MP board equipped with an Embedded Linux OS. In this article, we are going to take a look at the graphical output generated by Weston and how we can adjust it. If you have a display unit connected to your board over LVDS connector, you should be able to see its graphical output on the display unit.

The behavior is Weston is customized by performing modifications to its configuration file:
/etc/xdg/weston/weston.ini
The complete documentation can be found here.

Weston with no display unit

If you do not have any display unit, you can still use Weston. Just configure it, so that it renders its graphical output over RDP protocol. That will allow client computers to connect to your board over RDP and interact with its Graphical User Interface. To make this work, follow these instructions:

  1. Make a back-up copy of your current /etc/xdg/weston/weston.ini:
    cp /etc/xdg/weston/weston.ini /etc/xdg/weston/weston.ini.bak

  2. Edit your /etc/xdg/weston/weston.ini with your favourite editor and put this content into it:
    [core]
    use-g2d=true
    repaint-window=16
    idle-time=0
    xwayland=true
    shell=desktop-shell.so
    
    [shell]
    # panel-position can be set to one of these: top,bottom,left,right,none
    panel-position=top
    background-image=/usr/share/weston/01Background.jpg
    background-type=scale-crop

    Notice the background-image setting in section. Make sure, that the file exists and that it is readable. If you don’t want any background image, you can remove that line.

  3. Make a back-up copy of your current /usr/lib/systemd/system/weston.service:
    cp /usr/lib/systemd/system/weston.service /usr/lib/systemd/system/weston.service.bak

  4. Edit your /usr/lib/systemd/system/weston.service with your favourite editor. Look for [Service] section. Within it, look for ExecStart. The ExecStart setting specifies how Weston service should be started (what command should be executed). This is what we want to set it to:
    ExecStart=/usr/bin/weston --modules=systemd-notify.so \
    --backend=rdp-backend.so --shell=desktop-shell.so \
    --rdp-tls-cert=/etc/freerdp/keys/server.crt --rdp-tls-key=/etc/freerdp/keys/server.key \
    --xwayland \
    --width=800 --height=480 --no-clients-resize

    You may change the width and height arguments to whatever values you prefer. If you want the client applications to change the desktop size, remove the --no-clients-resize input argument, otherwise leave it in. You probably also noticed the input arguments, which contain paths to encryption key and certificate. These likely do not exist in your file system. So this is how you create them.

  5. mkdir -p /etc/freerdp/keys
    cd /etc/freerdp/keys
    openssl genrsa -out server.key 2048
    openssl req -new -key server.key -out server.csr 

    During execution of the last command you will be asked to provide information about the certificate being created. Provide whatever information you want.

  6. Execute this command to produce .crt certificate:
    openssl x509 -req -days 365 -signkey server.key -in server.csr -out server.crt

  7. Weston backend is typically executed by “weston” user. We have to make sure, that generated keys are readable by “weston” user:
    chown root:weston /etc/freerdp/keys/server.key
    chmod 640 /etc/freerdp/keys/server.key

  8. After these changes and adjustments, perform these commands:
    systemctl daemon-reload
    systemctl restart weston

  9. You should now be able to connect to your board over any RDP client application. If you’re on Windows OS, you may use Remote Desktop Connection (mstsc.exe).

Documentation notice

Information may change over time

Created

Technical details on this page may change as vendor tools, board support packages, operating system images, and runtime versions evolve.

This page was last technically reviewed on June 27, 2026. If your setup differs from the one described here, please contact us for help.