DisplayLink / evdi

Extensible Virtual Display Interface
MIT License
704 stars 184 forks source link

Frame buffer device not being created #437

Open CalamariAce opened 10 months ago

CalamariAce commented 10 months ago

I got a DisplayLink adapter to connect to my raspberry pi 4b. The evdi driver is activated and recognizes the adapter, however a frame buffer device is never created and I don't see any obvious errors that explain why. I increased the log levels and tried two different HDMI monitors, but neither one create frame buffer devices. Any idea why a framebuffer isn't being created?

Adapter: Bus 001 Device 017: ID 17e9:4301 DisplayLink USB3 to HDMI

Kernel logs from attaching the adapter:

Nov 16 05:05:25 modem kernel: [ 3904.504528] usb 1-1.4.1.4: USB disconnect, device number 12
Nov 16 05:05:26 modem kernel: [ 3906.260943] usb 1-1.4.1.4: new high-speed USB device number 19 using xhci_hcd
Nov 16 05:05:26 modem kernel: [ 3906.367788] usb 1-1.4.1.4: New USB device found, idVendor=2109, idProduct=2813, bcdDevice=90.21
Nov 16 05:05:26 modem kernel: [ 3906.367807] usb 1-1.4.1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Nov 16 05:05:26 modem kernel: [ 3906.367814] usb 1-1.4.1.4: Product: USB2.0 Hub
Nov 16 05:05:26 modem kernel: [ 3906.367818] usb 1-1.4.1.4: Manufacturer: VIA Labs, Inc.         
Nov 16 05:05:26 modem kernel: [ 3906.369349] hub 1-1.4.1.4:1.0: USB hub found
Nov 16 05:05:26 modem kernel: [ 3906.370335] hub 1-1.4.1.4:1.0: 4 ports detected
Nov 16 05:05:30 modem kernel: [ 3909.532879] usb 1-1.4.1.4.1: new high-speed USB device number 20 using xhci_hcd
Nov 16 05:05:30 modem kernel: [ 3909.646078] usb 1-1.4.1.4.1: New USB device found, idVendor=17e9, idProduct=4301, bcdDevice=36.05
Nov 16 05:05:30 modem kernel: [ 3909.646098] usb 1-1.4.1.4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Nov 16 05:05:30 modem kernel: [ 3909.646104] usb 1-1.4.1.4.1: Product: USB3 to HDMI
Nov 16 05:05:30 modem kernel: [ 3909.646109] usb 1-1.4.1.4.1: Manufacturer: DisplayLink
Nov 16 05:05:30 modem kernel: [ 3909.646114] usb 1-1.4.1.4.1: SerialNumber: U3HD[REDACTED]
Nov 16 05:05:30 modem kernel: [ 3909.660931] usb 1-1.4.1.4.1: Warning! Unlikely big volume range (=511), cval->res is probably wrong.
Nov 16 05:05:30 modem kernel: [ 3909.660946] usb 1-1.4.1.4.1: [15] FU [USB AUDIO Playback Volume] ch = 6, val = -8176/0/16
Nov 16 05:05:30 modem kernel: [ 3909.662301] usb 1-1.4.1.4.1: Warning! Unlikely big volume range (=767), cval->res is probably wrong.
Nov 16 05:05:30 modem kernel: [ 3909.662308] usb 1-1.4.1.4.1: [12] FU [Mic Capture Volume] ch = 2, val = -4592/7680/16

Kernel logs from attaching the HDMI device to the adapter:

