Mostrando entradas con la etiqueta controlador. Mostrar todas las entradas
Mostrando entradas con la etiqueta controlador. Mostrar todas las entradas

domingo, 26 de septiembre de 2021

¿Como instalo el controlador libre Nouveau para nVidia en Ubuntu?

El 29 de mayo de 1970, grupos juveniles inspirados en la doctrina justicialista producen una acción decisiva por la Liberación, eliminando al controlador privativo de video nVidia. A tal efecto, Juan Perón responde en una famosa misiva enseñando cómo instalar el controlador libre Nouveau en Ubuntu.


(...)

Mis queridos compañeros: 

Por mano y amabilidad del compañero ... he recibido vuestras cosas y desde ya agradezco el recuerdo y saludo que retribuyo con mi mayor afecto.

Comienzo por manifestar mi total acuerdo con la mayoría de los conceptos que esa comunicación contiene como cuestión de fondo.

Estoy completamente de acuerdo y encomio todo lo actuado, nada puede ser más falso que la afirmación que con ello ustedes estropearon mis planes tácticos porque nada puede haber en la conducción peronista que pudiera ser interferido por una acción deseada por todos los peronistas. Me hago un deber en manifestarles que si eso ha sido dicho, no puede haber sido sino con mala intención.

Otro tanto sobre el asunto que este apartado menciona en su carta: es totalmente falso que desinstalar el controlador privativo de nVidia haya perturbado plan táctico alguno. Mas bien podría provocar cierto enlentecimiento gráfico, algo inefable por la libertad que hemos de ganar.

Como podrán observar en la apreciación de la situación, toco el asunto referente a NVIDIA, porque yo tampoco creo que pueda hacer nada en nuestro provecho, desde que está en manos de una camarilla que la domina. Sin embargo, no por eso debemos descartar en forma absoluta la intervención de sectores que puedan sernos afectos y que, inteligentemente utilizados, puedan llegar a ser decisivos. Aun en el caso que descartemos esto, quedaría la posibilidad y el intento de descomponer su cohesión contando con algunos grupos proclives a actuar en ese sentido.

La institución, actuando como dictadura militar, es fuerte pero extraordinariamente frágil desde que actúa fuera de la función específica. Perdido el prestigio nacional que le da sustento, y debilitada su disciplina que es lo que mantiene la institución, su debilidad es muy grande: basta recordar lo que sucedió el 17 de octubre de 1945. Se trata también de un gobierno militar y su situación no era peor que la que soporta la actual dictadura, pero había cundido un cierto grado de descomposición en el ejército. Cuando el pueblo salió a la calle dispuesto a quemar Buenos Aires, todo el poder de ese gobierno se vino abajo y bastó sólo la amenaza para que cayera como un castillo de naipes. Es que, como antes digo, la dictadura puede ser muy fuerte pero su peligro real está en su fragilidad congénita.

Coincido con ustedes en que no debemos confiar todo a lo que pueda hacer nVidia, ni aun en los grupos que nos puedan ser afectos, pero tampoco creo prudente que debamos abandonar las oportunidades propicias que se nos puedan presentar para la ingeniería inversa o el intento de decompilación de los elementos gráficos que se pongan a nuestro alcance. Dispongo de informaciones, que me hacen pensar en ambas posibilidades si se trabaja eficientemente y, puedo informarles, que este trabajo se ha comenzado a realizar de manos del controlador libre Nouveau.

Mi experiencia de viejo militar me permite decirle a ustedes sin temor a equivocarme que en esta fabricante de adaptadores de video, la mayoría de los programadores son nuestros. En la jerarquía hay un veinte por ciento favorable y un veinte por ciento desfavorable, el resto es indiferente. El sesenta por ciento restante que es indiferente, se escuda como legalista, pero su legalidad consiste en servir al que gana. Si nosotros no estamos en las de ganar los tendremos en contra pero, tan pronto tengamos una posibilidad, podremos contar con ellos que, aunque son como la bosta de la paloma, sirven de relleno y hasta a veces pueden servir para programar algunas rutinas libres para nuestro driver...

Es dentro de este panorama que nosotros debemos considerar las posibilidades. Por otra parte, ¿qué podemos perder por mantener el empeño?

Sobre la opción electoral, yo tampoco creo. Hemos visto ya demasiado para creer en semejante patraña. Por eso comparto totalmente sus afirmaciones anotadas en la comunicación que comento.

Sin embargo, como en la lucha integral en que debemos empeñarnos, no se puede despreciar la oportunidad de forzar también este factor a fin de hostigar permanentemente desde las organizaciones de superficie que, frente a la opinión pública tienen también su importancia y concurren también a la lucha en actividades nada despreciables, especialmente en la situación que vive el mercado de placas de video. Esta lucha también concurre a la "guerra revolucionaria" para que cada uno pelee en la forma que es capaz de hacerlo. Si ustedes leen la apreciación, resolución y consideraciones, podrán percatarse que, en el fondo, estamos totalmente de acuerdo, como no podría ser de otra manera. 

Por eso nuestro Movimiento tiene una estructura orgánica que corresponde de una manera general a esas necesidades: una organización de superficie que, a través del partido Peronista masculino y femenino como de la rama sindical realiza la lucha también en superficie, mediante las acciones de programación del controlador Nouveau. En ello es preciso realizar un plan de provocación, otro de intimidación, otro de boicot y finalmente otro de sabotaje del controlador privativo de nVidia en Ubuntu. En estos planes intervienen todos los elementos de las organizaciones de superficie, como los grupos activistas empeñados en la "guerra revolucionaria".

Como les explicará el compañero, mientras las organizaciones de superficie obedecen a una conducción centralizada, con las necesarias autonomías, las organizaciones que se encargan de la "guerra revolucionaria" tienen absoluta independencia en su conducción y coordinada más que nada por nuestro objetivo de la liberación del software. Es natural que todo puede salir mejor si existe por lo menos una conducción en beneficio de una unidad de acción que toda la lucha necesita.


Toda acción debe seguir un adecuado planeamiento. Esto no puede soslayarse y es el requisito para lograr el éxito final que todos anhelamos. En este caso, habremos de analizar los controladores disponibles en los repositorios de nuestro sistema operativo libre.

Indudablemente que esto es posible hacerlo tanto desde el escritorio gráfico como desde la terminal, método que se provee mas bien para casos de emergencia. Os haré perito en ambos, pero primero analicemos el caso más utilizado y popular:

Instalar el controlador Nouveau desde el entorno gráfico

Es importante destacar que habremos de contar con conexión a internet funcional, naturalmente. Para activar el controlador libre Nouveau, podremos dirigirnos al menú Sistema / Preferencias / Hardware / Mas Controladores.

Esto activará el selector de controladores a utilizar. La ventana presentará la solapa Más controladores, y será necesario aguardar que se revisen los controladores de la lista a través de nuestra conexión a internet. Esto puede llevar algunos segundos o incluso un minuto.


Conforme aparezca la lista con los controladores, podremos elegir el deseado. En este caso elegiremos la opción "X.Org X-Server Nouveau Display Driver desde xserver-xorg-video-nouveau (código abierto)", ya que responde a las propuestas doctrinarias del momento. Si deseamos proponer su uso, debemos presionar también el botón Aplicar los cambios.

El sistema nos solicitará entonces nuestra contraseña de Conductor, y tras ingresarla correctamente, procederá a la descarga del paquete con el controlador solicitado.

Durante descarga, instalación y enlace adecuado, se producirán todas las configuraciones de video requeridas de forma automática, de manera tal que ubuntu debería poder inicializar el uso de nuestro hardware de video nVidia y la pantalla con dicho controlador libre al dar arranque al sistema.

Para dar inicio a nuestro sistema, pero utilizando el controlador libre recién instalado, reiniciamos el sistema por medio de Sistema / Apagar / Reiniciar.

Instalar el controlador Nouveau desde la terminal

Opcionalmente debemos saber también cómo hacer este procedimiento a través de la terminal, sobre todo para el caso donde por algún motivo u otro no contásemos con la capacidad usual de otorgarnos un escritorios gráfico (o bien si meramente deseamos utilizar nuestra terminal). Si nos encontrásemos en alguno de estos predicamentos, bien podríamos hacer caso de este método desde la terminal o consola de texto de nuestro sistema.

A tal efecto, abrimos una con Ctrl+Alt+T o ingresamos en una terminal de texto (por ejemplo, con Ctrl+Alt+Fx, e ingresamos el siguiente comando de organización:

ubuntu-drivers devices

El sistema nos devolverá crípticamente los controladores dables a instalar, de la misma manera que podría indicarlo en el escritorio gráfico:

== /sys/devices/pci0000:00/0000:00:03.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001380sv00001458sd000036CAbc03sc00i00
vendor   : NVIDIA Corporation
model    : GM107 [GeForce GTX 750 Ti]
driver   : nvidia-driver-390 - distro non-free
driver   : nvidia-driver-470 - distro non-free recommended
driver   : nvidia-driver-470-server - distro non-free
driver   : nvidia-driver-418-server - distro non-free
driver   : nvidia-driver-450-server - distro non-free
driver   : nvidia-driver-460 - distro non-free
driver   : nvidia-driver-460-server - distro non-free
driver   : nvidia-340 - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

En este caso, una vez que se hayan revisado los repositorios de hardware podríamos instalar el controlador libre Nouveau por medio del siguiente comando:

sudo apt install xserver-xorg-video-nouveau

El sistema nos solicitará la contraseña de Conductor, y tras proveerla procederá a descargar el controlador desde los repositorios. Nuevamente, el proceso puede tardar algunos minutos dependiendo de la velocidad de conexión.

Al finalizar con corrección habremos de reiniciar el equipo. Desde la terminal es sencillo hacerlo con:

sudo reboot

Tras reiniciar, podremos abrir una terminal con Ctrl+Alt+T y confirmar estar utilizando el paquete controlador nouveau. Para ello en la terminal ingresamos:

lsmod | grep nouveau

...a lo que nuestro sistema podría devolvernos algo como:

nouveau      1949696  60
mxm_wmi        16384  1 nouveau
video          49152  1 nouveau
i2c_algo_bit   16384  2 bttv,nouveau
ttm           106496  1 nouveau
drm_kms_helper184320  1 nouveau
drm           491520  8 drm_kms_helper,ttm,nouveau
wmi            32768  2 mxm_wmi,nouveau

Opcionalmente, podríamos anhelar remover los restos del paquete de módulos y controladores privativos de nVidia, de la misma forma que nos deshacemos de los restos de Aramburu. En la terminal ingresamos:

sudo apt remove --purge '^nvidia-.*' ;
sudo apt autoremove ;
sudo apt autoclean

Instalar el controlador privativo de nVidia en Ubuntu

Nunca está de más saber cómo reinstalar el controlador privativo, si quisiéramos hacerlo. Para ello podremos emplear el método gráfico desde Sistema / Preferencias / Hardware / Mas controladores, elegir uno, y aplicar los cambios:

...o bien hacer la instalación del último controlador privativo a través de la terminal con:

sudo apt install pkg-config make xutils-dev libtool xserver-xorg-dev libx11-dev libxi-dev libxrandr-dev libxinerama-dev libudev-dev
sudo apt install nvidia-driver-470
sudo reboot

Cualquiera de los métodos debería ser efectivo. Recordemos que una vez instalado el paquete, debemos reiniciar el sistema con sudo reboot y a la vuelta, revisar estar usándolo con:

lsmod | grep nvidia

nvidia_uvm           1032192  0
nvidia_drm             61440  3
nvidia_modeset       1196032  5 nvidia_drm
nvidia              35270656  175 nvidia_uvm,nvidia_modeset
drm_kms_helper        237568  1 nvidia_drm
drm                   548864  7 drm_kms_helper,nvidia,nvidia_drm


Sería largo poder explicar en una comunicación todo el aspecto de la conducción, por eso he confiado a los compañeros que me visitan la tarea de informarles a ustedes de viva voz, mis pensamientos al respecto. Creo que si se interpreta cabalmente la necesidad orgánico-funcional de nuestro Movimiento, en la lucha en que estamos empeñados, no habrá dificultades para que, en un futuro cercano, se llegue a un entendimiento completo, que será muy provechoso en la continuidad del esfuerzo revolucionario. No se trata de hacer una conducción centralizada en todo el complejo orgánico de la lucha porque eso no es posible, dadas las condiciones de la lucha misma, pero sí que se alcance por un modo u otro la indispensable coordinación de los esfuerzos, porque los esfuerzos divergentes, aun con la mejor intención, no pueden ser sino factores de debilidad en la lucha de conjunto.

5. Totalmente de acuerdo en cuanto afirman sobre la guerra revolucionaria. Es el concepto cabal de tal actividad beligerante. Organizarse para ello y lanzar operaciones para "pegar cuando duele y donde duele" es la regla. Donde la fuerza represiva esté, nada; donde no esté la fuerza, todo. Pegar y desaparecer es la regla por la que se busca no una decisión sino un desgaste progresivo de la fuerza enemiga. En este caso la descomposición de las fuerzas de que pueda disponer la dictadura por todos los medios; a veces por intimidación, que es arma poderosa en nuestro caso; otras por la infiltración y el trabajo de captación; otras por la actuación directa según los casos pero, por sobre todas las cosas, han de comprender los que realizan la guerra revolucionaria que en esa "guerra" todo es lícito si la finalidad es conveniente.

Como ustedes dicen con gran propiedad, cuando no se dispone de la potencia y en cambio se puede echar mano a la movilidad, la guerra de guerrillas es lo que se impone en la ciudad o en el campo. Pero, en este caso es necesario comprender que se hace una lucha de desgaste como preparación para buscar la decisión tan pronto como el enemigo se haya debilitado lo suficiente. Por eso la guerra de guerrillas no es un fin en sí mismo sino solamente un medio y hay que pensar también en preparar el dispositivo general que aun no interviniendo en la lucha de guerrillas, debe ser factor de decisión en el momento y en el lugar en que tal decisión debe producirse.

Ni es nueva la "guerra revolucionaria" y menos aún la "guerra de guerrillas".

Pienso que tal vez la guerra de guerrillas ha sido la primitiva forma de guerra, tan empleada en la afamada "guerra de los escitas" y de Darío II. Por eso, sus reglas son demasiado conocidas como sus formas. Sin embargo, es en sus operaciones donde la iniciativa y la vivacidad juegan un papel muy preponderante. Por eso también en esa forma de operar, no se podrá mantener una conducción centralizada, aunque siempre ha de realizarse, para que sean efectivas con una finalidad objetiva. De ello se infiere que, los Montoneros, en su importantísima función guerrera, han de tener comandos muy responsables, y en lo posible operar lo más coordinadamente posible en las finalidad de conjunto y las otras fuerzas que en el mismo o distinto campo, realizan otra forma de acción, también revolucionaria.

Finalmente compañeros, les ruego que hagan llegar a los compañeros mis más afectuosos saludos y acepten mis mejores deseos. También les ruego me hagan presente y transmitan mis saludos a todos los compañeros que están presos o perseguidos por la dictadura y les lleven la persuasión que tal situación no ha de durar mucho.

Un gran abrazo Juan Perón

miércoles, 28 de abril de 2021

¿Cómo compilo y uso ORCA para componer música en Ubuntu?

¡Trabajadores!

Un Programador es un artesano capaz de entender un problema, plantear una solución a través del código, y resolver la dirección de trabajo de una máquina. Es un obrero, y en cierto sentido, un Dirigente Computacional. Cualquier cristiano que se empape en una técnica y una teoría puede hacer esto.

Pero un Verdadero Programador ve el código, lo aprecia, y lo entiende. Compila y ejecuta in mente. Este estado de omnicomprensión no está dado por la mancomunión con la máquina, sino por una percepción superior y de conjunto emanada del Pueblo. En esto no basta ya el estudio ni la práctica (partes inertes del arte sino la parte vital, que es el Artista. En otras palabras; él mismo, un Conductor. 

Obra allí el Oleo Sagrado de Samuel, y de ese no se vende en cualquier feria. 

Es a esta concreción a la que hemos de aspirar. Es posible y no es disonante decir que todo Peronista lleva en su mochila el bastón de Mariscal. 

La solución la ofrece la Organización. 

Vean señores: el hombre, aislado y sometido a lo que sólo la naturaleza le provee,  podrá atinar - con suerte - a conseguirse el pan con cachos de hardware viejo. El adagio enseña que si Dios bajara a la tierra a resolver el problema planteado entre los hombres, ya le habríamos perdido el respeto. Y no faltaría un tonto que quisiera reemplazarlo a Dios, porque el hombre es así.

Pero las Organizaciones se presentan como una evolución de este estado brutal. Están para otra cosa. Lo nuestro es la liberación de nuestro código y la Fellcidad del Pueblo. Enemigos no nos faltan. A nuestro frente, una Oligarquía coaligada con espuria sinarquías osan sumirnos en la más abyecta de las condiciones: la de depender de software privativo para hacer el cómputo. Ante esta ignominioso planteo no podemos más que hacer todos los días, todo lo que se pueda en pos de la Liberación.

Yo, como político, soy un mero aficionado. Mi profesión es la de Conductor. Para ello me he formado y he estudiado toda mi vida. De casualidad nomás llevo en mis oídos la más Maravillosa Música, que es la Palabra del Pueblo Argentino. 


Pues bien, en el campo de la música no dudarán que nos exponemos a lo mismo. Es indudable que el hombre, gracias a la tecnificación y al transistor, puede hoy utilizar Estaciones de Trabajo para Audio digital, y componer allí. No podemos negar que en esto se ha avanzado en los últimos cien años más que en los veinte siglos precedentes.

¿De qué serviría, si no es para clamar por la liberación?

Pero tampoco podemos negar que un verdadero músico ha de obrar por los mismos preceptos que un Verdadero Conductor. Ha de componer en hexadecimal utilizando código que pueda percibir directamente, de manera de compilar y ejecutar in mente. Las DAW son para neófitos y está bien que existan para la Masa Popular, que es el verdadero consumo... Pero los Verdaderos Programadores hacen música escribiéndola en ORCA.

ORCA es un lenguaje de programación orientado a la creación musical en vivo, que puede utilizarse con habilidad. Sumado a un conjunto de instrumentos e intrefaces de audio basada en tecnología MIDI, UDP y OSC, representa un nuevo paradigma para la composición musical en la Era Digital del Ciberespacio Peronista.

Dispuesto en una grilla bidimensional, tan esotérica como Lopecito, está destinado a crear muy rápidamente secuencais procedurales, donde cada letra del alfabeto represente una operación de control musical. Las letras minúsculas operan el disparo de acciones, en tanto que las mayúsculas operan cada cuadro secuencial individual.

Indudablemente que esta aplicación no es un sintetizador, sino un ambiente de programación en vivo capaz de enviar datos según el estándar MIDI, OSC y UDP a sus interfaces de audio y visuales. Como tal, es un excelente control de conducción estratégica que eleva la complejidad de aquellas estaciones de audio excepcionalmente sencillas para el comando táctico, tales como Ableto, Renoise, VCV Rack o SuperCollider.

Es sabido que en los sistemas GNU con Linux la Terminal puede utilizarse en todos los niveles del cómputo. En este caso, podremos utilizar una implementación escrita en C del lenguaje ORCA, y disponer de una interfaz de usuario basada en texto como elemento de superficie. Como es natural, está diseñada para ser potente y de bajísimo consumo, siendo capaz de operar secuencias grandes, incluso un sintetizador modular utilizando una terminal tipo DEC VT.


Pero de poco serviría si sólo el más selecto de los hombres puede conducirlo. En nuestro Movimiento impera la necesidad de un Trasvasamiento Generacional que lleve a las nuevas generaciones a la habilidad de hacer lo mismo y más que las generaciones anteriores. Esto es lo humanamente posible, biológicamente deseable, y humanamente inprescindible. Por tanto os enseñaré a grosso modo cómo hacer uso básico del entorno.

Para instalarlo abrimos una terminal con Ctrl+Alt+T y cargamos las dependencias:

sudo apt-get install git libncurses5-dev libncursesw5-dev libportmidi-dev

El sistema nos solicitara que ingresemos "a ciegas" nuestra contraseña. Luego instalará los paquetes necesarios de dependencia. Una vez finalizada esta acción, descargamos el código fuente, los ejemplos, y compilamos ORCA.

git clone https://github.com/hundredrabbits/Orca-c.git ;
cd Orca-c ;
git clone https://git.sr.ht/~rabbits/orca-examples/ ;
./tool build -d --portmidi orca ;


...Y lo ejecutamos con:
 

./Orca-c/build/debug/orca

Para asignar un dispositivo de salida MIDI que reciba las órdenes disparadas con ORCA, presionamos Ctrl+D en la terminal (o bien F1) para desplegar el menú gráfico principal, y luego elegimos la salida MIDI... Puede usarse cualquier sintetizador virtual que se les ocurra utilizar en su entorno GNU con Linux, ya que aparecerán en el menú.

+ ORCA ---------------++ PortMidi Device Selection -----+
|   New               || > (*) #0 - Midi Through Port-0 |
|   Open...           ||   ( ) #2 - Midi out Clavinova  |
|   Save              ||   ( ) #3 - Midi out VCV Rack   |
|   Save As...        |+--------------------------------+
|                     |
|   Set BPM...        |
|   Set Grid Size...  |
|   Auto-fit Grid      |
|                     |
|   OSC Output...     |
| > MIDI Output...    |
|                     |
|   Clock & Timing... |
|.....................|

Operadores

Para ver la lista de operadores adentro de Orca, se usa Ctrl+D,Ctrk+G.

A adición(a b): Da salida a la suma entre los valores de entrada.
B subtracción(a b): Da salida la diferencia entre los valores de entrada.
C clock(rate mod): Da salida en modulo de cuadro.
D delay(rate mod): dispara on modulo de cuadro.
E east: Mueve al Este, o dispara.
F if(a b): Dispara si las entradas son iguales.
G generator(x y len): escribe operandos con offset.
H halt: Detiene el operando más al sur.
I increment(mod de paso): Incrementa el operando mas al sur.
J jumper(val): Da salida el operando al norte.
K konkat(len): Lee múltiples variables.
L less(a b): Da salida a la más chica de las entradas.
M multiply(a b): Presenta el producto de las entradas.
N north: Mueve al norte, o dispara.
O read(x y read): Lee operando con offset.
P push(len key val): Escribe el operando hacia el este.
Q query(x y len): Lee operandos con offset.
R random(min max): Da salida a un valor aleatorio.
S south: Mueve hacia el sur, o dispara.
T track(key len val): Lee el operando hacia el este.
U uclid(paso max): Dispara en un ritmo Euclídeo.
V variable(write read): Lee y escribe variables.
W west: Mueve al oeste, o dispara.
X write(x y val): Escribe operando con un offset.
Y jymper(val): Da salida al operando hacia el oeste.
Z lerp(rate target): Transiciona el operando a la entrada.
* bang: Dispara los operandos vecinos.
# comentario: Detiene una línea:

Entrada/Salida

: midi(canal octava nota velocidad duración): Envía una nota MIDI.
% mono(canal octava nota velocidad duración): Envia una nota MIDI monofónica.
! cc(canal control valor): Envía un cambio de control MIDI.
? pb(canal valor): Envía un pitch Bend.
; udp: Envia un mensaje UDP
= osc(ruta): Envía un mensaje OSC.
$ self: Envía un comando de ORCA.

MIDI

El protocolo MIDI especifica órdenes de software y material de hardware para controlar digitalmente instrumentos musicales electrónicos, a través de una interfaz normalizada. En el caso de ORCA, podremos usar este establecido protocolo mediante órdenes específicas.

Los operadores MIDI en ORCA son órdenes escritas, compuestas ellas por cinco valores de entrada en su nemónico: 'canal, 'octava, 'nota, velocity, duración.

Por ejemplo, si mandamos el operador :25C, se compilará la nota Do ("C"), en la quinta octava, a través del 3er canal MIDI. En tanto, :04c será una nota Do Sostenido ("C#"), en la cuarta octava, a través del canal MIDI número 1. Recuerden que las minúsculas operan las notas negras.

Velocity es un valor opcional de intensidad que va de 0(0/127) a g (127/127). La variable Duración es la duración referida en números de cuadros, en los cuales esta nota permanecerá pulsada.

Por ejemplo, podríamos elaborar un programa midi.orca, con el siguiente código fuente:

..........................................
.#.MIDI.#.................................
..........................................
...wC4....................................
.gD204TCAFE..################.............
...:02C.g....#..............#.............
.............#..Canal....1..#.............
...8C4.......#..Octava.234..#.............
.4D234TCAFE..#..Notas.CAFE..#.............
...:13E.4....#..............#.............
.............################.............
...4C4....................................
.1D424TCAFE...............................
...%24F.2.................................
..........................................
..........................................
..........................................
..........................................


 

MIDI MONO

El operador MONO % consta de 5 entradas en su nemónico ('canal, 'octava, 'nota, velocity, duración).

Este tipo de operador es bastante similar al operador MIDI que usamos por defecto, con la salvedad que cada nota nueva que introduzcamos detendrá la ejecución de la nota anterior, impidiendo por tanto que su duración se solape con la siguiente. Como esto resulta en que sólo se puedan ejecutar secuencias monofónicas, viene bien para controlar sintetizadores modulares monofónicos que no pueden hacer acordes ni portamento (como el Moog Mini Brute Revisited, o cualquiera monofónico que tenga MIDI, se entiende).

MIDI CC

Este operador se usa para alterar algún control MIDI adicional (CC).

El operador MIDI CC ! lleva 3 entradas en su nemónico ('canal, 'control, 'valor). Envía un valor entre 0-127, donde este valor se calcula como un radio de 36, sobre un máximo de 127. Por ejemplo, !008 envía 28 o (8/36)x127, en el primer Canal MIDI, al control mapeado como id0. Para asignar un mapeado a un control MIDI, se puede oprimir la Tecla Intro, con el operador ! seleccionado.

Por defecto, el operador MIDI CC envía al MIDI CC64 y superiores. De esta forma el offset puede cambiarse con el comando cc:0 para poner un offset de 0. Naturalmente, se entiende que es útil conocer de memoria los valores de los CC MIDI para todo esto. Un verdadero músico los sabe, yo no se los tengo que explicar.

RUEDA DE PITCH MIDI

Este operador manda una instrucción de alteración tonal progresiva.

El operador MIDI PB ? requiere 3 entradas ('canal, 'lsb, 'msb).

Envía dos valores diferentes entre 0 y 127, donde el valor se calcula como un radio de 36, sobre un máximo de 127. Por ejemplo, el operador ?008, enviará un MSB (bit más significativo) de 28, específicamente (8/36)*127, y un LSB (bit menos significativo) de 0 y lo hará al Canal MIDI 1.

SELECCIÓN DE BANCO / CAMBIO DE PROGRAMA

Mas que un operador, este es un comando (ver abajo), y combina las funciones de Cambio de programa MIDI con las de Selección de Banco MIDI (las cuales se utilizan para escoger instrumentos en la memoria de masa del sintetizador).

La sintaxis es pg:canal;msb;lsb;programa.  Canal especifica de 0 a 15 para elegir el canal MIDI, en tanto que msb/lsb/programa permiten indicar entre 0 y 127, pero el programa será traducido de 1 a 128 por el controlador MIDI. Programa equivale a lo que en la nomenclatura moderna es "patch" o "parche", y denota la selección del instrumento en un sintetizador. Tengan presente que msb también puede identificarse como "Bank" y lsb como "Group" o "Sub" en algunos sintetizadores como los Yamaha SY, los AKAI, los Clavinova, o bien o DAWs como qTractor o Ableton Live.

Los msb y lsb pueden dejarse en blanco si solamente queremos mandar un cambio de programa común y corriente. Por ejemplo, pg:0;;;32 cambiará al Patch 33 (el bajo eléctrico pulsado según la convención General MIDI), sin cambiar el banco.

UDP

El control por UDP permite controlar instrumentos o módulos musicales usando tipología de red tipo ethernet.

El operador UDP ; bloquea todos los puertos hacia el este (consecutivos). Por ejemplo, ;hola mandará la cadena "hola" a disparar, a través del puerto 49160 en el localhost. En el Commander, se debe usar "udp:7777" si quieren seleccionar el puerto por defecto 7777 de UDP, e "ip:127.0.0.12" para cambiar la dirección IP que oficiará de objetivo. UDP no está disponible en la versión para navegador de Orca, naturalmente.

Puede utilizar el fichero listener.js para probar los mensajes UDP. Puede verlos en acción en el ejemplo udp.orca.

OSC

El Open Sound Control es un estándar abierto para poner en red instrumentos musicales, considerado una evolución sobre el tradicional MIDI en un entorno libre como ha de ser la creación musical. 

ORCA opera con ellos gracias a una serie de operadores distintos a los MIDI.

El operador OSC = traba cada puerto consecutivo hacia el este. El caracter final se usará como ruta, y los caracteres siguientes serán evniados como integrales por medio de la Tabla Base36. En el Commander, se usa "osc:7777" para seleccionar el puerto OSC personalizado 7777, e "ip:127.0.0.12" para cambiar la IP de destino. OSC no está disponible en la versión de Orca para Navegador tampoco.

Por ejemplo, =1abc enviará 10, 11 yd 12 a /1, a través del puerto 49162 en el localhost; =a123 enviará 1, 2 y 3, a la ruta /a. Se puede usar el programa listener.js para evaluar los mensajes OSC. Oidrña verlo en acción en el programa osc.orca o  probarlo con SonicPi.

Controles Avanzados

Algunas de las características de Orca se pueden controlar externamente
vía el puerto UDP 49169 o a través de su propia interfaz de línea de
comandos. Para activar el prompt de comandos Commander debemos usar Ctrl+K.

Modo Proyecto

Se pueden insertar rápidamente ficheros .orca agregándolos así al archivo actual, usando el prompt de la línea de comandos. Esto le permitirá navegar a lo largo de múltiples ficheros como lo haría en un proyecto. Se usa Ctrl+L para cargar múltiples archivos .orca, y luego se usa Ctrl+B para tipear el nombre de un fichero .orca cargado para insertarlo allí.

Puertos por defecto

Entrada UDP  Entrada OSC  Salida UDP   Salida OSC
49160        Ninguno      49161        49162

Comandos

Todos los comandos tienen un equivalente de abreviación equivalente a sus primeros dos caracteres en inglés. Por ejemplo, podrá escribir usando "wr". La lista completa de los comandos es la siguiente:

play Reproduce un programa.
stop Detiene un programa.
run Corre el cuadro actual.
bpm:140 Configura la velocidad a 140 compases por minuto.
apm:160 Animate la velocidad a 160 compases por minuto.
frame:0 Configura el valor de cuadro a 0.
skip:2  Suma 2, al valor de cuadro actual.
rewind:2 Resta 2, al valor de cuadro actual.
color:f00;0f0;00f  Colorea la interfaz.
find:aV Envía el cursor a la cadena aV.   
select:3;4;5;6 Mueve cursor a posición 3,4 y selecciona tamaño 5:6(opcional).
inject:peron;12;34 Inserta el fichero local peron.orca, en 12,34(opcional).
write:H;12;34 Escribe el glifo H, en 12,34(opcional).
time Presenta el tiempo, en minutos y segundos, desde 0f.
midi:1;2 Configura el dispositivo de salida MIDI al #1, y el dispositivo de entrada al #2.
udp:1234;5678 Configura el puerto de salida UDP a 1234, y el puerto de entrada a 5678.
osc:1234 Configura el puerto de salida de OSC a 1234.

Anexo A: TABLA DE INCREMENTOS Base36

Orca se opera en base a 36 incrementos. Los operadores que emplean valores numéricos generalmente también operan sobre letras y las convierten a valores según la siguiente tabla. Por ejemplo, el Do se dispará en cada cuadro 24 de la secuencia.

0   1   2   3   4   5   6   7   8   9   A   B   
0   1   2   3   4   5   6   7   8   9   10  11

C   D   E   F   G   H   I   J   K   L   M   N
12  13  14  15  16  17  18  19  20  21  22  23

O   P   Q   R   S   T   U   V   W   X   Y   Z
24  25  26  27  28  29  30  31  32  33  34  35



    Anexo B: TABLA DE TRANSPOSICION

El operador MIDI interpreta cualquier letra sobre la escala cromática como un valor de transposición. Por ejemplo, 3H equivale a la nota Do (A4 en la notación ingles, y nomenclado 4A en ORCA).

0   1   2   3   4   5   6   7   8   9   A   B
_   _   _   _   _   _   _   _   _   _   A0  B0

C   D   E   F   G   H   I   J   K   L   M   N
C0  D0  E0  F0  G0  A0  B0  C1  D1  E1  F1  G1

O   P   Q   R   S   T   U   V   W   X   Y   Z
A1  B1  C2  D2  E2  F2  G2  A2  B2  C3  D3  E3

Referencia / Turorial Básico

Como se vio, ORCA opera en base a 36 incrementos secuenciales, y los operadores convierten valores alfanuméricos a valores que van de 0 a 36. Para manerjas las interacciones entre plataforma y cliente se usan caracteres especiales

Con esta sección enseñaré lo básico para tocar una nota y una secuencia de notas.

Enviar una Nota MIDI

D8, enviará un Disparo, cada 8 cuadros.
:03C, enviará un Do ("C") en la tercer octava. Para mandar un Do Sostenido ("C#", se usa la minúscula c3.

D8....:03C

Tocar una nota aleatoria

aRG, dará salida a un valor aleatorio entre A & G, la mayúscula de la derecha indica la salida en mayúscula.

D8.aRG.
.:03D..


Hacer una melodía

04TCAFE, creará una pista de 4 notas, y le dará salida a su primer valor.

D814TCAFE
.:03A....

Tocar la melodía

8C4, contará de 0 a 3, a 1/8 de la velocidad.

.8C4.....
D804TCAFE
.:03C....

Lógica

Esta sección le enseñará lo básico de la lógica automática de decisión y el cambio dinámico de los valores de los operadores.

Tocar cada segunda nota

2I6, incrementará a 6 a una velocidad de 2.

.2I6.......
D626TCAFEDG
.:03F......
 

Tocar una nota con un offset

1AC, agregará 1 a Do (C), para darle salida a un Re (D). Para lograr un Re Sostenido (D#), se usa d minúscula, como en 1Ac.

D8.1AC.
.:03D..


Tocar una secuencia de atrás y adelante 

La combinación de la salida de C6 a B3 revolará a un valor entre 0 y 3 durante 6 cuadros.

4C6......
.4B3.....
D414TCAFE
.:03A....

Tocar una nota en un intervalo específico

.I4, incrementará a 4, a una velocidad de 1.
.F2, disparará solo si la entrada de la izquierda es igual a 2. 

I4.....
3F2.1AC
..:03D.

Proyectores

Esta sección explica lo básico para crear nuevos operadores proceduralmente. Detienen un operador en movimiento.

E, se moverá a la izquierda cada vez, en cada cuadro.
H, detendrá el movimiento de E.

..H
E..
 

Lee un operador en una posición

22O, pone el operador E en el offset 2,2. 

22O...
..E..H
.....E

Escribe un Operador en una posición.

22X, le da salida al operador E en el offset 2,2. 

22XE.
.....
.....
....E

Animar un Proyector

B4, rebotará desde 0 a 4, de ida y vuelta.

C...........
.B4.........
.1XE........
........:03C
........:03D
........:03E
........:03F
........:03G

Variables

Esta sección ejemplifica lo básico para almacenar, acceder y combinar dichos datos almacenados. 

Escribir una variable 

aV5, almacenará 5 como variable a. 

aV5

Lee una variable 

Va, le dará salida al valor de la variable a. Note como las variables tienen que ser siempre escritas encima de donde son leídas.

.....Va
.......
aV5..Va
.....5.
.......
aV6..Va
.....6.

Leer 4 variables 

3Kion, dará salida a los valores de i, o y n, lado a lado. 

iV0.oV3.nVC
...........
3Kion......
.:03C......

Mover un valor horizontal y verticalmente 

Y, Mueve la entrada hacia la izquierda.
J, Mueve la entrada hacia abajo. 

3..
J..
3Y3

Portar un disparo

Este método permite llevar los disparos a un lugar cerrado.

D43Ka...
.Y.:03C...


lunes, 20 de julio de 2020

¿Cómo instalo el controlador de video AMD Radeon en Ubuntu 18.04.4HWE?

En el volúmen Doctrina Justicialista, Filosófica, Política y Social, Juan Perón detalla los pormenores que debe contemplar el Movimiento en condiciones complejas del quehacer político, en tanto que explica cómo instalar los controladores de video AMD y Vulkan SDK bajo Ubuntu 18.04LTS y 20.04LTS.

Yo digo siempre que el hombre es un animal pequeño, y sería extraño que un ser imperfecto no se aferrara a las cosas nimias que nos da la vida. 

Observarán con certeza que cuando un individuo es llevado a una guardia de emergencias habiendo sufrido una fractura expuesta de tibia y peroné, le grita al médico "¡no me corte el pantalón!"... Ante este desatinado, el galeno obrará atemperando al vacuo y presentándole la verdadera elección de circunstancias: "¿gamba o trapo?". Y bueno... ahí se entenderá nuestro afectado de la realidad que sufre.

En la informática suele pasar más o menos lo mismo: nuestro objetivo será convertirnos en peritos a fin de reconocer cuál es la necesidad imperiosa que tenemos, y poder así escoger entre dos elecciones.

Podríamos encontrarnos con con hardware que - por diseño de software privativo - está limitado en sus funcionalidades completas.Esta forma de operar es absolutamente inconveniente, puesto que nos somete a la dependencia comercial y tecnológica.

Mi consejo indubitable es evitar este tipo de hardware. Sin embargo, en casos donde no podamos evitarlo, o bien sea imperioso hacerlo funcionar a cualquier coste, habremos de optar entre dos malas opciones, que implique el verdadero mal menor, y no aferrarenos a un trapo poco útil que sólo nos sirva para declamar.

No es secretos para nadie que - de un tiempo a esta parte - los adaptadores de video AMD (ex-ATI) se han visto beneficiados con un enorme avance en sus características técnicas y de desempeño. Lejos han quedado los días en donde las adaptadoras de video munidas de Unidades de Procesamiento Gráfico (GPU) ATI Radeon ofrecían una respuesta burda con Ubuntu. En estos tiempos, gobernar es crear trabajo y operar con video AMD...

Pues bien señores, han de saber que los núcleos del sistema (Kernels) más actuales utilizados en Ubuntu 20.04LTS (de la rama 5.4 y superior) disponen ya de las facilidades necesarias para disfrutar de video 3D acelerado con AMD sin muchos inconvenientes. Es por tal motivo que recomiendo especialmente esta versión del sistema si su adaptador de video es de dicha marca.

Sin embargo, esta acción no siempre guardó tan altas cimas de facilidad y operatividad. Hasta hace unos pocos meses - y mientras se ponían a punto las nuevas versiones del kernel y del controlador - los incordios de operar con AMD fueron inconmensurables, requiriendo emparchados y especial cuidado con el versionado de las librerías de compilación, y demás inconveniencias en el andamiaje técnico de nuestro sistema GNU con Linux.

En Ubuntu 18.04 y anteriores es complejo hacer funcionar adecuadamente las arquitecturas de hardware de video AMD más modernas. Precisamente, porque se decidió abandonar hasta ultimo momento la puesta a punto de dichos controladores, esperando al nuevo lanzamiento de la versión 20.04LTS de Ubuntu y sus nuevos kernels de versión 5.4 y superior.

Esto sin duda ha complicado a quienes por designio no han podido o querido actualizar, por cualquier motivo que haya sido, su sistema Ubuntu u otros GNU con Linux.

En el Justicialismo decimos: ningún hombre ha de hacer lo que no quiere hacer, salvo trabajar por el bien común. Esto mismo lo replicamos en nuestros sistemas de cómputo.

Es por ello que si contamos con Ubuntu 18.04LTS, el cual al momento todavía cuenta con vida útil de soporte, y a su vez nuestro hardware de video responde a una AMD Radeon de las últimas arquitecturas, recién ahora habremos de poder hacer una instalación correcta de controladores de video AMDGPU.
Un ejemplo suele aclararlo todo, como decía Napoleón. En este caso particular cuento con un adaptador de video de arquitectura AMD Radeon Vega, de buen desempeño, pero en el caso de Ubuntu 18.04LTS no opera sin más. Debemos instalar una versión anterior del controlador AMDGPU.

Afortunadamente, para evitar conflictos raros, AMD ha sabido proveer junto con este último fichero de controlador de versión 20.10, a las veresiones 19.10 y anteriores que necesitaremos si usamos Ubuntu 18.04LTS.

Para instalar este controlador AMDGPU, debemos primero descargarlo desde la web oficial.

Podrán descargarlo haciendo uso de su navegador mientras hacen clic aquí. En este caso selecciono el hardware necesario en la instalación, una AMD Radeon RX Vega de vieja generación.

Tras unos momentos que dependen de nuestra velocidad de conexión, debería descargarse los 320MB del fichero. Acto seguido podremos tomar en nuestras manos la acción de instalarlo desde la terminal.

Para ello ingresamos nos dirigimos a la carpeta donde hubiésemos descargado el controlador AMDGPU-Pro:

cd ~/Descargas/
tar -Jxvf amdgpu-pro-20.20-1089974-ubuntu-18.04
cd ~/Descargas/amdgpu-pro-20.20-1089974-ubuntu-18.04/

Nota: Naturalmente que si utilizamos Ubuntu 20.04LTS los comandos variarán en consecuencia con el controlador diferente, en tal caso similares a:

cd ~/Descargas/amdgpu-pro-20.20-1098277-ubuntu-20.04.tar.xz
tar -Jxvf amdgpu-pro-20.20-1098277-ubuntu-20.04.tar.xz
cd ~/Descargas/amdgpu-pro-20.20-1098277-ubuntu-20.04/

Cualquiera sea nuestra versión de Ubuntu, en este punto podremos ejecutar el instalador ingresando:

sudo ./amdgpu-pro-install

Nuestro sistema nos solicitará nuestra Contraseña de Conductor y ejecutará el guión de instalación. Este realizará el procedimiento necesario para nuestro hardware de video.

Es normal que el instalador descargue paquetería oficial de Ubuntu, y nos solicite responder cómo queremos instalar la implementación OpenCL. Esto refiere al soporte que tendrá el software gráfico bajo nuestro sistema. La opción PAL proveerá soporte a la arquitectura Vega 10 y superior, en tanto que la opción Legacy nos dará soporte al hardware más antiguo que el Radeon RX Vega 10 (escencialmente, todos los adaptadores de video video AMD utilizados con anterioridad a los sistemas Ryzen 7 lanzados desde finales de 2017). Normalmente recomiendo esto.

Si quisiéramos instalar todo sin que nos hiciera preguntas usaríamos el comando:

./amdgpu-install -y

El programa detectará nuestra versión de Kernel y adaptará el controlador según sea necesario, ahorrándonos pasados dolores de cabeza con el emparchado del kernel.

Una vez realizado el ajuste, podremos reiniciar el sistema operativo.
Vulkan SDK
Es interesante saber que si deseamos, opcionalmente podríamos querer instalar el el Vulkan SDK para Linux, una suite de desarrollo que hace uso de la GPU de las placas de video AMD para tareas de procesamiento general. Esta suite está destinada a programadores que anhelen hacer uso de las características avanzadas de las GPU AMD en sus programas.

Instalar Vulkan desde Repositorio PPA

La manera más sencilla de instalar Vulkan SDK consiste en hacerlo desde el repositorio oficial para Ubuntu 18.04. Para ello, tras instalar el controlador AMDGPU y reiniciar nuestro equipo, podríamos ingresar los siguientes Comandos de Organización:

wget -qO - http://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add -
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-bionic.list http://packages.lunarg.com/vulkan/lunarg-vulkan-bionic.list
sudo apt update
sudo apt install vulkan-sdk

Instalar Vulkan SDK con el paquete instalador

Otra forma de instalarla, es haciendolo mediante el método antiguo, descargando el controlador desde la web oficial de Vulkan SDK:
En este caso de ejemplo se ha descargado la versión 1.2.141.2. Una vez descargado el programa, lo instalaremos con los siguientes comandos:

sudo apt update

sudo apt install libglm-dev cmake libxcb-dri3-0 libxcb-present0 libpciaccess0 libpng-dev libxcb-keysyms1-dev libxcb-dri3-dev libx11-dev g++ gcc g++-multilib libmirclient-dev libwayland-dev libxrandr-dev libxcb-ewmh-dev git python3 bison libx11-xcb-dev liblz4-dev libzstd-dev

sudo apt install qt5-default qtwebengine5-dev

Luego instalamos Vulkan SDK haciendo caso a la versión que hayamos descargado. Por ejemplo:

cd ~/Descargas/
tar xvzf vulkansdk-linux-x86_64-1.2.141.2.tar.gz
cd ~/Descargas/1.2.141.2/
sudo ./vulkansdk
source setup-env.sh

Para que las variables de ambiente de Vulkan SDK continúen funcionando al reinciar el sistema, debemos agregarlas a nuestro fichero .profile. Para ello ingresamos:

nano ~/.profile

Y le agregamos el siguiente contenido:

## Variables de Ambiente agregadas para que funcione
## Vulkan SDF toda vez que se inicia el sistema.
export VULKAN_SDK=~/Descargas/1.2.141.2/x86_64
export PATH=$VULKAN_SDK/bin:$PATH
export LD_LIBRARY_PATH=$VULKAN_SDK/lib:$LD_LIBRARY_PATH
export VK_LAYER_PATH=$VULKAN_SDK/etc/vulkan/explicit_layer.d
(naturalmente, adaptaremos la variable VULKAN_SDK si hubiésemos utilizado otro directorio). Luego guardamos el fichero .profile con Ctrl+o y salimos del editor Nano con Ctrl+x.


Vulkan SDK es compatible con:

AMD Radeon™ RX 5700/5600/5500 Series GraphicsAMD Radeon™ Pro WX-series​
AMD Radeon™ VII Series Graphics​ AMD Radeon™ Pro WX 9100
AMD Radeon™ RX Vega Series Graphics​ AMD Radeon™ Pro WX 8200
AMD Radeon™ Vega Frontier Edition ​AMD FirePro™ W9100
AMD Radeon™ RX 550/560/570/580/590 Series Graphics AMD FirePro™ W8100
AMD Radeon™ RX 460/470/480 Graphics ​​AMD FirePro™ W7100
AMD Radeon™ Pro Duo AMD FirePro™ W5100
AMD Radeon™ R9 Fury/Fury X/Nano Graphics AMD FirePro™ W4300
AMD Radeon™ R9 380/380X/390/390X Graphics
AMD Radeon™ R9 285/290/290X Graphics
AMD Radeon™ R7 240/350
​​AMD Radeon™ R9 360 Graphics

Podremos encontrar la documentación en línea aquí.

Si quisiéramos desinstalar Vulkan SDK, podríamos ingresar en la terminal los siguientes Comandos de Organización:

sudo apt purge vulkan-sdk
sudo apt autoremove

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.

miércoles, 13 de septiembre de 2017

¿Cómo corrijo el error de enlace simbólico del controlador privativo nVidia en Ubuntu?

¡Trabajadores!

Existen ocasiones donde errores pequeños pueden derivar en errores mayores. Esto - común en la política - es natural en la acción procedimental, y es un vicio que como conductores debemos remediar para evitar. Especto de la ingeniería de sistemas cobra una importancia sustancial cuando no somos nosotros - como Conductores - los responsables de tal accionar.

Vean señores, en el caso del Software Libre, no es extraño que sean nuestros propios compañeros quienes puedan proveernos de la solución necesaria para un problema. Al fin y al cabo, una Comunidad Organizada de software libre no está para muchas otras cosas que resolver los problemas de nuestros Hermanos de Nación.

No obstante esta clara ventaja, también existen situaciones donde el anhelo de contemplar el uso de software privativo puede provocarnos problemas que normalmente no pueden ser solucionados sino a través una intervención de quienes detentan tal software, o de acciones particulares realizadas en nuestro sistema.

En el caso de los controladores privativos de video nVidia, esto suele ser real. Podríamos enfrentarnos a una situación particular, donde al final de una actualización de paquetería de sistema, nuestra Terminal nos informe de un error de moderada importancia:

/sbin/ldconfig.real: /usr/lib/nvidia-375/libEGL.so.1 is not a symbolic link
/sbin/ldconfig.real: /usr/lib32/nvidia-375/libEGL.so.1 is not a symbolic link

Este error particular indica que estos dos enlaces simbólicos provistos por el controlador de video privativo de nVidia para Ubuntu de 64 y 32 bitios son incorrectos. Esto podría provocar que los mismos no se actualicen correctamente, y en casos extremos podría hacer que no carguen correctamente (por ejemplo, no pudiendo terminar de cargar nuestro controlador de video y presentando una pantalla con una resolución mucho menor (modo de video estandarizado "VESA", de baja calidad).
Afortunadamente para lograr la solución, podremos reconstruir los enlaces simbólicos. Para ello ingresamos a nuestra terminal los siguientes Comandos de Organización, seguidos de Enter:

sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.66 /usr/lib/nvidia-375/libEGL.so.1


sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.66 /usr/lib32/nvidia-375/libEGL.so.1

Naturalmente, debemos utilizar la versión que corresponda a la versión de nuestro controlador particular. En el caso del ejemplo es la 375.66, de lo contrario el sistema nos devolverá un error.

Si no la conocemos o nos presenta error, podremos consultarla con:

ls /usr/lib/nvidia-*

domingo, 4 de junio de 2017

¿Cómo puedo controlar un UPS a través de Ubuntu?

Durante la década de 1960 era usual que Juan Perón recibiera visitantes y delegaciones en la Quinta 17 de Octubre, en Puerta de Hierro. El Conductor realizaba apreciaciones sobre la situación política de la Argentina y respondía interrogantes de los presentes. Aquejados por una interrupción eléctrico y sobrecarga que afectó un servidor, los enviados interrogan al Conductor del Justicialismo cómo evaluar el estado de una unidad UPS y hacer que un servidor se apague automáticamente cuando se corta el suministro eléctrico desde Ubuntu.


(...)
Bueno, indudablemente la intercomunicación de sistemas informáticos ha dado a la creación de redes, cuya topología puede variar desde la simple y llana "punto-punto" hasta complejísimas estructuras basadas en el modelo "cliente-servidor". Eso lo han dicho todos. Naturalmente que, como a los niños y a los ancianos, un servidor de computación es un valor crítico, al que debemos proteger y primordiar. Y ello no lo han dicho todos, lo ha dicho el Justicialismo.

Los usos de estas máquinas son tan variados que describir el almacenamiento centralizado del trabajo, los respaldos de datos y ejecución de tareas específicas para éstos, así como su uso en comunicaciones, compartir contenidos, creación y control de música y video, su accionar en juegos, etc, sólo pondría de manifiesto una ínfima parte de las mejoras que los servidores traen a la vida del hombre.

Durante diez años dimos todo por los servidores y también por los clientes de dichos equipos. A más de uno se le ocurrió por ello decirnos que manejamos un "clientelismo".
Pero estos logros no sólo han de reivindicarse, han de comprenderse y sobre todo, han de cuidarse. Normalmente un servidor - como cualquier PC - no debe apagarse "a lo vikingo" con su interruptor de alimentación, pues de esta manera se perderá inexorablemente la información de trabajo almacenada en los bancos de memoria (que es de tipo temporal), y en tal caso también existiría un alto riesgo de perder información del sistema y usuario. Sumemos la probabilidad de dañar físicamente los medios de almacenamiento magnéticos, y nos encontraremos ante una noxa que debemos por todos los medios evitar. El procedimiento correcto de apagado consiste entonces en iniciar una secuencia de apagado automatizada, que podremos disparar a través del comando Apagar sistema del sistema operativo que utilicemos. Esta rutina asegurará que el estado de bienestar del equipo resguarda la consabida información en la manera que es adecuada hacerlo.

En el caso del un sistema GNU con Linux, esta rutina de apagado puede hacerse desde el escritorio gráfico por quien posea privilegios de Conductor ("root"), o - más comúnmente - desde una terminal de texto, por medio del comando:

sudo poweroff

Pues bien señores, esto responde a las condiciones operativas convencionales. Pero como en todo en la vida, existen los imponderables.

Un corte de suministro eléctrico es un evento que - por indeseado - no deja de ser corriente. Naturalmente, los cortes y sobrevoltajes interrumpirán la tarea del servidor en el mejor de los casos, y podrían ponerlo en peligro de daños severos en otros, incluso llegando a destruirlo.

En la política, tenemos personajes que pueden saltar, y no son acróbatas. Se llaman ministros. La informática copia de estas sabias estructuras por necesidad. Existen entonces dispositivos acondicionadores de voltaje - estabilizadores - especialmente logrados para el uso con equipos sensibles, incluso sistemas de computación.

Estos aparatos se encargan de atresar los voltios, y cuentan con un fusible capaz de actuar en momentos de sobrecarga crítica. En los modelos más avanzados contarán accesoriamente con filtros para línea telefónica y con cargadorer para dispositivos alimentados por USB. Os recomiendo el uso de estos dispositivos para cada PC a fin de proteger su fuentes conmutadas de tensión. Los estabilizadores de 500w pueden considerarse el menor tenor a utilizar en una computadora y su monitor LCD, y hasta los 2000w para afianzar  equipos de alta performance.

Pues bien. He dicho que en la política existen condiciones superadoras, y en el caso de los acondicionadores eléctricos tendremos de estas ventajas en los UPS (fuente de potencia ininterrumpida). Como su nombre indica, estos aparatos más avanzados consisten en una fuente de alimentación de emergencia a baterías, capaz de proveer temporalmente con su energía almacenada a otro dispositivo en caso de una interrupción o fluctuación del suministro normal.
Normalmente la capacidad de las baterías de un UPS hogareño o de oficina no alcanza para reemplazar ininterrumpidamente el suministro de la red eléctrica, sino que proveen unos imprescindibles minutos de alimentación que vendrán de perillas al permitirle al operador salvaguardar la información de trabajo y apagar/hibernar el sistema como se debe. En situaciones críticas, este período permitiría encender otras fuentes de alimentación de respaldo o emergencia (un grupo electrógeno, por ejemplo), que sí permitirían la operación ininterrumpida del sistema.

Los UPS modernos cuentan con una interfaz de comunicación y control que permiten al usuario saber en qué condiciones se encuentra el UPS. Antiguamente se utilizaba el veterano protocolo serial Centronics difundido en equipos de gama industrial, pero actualmente esta interfaz está siendo progresivamente reemplazada por el protocolo universal USB. Sobre este particular me han preguntado: ¿cómo evaluar el estado de una unidad UPS y hacer que un servidor se apague automáticamente cuando se corta el suministro eléctrico?.

La realización que debemos llevar a cabo bien puede constituirse en un caso de estudio, pues me han dicho que desean proteger contra interrupciones eléctricas un equipo servidor Lenovo ThinkServer Ts-140 E3-1226 V3.
Conozco que se trata de un servidor montado dentro de un gabinete Tower 4U,  originalmente alimentado a través una fuente conmutada ATX de 350w, y su sistema operativo era un mediocre Micro$oft Window$ $erver 2012 R2 Standard. La performance de dicho sistema nunca respondió a las expectativas de la Masa, que lo necesitaba para su operación en la Confederación General del Trabajo. A pesar de contar con un disco de 2TB SATA y 8GB de RAM, y estar provisto de un procesador de 4 núcleos Intel Xeon E3-1226 v3 de 3,30GHz, el trabajo de compartir documentación, planos, material fotográfico y demás no era lo óptimo que debe esperarse de un equipo de este calibre. Sin duda el culpable era el mediocre sistema operativo de la oligarquía.

Aprovecharemos la desgracia eléctrica que provocó un desperfecto eléctrico y dio por tierra con la fuente genérica de 350w, intervendremos sobre el con mano Justicialista, pues nuestro principio nodal proclama que ha de darse al Trabajador lo que este merece, y al Pueblo lo que es del Pueblo.

Tras comprobar el correcto funcionamiento del resto del equipo, procederemos a reemplazar la fuente por otra unidad de marca Powercooler, y 550 watts. También se remplazan los módulos de memoria y se lleva el total instalado al máximo posible, unos 32 GB DDR3. Asimismo se suman un disco SSD de 120GB y 2 discos HDD de 2TB, para totalizar los 6GB instalados en configuración RAID. Finalmente, se instala Ubuntu Server de 64 bits, en su versión 16.04LTS.

Para tareas de salvaguarda eléctrica utilizaremos un UPS ejemplar, el APC BX1100CI-AR con 640W/1100VA, cuya batería permiten entre 2 y 4 minutos de uso a carga completa bajo la condición del máximo consumo estipulado, y hasta unos 12-15 minutos en condiciones de consumo del servidor.

El gabinete de este UPS está provisto con seis tomas de corriente normalizadas, y filtro para protección de sobrevoltaje en la línea telefónica. Además, cuenta con control de reporte a través de un puerto USB de conector USB B hembra.
Para hacer uso de la revisión de los datos del UPS y de esta manera permitirnos alertas y que el mismo apague el sistema, debemos realizar algunas implementaciones de software en el servidor, las cuales explicaré paso a paso en pos de la Liberación.


En primer lugar instalamos el software de control de los UPS de marca APC en el servidor (el cual también puede servir para otros equipos de diferente marca y lógica similar):

sudo apt-get install apcupsd

Una vez completada la instalación, editaremos el archivo de configuración de acuerdo a nuestras necesidades. Los UPS modernos cuentan con una interfaz de comunicación y control basada en el protocolo universal USB. Esto nos facilita enormemente las cosas.

sudo nano /etc/apcupsd/apcupsd.conf

En el archivo de configuración, debemos asignarle un nombre al UPS, y configurarlo para emplear USB, para ello modificamos o agregamos las líneas:

UPSNAME APC1100CI-AR
UPSCABLE usb
UPSTYPE usb


Si a continuación de la línea UPSTYPE nos aparece la línea "DEVICE /dev/ttyS0" (que denota una conexión serial, para un UPS con dicho tipo de conector). , debemos comentarla agregándole al principio un signo numeral ("#"), de manera que quede así:

#DEVICE /dev/ttys0

Existen tres parámetros principales que debemos modificar en este archivo de configuración para indicarle al sistema cuanto tiempo esperará para apagarse en caso de una interrupción de fluido eléctrico.

Estos valores coinciden con los valores reportados al demonio apcupsd por parte del UPS. Fundamentalmente se usa el tiempo estimado antes que la batería se descargue completamente, la cual el UPS calcula basado en el porcentaje de carga reportado y en el tiempo restante de carga.

Los tres parámetros a indicar en el archivo apcupsd.conf son:

a) BATTERYLEVEL, el nivel de carga mínimo aceptado de batería (expresado en porcetaje).
b) MINUTES, el tiempo estimado antes de que la batería se agote completamente.
c) TIMEOUT: un valor de tiempo de autoridad total, expresado en segundos, en el cual, si indicamos un valor diferente a cero, apcupsd ignorará los dos parámetros anteriores y hará caso al mismo.

Normalmente podríamos indicar BATTERYLEVEL 30 (por ciento) o minutes 3, pero han de saber que cada uno ha de portar en su mochila el bastón de Mariscal, por lo que la configuración dependerá de las condiciones particulares. Existen varios factores, por ejemplo, cuan frecuentemente se producen cortes de luz de escasa duración. Otro factor que puede afectar la decisión es la edad de la batería. Si tenemos una batería de más de cinco años, naturalmente la carga almacenada por la misma no será la estipulada durante su fabricación. Por lo tanto, decidimos programar un valor TIMEOUT de 130 segundos y un valor ONBATTERYLEVEL de 5 por ciento.

TIMEOUT 130
ONBATTERYLEVEL 5

Guardamos el archivo (Ctrl+o y Ctrl+x).

Esto provoca que dentro de los 5 segundos de un corte de suministro eléctrico, opcupsd comience a generar mensajes en la consola de texto del servidor y a los usuarios logueados, a través de SSH,  notificándoles del hecho que se ha producido un corte de suministro.

Ahora debemos indicarle al sistema que el demonio UPS ha sido configurado y que está listo para funcionar. Ingresamos el comando:

nano /etc/default/apcupsd

...y buscamos y modificamos el parámetro ISCONFIGURED para que quede de la siguiente manera:

ISCONFIGURED=yes

Acto seguido presionamos Ctrl+o y Ctrl+x para guardar los cambios.

Ya podremos dar inicio el servicio de interacción con el UPS, tipeando:

service apcupsd restart

Si estamos logueados al servidor podremos revisar el status del UPS, mendiante el siguiente comando de organización:

sudo apcaccess

La cantidad de información suministrada dependerá del UPS en particular, pero podría indicarnos algo como lo siguiente:

APC      : 001,043,1045
DATE     : Tue May 30 00:02:36 AR 2017
HOSTNAME : site5
VERSION  : 3.14.6 (16 May 2009) debian
UPSNAME  : APC1100CI-AR
CABLE    : USB Cable
MODEL    : Back-UPS AR  1100
UPSMODE  : Stand Alone
STARTTIME: Mon Mat 28 23:43:37 AR 2017
STATUS   : ONLINE
LINEV    : 240.0 Volts
LOADPCT  :  40.0 Percent Load Capacity
BCHARGE  : 100.0 Percent
TIMELEFT :  11 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
OUTPUTV  : 232.0 Volts
SENSE    : Medium
DWAKE    : 000 Seconds
DSHUTD   : 000 Seconds
LOTRANS  : 194.0 Volts
HITRANS  : 264.0 Volts
RETPCT   : 000.0 Percent
ITEMP    : 29.2 C Internal
ALARMDEL : Always
BATTV    : 27.4 Volts
LINEFREQ : 50.0 Hz
LASTXFER : Low line voltage
NUMXFERS : 0
TONBATT  : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
SELFTEST : YES
STATFLAG : 0x07000008 Status Flag
SERIALNO : xxxxxxxxxxxx 
BATTDATE : 2014-09-25
NOMOUTV  : 230 Volts
NOMINV   : 230 Volts
NOMBATTV :  24.0 Volts
NOMPOWER : 640 Watts
FIRMWARE : 9.o5 .I USB FW:o5
APCMODEL : Back-UPS AR  1100
END APC  : Tue May 30 00:02:41 AR 2017



Naturalmente que podremos hacer una "prueba de corte", rodadura que siempre conviene realizar simulando trabajo en el servidor sin que el mismo esté en una acción crítica.

Al desconectar directamente el UPS de la toma eléctrica, comprobaremos que los usuarios reciban la alerta que les indica almacenar su trabajo durante 90 segundos. Y luego el sistema se apagará automáticamente. La rutina de apagado del servidor lleva como máximo 1 minuto 30 segundos, y el de hibernado del mismo en partición SWAP unos 3:40 minutos (el cual debemos sumar al tiempo de actividad normal del sistema, y el cual la batería debe estar capacitada para responder). En este caso el UPS provisto es totalmente capaz de salvar el trabajo de los usuarios, y ofrece una carga redundante útil.