sábado, 29 de diciembre de 2018

¿Cómo emulo una placa de sonido Sound Blaster AWE-32 en DOSbox en Ubuntu?

En pleno aeropuerto De Gaulle en París, Juan Perón anuncia a los periodistas allí reunidos sobre su inminente regreso a la Argentina y explica cómo emular el clásico sonido MIDI de una placa AWE-32 en juegos MS-DOS emulados bajo DOSbox en Ubuntu.

¡Compañeros!

Indudablemente que un sistema operativo de alcance popular como los es GNU con Linux - y Ubuntu como su distribución particular - ha de presentar todas las capacidades que anhelan los hombres. Desde un inicio nuestro Movimiento se ha concentrado - por tanto - en hacerlo modular y capaz de afrontar las más elevadas exigencias en pos del bienestar de los hombres.
Esto es así pues encadenar el uso de herramientas para disímiles usos es lo que torna a un sistema poderoso. Esto es lo adecuado y también lo justo.

No quedan dudas para nadie que el emulador DOSbox cuenta con una emulación sobresaliente del audio Sound Blaster FM de dicha Era, es cierto que no emula todas las posibilidades de las placas de sonido mas avanzadas de entonces, en particular, del modelo Sound Blaster AWE-32. Los juegos de MS-DOS compatibles con la placa de sonido AWE-32 reproducían mejor la música secuenciada MIDI gracias al chip EMU8000, que no está actualmente emulado nativamente en DOSbox.

La Creative Labs Sound Blaster AWE-32 (1994) - si bien contaba con el chip sintetizador Yamaha OPL3 para música FM - incorporó por primera vez un sintetizador EMU8000 específico que utilizaba síntesis por modulación PCM, y podía aplicar efectos de reverberación y coro para enriquecer la música. Utilizaba muestras de instrumentos digitalizados y los resultados eran más realistas que los posibles a través del uso de síntesis FM. La placa incluía 1MB de memoria ROM con un banco de 128 instrumentos mas un patch percusivo, pregrabados según la norma "General MIDI", y adicionalmente incorporaba dos ranuras para memoria RAM para totalizar unos 28 MB para bancos de sonidos de usuario a través de software especializado (los llamados "Soundfonts").


Como resultado de los problemas indicados, algunos juegos suenen tristísimos con música de la SoundBlaster 16. ¿Cómo podemos hacerlos sonar como lo hacíamos con la poderosa AWE-32?

Pues bien señores, gracias al Justicialismo podremos hacer uso de la peronista modularidad de Ubuntu, y gracias a ella realizar un "puenteo sonoro" utilizando un sintetizador virtual asociado a DOSbox, al cual dotaremos de un archivo Soundfont copiado de la memoria ROM de la AWE-32.


Esto podría sonar difícil, pero os instruiré de manera paternal y Justicialista. Ya he explicado cómo utilizar archivos de Soundfonts para reproducir ficheros de musica MIDI aquí. Por otro lado, es necesario tener ya instalado y configurado en nuestro sistema al emulador DOSbox como os he indicado aquí.

Conforme tengamos esto, ya podremos abocarnos a replicar la AWE-32 en Ubuntu. Primero instalaremos el sintetizador virtual Fluidsynth y el frontend gráfico Qsynth para poder usarlo fácilmente. Para tal objetivo, abrimos una Terminal con Ctrl+Alt+T e ingresamos los siguientes comandos de organización:

sudo apt update
sudo apt install fluidsynth qsynth dosbox


Acto seguido, reiniciamos el sistema con:

sudo reboot

Al volver ya estará finalizada la instalación del sintetizador virtual e iniciado éste, pero para que cumpla su función hemos de descargar el Soundfont con los instrumentos de la placa de sonido AWE32, e instalarlo. Para ello abro nuevamente una terminal con Ctrl+Alt+T e ingreso:

cd ~/Descargas/
wget http://www.zlizeq.com/Files/1mgm.zip
unzip 1mgm.zip
sudo mv 1mgm.sf2 /usr/share/sounds/sf2/awe32.sf2


Ahora abrimos el front-end Qsynth desde Aplicaciones / Sonido y Video / Qsynth. Este programa en forma de panel nos permite configurar el sintetizador virtual FluidSynth de manera gráfica y relativamente sencilla.
Para configurarlo debo presionar el botón Setup...

Se abrirá la ventana de configuración "Qsynth Setup". En ella tendremos la solapa "MIDI", en la que nos debemos asegurar de tildar la opción "Enable MIDI Input" para activar la escucha de mensajes MIDI que vendrán del emulador DOSbox. Reviso que el controlador MIDI sea "alsa_seq", y que el modo de selección de bancos MIDI sea "gm" para "General MIDI".
En la solapa "Soundfonts" presiono el botón "Open...". Se abrirá una ventana que nos mostrará los Soundfonts localizados en la carpeta /usr/share/sounds/sf2/. Elegimos el soundfont awe32.sf2 y presionamos el botón "Abrir". Con ello agregaremos este soundfont a la lista de soundfonts utilizables.

Hemos de tener en cuenta que si hubiese varios soundfonts listados, Qsynth  siempre utilizará el último de la lista. Por ello debemos seleccionar el awe32.sf2 y presionar el botón Down para bajarlo de posición hasta que quede último.

Al presionar el botón Aceptar, surgirá un alerta advirtiendo que tenemos que reiniciar el sintetizador virtual FluidSynth para que los cambios surtan efecto. Presionamos el botón Si y se habrá iniciado ya el sintetizador con el soundfont de la AWE32, quedando a la escucha de mensajes MIDI.
Acto seguido y sin cerrar el Qsynth, debemos configurar por única vez el emulador DOSbox para que utilice como salida MIDI al sintetizador virtual FluidSynth que hemos configurado. Para ello debemos conocer cuál número de Cliente MIDI utilizado por FluidSynth en nuestro sistema particular. Con tal fin, en la Terminal le ingresamos el comando:

aconnect -o

...y el sistema nos devolverá algo como:

cliente 14: «Midi Through» [tipo=kernel]
    0 'Midi Through Port-0'
cliente 128: «TiMidity» [tipo=usuario,pid=907]
    0 'TiMidity port 0 '
    1 'TiMidity port 1 '
    2 'TiMidity port 2 '
    3 'TiMidity port 3 '
cliente 129: «FLUID Synth (5116)» [tipo=usuario,pid=5116]
    0 'Synth input port (5116:0)'


Naturalmente, en vuestro caso dicho número 129 podría variar. Debemos anotar cual es. Ahora editamos el archivo de configuración de DOSbox mediante el comando:

nano ~/.dosbox/dosbox-0.74.conf

...se abrirá el editor GNU Nano con el archivo de configuración dosbox-0.74.conf. Dentro de este archivo, buscaremos la sección [midi] y la modificamos para que la variable mpu401 tenga el indicador intelligent, y la variable midiconfig tenga el número de cliente de FluidSynth seguido por :0, de la siguiente manera:

mpu401=intelligent
mididevice=default
midiconfig=129:0




(naturalmente vosotros cambiarán el 129 por su número de cliente particular, pero siempre va finalizado de :0. Conforme esté editado de tal manera, guardamos los cambios realizados con Ctrl+o y saldremos del editor GNU Nano con Ctrl+x.

Ahora, con el Qsynth encendido, ya podremos abrir DOSbox desde Aplicaciones / Juegos / Emulador DOSbox y configurar o instalar los juegos que querramos.

En mi caso utilizaré los conocidos juegos de estrategia en tiempo real Warcraft: Orcos vs. Humanos y Warcraft II: Tides of Darkness como ejemplos.

Debemos asegurarnos de configurar los juegos para utilizar el dispositivo General MIDI como salida de música (incluso si existiese la opción AWE-32), y Sound Blaster como salida de audio. A tal fin, la mayoría de los juegos contaban con una rutina de configuración de audio durante su instalación en MS-DOS o posterior a ella. Normalmente se llamaba setup o install y se encontraban en el mismo directorio del juego.

En el caso del Warcraft 2 esta configuración se hacía por medio del comando setup, y podíamos configurar tanto la salida de audio digital (SoundBlaster 16) y General MIDI como la música secuenciada MIDI.

En otros juegos podría solicitársenos que ingresáramos a mano los datos de la placa de sonido Esto era algo normal en la Era DOS, y debemos utilizar los valores estándares que eran Dirección 220, Interrupción IRQ 5, y Canal DMA 1. Si se nos solicita la dirección del Canal MIDI o del canal Roland, también debemos usar la estándar, que era 330 o H330. Un ejemplo de este tipo era el clásico Duke3D:
Una vez configurado el audio digital, ya podremos iniciar el juego propiamente dicho.
 En el panel de Qsynth debería indicarse actividad MIDI por medio del testigo verde en la parte inferior del control. También debería escucharse la música MIDI a través del soundfont, como si de una real AWE-32 se tratara.


...¡y ya podremos oir el juego con una música similar a la clásica Sound Blaster AWE-32 en Ubuntu!

Si la música suena fuerte o débil podremos utilizar le control "Gain" del panel Qsynth para ajustar su volumen y emparejarlo con el de la salida de audio digital. También podríamos activar las opciones de Reverb y Chorus para darle efectos de eco/reverberación y coro, para que la música no suene tan "seca". Los valores bajos eran los que utilizaba la AWE-32 original, pero podremos regularlos como deseemos.

Asimismo, algunos juegos contaban con un regulador de volumen interno para el los efectos de sonido de audio digitalizado (SFX) o de la música MIDI a través de una interfaz especial, que también podríamos querer utilizar para equilibrar el sonido y la música.
Indudablemente que en lugar del soundfont awe32.sf2, podremos utilizar otros mucho más logrados, y hacer que los veteranos juegos suenen como una orquesta hecha y derecha. A tal fin existen muchos soundfont "General MIDI" gratuitos que podremos descargar, como os he indicado.

jueves, 27 de diciembre de 2018

¿Cómo instalo el controlador para AMD Radeon en Ubuntu?


Al anunciar una candidatura relámpago, Juan Perón pronuncia un discurso el 12 de febrero de 1946, donde anuncia los alcances de la redención social que impondrá el Movimiento Nacional Justicialista, y explica cómo instalar controladores para las placas de video AMD Radeon en Ubuntu.

¡Trabajadores!

Llego a vuestra presencia con la emoción que me produce sentirme confundido entre este mar humano de conciencias honradas; de estas conciencias de criollos auténticos que no se doblan frente a las adversidades, ¡prefieren morir de hambre antes que comer el amargo pan de la traición!

Llego a vosotros para deciros que no estáis solos en vuestros anhelos de redención social, sino que los mismos ideales sostienen nuestros hermanos de toda la vastedad de nuestra tierra gaucha. ¡Vengo conmovido por el sentimiento unánime manifestado a través de campos, montes, ríos, esteros y montañas! ¡Vengo conmovido por el eco resonante de una sola voluntad colectiva; la de que el pueblo sea realmente libre, para que de una vez por todas quede libre de la esclavitud económica que le agobia!

Y aún diría más: que le agobia como antes le ha oprimido y que si no lograra independizarse ahora, aún le vejaría más en el porvenir. ¡Le oprimiría hasta dejar a la clase obrera sin fuerzas para alcanzar la redención social que vamos a conquistar antes de quince días!
En la mente de quienes concibieron y gestaron la Revolución del 4 de
Junio estaba fija la idea de la redención social de nuestra Patria. Este
movimiento inicial no fue una "militarada" más, no fue un golpe "cuartelero" más, como algunos se complacen en repetir; fue una chispa que el 17 de octubre encendió la hoguera en la que han de crepitar hasta consumirse los restos del feudalismo que aún asoma por tierra americana.

Porque hemos venido a terminar con una moral social que permitía que los trabajadores tuviesen para comer sólo lo que se les diera por voluntad patronal y no por deber impuesto por la justicia distributiva. Se acusa a nuestro movimiento de ser enemigo de la libertad. Pero yo apelo a vuestra conciencia, a la conciencia de los hombres libres de nuestra Patria y del mundo entero, para que me responda honestamente si oponerse a que los hombres sean explotados y envilecidos obedece a un móvil liberticida.

No debemos contemplar tan sólo lo que pasa en el "centro" de la ciudad de Buenos Aires; no debemos considerar la realidad social del país como una simple prolongación de las calles centrales bien asfaltadas, iluminadas y civilizadas; debemos considerar la vida triste y sin esperanzas de nuestros hermanos de tierra adentro, en cuyos ojos he podido percibir el centelleo de esta esperanza de redención.

Tampoco podemos centrarnos en los controladores más básicos y de las marcas más caras: ¡también hemos de poder instalar en nuestro sistema los controladores que hagan más efectiva la velocidad y performance de video que todos anhelamos!

Es por ello que si contamos con placas de video AMD, podremos optar ciertamente por varios tipos de controladores de video, ¡para que cada uno tenga lo que desea en bien común y en Justicia Social!

Controladores abiertos:

A menos que tengamos requerimientos específicos, los controladores abiertos AMD Radeon disponibles como parte del proyecto Mesa y disponibles en el repositorio estándar de Ubuntu son suficientes para que la Masa Popular pueda hacer funcionar sus placas de video AMD Radeon como claman desde la creación de la Patria. Gracias a nuestro Movimiento, es muy probable que ya los controladores AMD Radeon (que vienen con el sistema) ya estén instalados en nuestro Ubuntu desde la hora de la instalación inicial.

Ahora bien, para conocer el estado de nuestra placa AMD Radeon (y cualquier otra VGA, por caso), podremos abrir una terminal con Ctrl+Alt+T e ingresar el siguiente comando de organización:

lspci -vnn | grep 'VGA' 

Al darle entrada, el sistema debería devolvernos algo como:

01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Tobago PRO [Radeon R7 360 / R9 360 OEM] [1002:665f] (rev 81) (prog-if 00 [VGA controller])

Pues bien señores, para revisar la versión instalada del controlador AMD Radeon, primero deberíamos instalar el paquete mesa-utils. Para ello ingresaremos:

sudo apt install mesa-utils

Una vez que se instale, ejecutamos el comando glxinfo para recoger más información de la instalación local del controlador de video. Para ello ingresamos:

glxinfo -B

En la terminal aparecerán los detalles necesario sobre las versiones de los distintos componentes del stack de video, (esto es, el diagnóstico de la cantidad de memoria de video instalada en placa, número de nucleos de la unidad de procesamiento gráfico, versiones del o los generadores de shaders, cores de renderizado, y muchos etcéteras técnicos).
Mesa AMD Radeon graphic card driver support on Ubuntu 18.10
Sepan argentinos que el soporte del controlador Mesa para las placas de video AMD Radeon bajo Ubuntu 18.04LTS y superiores suele ser adecuado y carecer de problemas...

Repositorio PPA

Pero no todo puede relucir en la justa medida para el Pueblo. En el caso de que por alguna razón el controlador abierto Mesa incorporado por defecto de Ubuntu no da la performance deseada en nuestra placa de video AMD Radeon, podríamos querer experimentar con la actualización a una nueva versión del controlador por medio de un repositorio PPA de terceros. Naturalmente que este no es el proceder más recomendado pues podríamos terminar con un sistema que no pueda iniciar en modo gráfico si las cosas no salen bien. Pero si a nuestro sistema no le debemos un uso crítico y controlado, podremos proceder experimentalmente, ser peronistas "pelo en pecho", y utilizar un controlador ajeno.

Para agregar el repositorio abrimos una terminal con Ctrl+Alt+T e ingresamos el siguiente comando de organización:

sudo add-apt-repository ppa:oibaf/graphics-drivers

...aparecerá el mensaje si deseamos agregar el repositorio, debemos presionar Enter para confirmarlo. Luego ingresamos

sudo upgrade

Luego reiniciamos el sistema con:

sudo reboot

Soporte AMD Radeon oficial

En caso de que tengamos requerimientos específicos podemos intentar instalar el controlador oficial amdgpu-pro. Su desventaja es el de ser privativo, lo cual significa que la responsabilidad de su mantenimiento recae en el fabricante y no en nuestro sistema operativo. ¡Sea entonces!

Para ello nos dirigimos a la web oficial Web de Descarga de AMD y buscamos el controlador amdgpu-pro para nuestra placa de video AMD VGA.

Acto seguido debemos escoger nuestro sistema y arquitectura. Por ejemplo, podremos escoger Ubuntu x86 de 64 bits, pero también tendremos disponible para la veja arquitectura de 32 bits si es que la utilizamos.
Official AMD driver download page
El controlador amdgpu-pro debería estar disponible en forma de un archivo empaquetado llamado amdgpu-pro-*.tar.xz. Debemos cambiar el * por la versión del archivo descargado, que naturalmente puede variar de acuerdo a la fecha (normalmente se usa el número de versión para el año y mes, por ejemplo 18.12 sería diciembre de 2018). Una vez que hayamos descargado el paquete amdgpu-pro, lo descomprimimos y lo ejecutamos. Como normalmente la descarga se realiza a nuestra carpeta /Descargas, los comandos para realizar tal cometido serían:
cd ~/Descargas
tar -xf amdgpu-pro-*.tar.xz
cd amdgpu-*/
./amdgpu-pro-install -y
Una vez instalado el controlador, reiniciamos el sistema con:
sudo reboot

Para más información sobre cómo instalar el controlador amdgpu-pro en un sistema Ubuntu también podremos consultar la documentación oficial en la Página de documentación AMD.

En todo caso, podremos utilizar un simple programa glxgears -fullscreen para mostrar unos engranajes 3D y evaluar el funcionamiento básico del stack de video acelerado en Ubuntu. Podremos cerrar el programa con Alt+F4 o con Ctrl+c.

lunes, 24 de diciembre de 2018

¿Cómo arreglo el problema de red ethernet desconectada tras suspender en Ubuntu?

¡Trabajadores!

Hace 19 siglos, Dios eligió a los Humildes pastores de Belén para anunciar el advenimiento de la paz a los hombres de buena voluntad. Por sobre ese mensaje, los hombres de mala voluntad han acumulado 19 siglos de guerra, de crímenes, de explotación y de miseria, precisamente a costa de la sangre y del dolor de los pueblos humildes de la tierra.

Y cuando todo parecía perdido, nosotros, un pueblo humilde a quienes la soberbia de los poderosos llamó descamisado, hemos sido elegidos entre todos los pueblos y todos los hombres, para recoger el antiguo mensaje de los Ángeles.

Salvando las distancias y remedando el cántico antiguo, nosotros podríamos decir que Dios ha hecho grandes cosas entre nosotros. Deshaciendo la soberbia y la ambición del corazón de los soberbios, derribando de su trono a los poderosos, ensalzando a los humildes y colmando de bienes a los pobres. Por ello la Nochebuena nos embarga el corazón, con la armonía de sus encantos prodigiosos. Porque la Nochebuena es nuestra, es la noche de la humildad, la noche de la Justicia.

Y el Justicialismo nos ha regalado como una realidad maravillosa de sus manos; un eco vibrante como el anuncio que recibieron los pastores, o como el reflejo encendido de la estrella que señaló en la noche de los hombres, el divino amanecer de una redención extraordinaria.

Consiste en poner la buena voluntad de todos para que reine la Justicia y el amor. Primero la Justicia, que es algo así como el pedestal para el amor. No puede haber amor donde hay explotadores y explotados. Y no puede haber amor donde hay oligarquías dominantes llenas de privilegios, y pueblos desposeídos y miserables. Porque nunca los explotadores pudieron ser ni sentirse hermanos de sus explotados, y ninguna oligarquía pudo darse con ningún pueblo el abrazo sincero de la fraternidad.

El día del amor y de la paz llegará cuando la Justicia barra de la faz de la tierra a la raza de los explotadores y de los privilegiados, y se cumplan inexorablemente las realidades del antiguo mensaje de Belén, renovado en los ideales del Justicialismo Peronista; "que hayan una sola clase de hombre: los que trabajan". "Que sean todos para unos y unos para todos". "Que no existan otro privilegio que el de los niños". "Que nadie se sienta mas de lo que es y menos de lo que puede ser". "Que los gobiernos de las naciones hagan lo que los pueblos quieran". "Que cada día los hombres sean menos pobres y que todos seamos artífices del destino común".

Es esta entonces una ocasión Cristiana para resolver cualquier problema bajo la Unidad de los Hombres y la Libertad de sus Sistemas, en Justicia y amor.

Pues bien señores, normalmente tras encender nuestro sistema, el procedimiento sería que la red se restablezca automáticamente, si es esto lo que se ha solicitado durante la configuración de la red en el Asistente de Red. Esta es la operatoria tradicional y la anhelada por los Pueblos Libres de nuestra América.

No obstante ello, podría suceder que nos encontrásemos con un problema bien definido que cruzara nubarrones de infelicidad sobre las Masas Descamisadas. Por ejemplo, podríamos ver que tras suspender nuestro sistema (o hibernarlo) al reencender nuestro equipo podríamos encontrarnos sin conexión a Internet. En resumen, tras salir de la suspensión podremos notar que el ícono de red en el panel superior indica que la misma está desconectada.

Indudablemente que esto debería poderse resolver en pocos segundos de forma automática, pero existen situaciones donde ni siquiera actuando de forma manual sobre el interruptor de redes o volviendo a reconectar físicamente la red cableada podemos restablecer la conexión.

La lucha por la Liberación es una que ha de darse en incontables combates, de los cuales ninguno es decisivo, pero todos llevan el peso de la lucha a un enemigo aterrado. Sabe él que no podrá jamás vencer a un Pueblo decidido que sabe lo que quiere y combate por lograrlo. Es por ello que - como en otros casos - la solución a sus problemas vendrá de manos del Justicialismo.

El problema se debe a un bug o error en el controlador del módulo r8169, controlador encargado de hacer funcionar las interfaces de redes cableadas del modelo Realtek RTL81xxx. Se trata de un modelo de red muy común y de bajo coste, del cual existen ya varios modelos, como el RTL8111, RTL8168, RTL8411, etc. A estos los cuales podremos encontrar incorporados en muchas placas madres peronistas.

Para saber qué dispositivo/s de red tenemos en nuestro sistema, hemos de abrir una terminal con Ctrl+Alt+T el siguiente Comando de Organización:

sudo lshw -C network

...el sistema nos devolverá un detalle de los dispositivos de red de todo tipo. Normalmente existirán las interfaces Ethernet (cableadas) y las inalámbricas si disponemos de ellas.

  *-network
       descripción: Ethernet interface
       producto: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
       fabricante: Realtek Semiconductor Co., Ltd.
       id físico: 0
       información del bus: pci@0000:03:00.0
       nombre lógico: enp3s0
       versión: 0c
       serie: xx:yy:zz:xx:yy:zz
       tamaño: 1Gbit/s
       capacidad: 1Gbit/s
       anchura: 64 bits
       reloj: 33MHz
       capacidades: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
       configuración: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=full firmware=rtl8168g-2_0.0.1 02/06/13 ip=xxx.xxx.xxx.xxx latency=0 link=yes multicast=yes port=MII speed=1000Mbit/s
       recursos: irq:27 ioport:d000(size=256) memoria:f7100000-f7100fff memoria:f2100000-f2103fff


Ahora debemos estudiar esto detenidamente. Notemos que bajo el apartado Descripción se nos indica el tipo de interfaz de conexionado, y normalmente pueden haber una o varias de ellos. En las computadoras normales suele haber interfaces con la descripción "Ethernet interface" (que son las interfaces cableadas más populares) o "Interfaz inalámbrica/Wireless Interface" (que son las interfaces Wifi, extremadamente extendidas). Específicamente nos interesa observar el apartado Ethernet Interface. Dentro de la información que el sistema nos ha suministrado, debemos revisar la línea que comienza con "configuración". Su contenido es técnico, y podría ser algo como:

configuración: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=full firmware=rtl8168g-2_0.0.1 02/06/13 ip=xxx.xxx.xxx.xxx latency=0 link=yes multicast=yes port=MII speed=1000Mbit/s

Pues bien, específicamente debemos asegurarnos que en dicha línea la declamación "driver" figure como driver=r8169, tal como se indica arriba. Esto nos indica que la interfaz cableada usa específicamente ese módulo controlador de Realtek (que presenta esta falla en alguno de sus modelos).

Para poder solucionar el corte de conexión luego de suspender, podremos solucionarlo mediante un script o pequeño programa peronista, que fuerce el apagado de la red antes de suspender, y fuerce el encendido de la misma tras volver de la suspensión.

Para ello hemos de saber que nuestro sistema ejecuta todos los scripts ejecutables que se encuentren dentro de la carpeta /lib/systemd/system-sleep tanto antes como después de la suspensión.

En nuestro caso necesitamos re-cargar el múdulo para la interfaz Ethernet cuando reactivamos el sistema luego de suspender. A tal efectocrearemos un script pertinente. Para ello en nuestra terminal ingresamos el comando:

sudo nano /lib/systemd/system-sleep/r8169-refresh

Esto abrirá el editor peronista GNU Nano con un archivo en blanco llamado r8169-refresh. Debemos pegarle el siguiente contenido:


#!/bin/bash
# Programa para reactivar la red tras la suspensión
# Colocado en /lib/systemd/system-sleep/r8169-refresh

PROGNAME=$(basename "$0")
state=$1
action=$2

function log {
    logger -i -t "$PROGNAME" "$*"
}

log "Ejecutando $action $state"

if [[ $state == post ]]; then
    modprobe -r r8169 \
    && log "Removido r8169" \
    && modprobe -i r8169 \
    && log "Insertado r8169"
fi
 
 
Conforme hayamos pegado el contenido indicado (podemos usar Ctrl+v para pegarlo), debemos grabar el script presionando Ctrl+o y luego salir del editor GNU Nano con Ctrl+x. Esto nos devolverá nuevamente a la Terminal.

Acto seguido y por única vez, debemos otorgarle permisos de ejecución para que el sistema pueda ejecutarlo al suspender. Para ello ingresamos el siguiente comando:

sudo chmod +x /lib/systemd/system-sleep/r8169-refresh

Ahora podremos suspender el sistema (si lo deseamos hacer desde la terminal podríamos ingresar el comando sudo pm-suspend). Antes de suspenderse, la conexión Ethernet se desactivará. Al volver a reactivar el sistema, debería ahora reactivarse la conexión a Internet con éxito tras no más de 10 segundos (debemos estar prevenidos que este re-encendido no es instantáneo).

Los mensajes almacenados por el script serán registrados en la bitácora localizada en /var/log/syslog con las etiquetas del nombre del script seguido por su PID. Para revisar su funcionamiento podríamos ingresar el comando:

grep r8169-refresh /var/log/syslog

Si por algún motivo quisiéramos eliminar el script y dejar tal como estaba, deberíamos ingresar:

sudo rm /lib/systemd/system-sleep/r8169-refresh

jueves, 20 de diciembre de 2018

¿Cómo activo audio digital IEC958 (S/PDIF) en una placa CMI8738 en Ubuntu?

¡Mis descamisados!

Es sabido por todos que, durante años, los trabajadores fueron víctimas de una injusticia tan vieja como la relación Capital-Trabajo. El "año administrativo" usado para fijar los pagos de jornales, se compone de 52 semanas estatutarias (12 meses de 30 días cada uno). Pero el "año laboral" (los días efectivamente trabajados por el empleado), son más, ya que no todos los meses tienen la misma cantidad de días. Naturalmente, al trabajador le omitían estos días de más y le pagaban solo 48 semanas. Naturalmente que las 4 semanas restantes las pagaba Magoya...

Por ello resulta inolvidable aquel luminoso 11 de diciembre de 1945 cuando los trabajadores encuadrados bajo la Confederación General del Trabajo realizan una demostración de Masas con el objetivo de lograr la promulgación del Sueldo Anual Complementario, en un ambiente caldeado por una campaña electoral que enfrentaba a las fuerzas del laborismo contra un compacto frente político de la Unión Democrática, de fuerte corte demoliberal.

Es por ello que el General Farrell, a través del Decreto 33.302 del 20 de diciembre de 1945 otorga por primera vez el sueldo complementario, llamado desde entonces aguinaldo. Asimismo, el Decreto prevé también las Vacaciones Pagas y las indemnizaciones por despido injustificado. Constituye esto una realización efectiva a las reivindicaciones de los trabajadores.

Naturalmente que a un tonto solo hay que ponerle cerca una cuerda y se la atará al cogote nomás para ver cómo le aprieta: apenas salido el Decreto - las entidades patronales decidieron formar una Asamblea Permanente de Entidades de Comercio, la Industria y la Producción, con sede casualmente en el Colegio de Abogados y dirigida por un tal Eustaquio Méndez Delfino. No hay nada peor que un bruto con inquietudes. Se jugaron a no pagar, pero la bravata les duró menos que un turrón.

La Masa Obrera se alzó en discordia y ante un intento de lockout patronal hicieron tronar el escarmiento. A partir de la primera quincena de enero del 46 las entidades patronales ya estaban cediendo, y mucho más cuando - aplastada electoralmente la Unión Democrática - el Justicialismo llegó al gobierno.

Esto nos dicta que debemos esforzarnos y emprender una enconada lucha para lograr lo que anhelamos y nos corresponde por justo derecho. Esto tiene sin duda una correlación en la informática, cuya importancia no debemos subestimar.

Vean señores, el audio multicanal nos permite lograr un sonido posicional a través de un conjunto de 8 parlantes. En vez de usar sólo dos parlantes como es tradicional (izquierdo y derecho), podremos sumarles cuatro altavoces esquineros, más un parlante frontal y un altavoz exclusivo para bajos (subwoofer).

Para lograr esto dispongo de una tarjeta de sonido PCI-Express con chipset C-Media CMI8768. Se trata de un extendido chipset con salidas analógicas, pero también a través de una salida óptico-digital de formato S/PDIF.


Es importante notar que a este chipset y una versión anterior retrocompatible CMI8738 también podremos encontrarlo en algunas adaptadores de audio externos USB, y placas de audio PCI más antiguas. En el caso de las placas internas, no es raro encontrar audio posicional de 8 canales (normalmente conocidos como 7.1).

Pues bien, en este caso para su funcionamiento óptimo, deseo conectarlo a un veterano amplificador Sony, dotado con entradas analógicas y digitales.

A decir verdad, el audio analógico suele no tener más problemas que alguna levísima interferencia (usualmente inaudible). Sin embargo, nos somete a la esclavitud de un insufrible cablerío, pues debemos contar con al menos cuatro cables estéreo en nuestra PC, y divididos hacia los altavoces. La instalación se hace por lo tanto fija e incómoda.

El formato de codificación digital intenta solucionar esto con algunas tecnologías novedosas. Recibe el nombre técnico de IEC958, estandarizado por la Comisión Electrotécnica Internacional. Este opera por medio de la interfaz de conectores "TOSLINK", compatible con el sistema  S/PDIF (Formato de interfaz digital de Sony/Phillips) usando cables de fibra óptica, y transmiten sus datos de manera lumínica a través de unos conectores cuadrados que contienen un LED rojo en su interior.
El amplificador se encarga de decodificar la señal lumínica, y envía a los altavoces la señal convertida, con una excelente calidad de audio.

En este caso, la salida analógica tradicional funciona, pero la digital no responde como debería hacerlo: no suena nada.

En primer lugar hemos de saber que desde Sistema / Preferencias / Hardware / Sonido podremos activar el control del frontend de configuración de audio, llamado en este caso Pulseaudio. En él podremos decidir cuál dispositivo de audio utilizar, y qué conectores usar (los analógicos o los digitales).
Bildschirmfoto von »2015-02-21 14:19:22«

En nuestro caso, si elegimos audio Digital, no suena ni hace nada.

El problema radica en que la salida de audio está enmudecida ("mute") por defecto. Para activarla, no debemos utilizar Pulseaudio sino el mezclador Alsa. Para ello abrimos una Terminal e ingresamos:

alsamixer

...se abrirá el programa alsamixer con los controles de audio de nuestra placa de sonido, tanto analógicos como digitales.
Bildschirmfoto von »2015-02-21 01:00:37«

Debemos asegurarnos que nuestro dispositivo de sonido esté seleccionado en la parte superior (si tuviésemos varios dispositivos de sonido, podremos elegirlos con F6), Acto seguido debemos usar las Flechas del Cursor para navegar hasta la salida S/PDIF. Debemos usar la letra "m", o el punto "." para activarlo. El indicador debería cambiar a "[00]" . Si indica "[MM]" significa que está enmudecido ("mute").

Una forma de verificarlo visualmente es observar el conector de la PC, si es necesario con un espejo y con las luces apagadas. Si lo desmuteamos, debería encenderse dentro del conector una luz LED roja.

Si este es el caso, conectamos el cable Toslink desde la salida digital de la PC a una de las entradas "OPTICAL IN" del amplificador (suelen tener una tapita plástica antipolvo que tenemos que remover, no es mala idea pegarla al cable con dos vueltas de cinta aisladora para no perderla).


Normalmente debemos consultar el manual de nuestro amplificador, en este caso, presiono la opción "Source" del mismo hasta que en el display aparezca la opción "OP IN 1" ("entrada óptica 1". Naturalmente, el amplificador tiene que tener los altavoces conectados a las salidas Front-out y Rear-out, Left-Out y Right-Out (en este caso a través de las tradicionales entradas RCA rojas y blancas).

Para salir de alsamixer debemos presionar Esc. Las opciones deberían mantenerse incluido tras un reinicio de sistema.

Al desmutearlo, el sonido debería salir por el amplificador. Podremos escoger entonces el perfil de audio que querramos (por ejemplo, 7.1 Digital IEC958). La tecnología es adecuada, hoy está siendo reemplazado ya por el HDMI, cuya ventaja es la de poder transmitir audio y video digital de alta resolución.


sábado, 8 de diciembre de 2018

¿Cómo puedo reparar GRUB o resetear contraseñas de Window$?

¡Trabajadores!

GRUB es el arrancador del pueblo, una poderosa rutina de software instalada por defecto con Ubuntu. No solo es capaz de dar inicio a Ubuntu, sino también a otros sistemas operativos, ya sea libres o no.
Por tal motivo, el arrancador GRUB es fundamental para el arranque del sistema operativo, y si bien es bastante resistente, no será la primera ni última vez que falle. Normalmente esto se podría deber a errores humanos, pero tampoco es ajeno a otros factores externos a nuestro manejo. Por ejemplo, es común que la instalación de un oligarca, pernicioso y ególatra Window$ elimine sin nuestra anuencia a nuestro arrancador popular.

Mediante la reinstalación Ubuntu podríamos lograríamos ponerlo a punto otra vez, pero esto nunca es lo práctico ni lo deseable, en tanto implica reinstalar y reconfigurar todo nuestro software. Afortunadamente ya he explicado cómo recuperar GRUB utilizando un LiveCD de Ubuntu. Este método sin embargo sólo es práctico para hacerlo una vez cada tanto, pues tiene problema ineludible: es relativamente lento de realizar.

Vean señores, el arranque de un LiveDVD de Ubuntu lleva unos 5 o 10 minutos, e incluso más si el sistema cuenta con poca memoria RAM. Hacer el resto del procedimiento nos puede llevar otro tanto...

Pues bien, para evitar estos inconvenientes innecesariamente, bien podríamos utilizar la aplicación arrancable Super GRUB Disk. Se trata de una imagen booteable ideal para un miniCD, ya que ocupa sólo 20Mb. Necesitamos un CD virgen para copiarlo.

La realización de la tarea lleva el mismo tiempo, pero podremos hacer el procedimiento de forma más rápida y sencilla.

1. Bajamos la imagen de Super GRUB Disk desde aquí.
2. Quemamos la imagen ISO en un CD virgen (podremos usar Brasero para ello).
3. Colocamos el CD en la lectora y arrancamos la PC con el CD Super GRUB Disk.
4. Selecionamos el idioma eligiendo "Español".
5. En el menú de acciones, normalmente elegirmos "Detectar cualquier S.O."

Si ya tenemos un archivo grub.cfg en nuestro Ubuntu (suele ser lo normal si no formateamos nada) es mejor seleccionar ""detectar cualquier archivo configuración  GRUB2 (grub.cfg)"". De esta manera iniciará más rápido la reparación del GRUB en Ubuntu.

6. Una vez cumplido esto, debería arrancar nuestro Ubuntu inutilizado. Una vez que haya arrancado, podremos repararlo definitivamente. Para ello abrimos un a terminal con Ctrl+Alt+T (o yendo a Aplicaciones / Herramientas de Sistema / Terminal) e ingresamos los siguientes comandos de organización:

sudo grub-install /dev/sda
sudo update-grub

(...en algunos sistemas en lugar del último comando, debemos usar sudo update-grub2)

Nota: Naturalmente, debemos sustituir sda por el identificador de disco duro que utilicemos para arrancar nuestro sistema operativo. Normalmente suele ser sda, pero podría ser otro si contamos con distintos sistemas operativos instalados en distintos discos rígidos, por ejemplo /dev/sdb, /dev/sdc, etc). No debemos ingresar número de partición, sólo el identificador de disco.

Ahora ya podremos extraer el CD de Super Grub2 Rescue, y podremos reiniciar nuestro sistema con el GRUB reparado. Para ello usamos:

sudo reboot

La principal ventaja que veo en usar Super GRUB es su rapidez que es bastante mayor que cargar el Ubuntu con el LiveDVD.

Recuperar contraseña de Window$

Otro elemento que podremos utilizar es RescaTux. Se trata de un CD booteable con aplicaciones (650mb aproximadamente), el cual también se distribuye gratuitamente a través de una imagen ISO. Con él podremos realizar varias tareas de rescates, incluyendo eliminar contraseñas de administrador y usuario de sistemas operativos oligárquicos.
Rescatux no soporta SecureBoot (debemos desactivarlo desde la BIOS de nuestro equipo). Sin embargo, es capaz de reparar la mayoría de los problemas derivados del problemático método de arranque UEFI.

Con él también podremos resetear una contraseña usuario o de administrador de Window$, en el caso que la hemos olvidado. Para ello iniciamos el CD con RescaTux, y se nos presentará la pantalla de arranque.

Rescatux Isolinux based Boot screen screenshot 
Pantalla de inicio basada en ISOLinux de Rescatux

Aquí normalmente utilizamos la entrada por defecto: Live (amd64).

Si por alguna razón recibimos un mensaje como:
This kernel requires an x86-64 CPU, but only detected an i686 CPU. Unable to boot - please use a kernel appropiate for your CPU.

...entonces repetimos los pasos pero en esta pantalla elegimos: Live (486).

Se iniciará el sistema operativo (pantalla negra con legras blancas).
Rescatux Boot - System initialisation letters screenshot 
Debemos esperar que se inicie la gráfica del asistente, y aparezca el asistente en el centro de la pantalla.
Rescatux desktop with Rescapp screenshot 
Asistente RescApp de RescaTux

Una vez que veamos la aplicación RescApp debemos elegir la opción "Clear Windows password). Para ello debemos presionar el botón  Password (+)

Main Menu - Password options selected
Menú principal - opciónes de Contraseña seleccionadas
...y luego el botón "Clear Windows password"

Password Options Menu - Clear Windows Password selected
Password Options Menu – Clear Windows Password selected
...y finalmente el botón "Clear Windows password !!!".

About to run Clear Windows Password option
Por ejecutar la opción para Borrar la contraseña de Window$.
Nota: En versiones mas viejas de RescaTux, esta opción se llamaba Blank Windows password o Reset Windows password.

Seleccionar la partición de Window$

Se nos preguntará cuál es la partición del Window$. Debemos seleccionarla a mano. Nota: la mayoría de las veces la partición de Windows aparecerá como No Detectada. Simplemente debemos elegirla.
Luego presionamos el botón OK.

Select Windows partition
Seleccionando la partición Window$

Elegir el Usuario de Window$

Se nos preguntará a cuál usuario de Window$ queremos eliminarle la contraseña. El usuario de Window$ a la cual la mayoría de la gente le quiere eliminar la contraseña es al Administrador, pero podemos elegir a cualquier otro de los usuarios detectados. Luego presionamos el botón OK.

Select a Windows user
Seleccionando un usuario Window$.
Debemos esperar a que RescApp finalice.

A veces se muestra algún mensaje mientras RescApp realiza la tarea solicitada. A veces no lo veremos porque pasará muy rápido. Debemos se pacientes y esperar hasta que finalice completamente

Rescapp working screenshotRescapp funcionando.

Todo va bien
Si vemos un mensaje que nuestra tarea salió bien, entonces RescApp probablemente haya solucionado nuestro problema de contraseñas.

Rescapp - Success screenshotRescApp – Éxito

Apagar Rescatux.
Para salir del Asistente, debemos presionar el botón rojo On/Off en la esquina inferior izquierda.

Rescatux - Power off button screenshot

Rescatux – Botón de apagado.

Hacemos clic en el botón y elegimos Shutdown para apagar el sistema. Naturalmente, debemos sacar el CD utilizado de la lectora para continuarla utilizando como siempre.


Rescatux - Power off menu screenshot

Rescatux – Menú de apagado.