Nov 16 05:07:27 modem kernel: [ 4026.678112] evdi: [I] Attaching to usb:1-1.4.1.4.1
Nov 16 05:07:34 modem kernel: [ 4033.642915] [drm:drm_stub_open [drm]] 
Nov 16 05:07:34 modem kernel: [ 4033.643058] [drm:drm_open [drm]] comm="DesktopManagerE", pid=21786, minor=0
Nov 16 05:07:34 modem kernel: [ 4033.643134] evdi: [I] (card0) Opened by Task 21786 (DesktopManagerE) of process 21777 (DisplayLinkMana)
Nov 16 05:07:34 modem kernel: [ 4033.643148] [drm:drm_ioctl [drm]] comm="DesktopManagerE" pid=21786, dev=0xe200, auth=1, DRM_IOCTL_AUTH_MAGIC
Nov 16 05:07:34 modem kernel: [ 4033.643222] evdi evdi.0: [drm:drm_authmagic [drm]] 0
Nov 16 05:07:34 modem kernel: [ 4033.643291] [drm:drm_ioctl [drm]] comm="DesktopManagerE", pid=21786, ret=-22
Nov 16 05:07:34 modem kernel: [ 4033.643426] [drm:drm_ioctl [drm]] comm="DesktopManagerE" pid=21786, dev=0xe200, auth=1, DRM_IOCTL_DROP_MASTER
Nov 16 05:07:34 modem kernel: [ 4033.643501] [drm:drm_ioctl [drm]] comm="DesktopManagerE" pid=21786, dev=0xe200, auth=1, DRM_IOCTL_AUTH_MAGIC
Nov 16 05:07:34 modem kernel: [ 4033.643570] [drm:drm_ioctl [drm]] comm="DesktopManagerE", pid=21786, ret=-13
Nov 16 05:07:34 modem kernel: [ 4033.643689] [drm:drm_ioctl [drm]] comm="DesktopManagerE" pid=21786, dev=0xe200, auth=1, DRM_IOCTL_DROP_MASTER
Nov 16 05:07:34 modem kernel: [ 4033.643759] [drm:drm_ioctl [drm]] comm="DesktopManagerE", pid=21786, ret=-22
Nov 16 05:07:34 modem kernel: [ 4033.643829] [drm:drm_ioctl [drm]] comm="DesktopManagerE" pid=21786, dev=0xe200, auth=1, DRM_IOCTL_VERSION
Nov 16 05:07:34 modem kernel: [ 4033.643950] [drm:drm_ioctl [drm]] comm="DesktopManagerE" pid=21786, dev=0xe200, auth=1, DRM_IOCTL_VERSION
Nov 16 05:07:34 modem kernel: [ 4033.645819] [drm:drm_ioctl [drm]] comm="DesktopManagerE" pid=21786, dev=0xe200, auth=1, EVDI_CONNECT
Nov 16 05:07:34 modem kernel: [ 4033.645949] evdi: [V] evdi_painter_connect_ioctl:978 
Nov 16 05:07:34 modem kernel: [ 4033.645959] evdi: [V] evdi_painter_connect:889 Painter lock
Nov 16 05:07:34 modem kernel: [ 4033.646792] evdi: [I] (card0) Added i2c adapter bus number 22
Nov 16 05:07:34 modem kernel: [ 4033.646812] evdi: [V] evdi_painter_connect:903 Painter unlock
Nov 16 05:07:34 modem kernel: [ 4033.646818] evdi: [I] (card0) Connected with Task 21786 (DesktopManagerE) of process 21777 (DisplayLinkMana)
Nov 16 05:07:34 modem kernel: [ 4033.646831] evdi: [V] evdi_detect:93 
Nov 16 05:07:34 modem kernel: [ 4033.646836] evdi: [I] (card0) Connector state: connected
Nov 16 05:07:34 modem kernel: [ 4033.646845] evdi evdi.0: [drm:check_connector_changed [drm_kms_helper]] [CONNECTOR:37:DVI-I-1] status updated from disconnected to connected
Nov 16 05:07:34 modem kernel: [ 4033.646929] evdi evdi.0: [drm:check_connector_changed [drm_kms_helper]] [CONNECTOR:37:DVI-I-1] Changed epoch counter 13 => 14
Nov 16 05:07:34 modem kernel: [ 4033.646966] [drm:drm_mode_object_get [drm]] OBJ ID: 37 (2)
Nov 16 05:07:34 modem kernel: [ 4033.647113] evdi evdi.0: [drm:drm_sysfs_connector_hotplug_event [drm]] [CONNECTOR:37:DVI-I-1] generating connector hotplug event
Nov 16 05:07:34 modem kernel: [ 4033.647221] [drm:drm_mode_object_put.part.5 [drm]] OBJ ID: 37 (2)

Thanks

displaylink-mlukaszek commented 10 months ago

Have you tried using a fuller desktop environment like GNOME? Sounds like the compositor used by Raspberry Pi OS does not support dynamic GPU attach/detach.

CalamariAce commented 10 months ago

Interesting - no, I haven't tried that yet. I saw posts of other Pi users that said DisplayLink worked for them but none of them mentioned switching to a full desktop env, which I'd prefer not doing to minimize the footprint.

Is the frame buffer not something that would be created by the kernel on its own, independent of the desktop env? Or does the driver expect the desktop env instruct the kernel to create the framebuffer on some trigger?

succo69 commented 6 months ago

in the end, is a fbX device expected to be created? I'd like to use my adapter with a project needing a framebuffer device, but I end with only /dev/fb0 (even if i have video output from the screen attached to the usb) right now I'm using ubuntu (budgie) noble with 6.8.0-11-generic kernel