"Después del juego es antes del juego"
Sepp Herberger

martes, 10 de julio de 2018

Ubuntu 18: configuración pantalla y sonido para Siatic (HP ProDesk 600 G1 SFF)

En estos 2 artículos anteriores VGA en HP Prodesk y Clonado de monitor y cañón vimos como lograr poner en Ubuntu 14 la resolución adecuada y la pantalla/cañón clonados en los PC HP ProDesk 600 G1 SFF que tenemos en las Siatics. Básicamente usábamos "xrandr" y un script de inicio en /etc/xdg/autostart para hacerlo.

En la imagen de Ubuntu 18 nos viene de serie el driver propietario nvidia instalado, que nos permite configurar fácilmente un xorg.conf a medida mediante el comando nvidia-settings. La configuración óptima para nuestra instalación de Siatics es:
# cat /etc/X11/xorg.conf.d/10-Siatic-xorg.conf

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "CRT-1"
    Option         "metamodes" "HDMI-0: 1280x800 +0+0, VGA-0: 1280x800 +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection
Es decir, se ponen ambos dispositivos con resolución 1280x800 e imagen clonada. Al estar en xorg.conf.d esto se ejecuta desde el arranque de las X ya en el mismo lightdm.

Un problema adicional que tuvimos anteriormente es que hay instalaciones de Siatic con un cable VGA con terminadores de color negro que tiene menor calidad que el cable normal, con terminadores de color azul. Eso hacía que no se detectasen bien las propiedades del monitor y se quedase en resolución máxima de 1024x768.

Para solucionar eso añadíamos con xrandr varios "modelines" manualmente indicando los parámetros para resoluciones mas altas. Ahora eso no es necesario, supongo que los compañeros que han hecho la imagen de Ubuntu 18 han metido la definición de esos modelines en algún lado o bien el driver nvidia detecta mejor, ya que ahora xrandr si que muestra todas la resoluciones posibles independientemente del cable usado.

La mejor manera de aplicar esta configuración es mediante una regla puppet del tipo:
class xubuntu_18_siatic {
  .....
  .....
  #================================================================
  #Ponemos un xorg.conf.d que fija resolucion 1280x800 clonada en ambas
  #salidas de video.
  file {"/etc/X11/xorg.conf.d/10-Siatic-xorg.conf":
    owner => root , group => root , mode => 644 ,
    source => "puppet:///modules/xubuntu18_siatic/10-Siatic-xorg.conf",
  } 
  ....
  ....
}

En cuanto al sonido teníamos un problema distinto: debíamos anular la salida de sonido de la tarjeta nvidia ya que eso confundía a los usuarios y provocaba que hubiese muchas veces problemas. Como vemos con lspci hay demasiadas tarjetas de sonido y eso despista:
# lspci | grep -i audio
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 04)
01:00.1 Audio device: VIDIA Corporation High Definition Audio Controller (rev a1)
El método usado con Ubuntu 14 pasaba por hacer en /etc/rc.local un "remove" del dispositivo 01:00.1 durante el arranque. En esta entrada se puede ver como se hacía.

Debido a que en Ubuntu 18 no hay /etc/rc.local de forma nativa (aunque puede activarse) he encontrado una forma bastante elegante de anular la tarjeta de sonido nvidia, con un fichero en rules.d:
# cat /etc/udev/rules.d/70-audio-nvidia-off.rules
ACTION=="add", KERNEL=="0000:01:00.1", SUBSYSTEM=="pci", RUN+="/bin/sh -c 'echo 1 > /sys/bus/pci/devices/0000:01:00.1/remove'"
De igual forma podemos distribuirlo a todas las Siatics mediante puppet:
   ....
   ....
   #================================================================
   # Regla udev para quitar el audio nvidia y dejar solo el audio de placa base

   file {"/etc/udev/rules.d/70-audio-nvidia-off.rules":
      owner => root , group => root , mode => 644 ,  
      source => "puppet:///modules/xubuntu18_siatic_/70-audio-nvidia-off.rules"
   }
   ....
   ....
Esté método de "quitar" dispositivos PCI podremos también emplearlo en otros tipos de máquinas que tengamos en el centro, como infolabs o ltsp, y así poder quitar no solo dispositivos de sonido que no se usen, sino tambien tarjetas wifi y otros artefactos inútiles.

1 comentario:

  1. Muchas gracias Alfonso, me ha venido genial para quitar el hardware de sonido que no nos vale en siatic, infolab y ltsp. También he anulado así la tarjeta wifi que traen los infolab.

    Como siempre, muchas gracias por compartir tu trabajo.

    ResponderEliminar