udl(4) patch for SIIG USB 2.0 DVI/VGA Pro support
- Reply: Archimedes Gaviola : "Re: udl(4) patch for SIIG USB 2.0 DVI/VGA Pro support"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 05 Sep 2023 15:12:08 UTC
Hi, I would like to submit some patches below for the SIIG USB 2.0 DVI/VGA Pro device support for the udl(4) video driver. You can see actual device here https://www.siig.com/usb-2-0-to-dvi-vga-pro.html. This has been tested on both 14.0-ALPHA4 and 15.0-CURRENT in a compiled kernel and in the loadable module. Either way both are working. There are two files being patched (1) /usr/src/sys/dev/usb/usbdevs and (2) /usr/src/sys/dev/usb/video/udl.c. These changes apply for both 14.0-ALPHA4 and 15.0-CURRENT. root@fbsd14a4:~ # uname -a FreeBSD fbsd14a4 14.0-ALPHA4 FreeBSD 14.0-ALPHA4 amd64 1400097 #0 stable/14-n265026-4c3f144478d4: Fri Sep 1 05:47:56 UTC 2023 root@releng1.nyi.freebsd.org:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64 root@fbsd15:~ # uname -a FreeBSD fbsd15 15.0-CURRENT FreeBSD 15.0-CURRENT i386 1500000 #0 main-n265091-e04c4b4a369d: Thu Aug 31 03:48:01 UTC 2023 root@releng3.nyi.freebsd.org:/usr/obj/usr/src/i386.i386/sys/GENERIC i386 root@fbsd14a4:~ # diff -Nur /usr/src/sys/dev/usb/usbdevs.orig /usr/src/sys/dev/usb/usbdevs --- /usr/src/sys/dev/usb/usbdevs.orig 2023-09-03 04:16:01.453679000 +0800 +++ /usr/src/sys/dev/usb/usbdevs 2023-09-03 09:23:33.848897000 +0800 @@ -1808,6 +1808,7 @@ product DISPLAYLINK M01061 0x01e2 Lenovo DVI product DISPLAYLINK SWDVI 0x024c SUNWEIT DVI product DISPLAYLINK NBDOCK 0x0215 VideoHome NBdock1920 +product DISPLAYLINK AN2440D3 0x028f SIIG USB 2.0 DVI/VGA Pro product DISPLAYLINK LUM70 0x02a9 Lilliput UM-70 product DISPLAYLINK DVI_19 0x0360 USB to DVI-19 product DISPLAYLINK UM7X0 0x401a nanovision MiMo root@fbsd14a4:~ # diff -Nur /usr/src/sys/dev/usb/video/udl.c.orig /usr/src/sys/dev/usb/video/udl.c --- /usr/src/sys/dev/usb/video/udl.c.orig 2023-09-03 04:15:21.204875000 +0800 +++ /usr/src/sys/dev/usb/video/udl.c 2023-09-03 09:25:23.893228000 +0800 @@ -179,6 +179,7 @@ {USB_VPI(USB_VENDOR_DISPLAYLINK, USB_PRODUCT_DISPLAYLINK_LT1421, DLUNK)}, {USB_VPI(USB_VENDOR_DISPLAYLINK, USB_PRODUCT_DISPLAYLINK_ITEC, DL165)}, {USB_VPI(USB_VENDOR_DISPLAYLINK, USB_PRODUCT_DISPLAYLINK_DVI_19, DL165)}, + {USB_VPI(USB_VENDOR_DISPLAYLINK, USB_PRODUCT_DISPLAYLINK_AN2440D3, DL195)}, Some relevant info below upon detection of the device after patched (only 14.0-ALPHA4 is shown as 15.0-CURRENT is the same). Because the videomode driver is also a dependency to the udl(4) driver, it is also able to detect my Dell VGA monitor for available screen resolutions and video modes. root@fbsd14a4:~ # kldload udl root@fbsd14a4:~ # kldstat Id Refs Address Size Name 1 10 0xffffffff80200000 1d339a8 kernel 2 1 0xffffffff8261f000 3690 udl.ko 3 1 0xffffffff82623000 5028 videomode.ko root@fbsd14a4:~ # kldstat -v -n kernel | grep udl 107 udl/fbd 282 uhub/udl root@fbsd14a4:~ # dmesg ugen0.2: <DisplayLink AN2440D3> at usbus0 udl0 on uhub0 udl0: <DisplayLink AN2440D3, class 0/0, rev 1.10/0.01, addr 2> on usbus0 Vendor: [DEL] Dell Product: [2004] D1918H Serial number: GC2RW07C8PHX Manufactured 2019 Week 28 EDID Version 1.3 EDID Comment: Video Input: 68 Analog -0.7, 0.0V Separate syncs Gamma: 2.20 Max Size: 41 cm x 23 cm Features: 2a DPMS active-off RGB Preferred timing Chroma Info: Red X: 0.635 Red Y: 0.635 Grn X: 0.330 Grn Y: 0.627 Blu X: 0.155 Blu Y: 0.046 Wht X: 0.313 Wht Y: 0.329 Range: Horizontal: 30 - 83 kHz Vertical: 56 - 75 Hz Max Dot Clock: 135 MHz Video modes: 720x400 @ 70Hz (28320 738 846 900 412 414 449 -H +V) 640x480 @ 60Hz (25175 656 752 800 490 492 525 -H -V) 640x480 @ 75Hz (31500 656 720 840 481 484 500 -H -V) 800x600 @ 60Hz (40000 840 968 1056 601 605 628 +H +V) 800x600 @ 75Hz (49500 816 896 1056 601 604 625 +H +V) 1024x768 @ 60Hz (65000 1048 1184 1344 771 777 806 -H -V) 1024x768 @ 75Hz (78750 1040 1136 1312 769 772 800 +H +V) 1280x1024 @ 75Hz (135000 1296 1440 1688 1025 1028 1066 +H +V) 1366x768 @ 60Hz (85500 1436 1579 1792 771 774 798 +H +V) Preferred mode: 1366x768 @ 60Hz Number of extension blocks: 0 udl0: Mode selected 1280x1024 @ 75Hz fbd0 on udl0 root@fbsd14a4:~ # usbconfig -d ugen0.2 dump_device_desc ugen0.2: <DisplayLink AN2440D3> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (500mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0110 bDeviceClass = 0x0000 <Probed by interface class> bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x17e9 idProduct = 0x028f bcdDevice = 0x0001 iManufacturer = 0x0001 <DisplayLink> iProduct = 0x0002 <AN2440D3> iSerialNumber = 0x0003 <111018> bNumConfigurations = 0x0001 root@fbsd14a4:~ # sysctl -a | grep udl udl0 on uhub0 udl0: <DisplayLink AN2440D3, class 0/0, rev 1.10/0.01, addr 2> on usbus0 udl0: Mode selected 1280x1024 @ 75Hz fbd0 on udl0 device udl hw.usb.udl.fps: 25 hw.usb.udl.debug: 0 dev.fbd.0.%parent: udl0 dev.udl.0.mode: 17 dev.udl.0.mode_force: -1 dev.udl.0.chipid: 4 dev.udl.0.chipid_force: -1 dev.udl.0.%parent: uhub0 dev.udl.0.%pnpinfo: vendor=0x17e9 product=0x028f devclass=0x00 devsubclass=0x00 devproto=0x00 sernum="111018" release=0x0001 mode=host intclass=0xff intsubclass=0x00 intprotocol=0x00 dev.udl.0.%location: bus=0 hubaddr=1 port=1 devaddr=2 interface=0 ugen=ugen0.2 dev.udl.0.%driver: udl dev.udl.0.%desc: DisplayLink AN2440D3, class 0/0, rev 1.10/0.01, addr 2 dev.udl.%parent: Lastly, I would also submit a patch for the udl(4) manual for update. First, there's a need to include DL-195 in the description since this model is the chipset of SIIG USB 2.0 DVI/VGA Pro which is working as tested. Second, the udl(4) driver must be accompanied with the videomode driver otherwise kernel compilation will fail and third, adding the SIIG USB 2.0 DVI/VGA Pro device in the list. root@fbsd14a4:~ # diff -Nur udl-manual.orig udl-manual --- udl-manual.orig 2023-08-18 00:13:25.583021000 +0000 +++ udl-manual 2023-08-18 15:06:41.896163000 +0000 @@ -1,13 +1,14 @@ UDL(4) FreeBSD Kernel Interfaces Manual UDL(4) NAME - udl – DisplayLink DL-120 / DL-160 USB display devices + udl – DisplayLink DL-120 / DL-160 / DL-195 USB display devices SYNOPSIS - To compile this driver into the kernel, place the following line in your + To compile this driver into the kernel, place the following lines in your kernel configuration file: device udl + device videomode Alternatively, to load the driver as a module at boot time, place the following line in loader.conf(5): @@ -16,7 +17,7 @@ DESCRIPTION The udl driver supports USB display devices based on the DisplayLink - DL-120 / DL-160 graphic chip. + DL-120 / DL-160 / DL-195 graphic chip. HARDWARE The following devices should work: @@ -40,6 +41,7 @@ Unitek Y-2240 USB to DVI VideoHome NBdock1920 i-tec USB 2.0 Docking Station (USBDVIDOCK) + SIIG USB 2.0 DVI/VGA Pro Thanks, Archimedes