building DisplayLink / EVDI

Below is what I managed todo. However, how to move forward with it?

wget -O /tmp/evdi.zip https://github.com/DisplayLink/evdi/archive/devel.zip
unzip /tmp/evdi.zip
sudo cp -r evdi-devel/module/ /usr/src/evdi-devel
sudo dkms add evdi/devel

Creating symlink /var/lib/dkms/evdi/devel/source ->
                 /usr/src/evdi-devel

DKMS: add completed.
sudo dkms build evdi/devel

Kernel preparation unnecessary for this kernel.  Skipping...

Building module:
cleaning build area...
make -j4 KERNELRELEASE=4.9.140-tegra all INCLUDEDIR=/lib/modules/4.9.140-tegra/build/include KVERSION=4.9.140-tegra DKMS_BUILD=1.....
cleaning build area...

DKMS: build completed.

then I install it as

sudo dkms install evdi/devel
sudo ./displaylink-driver-4.4.24.run 
Verifying archive integrity...  100%   All good.
Uncompressing DisplayLink Linux Driver 4.4.24  100%  
DisplayLink Linux Software 4.4.24 install script called: install
Distribution discovered: Ubuntu 18.04.2 LTS
Installing
Configuring EVDI DKMS module
Registering EVDI kernel module with DKMS
Building EVDI kernel module with DKMS
ERROR (code 3): Failed to build evdi/4.4.24. Consult /var/lib/dkms/evdi/4.4.24/build/make.log for details..
sudo dkms install evdi/devel
[sudo] password for nvidia: 
Module evdi/devel already installed on kernel 4.9.140-tegra/aarch64
/aarch64
sudo modprobe evdi
sudo ./displaylink-driver-5.1.26.run 
[sudo] password for nvidia: 
Verifying archive integrity...  100%   All good.
Uncompressing DisplayLink Linux Driver 5.1.26  100%  
DisplayLink Linux Software 5.1.26 install script called: install
Distribution discovered: Ubuntu 18.04.2 LTS
Installing
Configuring EVDI DKMS module
Registering EVDI kernel module with DKMS
Building EVDI kernel module with DKMS
Installing EVDI kernel module to kernel tree
EVDI kernel module built successfully
Installing x64-ubuntu-1604/DisplayLinkManager
Installing libraries
Installing firmware packages
Installing licence file
Adding udev rule for DisplayLink DL-3xxx/4xxx/5xxx/6xxx devices

Please read the FAQ
http://support.displaylink.com/knowledgebase/topics/103927-troubleshooting-ubuntu
Installation complete!
lsusb
Bus 002 Device 006: ID 17e9:4375 DisplayLink
xrandr --listproviders
Providers: number : 1
Provider 0: id: 0x189 cap: 0x0 crtcs: 2 outputs: 2 associated providers: 0 name:NVIDIA-0

Andrey,

Are you planning to install a usb screen to nano board? Do you have a displaylink user space manager software which can run on nano? Should gpu 2d/3d rendering effects be routed to USB device as well? I am on the same road with a usb screen but no clues found yet.

WDZH

Thank you for your question.
It my case it doesn’t appear as a provider.

Andrey,

I am not sure how displaylink works, but actually the common Linux DRM API is not fully compatible with tegra DRM. I would suggest you to take a look at MMAPI sample → DrmRenderer to see how it enable a DRM devices.

In brief, I think it only differs when you try to open a DRM device. Tegra DRM needs to use drm_open while linux DRM can just use open().

Thank you for your response.
I did not work with MMAPI, and made a google search.
Results:

https://docs.nvidia.com/jetson/l4t-multimedia/l4t_mm_test_group.html
Probably I shall look closer in the latter documentation.
Thank you.

MMAPI sample is the one installed with Jetpack.
Jetson Linux API Reference: Main Page | NVIDIA Docs ->this one is correct document.

do you refer to the sample : “08_video_dec_drm” ?

Yes, that sample is the one demo DRM API.

and to get the display recognized and showing the DisplayLink driver backed output some modification seems need to be made. I am not sure if I fully understand what modifications might be required, but I will try discussing the issue with DisplayLink guys.

Actually there should be only minor part needs to be modified. I think it should be the line to open device. On upstream kernel, it can just use “open()” to open a DRM device. However, you need to use drmOpen() in tegra kernel.

evdi guys pointed to the design below as to a possible solution:

Any update on DisplayLink Driver integration into nano OS? In order to be able to use USB-c displays?
Reference: libevdi0 : arm64 : Eoan (19.10) : Ubuntu

Hi Andrey1984,

No, this driver is not verified. Have you tried it on rel-32.3 yet?

I did not try but will do, as long as I find a monitor to flash the nano and pass the initial Ubuntu setup.
Is there any way to complete the initial Ubuntu setup after flashing on nano without monitor/display, connected to nano (but USB-c)?
Is there a way to pass a default argument as a username and password for flashing? using a micro-usb connection to a computer? Anyhow?

Yes, I put a script in NANO FAQ on forum board. You could check the link there.

This script is running on host to configure user/pwd before flash.

Thanks

The patch will probably work for Xavier? won’t it? in case thee is no display around and in order to bypass the initial Ubuntu setup?
source

Yes, this patch could be applied to any r32.x platform. (TX1/TX2/Xavier/Nano).

trying again:

sudo apt-get install dkms -y

then running

sudo [displaylinkdriverpackage 5.2.14].run
sudo ./displaylink-driver-5.2.14.run 
[sudo] password for nvidia: 
Verifying archive integrity...  100%   All good.
Uncompressing DisplayLink Linux Driver 5.2.14  100%  
DisplayLink Linux Software 5.2.14 install script called: install
Distribution discovered: Ubuntu 18.04.4 LTS
Installing
Configuring EVDI DKMS module
Registering EVDI kernel module with DKMS
Building EVDI kernel module with DKMS
Installing EVDI kernel module to kernel tree
EVDI kernel module built successfully
Installing x64-ubuntu-1604/DisplayLinkManager
Installing libraries
Installing firmware packages
Installing licence file
Adding udev rule for DisplayLink DL-3xxx/4xxx/5xxx/6xxx devices

Please read the FAQ
http://support.displaylink.com/knowledgebase/topics/103927-troubleshooting-ubuntu
Installation complete!

it says that all installed fine, but it won’t work when connecting a display.
a Displaylink device appears at lsusb outputs, but not at

xrandr --listproviders