i.MX8DXL EVK board without connect hardware LCD display, using FreeRDP to share screen to remote PC which is in same network,
PC take this shared screen could run any command on i.MX8DXL EVK board.
1>
i.MX8DXL Linux kernel side, just use imx8dxl-evk-lcdif.dts, but did not connect any LCD display, so Linux kernel could create related drm device, and weston could be start.
But on 8DXL EVK board, ENET1_RGMII_TXD3 and ADMA_LCDIF_D03 pin conflict, so need code change as 5.15.32-imx8dxl-evk-lcdif.dts.diff.
2>
yocto/bld/conf/local.conf, add below line, as freerdp depend on ffmpeg.
LICENSE_FLAGS_ACCEPTED+="commercial"
3>
For i.MX8DXL, weston use software pixman render, to use NEON optimization,
pixman need switch to latest 0.42.0, enter folder (
yocto/bld/tmp/work/armv8a-poky-linux/pixman/1_0.40.0-r0/pixman-0.40.0),
git clone (https://github.com/freedesktop/pixman.git) and checkout to latest 0.42.0:
Also chaneg related build flag at bb file as pixman_0.40.0.bb.diff.
4>
Default freerdp need switch to 2.8.0, enter folder (yocto/bld/tmp/work/armv8a-poky-linux/freerdp/1_2.4.1-r0/git), git clone (https://github.com/FreeRDP/FreeRDP.git), check out to 2.8.0;
And to use neon accelerate freerdp related function, such as color space conversion, image codec encoding , need apply patch freerdp-codechange-neon.diff.
And related bb file compile flag change as freerdp_2.4.1.bb.diff
5>
bitbake -c compile ffmpeg
bitbake -c install ffmpeg
bitbake -c compile pixman
bitbake -c install pixman
bitbake -c compile freerdp
bitbake -c install freerdp
Copy generated new libs to default released i.MX8DXL rootfs, make sure
ffmeg , pixman, freerdp related libs are from your build, for example:
libfreerdp-client2.so.2 -> libfreerdp-client2.so.2.8.0
libfreerdp2.so.2 -> libfreerdp2.so.2.8.0
libwinpr-tools2.so.2 -> libwinpr-tools2.so.2.8.0
libwinpr2.so.2 -> libwinpr2.so.2.8.0
6>
i.MX8DXL Linux rootfs: file /etc/xdg/weston/weston.ini, change start-on-startup to true:
[screen-share]
command=/usr/bin/weston --backend=rdp-backend.so --shell=fullscreen-shell.so --no-clients-resize --rdp-tls-cert=/etc/freerdp/keys/serve
start-on-startup=true
7>
i.MX8DXL Linux OS, run below cmd:
winpr-makecert -path $PWD
copy generated files to /etc/freerdp/keys/server.crt and /etc/freerdp/keys/server.key
8>
reboot i.MX8DXL EVK board, make sure EVK board and PC in the same network;
check i.MX8DXL Linux OS , there are two process name as "weston", one process is weston rdp backend to share screen to PC.
9>
PC side run cmd as:
wfreerdp.exe /v:ipaddress_of_8DXLEVK
Reference: