El Viernes pasado me enviaron una notebook que voy a usar en el trabajo nuevo, la misma en cuestión es una Lenovo Thinkpad L15 Gen2 (SSD de 240gb, 16gb RAM, Intel I5), la cual como era de esperarse traia el clasico Windows 10 =) y como también era de esperarse tuve la necesidad automatica de formatearla e instalarle Linux Mint en su ultima versión.
Asi que procedi a descargar Linux Mint desde el siguiente sitio:
https://linuxmint.com/download.php
Y fiel a mi filosofia de “util y economico” elegi la opción que elijo siempre para entorno de escritorio: XFCE, teniendo en cuenta que los DNS de Fibertel (ahora Personal) están funcionando muy pero muy mal, la descarga de la imagén ISO me llevo aproximadamente 3 horas (si todo funcionase bien, serian menos de 10 minutos pero es mucho pedir).
Una vez finalizada la descarga y mientras quemaba la ISO en una memoria USB usando la misma herramienta para escribir imagenes en USB que viene con Linux Mint, en mi PC de escritorio, revise la instalación de Windows 10 que venia por defecto en la notebook y cuando quise cambiar la resolución no encontraba la opción de 1920*1080, que daba por descontado que tenia, asi que para probar procedi a buscar e instalar el driver de video de Lenovo que me costo bastante de encontrar (el sitio de descargas de Lenovo no es para nada amigable) y logre cambiar la definición, sin embargo cuando reinicie la notebook no puede volver a cambiar la definición pero como no tenia interes en usar Windows y luego de googlear con que teclas entrar a la BIOS y el Boot Selector (F1 para acceder al BIOS y F12 para acceder al Boot Selector) pude levantar la memoria USB y arrancar Linux Mint en su modo “Live USB” para proceder a instalar.
Sin embargo y como es lo primero que hago cada vez que instalo Linux en cualquier dispositivo, cuando me quiero conectar a mi red WiFi, Linux no encuentra ninguna placa de red por lo tanto y viendo que la notebook tiene una entrada RJ45, conecto un cable de ethernet al switch de casa y… nada, entonces reinicie la notebook y volvi a ejecutar Mint en modo de compatibilidad y nuevamente… nada. Todo indicaba que mi amado Linux Mint habia fallado al reconocer mi hardware y no habia drivers, y ahi donde Mint habia fallado Windows no y estaba condenado a usar Windows, la frustración era tremenda.
Volviendo a Windows 10

Bueno, aca estamos con un Windows 10 que detecta WiFi, tiene un tema extraño con la resolución, la zona horaria se sincroniza mal y a pesar de tener el driver de video de Intel instalado por alguna razon a pesar de tener 16 gigas de RAM y un I5 funciona lento, se siente como si Windows 10 le quedara “grande” a tremendo hardware por lo tanto me pregunte ‘a ver a ver ¿qué paso?’

Manos a la obra y a investigar, lo primero fue revisar la zona horaria que estaba en la zona de Guadalajara, Mexico y fue solo cambiar a la zona horaria de Buenos Aires, Argentina.
Luego baje el parche de idioma para pasarla a Inglés, ya que me desacostumbre a tener mis UI en español y por ultimo revisar porque solo pude cambiar la definición a Full HD, una sola vez.
Al final el parche de idioma no se aplica en toda la UI (no sabia eso) y mi notebook quedo en una especie de spanglish medio extraño que me molestaba demasiado, la definición no logre cambiarla (un compañero con la misma notebook y casi los mismos problemas me explico más tarde que habia que cambiar la cantidad de memoria asignada del video de 256mb a 512mb en el BIOS pero no llegue tan lejos) asi que más frustrado que el día anterior y preocupado porque no lo veia como un entorno de trabajo viable para el día a día, procedi a… salir, comer hamburguesas y franui con la genia co-autora de este blog @dllano =)
El día siguiente…
Hasta este momento Windows 10 no funcionaba muy bien y estaba corto de ideas luego de una semana agotadora a nivel laboral y otras cosas, sin embargo decidi darle un intento más y en el peor de los casos como hacia años atras comenzar a personalizar Windows desde el viejo y querido registro de sistema (regedit) pero por otro lado todavia no queria descartar la idea de instalar Linux, asi que volvimos a San Google a buscar posibles soluciones y luego de estar unas buenas horas googleando diferentes combinaciones y encontrando respuestas en el foro de Linux Mint, llegue a estos dos articulos:
https://forums.linuxmint.com/viewtopic.php?f=49&t=357339
https://forums.linuxmint.com/viewtopic.php?p=2106536
Con ambos articulos y armado de resolución (me gusta creer que es valor…) volvi a instalar Linux Mint.
Sera Linux o no sera.

El driver de red
Armado con nuevo conocimiento y ganas de que Linux Mint funcione en la notebook, levante el USB flash con Mint de nuevo, tome el cable USB de mi Motorola G6 Plus y en ajustes de Android active el modo “USB tethering”.
Al conectar el Moto G en ese modo via USB a la notebook con Linux en modo live tomo el tethering como si fuese una conexión cableada de red, mientras que el dispositivo movil se alimentaba de mi conexión WiFi, es decir… tenia internet via USB sin utilizar la placa de red.
Teniendo una conexión de red, procedi a instalar Linux Mint en su ultima versión, en Inglés con teclado en español latinoamerica con codecs privativos y todas las suites que vienen por defecto en Mint y que en general requieren paquetes de los repositorios de Ubuntu.
Una vez finalizada la instalación y conociendo el truco del tethering, reinicio la notebook y dejo el telefono conectado, inicio sesión, abro una terminal y procedo a ejecutar los siguientes comandos para actualizar el kernel y rogar que reconozco la placa de red con la ultima versión del kernel de Linux.
sudo add-apt-repository ppa:kelebek333/kablosuz
sudo apt-get update
sudo apt install rtw89-dkms
Y si bien actualizar el kernel fue un paso fundamental para que la placa de red sea reconocida por Linux y funcione, no lo soluciono de forma instantanea por lo tanto procedi con la solución del segundo link que era instalar el paquete .deb usando Gdebi (Graphic Deb Installer) que aparece en el siguiente link
http://ppa.launchpad.net/kelebek333/kablosuz/ubuntu/pool/main/r/rtw89-dkms/
Ahora si, reconocia la placa de red pero no encontraba ninguna red ni reconocia la conexión RJ45, seguia funcionando mediante tethering, por lo cual reinicie y no tuve exito.
La frustración en este punto era mucho menor que ayer porque estaba seguro que la solución estaba ahi nomás y ya lo estaba por arreglar, por lo tanto procedi a revisar el siguiente repositorio de Github que habia encontrado en los foros de Linux Mint
https://github.com/lwfinger/rtw89
Segui las instrucciones del README.md y previo a compilar ejecute el siguiente comando
inxi -Fxz
sudo dmesg | grep rtw
sudo modprobe rtw89pci
Y mi placa de red Realtek se encontraba entre los drivers a compilar pero la respuesta que me daba mi consola era diferente a la que veia en la solución del Issue que esta en este link
https://github.com/lwfinger/rtw89/issues/2
Asi que una vez clonado el repo de github, procedi a cambiar todas las frecuencias en el archivo core.c (https://github.com/lwfinger/rtw89/blob/main/core.c)
Y modificar las funciones “rtw89_get_channel_params” y “rtw89_get_channel” para que tome los parametros usando las frecuencias toleradas por mi placa de red y a partir de ahi utilize los canales de cualquier red que registre, permitiendome en teoria conectarme a internet de forma inalambrica o via ethernet.
Compilamos… reiniciamos y… ¡FUNCIONA! podia ver todas las redes WiFi disponibles y conectarme a mi red hogareña.
Mi problema principal estaba solucionado =)

La resolución en Full HD (1920*1080)
Solucionado el problema de red al igual que pasaba en Windows la resolución no era Full HD pero conociendo este problema desde que usaba monitores CRT e instale Linux por primera vez allá en 2008, ejecute los siguientes comandos
gtf 1920 1080 60
xrandr --newmode "FullHD" 172.80 1920 2040 2248 2576 1080 1081 1084 1118 -HSync +Vsync
xrandr --addmode eDP-1 "FullHD"
xrandr --output eDP-1 --mode "FullHD"
Y automaticamente mi resolución cambio a 1920*1080, sin embargo y como es un error más conocido que Cositorto(? no me quedaba otra que configurar el cron para que cada vez que inicie sesion ejecute los comandos.
Cree un script que llame “video.sh” le di los permisos de ejecución correspondientes y luego ejecute
crontab -e
Dentro del archivo crontab, agregue al final de todo la siguiente linea
@reboot bash /home/juan/video.sh
Guarde, reinicie y automaticamente cuando inicie sesión la resolución se cambio a 1920*1080.
Conclusión
Si bien me diverti mucho aprendiendo a hacer tethering via USB, escribiendo codigo en C y armando scripts para modificar resoluciones, estando en el año 2022 me cuesta creer que los fabricantes de notebooks y más aún un modelo conocido como “la notebook ideal para programadores” como es Thinkpad todavia tenga problemas de compatibilidad.
Para ser que Microsoft ahora “ama el software libre” es claro que su modelo de monopolizar los controladores de hardware mediante licencias arcaicas para obligar a sus usuarios a utilizar su muy buggeado sistema operativo sigue tan vigente como las ultimas cuatro decadas.
Esto fue todo =) si te gusto, dejame un comentario o comparti este articulo n.n
El codigo y drivers de todo este articulo puede encontrarse en el siguiente repo de github
Para cerrar dejo unas fotos de la notebook corriendo Linux Mint en Full HD y conectada a WiFi
https://github.com/jpromanonet/Thinkpad_L15_Linux_Drivers

