i.MX8DXL screen share to PC by using FreeRDP

cancel
Showing results for 
Search instead for 
Did you mean: 

i.MX8DXL screen share to PC by using FreeRDP

No ratings

i.MX8DXL screen share to PC by using FreeRDP

This doc will show:
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.
 
HW: i.MX8DXL EVK board,  PC 
SW: i.MX8DXL Linux 5.15.32 BSP release, and code change in this doc

 

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, get wfreerdp.exe from  https://github.com/FreeRDP/FreeRDP/wiki/Prebuilds
PC side run cmd as:
wfreerdp.exe /v:ipaddress_of_8DXLEVK
 
 
Reference:
 
Attachments
Version history
Revision #:
3 of 3
Last update:
‎11-03-2022 01:22 AM
Updated by: