Hace unos meses compré una Dell XPS 13. Según había leído, es una de las mejores ultrabooks de 2015. Dell incluso tienen un modelo que sale con Ubuntu de fábrica, así que me imagine que Linux iba a estar bien soportado. Dado que ocasionalmente necesito conexión a redes cableadas, y más frecuentemente conexión VGA o HDMI, decidí al mismo tiempo comprar el adaptador 4 en 1 de Dell, que proporciona todo esto, sin perder el puerto USB.
Desafortunadamente, luego de comprarlo descubrí que este adaptador usa tecnología DisplayLink para sus puertos VGA/HDMI, y de hecho, el driver es proporcionado por esta empresa y no por Dell. Hasta hace unos días, no existía soporte para Linux, cualquiera sea la versión que estuvieran usando, pero el 3 de Agosto de 2015, DisplayLink publicó un driver para Ubuntu, aclarando que podría ser utilizado para crear una versión para otras distribuciones de Linux.
Dado que yo uso Fedora/CentOS/RHEL, y considerando que hace casi dos meses que no puedo usar los puertos VGA y HDMI de este adaptador que compre, decidí dedicar el tiempo a crear el modulo y rpm para Fedora. Uno de los requerimientos de este modulo es kernel versión 3.14 o mayor, por lo que no funciona en CentOS/RHEL.
El rpm en cuestión utiliza DKMS para recompilar automaticamente el módulo cuando el kernel es actualizado. Además incluí una regla de udev para que el servicio de systemd inície cuando el adaptador es enchufado, y se detenga cuando es desenchufado, algo que no viene en la versión oficial de DisplayLink para Ubuntu. Funciona bien en Fedora 22, probado con los kernels kernel-4.1.4-200.fc22.x86_64 y kernel-4.1.3-201.fc22.x86_64.
IMPORTANTE:
La versión actual del rpm es 1.0.335, con el driver actualizado de DisplayLink. El RPM fue creado en FC23, con el kernel4.2.7-300.fc23.x86_64. Usar el siguiente link de descarga, reemplazando en el proceso detallado a continuación http://nothen.com.ar/resources/displaylink-1.0.335-1.x86_64.rpm:
Para instalar el RPM:
- Importar la llave GPG con que está firmado el rpm:
[root@xps13 ~]# rpm --import http://bit.ly/1J3EjlG
- Descargar el rpm:
[root@xps13 ~]# wget -q http://nothen.com.ar/resources/displaylink-1.0.68-2.x86_64.rpm
- Antes de instalarlo, verifica que no hay ningún truco escondido en el RPM.Información básica:
[root@xps13 ~]# rpm -qip displaylink-1.0.68-2.x86_64.rpm Name : displaylink Version : 1.0.68 Release : 2 Architecture: x86_64 Install Date: (not installed) Group : User Interface/X Hardware Support Size : 7416983 License : GPL v2.0, LGPL v2.1 and others Signature : RSA/SHA256, Wed 19 Aug 2015 05:42:29 PM ART, Key ID 3b2d50d677f09132 Source RPM : displaylink-1.0.68-2.src.rpm Build Date : Wed 19 Aug 2015 05:42:04 PM ART Build Host : xps13.nothen.com.ar Relocations : (not relocatable) Packager : Eric Nothen URL : http://nothen.com.ar Summary : DisplayLink VGA/HDMI driver for Dell's 4-in-1 adapter (DA100) Description : This package installs the DisplayLink "Plug and Display" module for the USB 3.0 to HDMI/VGA/Ethernet/USB2.0 Dell Adapter (DA100). Based on DisplayLink's officially supported Ubuntu driver, and repackaged for Fedora/CentOS/RHEL distros. Module is added to DKMS so that it's recompiled on future kernel updates.
Archivos que instala el rpm:
[root@xps13 ~]# rpm -qlp displaylink-1.0.68-2.x86_64.rpm /etc/systemd/system/displaylink.service /etc/udev/rules.d/99-displaylink.rules /usr/lib/displaylink /usr/lib/displaylink/DLInstrumentationDirectoryLock /usr/lib/displaylink/DisplayLinkManager /usr/lib/displaylink/LICENSE /usr/lib/displaylink/firefly-monitor-release.spkg /usr/lib/displaylink/libevdi.so /usr/lib/displaylink/libusb-1.0.so.0.1.0 /usr/src/evdi-1.0.68 /usr/src/evdi-1.0.68/Kconfig /usr/src/evdi-1.0.68/LICENSE /usr/src/evdi-1.0.68/Makefile /usr/src/evdi-1.0.68/dkms.conf /usr/src/evdi-1.0.68/evdi.mod.c /usr/src/evdi-1.0.68/evdi_connector.c /usr/src/evdi-1.0.68/evdi_debug.c /usr/src/evdi-1.0.68/evdi_debug.h /usr/src/evdi-1.0.68/evdi_drv.c /usr/src/evdi-1.0.68/evdi_drv.h /usr/src/evdi-1.0.68/evdi_encoder.c /usr/src/evdi-1.0.68/evdi_fb.c /usr/src/evdi-1.0.68/evdi_gem.c /usr/src/evdi-1.0.68/evdi_ioctl.h /usr/src/evdi-1.0.68/evdi_main.c /usr/src/evdi-1.0.68/evdi_modeset.c /usr/src/evdi-1.0.68/evdi_painter.c /usr/src/evdi-1.0.68/evdi_stats.c /var/log/displaylink
Scripts que corre el rpm:
[root@xps13 ~]# rpm -qp --scripts displaylink-1.0.68-2.x86_64.rpm postinstall scriptlet (using /bin/sh): /usr/bin/systemctl daemon-reload /usr/bin/systemctl -q is-enabled dkms.service || /usr/bin/systemctl enable dkms.service for kernel in $(ls /lib/modules) ;do /sbin/dkms install evdi/1.0.68 -k $kernel >> /var/log/displaylink/displaylink.log 2>&1 done preuninstall scriptlet (using /bin/sh): if [ $1 -eq 0 ] ;then /usr/bin/systemctl -q is-active displaylink.service && /usr/bin/systemctl stop displaylink.service /sbin/dkms remove evdi/1.0.68 --all >> /var/log/displaylink/displaylink.log fi postuninstall scriptlet (using /bin/sh): /usr/bin/systemctl daemon-reload
Triggers?:
[root@xps13 ~]# rpm -qp --triggers displaylink-1.0.68-2.x86_64.rpm [root@xps13 ~]#
- Todo en orden? Bien, instala el rpm:
[root@xps13 ~]# rpm -ivh displaylink-1.0.68-2.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:displaylink-1.0.68-2 ################################# [100%] [root@xps13 ~]#
- Verifica que el modulo haya sido compilado correctamente:
[root@xps13 ~]# ll /lib/modules/$(uname -r)/extra/evdi.ko -rw-r--r--. 1 root root 63072 Aug 14 01:36 /lib/modules/4.1.4-200.fc22.x86_64/extra/evdi.ko
- Eso es todo! Cuando enchufes el adaptador, verifica que el servicio displaylink haya sido iniciado automaticamente:
Para los que prefieran una instalación manual, en vez del rpm, acá va un instructivo con los pasos necesarios. Recuerden instalar dkms y kernel-devel antes de empezar, si es que no los tienen instalados todavía.
- Descargar el tar con los archivos para compilar el módulo:
[root@xps13 ~]# wget -q http://nothen.com.ar/resources/displaylink-1.0.68.txz
- Descomprimir el modulo:
[root@xps13 ~]# tar -xJvf displaylink-1.0.68.txz -C / usr/src/evdi-1.0.68/ usr/src/evdi-1.0.68/evdi_drv.c usr/src/evdi-1.0.68/evdi_drv.h usr/src/evdi-1.0.68/evdi_connector.c usr/src/evdi-1.0.68/dkms.conf usr/src/evdi-1.0.68/evdi_painter.c usr/src/evdi-1.0.68/evdi_debug.c usr/src/evdi-1.0.68/evdi_modeset.c usr/src/evdi-1.0.68/evdi_ioctl.h usr/src/evdi-1.0.68/Kconfig usr/src/evdi-1.0.68/evdi_stats.c usr/src/evdi-1.0.68/Makefile usr/src/evdi-1.0.68/evdi.mod.c usr/src/evdi-1.0.68/evdi_debug.h usr/src/evdi-1.0.68/evdi_gem.c usr/src/evdi-1.0.68/evdi_encoder.c usr/src/evdi-1.0.68/evdi_main.c usr/src/evdi-1.0.68/LICENSE usr/src/evdi-1.0.68/evdi_fb.c usr/lib/displaylink/ usr/lib/displaylink/firefly-monitor-release.spkg usr/lib/displaylink/DLInstrumentationDirectoryLock usr/lib/displaylink/DisplayLinkManager usr/lib/displaylink/libusb-1.0.so.0.1.0 usr/lib/displaylink/libevdi.so usr/lib/displaylink/LICENSE var/log/displaylink/ var/log/displaylink/displaylink.log etc/systemd/system/displaylink.service etc/udev/rules.d/99-displaylink.rules [root@xps13 ~]#
- Compilar el modulo para el kernel que está booteado en este momento (opcionalmente podrían compilarlo para otros):
[root@xps13 ~]# dkms install evdi/1.0.68 Creating symlink /var/lib/dkms/evdi/1.0.68/source -> /usr/src/evdi-1.0.68 DKMS: add completed. Kernel preparation unnecessary for this kernel. Skipping... Building module: cleaning build area...(bad exit status: 2) make KERNELRELEASE=4.1.4-200.fc22.x86_64 all INCLUDEDIR=/lib/modules/4.1.4-200.fc22.x86_64/build/include KVERSION=4.1.4-200.fc22.x86_64 DKMS_BUILD=1... cleaning build area...(bad exit status: 2) DKMS: build completed. evdi.ko: Running module version sanity check. - Original module - No original module exists within this kernel - Installation - Installing to /lib/modules/4.1.4-200.fc22.x86_64/extra/ Adding any weak-modules depmod... DKMS: install completed. [root@xps13 ~]#
Al igual que en la instalación del RPM, recuerden verificar que el servicio displaylink es iniciado cuando enchufan el adaptador, y que el servicio dkms está habilitado y corriendo, para que siga recompilando el módulo cada vez que se actualiza el kernel.
One thought on “Soporte para adaptadores DisplayLink en Fedora 22”
Hola: Gracias por el aporte, el hecho es que realice todos los pasos y no me funciono.
Dio asi:
systemctl status displaylink.service
● displaylink.service – DisplayLink Manager Service
Loaded: loaded (/etc/systemd/system/displaylink.service; static; vendor preset: disabled)
Active: inactive (dead)
[root@localhost ~]#
En mi caso, tengo una dell con fedora 22 y la quiero conectar a un plasma o monitor para dar charlas.
Te agradeceria si pudieras ayudarme.