Uso de Software Libre en el Instituto Joaquín V. González

La entrevista al profesor Matías García arrojó resultados interesantes, de manera que decidí acercarme al "Joaquín".

Hay varios motivos que llevaron a Matías a usar software libre:

  • El problema ético de usar copias ilegales de software.
  • Las herramientas disponibles como software libre.
  • El uso de software libre en educacion es coherente con los principios pedagógicos, éticos y morales que se deben enseñar en toda institucion educativa, como por ejemplo no usar copias prohíbidas de software.

De alguna manera, Matías propuso una contrapropuesta utilitaria y ética al mismo tiempo.

El software libre es usado por algunos docentes y en mayor cantidad por alumnos que descrubren sus bondades. En cambio muchos docentes prefieren quedarse usando software privativo ya que consideran que es lo que pide el mercado.

Algunos de los ejemplos de software libre que se utilizan actualmente son:

Mientras tanto el software que siguen usando muchos docentes por resistencia al cambio es:

  • MS Windows 7 (a ser reemplazado el año que viene por la versión 10)
  • MS Office 2012
  • MS Visual Studio
  • Adobe Illustrator
  • Adobe Dreamweaver

Durante la implementación, dado que el departamente de soporte técnico no poseía conocimientos de software libre, Matías colaboró activamente en el proceso.

Los escollos más difíciles a sortear a mi entender de acuerdo a la entrevista son:

  • Falta de decisión política y/o institucional tanto a nivel del Instituto mismo como del estado.
  • Falta de un departamento permamente y profesionalizado de soporte técnico.
  • Pocos conocimientos técnicos.

Para complementar: las iniciativas para implementar y comenzar a usar software libre depende de esfuerzos individuales, a esto se le suma que no hay demasiada conciencia sobre las implicancias legales y/o éticas de las licencias de software-

Para actividades en aulas virtuales en algunos casos usan Google Classroom y en otros Moodle. Matías me comentaba que si bien la solución de Google no es libre y presenta ciertos reparos en cuanto a la privacidad, su uso tiene su explicación: presenta una solución homogénea, de rápido y fácil uso (la mayoría de los alumnos tiene una cuenta de Google al tener un celular con Android). El uso de Moodle depende que algún profesor lo instale, le de mantenimiento, etc. Algo similar sucede con una solución alternativa que le comenté como Nextcloud.

Mi propuesta: Jornadas para Docentes: Uso de tecnología en el aula

En este caso usar una solución que dependa de una infraestrucura de servidores propia es poco viable, teniendo en cuenta la carencia de personal dedicado para tal fin.

Por lo tanto debería ser software de escritorio y fácil de instalar y usar.

Sería interesante poder realizar unas Jornadas de Uso de Tecnología en Educación en el mismo Instituto abierta tanto para docentes. Podrían dividirse en grupos y plantear preguntas tales como:

  • ¿Qué espero que me aporte la tecnología?
  • ¿Por qué uso determinado programa?
  • ¿Cómo enseño informática?
  • ¿Es el modo conductual y/o constructivista el único posible?
  • ¿Qué condiciones de uso tiene el software que hay en las computadoras el instituto?

Luego podría haber una charla que llamaría ¿Hay vida más allá de PowerPoint?

El objetivo es mostrar:

  • Alternativas similares: LibreOffice Impress
  • Alternativas con diferente interfaz: Calligra Stage
  • Alternativas "para salir de la caja": Por ejemplo, hacer un video con kdenlive
  • Alternativa techie (para profesores de informática): Presentaciones con markdown

Cultura institucional y procesos de migración a Software Libre

Entrevista a @profMatias de CaFeLUG

Me contacté con CaFeLUG y @profMatías tuvo la gentileza de responder a mis preguntas:

Datos de la institución

Instituto Superior de Profesorado Dr. Joaquín V. González

Nivel educativo

Nivel Superior, Terciario perteneciente a CABA donde se dan 18 profesorados entre los que se encuentra el Profesorado de Informática cantidad de alumnos: El Profesorado de Informática es de 5 años y se da en turnos mañana y tarde con al rededor de 800 alumnos.

Cantidad de equipos migrados

2 laboratorios de 20 cantidad y tipo de equipos migrados: Cuenta con 2 laboratorios de 20 equipos cada uno. Los equipos de 2014 eran AMD Athlon X2 con 1GB, se fueron actualizando durante los años.

Fecha

Marzo 2014

Duración de la experiencias

Desde 2014 los laboratorios cuentan con DualBoot, se fueron actualizando las distribuciones durante los años hasta hoy.

Como surgió la iniciativa

Matías García concursó y ganó la materia Programación Estructurada y Dinámica del profesorado de informática en noviembre 2013. Al dar la primera clase se encontró con que los laboratorios solo cuentan con MS Windows 7, él desde el 2010 da clases exclusivamente con Software Libre, por lo que le pidió al sector de soporte de la institución que instalen DualBoot para poder tener la posibilidad de trabajar con una distro GNU/Linux tanto los docentes como los alumnos sin obligar a nadie a tener que hacerlo ya que ambos sistemas estarían instalados. El personal de soporte técnico no sabia nada de GNU/Linux pero entendían la posición de Matías y le propusieron que para 2014 sea parte del soporte técnico institucional y así poder ayudarlos en sus tareas y enseñarles sobre Software Libre.

¿Quien la llevó adelante en sus diferentes instancias?

Al ser parte del soporte técnico se dedicó a realizar una imagen de software para los equipos de ambos laboratorios con los sistemas operativos Ms Windows 7 y Ubuntu, mas todo el software requerido por los diferentes docentes para sus materias. Aunque los docentes solicitaban software privativo siempre instaló alternativas en GNU/Linux. De mas esta decir que el software privativo que se instala es ilegal porque la institución ni el gobierno pagan sus licencias. Lamentablemente, no se puede migrar completo a Software Libre porque muchos docentes del profesorado de informática como de otros profesorados que utilizan los laboratorios no saben, no pueden o no les interesa aprender a usar Software Libre.

Resultados

Los mejores resultados se ven en los alumnos y no tanto en los docentes. Obviamente a Matías lo benefició porque cree y milita por una educación tecnológica solo en software libre pero la realidad de otros docentes es continuar con las practicas que ya venían realizando. Aunque varias veces dio charlas y cursos a colegas y está constantemente remarcando las ventajas del uso de software libre en educación tanto a ellos como a los alumnos, han sido pocos los docentes de la institución que utilizan GNU/Linux para sus clases aunque si aumentó el uso de software libre en la plataforma de MS. Los alumnos, sobre todo luego de pasar por mis materias, demuestran mucho interés en la filosofía y uso de Software Libre. Muchos por primera vez tienen contacto con GNU Linux y con la posibilidad de comparar con el sistema que venían usando entonces se da un gran porcentaje de alumnos que me confirman que migran a Software Libre en sus equipos personales. Los alumnos serán futuros docentes de informática, los que pasan por sus materias, entonces uno de sus intereses es justamente que comprendan el porque enseñar con Software Libre y que por lo menos en sus materias tengan un contacto directo con estas tecnologías.

¿Hubo apoyo institucional?

En realidad el rector o comisión directiva de la institución no auditan el software instalado. Cada cierto tiempo el sector de soporte solicita actualización de equipos que si hay posibilidad son comprados con dinero de presupuesto de gobierno o por la cooperadora. Soporte técnico se encarga de la instalación y en este caso pudo ayudar a hacerlo hasta 2016, luego dejó el cargo y los muchachos siguen pidiéndole ayuda cada año para realizar la imagen de GNU/Linux.

Dificultades principales

Creo que en cualquier institución educativa la dificultad es que el

soporte técnico interno o externo tenga los conocimientos para poder realizar un DualBoot o una migración correcta. En este caso no hubo dificultad porque Matías se encargó personalmente de hacerla.

Aprendizajes y análisis de las experiencias

Matías considera que la experiencia es exitosa, aunque los indices o porcentajes sean bajos en los docentes que migraron sus clases, los números en los alumnos son alentadores a continuar trabajando con Software Libre. Muchos docentes manifiestan no querer trabajar con Software Libre básicamente por su desconocimiento a GNU Linux y a creer que tienen que cambiar sus apuntes, tutoriales, prácticas por trabajar con otra plataforma. En docentes de otros profesorados es aun mayor el desconocimiento, creen que MS Windows es el único OS, tanto docentes como alumnos cuando por el DualBoot ingresan a la distro GNU Linux directamente presionan el reset sin tomarse 1 minuto para ver cual es el botón grafico de apagado, quizas trabajan con software libre en la plataforma de MS pero no distinguen entre los tipos de software ni sus ventajas o desventajas.

Modelos pedagógicos y Software Libre

Comparación de modelos educativos

Me parece interesante el cuadro comparativo, bueno entre otras cosas porque... ¡lo escribí yo hace unos cuantos años! Tanto que ya lo había olvidado 1.

Hay que tener en cuenta que buena parte de las plataformas que hoy ejercen un control social lo hacen usando software libre. Desde luego, esto no lo invalida, pero también nos muestra que el modelo de software libre va mucho más allá de usar un programa que tiene una licencia que permite las famosas 4 libertades del software.

De todas maneras, cree en estos días, sería interesante que el software libre sea una asunto que vaya más allá de una cuestión de licencia. Por eso me gustaría hoy referirme a que los algoritmos pueden usarse para oprimir y limitar o para posibilitar y liberar. Naturalmente esto podría conllevar una redifinición conceptual sobre qué queremos decir cuando hablamos de software libre.

El mayor peligro en la actualidad son las democracias recortadas por la ciber-vigilancia:

Al mismo tiempo, la gente se está tomando más tiempo en considerar algo de los resultados éticos que resultan del software libre. El copyleft asegura que podés compartir tu código con tu prójimo sin que tu prójimo sea capaz de denegar la misma libertad a los otros, pero no hace nada en impedir que tu prójimo use tu código para impedir otras libertades fundamentales que no son del software. Mientras los gobiernos hacen más y más uso de la tecnología para realizar actos de vigilancia masiva, y aun genocidios, los autores de software pueden sentirme legítimamente espantados por la idea de que están ayudando habilita esto al permitir que su software sea usado por cualquier propósito.1

Un ejemplo podría ser:

Modelo Libre Modelo Privativo
¿Quién realiza la búsqueda? ¿Cómo la realiza?¿Existen otras respuestas alternativas? ¿Qué intereses puede haber detrás de una respuesta? ¿Cómo están siendo usados los datos? ¿Para qué se usa el software? Un buscador web me da la respuesta verdadera y definitiva. El software es o bien invisible o bien la panacea.

Probablemente la diferencia principal entre los dos modelos es que uno pretende tener todas las respuestas, en cambio el otro se hace preguntas.

Artículos relacionados

Elige Tu Propio Prompt

El prompt

El prompt es la cadena de texto que le indica al usuario que puede ingresar comandos en un shell. En Linux existe la variable PS1 que guarda el valor del mismo. PS1 significa "Prompt String 1".

Por ejemplo, en Fedora tiene el valor [\u@\h \W]\$ y se expande a:

test@localhost:~$

Esta variable reemplaza automáticamente determinados caracteres escapados con una contrabarra. Algunos de ellos son:

Caracter escapado Reemplazado por
\d Fecha en formato dom abr 21
\h El nombre del host sin el dominio
\H El nombre del host completo
\t hora en formato 24 hs
\T hora en formato 12 horas
\@ hora en formato 12 horas am/pm
\u El usuario actual
\w el directorio actual
\W la ruta relativa del directorio actual

También se pueden usar secuencias de escape ANSI para colorear, por ejemplo

Prompt con colores ANSI

Esto se explica así:

  • La secuencia \[\033indica el comienzo de una secuencia ANSI
  • [1;32m\]es color verde
  • \[\033[0m\]cierra la secuencia de colores (de otra manera todo lo que tipeemos a continuación quedará también en verde

Podemos seguir personalizando el prompt a nuestro gusto y necesidad.1

También podemos echar mano a algunos de los proyectos que nos facilitan esta tarea, tal como veremos a continuación.

sexy-bash-prompt

Sino queremos hacer todo a mano podemos usar un software como sexy-bash-prompt. Todd Wolfson creó un prompt para bash que también puede usarse para status y ramas en git. Utiliza tput, un programa para configurar terminales usadas por la shell, y también para inicializar o resetear la terminal.

Instalación de sexy-bash-prompt

  • Creamos el directorio Descargas si no existe:

# [ -d ~/Descargas ] || mkdir ~/Descargas

  • Clonamos el repositorio:-

# git clone --depth 1 --config core.autocrlf=false https://github.com/twolfson/sexy-bash-prompt

  • Entramos en el directorio del repo:

# cd sexy-bash-prompt

  • Instalamos:

# make install

  • Recargamos la configuración de la shell

# . ~/.bashrc

¡Listo!

sexy-bash-prompt

Configuración de sexy-bash-prompt

Se puede adaptar a gusto el aspecto del prompt editando el archivo ~/.bashrc y/o ~/.bash_prompt

Personalizando sexy-bash-prompt

Aquí vemos un ejemplo de configuración personalizada:

powerline

Powerline2 se trata de un software mucho más sofisticado escrito en python por Kim Silkebækken.

Originalmente este proyecto se llamaba vim-powerline el cual proporcionaba una línea de estado para vim, pero posteriormente evolucionó para ser una línea de estado para aplicaciones tales como bash y tmux entre otros.

Instalación de Powerline

En el caso de Fedora viene como paquete y se puede instalar con:

# dnf install powerline

La configuración para bash se puede realizar en el archivo .bashrc de esta manera:

if [ -f `which powerline-daemon` ]; then
  powerline-daemon -q
  POWERLINE_BASH_CONTINUATION=1
  POWERLINE_BASH_SELECT=1
  . /usr/share/powerline/bash/powerline.sh
fi

En el caso de CentOS 7, el software se puede instalar con pip y luego agregar en .bashrc:

if [ -f `which powerline-daemon` ]; then
  powerline-daemon -q
  POWERLINE_BASH_CONTINUATION=1
  POWERLINE_BASH_SELECT=1
  .  /bindings/bash/powerline.sh
fi

Y así queda luego de hacer . .bashrc:

Powerline

Configuración de Powerline

La configuración de powerline en CentOS al instalar con pip está en /usr/local/lib/python3.6/site-packages/powerline/config_files. En Fedora se encuentra en /etc/xdg/powerline. Para modificar alguno de los archivos se pueden crear el directorio ~/.config/powerline y poner las modificaciones allí.

Existen varios archivos de configuración que tienen el mismo nombre, pero ubicados en diferentes directorios, los cuales se combinan, como es habitual los archivos del usuario tienen prioridad sobre los globales.

Poniendo como ejemplo CentOS y la shell BASH, los archivos de configuración serían:

Ruta del archivo o directorio Descripción
$PYTHONPATH/site-packages/powerline/config_files/config.json Archivo principal de configuración
$PYTHONPATH/site-packages/powerline/config_files/colorschemes/default.json Configuración predeterminada del esquema de colores
$PYTHONPATH/site-packages/powerline/config_files/colorschemes/shell/default.json Configuración predeterminada del esquema de colores para la shell

Al editar el archivo local ~/.config/powerline/config.json podemos cambiar el esquema de colores predeterminado:

Esquema de colores

Para cambiar el esquema de colores:

# mkdir -p .config/powerline/colorschemes/shell # cp /usr/local/lib/python3.6/site-packages/powerline/config_files/colorschemes/shell/__main__.json .config/powerline/colorschemes/shell/

La definición de esos grupos se puede ver en /usr/local/lib/python3.6/site-packages/powerline/config_files/colorschemes/default.json

Por ejemplo superuser tiene el valor information:additional, el cuál este a su vez tiene: "fg": "gray9", "bg": "gray4", "attrs": [].

Podemos copiar el archivo correspondiente y personalizarlo:

# cp /usr/local/lib/python3.6/site-packages/powerline/config_files/colorschemes/shell/default.json .config/powerline/colorschemes/shell/

Supongamos que le hacemos la siguiente modificación:

{
        "name": "Default color scheme for shell prompts",
        "groups": {
                "hostname":         { "fg": "brightyellow", "bg": "mediumorange", "attrs": [] },
                "environment":      { "fg": "white", "bg": "darkestgreen", "attrs": [] },
                "mode":             { "fg": "darkestgreen", "bg": "brightgreen", "attrs": ["bold"] },
                "superuser":             { "fg": "brightred", "bg": "white", "attrs": ["bold"] },
                "attached_clients": { "fg": "white", "bg": "darkestgreen", "attrs": [] }
        },
        "mode_translations": {
                "vicmd": {
                        "groups": {
                                "mode": {"fg": "darkestcyan", "bg": "white", "attrs": ["bold"]}
                        }
                }
        }
}

Luego habría que cambiar el archivo principal del tema .config/powerline/colorschemes/shell/__main__.json:

{
        "groups": {
                "continuation":         "cwd",
                "continuation:current": "cwd:current_folder",
                "exit_fail":            "critical:failure",
                "exit_success":         "critical:success",
                "jobnum":               "information:priority",
                "superuser":            "mysuperuser"
        }
}

Hay cambios que no se aplican directamente, para este tipo de casos hacer lo siguiente:

# powerline-daemon --replace

Para cambiar de tema:

cp /usr/local/lib/python3.6/site-packages/powerline/config_files/themes/unicode_terminus_condensed.json .config/powerline/themes/shell/default.json

Y luego recargar el daemon.

PureLine

Otra alternativa escrita por Chris Marsh es Pureline3, que ofrece un prompt al estilo de Powerline pero escrito en bash.

PureLine

Instalación de pureline

  • Clonar el repositorio

# git clone https://github.com/chris-marsh/pureline.git

  • Copiar el directorio

cp -r pureline ~/.pureline

  • Entrar en el diretorio

cd pureline/

  • Usar alguno de los archivos de configuración existentes:

cp configs/powerline_full_256col.conf ~/.pureline.conf

  • Agregar la línea siguiente en ~/.bashrc:

source ~/.pureline/pureline .pureline.conf

  • Y recargar la configuración de bash:

source ~/.bashrc

Configuración de PureLine

Editando el archivo ~/.pureline.conf se puede modificar a gusto el prompt:

Configurando PureLine

Quedaría así:

E incluso se puede cambiar el símbolo principal del prompt:

Full Custom

Nota sobre fuentes

Hay dos maneras básicamente en que un prompt muestre bien los glifos (por ejemplo flechas y otros símbolos especiales): usar la fuente PowerlineSymbols.otf (en Fedora está en el paquete powerline-fonts) como secundaria para una de las fuentes existentes o instalar una fuente parcheada4.

Conclusión

Un prompt puede resultar una herramienta que proporcione información muy útil y también para diferenciar hosts al loguearnos. De estas opciones me parece la mejor PureLine ya que está escrita en bash, la configuración es más natural y sencilla. Powerline usa de acuerdo a ps_mem unos 12 MB de memoria RAM. No obstante, de acuerdo a su propio sitio de desarrollo hay que tener en cuenta que las próximas versiones de PureLine puede cambiar el modo de configuración, por lo tanto sus archivos podrían necesitar necesitar cambios.

Herramientas imaginarias, ideales, utópicas

Herramientas imaginarias, ideales y utópicas

Rompecabezas Photo by Hans-Peter Gauster on Unsplash

No me imagino una herramienta como una prótesis. Me parece algo deshumanizante. Pensar en conectores ingresando en nuestro cerebro me parece un horror.

En cambio...

  • La herramienta ideal que me imagino sería un buscador que estimule la imaginación, el pensamiento crítico, y el pensamiento lateral. Tendría un asistente inicial que nos pregunte las emociones que estamos sintiendo en el momento de abrir la aplicación.
  • Hasta ahora los buscadores convencionales encuentran resultados basados en palabras claves, imágenes o voces. No obstante no lo haen a partir de una idea o problema elaborado.
  • A partir de allí nos haría preguntas que nos ayude a eliminar las emociones negativas o reencausarlas de manera positiva.
  • Luego, nos pediría que armemos un mapa mental al estilo Mindmapp
  • Luego podríamos subir ese mapa mental a un buscador. La búsqueda debería arrojarnos resultados enriquecidos, por ejemplo:
  • Artículos, libros, blogs que ofrezcan diferente posiciones frente a un determinado tema.
  • Si se trata de un problema, alternativas para resolver un problema.
  • Mostrarnos profesionales y aun personas que conocemos que pueden enriquecernos o colaborar frente a una determinada problemática.
  • Podríamos incluso poner un calculo matemático, por ejemplo una ecuación diferencial o una integral que nos de, no solamente la solución sino también, una explicación para entender el resultado.

A corto plazo serviría para buscar de manera más eficiente un tema, y obtener mejores y más ricos resultados.

A largo plazo ayudaría a crear alumnos con un pensamiento menos fragmentado, que tenga en cuenta también las emociones y el entorno. De hecho pienso que como requisito el buscador no debería funcionar si no respondemos el asistente inicial de depurador y orientador de emociones o sino hacemos el mapa mental.

Como autenticar en ssh con certificado

  1. En un servidor crear un par de claves para firmar claves de usuario.
    cd /etc/ssh && ssh-keygen -f user_ca
  2. Agregar en el archivo /etc/ssh/sshd_config:
    TrustedUserCaKeys /etc/ssh/user_ca.pub
  3. Reiniciar el servicio
    systemctl restart sshd
    Para lograr que los certificados que vamos a generar se puedan usar en otros servidores, habría que copiar en ellos la clave pública (user_ca.pub), agregar la misma línea y reiniciar el servicio ssh.
  4. Copiar la clave pública del cliente ssh al servidor.
    scp ~/.ssh/id_rsa_sergio.pub root@certserver:/etc/ssh/
  5. Generar un certificado a partir de la clave pública.
    ssh-keygen -s user_ca -I user_sergio -n sergio,root -V +52w id_rsa_sergio.pub
  6. Copiar el certificado al host del usuario.
    scp root@certserver:/etc/ssh/id_rsa_sergio-cert.pub ~/.ssh/
  7. Autenticarse con el certificado del usuario.
    ssh -i ~/id_rsa_sergio-cert.pub root@certserver

Autenticación a ssh con certificado

Enlaces útiles

17 Comandos para manejar el audio en Linux

Introducción

En la actualidad el sonido en Linux es manejado por dos servicios ALSA y PulseAudio. El primero de ellos es el que tiene una relación más cercana con el hardware, mientras que el segundo es el que se comunica con las aplicaciones y es con quien el usuario tiene más interacción. En cuanto al hardware, es importante recordar que la mayoría de las placas de audio contienen un dispositivo llamado codec, el cual se encarga de convertir las señales digitales en analógicas y viceversa.

1. Listar las placas de audio

 lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers (rev 02)
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 (rev 02)
00:04.0 Signal processing controller: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (rev 02)
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal subsystem (rev 21)
00:15.0 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 (rev 21)
00:15.1 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 (rev 21)
00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21)
00:17.0 SATA controller: Intel Corporation Sunrise Point-LP SATA Controller [AHCI mode] (rev 21)
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #1 (rev f1)
00:1c.5 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #6 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Sunrise Point-LP LPC Controller (rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21)
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21)
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 950M] (rev a2)
02:00.0 Network controller: Intel Corporation Wireless 8260 (rev 3a)

Aquí vemos que la placa de audio es Intel Corporation Sunrise Point-LP HD Audio (rev 21).

Luego, podremos obtener más información de la misma:

 lspci -nn -d 8086:9d71 -mm -k -v
Slot:   00:1f.3
Class:  Audio device [0403]
Vendor: Intel Corporation [8086]
Device: Sunrise Point-LP HD Audio [9d71]
SVendor:        ASUSTeK Computer Inc. [1043]
SDevice:        Device [1790]
Rev:    21
Driver: snd_hda_intel
Module: snd_hda_intel
Module: snd_soc_skl

El driver snd_hda_intel indica que la placa usa la especificación Intel High Definition Audio. Tener en cuenta que se pueden ver los dispositivos de sonido usb con lsusb y usb-devices.

2. Listar el codec de audio

 aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC295 Analog [ALC295 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Headset [Logitech USB Headset], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0

Aquí se ve que el codec de la placa es ALC295 Analog.

3. Listar dispositivos de salida

 pactl list sinks short
0       alsa_output.pci-0000_00_1f.3.analog-stereo      module-alsa-card.c      s16le 2ch 48000Hz       SUSPENDED
1       combined        module-combine-sink.c   s16le 2ch 44100Hz       SUSPENDED
3       PulseEffects_apps       module-null-sink.c      s16le 2ch 44100Hz       RUNNING
4       PulseEffects_mic        module-null-sink.c      s16le 2ch 44100Hz       SUSPENDED
5       alsa_output.usb-Logitech_Logitech_USB_Headset-00.analog-stereo  module-alsa-card.c      s16le 2ch 44100Hz   RUNNING

Algunos dispositivos son virtuales y corresponden a aplicaciones tales como PulseEffects_mic y PulseEffects_mic. El dispositivo combined es para enviar la salida a más de una dispositivo.

4. Listar los flujos de reproducción

 pactl list sink-inputs short
199     5       88      protocol-native.c       float32le 2ch 44100Hz
3106    3       11      protocol-native.c       float32le 2ch 44100Hz
3124    3       11      protocol-native.c       float32le 2ch 44100Hz

Veremos a continuación como podemos sacar más información de estos flujos.

5. Ver los programas que están usando el sistema de sonido

 pactl list clients short
0       module-systemd-login.c  (null)
6       module-x11-xsmp.c       (null)
8       protocol-native.c       plasmashell
11      protocol-native.c       firefox
17      protocol-native.c       rocketchat-desktop
20      protocol-native.c       thunderbird
21      protocol-native.c       firefox
22      protocol-native.c       VNote
26      protocol-native.c       plasmashell
81      protocol-native.c       org_kde_powerdevil
87      protocol-native.c       pulseeffects
88      protocol-native.c       pulseeffects
89      protocol-native.c       pulseeffects
102     protocol-native.c       plasmashell
109     protocol-native.c       skypeforlinux
110     protocol-native.c       skypeforlinux
138     protocol-native.c       pactl

6. Ajustar el volumen

De acuerdo al listado anterior, puedo ajustar firefox:

pactl set-sink-input-volume 199 50%

O modificar el de puseefects

pactl set-sink-input-volume 3124 40%

O sino, cambiando el volumen de todo el dispositivo:

pactl set-sink-volume 5 50%

7. Cambiar el dispositivo de salida

Aquí estaríamos moviendo el flujo de reproducción de los auriculares al de la placa de sonido interna:

pactl move-sink-input 3124 alsa_output.pci-0000_00_1f.3.analog-stereo

8. Agregar un dispositivo manualmente

El dispositivo de alsa lo podemos sacar por el comando aplay, y luego:

pacmd load-module module-alsa-sink device=hw:1,0

9. Listar las extensiones del sistema de audio

Esta lista muestra el número del módulo, el nombre y los argumentos:

 pactl list  modules short
0       module-device-restore
1       module-stream-restore
2       module-card-restore
3       module-augment-properties
4       module-switch-on-port-available
5       module-udev-detect
7       module-alsa-card        device_id="0" name="pci-0000_00_1f.3" card_name="alsa_card.pci-0000_00_1f.3" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes card_properties="module-udev-detect.discovered=1"
8       module-bluetooth-policy
9       module-bluetooth-discover
10      module-bluez5-discover
11      module-esound-protocol-unix
12      module-native-protocol-unix
13      module-gconf
14      module-native-protocol-tcp      auth-anonymous=1
15      module-esound-protocol-tcp      auth-anonymous=1
16      module-combine
17      module-combine-sink
18      module-switch-on-connect
19      module-default-device-restore
20      module-rescue-streams
21      module-always-sink
22      module-intended-roles
23      module-suspend-on-idle
24      module-systemd-login
25      module-position-event-sounds
26      module-role-cork
27      module-filter-heuristics
28      module-filter-apply
30      module-cli-protocol-unix
33      module-null-sink        sink_name=PulseEffects_apps sink_properties=device.description="PulseEffects(apps)"device.class="sound" channels=2 rate=44100
35      module-null-sink        sink_name=PulseEffects_mic sink_properties=device.description="PulseEffects(mic)"device.class="sound" channels=2 rate=44100
37      module-alsa-card        device_id="1" name="usb-Logitech_Logitech_USB_Headset-00" card_name="alsa_card.usb-Logitech_Logitech_USB_Headset-00" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes card_properties="module-udev-detect.discovered=1"

Las extensiones le ofrecen funcionalidades adicionales a a pulseaudio.

10. Listar dispositivos de entrada

 pactl list sources short
0       alsa_output.pci-0000_00_1f.3.analog-stereo.monitor      module-alsa-card.c      s16le 2ch 48000Hz  SUSPENDED
1       alsa_input.pci-0000_00_1f.3.analog-stereo       module-alsa-card.c      s16le 2ch 48000Hz       SUSPENDED
2       combined.monitor        module-combine-sink.c   s16le 2ch 44100Hz       SUSPENDED
5       PulseEffects_apps.monitor       module-null-sink.c      s16le 2ch 44100Hz       RUNNING
6       PulseEffects_mic.monitor        module-null-sink.c      s16le 2ch 44100Hz       SUSPENDED
7       alsa_output.usb-Logitech_Logitech_USB_Headset-00.analog-stereo.monitor  module-alsa-card.c      s16le 2ch 44100Hz   IDLE
8       alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono     module-alsa-card.c      s16le 1ch 44100Hz   SUSPENDED

11. Listar flujos de entrada

 pactl list source-outputs short
2       5       89      protocol-native.c       float32le 2ch 44100Hz

12. Examinar la configuración

Este comando es útil si tenemos algún problema y preguntamos en un foro. Proporcionar nuestra configuración nos va a permitir obtener más fácilmente una respuesta.

pacmd dump
### Configuration dump generated at Sun Aug 11 10:55:57 2019

load-module module-device-restore
load-module module-stream-restore restore_device=false
load-module module-card-restore
load-module module-augment-properties
load-module module-switch-on-port-available
load-module module-udev-detect
load-module module-alsa-card device_id="0" name="pci-0000_00_1f.3" card_name="alsa_card.pci-0000_00_1f.3" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes card_properties="module-udev-detect.discovered=1"
load-module module-bluetooth-policy
load-module module-bluetooth-discover
load-module module-bluez5-discover
load-module module-esound-protocol-unix
load-module module-native-protocol-unix
load-module module-gconf
load-module module-native-protocol-tcp auth-anonymous=1
load-module module-esound-protocol-tcp auth-anonymous=1
load-module module-combine 
load-module module-combine-sink 
load-module module-switch-on-connect 
load-module module-default-device-restore
load-module module-rescue-streams
load-module module-always-sink
load-module module-intended-roles
load-module module-suspend-on-idle
load-module module-systemd-login
load-module module-position-event-sounds
load-module module-role-cork
load-module module-filter-heuristics
load-module module-filter-apply
load-module module-cli-protocol-unix

set-sink-volume alsa_output.pci-0000_00_1f.3.analog-stereo 0xb018
set-sink-mute alsa_output.pci-0000_00_1f.3.analog-stereo no
suspend-sink alsa_output.pci-0000_00_1f.3.analog-stereo no
set-sink-volume combined 0x10000
set-sink-mute combined no
suspend-sink combined yes

set-source-volume alsa_output.pci-0000_00_1f.3.analog-stereo.monitor 0x10000
set-source-mute alsa_output.pci-0000_00_1f.3.analog-stereo.monitor no
suspend-source alsa_output.pci-0000_00_1f.3.analog-stereo.monitor no
set-source-volume alsa_input.pci-0000_00_1f.3.analog-stereo 0x3039
set-source-mute alsa_input.pci-0000_00_1f.3.analog-stereo no
suspend-source alsa_input.pci-0000_00_1f.3.analog-stereo yes
set-source-volume combined.monitor 0x10000
set-source-mute combined.monitor no
suspend-source combined.monitor yes

set-card-profile alsa_card.pci-0000_00_1f.3 output:analog-stereo+input:analog-stereo

set-default-sink alsa_output.pci-0000_00_1f.3.analog-stereo
set-default-source alsa_input.pci-0000_00_1f.3.analog-stereo

### EOF

13. pamixer

Este programa se puede descargar desde su sitio en GitHub.. Se instala compila e instala sencillamente con los pasos make y make install.

Tiene varios comandos útiles, sirve para activar o desactivar el estado mudo de un dispostivo:

./pamixer -t

14. pulsemixer

Esta herramienta se puede instalar como dice en su sitio de GitHub

Luego al ejecutarlo el comando pulsemixer:

pulsemixer

Las teclas de función permite fácilmente alternar entre los dispositivos de salida, entrada, y las placas de audio.

15. Reiniciar pulseaudio como usuario

systemctl restart --user pulseaudio

16. Configurar un dispositivo de salida predeterminado

pactl set-default-sink alsa_card.usb-Logitech_Logitech_USB_Headset-00

17. Configurar un dispositivo de entrada predetermianda

pactl set-default-source alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono

Conclusión

Desde luego que existen herramientas gráficas para realizar casi todas estas operaciones. No obstante, al usarlas desde la línea de comandos nos permite entender un poco más como funciona el sistema de sonido en Linux, que ciertamente no carece de cierta complejidad. Digno es de mencionar que muchas de las configuraciones se pueden guardar y hacer permanentes en el el archivo ~/.config/pulse/default.pa.

Fuente y más información

Actividad sobre Feenberg

Pregunta 1

¿qué relaciones puedes establecer en esta conceptualización de la general tecnología con los desarrollos específicos de software, libre o privativo, con los diseños de las interfaces de usuario (físicas o lógicas) o incluso la cuestión de la utilidad real del acceso al código fuente para aquellos usuarios no programadores?

Feenberg de alguna manera dice que el rango de intereses es proporcional al disfrute de los seres humanos y el beneficio de la naturaleza. El acceso al codigo fuente es una condición indispensable pero no suficiente para que un ser humano puede disfrutar de la tecnología y a su vez que produzca resultados benéficos para la naturaleza.

Pregunta 2

¿cual podría ser un ejemplo del ámbito del software de códigos técnicos que se corresponden con "modos de vida culturalmente asegurados" y ejercicios de poder hegemónicos?

Allí donde tales códigos están reforzados por la percepción que los individuos tienen acerca de su propio interés y de la ley, su significado político generalmente pasa desapercibido. Esto es lo que significa decir que un cierto modo de vida está culturalmente asegurado y que el poder correspondiente es hegemónico. Así como la filosofía política cuestiona las formaciones culturales que se han arraigado a sí mismas en la ley, la filosofía de la tecnología cuestiona las formaciones que se han arraigado a sí mismas en códigos técnicos.

Un código técnico es la realización de un interés bajo la forma de una solución técnicamente coherente a un problema.

Ejemplo de modo de vida completamente asegurado y que el poder es hegemónico

Creo que dos ejemplos del mantenimiento del status-quo son los teléfonos celulares. Si bien por una lado muchos poseen algunos componente libres, el hecho de depender de la compañía telefónica, y la privación del uso como administradores del mismo hacen que el usuario nunca sea dueño realmente de dicho dispositivo.

Otro caso mucho más sutil es la "invisibilidad" de Google. El famoso verbo googlear como sinónimo de buscar en Internet. Ignorando las políticas y propósitos de la empresa.

Estas prácticas tecnocorporativas con el apoyo de algunos gobierno producen un sentido común muy difícil de desafiar:

Technical codes define a framework of technical decision-making within which certain choices appear rational.

SPT v9n1 - The Technical Codes of Online Education | Virginia Tech Scholarly Communication University Libraries

Pregunta 3

En la misma página, Feenberg afirma: "Esta descripción ayuda a entender la naturaleza de las controversias éticas que involucran a la tecnología en el mundo real. A menudo, éstas encienden la **supuesta oposición entre los estándares corrientes de eficiencia técnica y los valores.**" ¿en qué discusiones típicas por el uso/no uso de software libre podría aplicarse esta afirmación? Analicen un caso que conozcan.

Un caso que se me ocurre es el de voto electrónico. Detrás de un supuesto mensaje de eficiencia, no otra cosa que crear más fuentes de errores, más aun cuando se usa software no libre. El valor de la privacidad y del código fuente no está para nada reñido con la eficiencia que un escrutinio podría tener realizado con software libre debidamente auditado, o aun mejor con el tradicional voto en papel.

Tutorial: Autenticación en SSH con clave pública

Este es un tutorial para que empecemos a usar claves públicas para autenticarnos. El único requisito es que hayamos ingresado a un servidor o host remoto con ssh. En nuestro ejemplo ese host tiene la ip 10.0.3.11.

i
1

El uso de autenticación por clave pública, tal como vimos en el post anterior tiene la ventaja de no tener que ingresar usuario y contraseña. Esto puede ser útil en casos en que necesitemos realizar alguna tarea en un host remoto de manera no interactiva. Por ejemplo podríamos crear una tarea programada que ejecute todos los días un script de backup. Veremos paso a paso como conseguirlo. Lo primero que tendremos que hacer es generar un par de claves. Para ellos ejecutaremos el siguiente comando: ssh-keygen

Como se ve en la imagen de abajo se nos preguntará la ruta de la clave privada, aceptamos la predeterminada presionando la tecla Enter.

y además se nos pedirá una passphrase. La passphrase es una frase que sea fácil de recordar para uno mismo, pero a la vez difícil de adivinar para otros. El propósito es cifrar la clave privada. Si te estás preguntando ¿para qué hacer todo esto si de todas maneras tendré que ingresa una passphrase para autenticarme. La respuesta es que tenemos técnicas como veremos un poco más abajo, para evitar la necesidad del ingreso de la frase una y otra vez. Ingresamos la frase una vez después de la otra:

Esto generará dos archivos en el directorio ~/.ssh: id_rsa y id_rsa.pub que son la clave privada y la clave pública respectivamente. Como sus nombres lo indican la clave privada no debe compartirse, en cambio la clave pública es la que nosirve para identificarnos como usuarios frente a otros hosts y se puede compartir.

En este momento tenemos que copiar la clave pública al host que funciona como servidor ssh. La manera más fácil y ráṕida de hacerlo es con el comando siguiente:

ssh-copy-id

Ingresamos la contraseña de root y luego presionamos la tecla Enter. Lo que hace este comando es agregar la clave pública del archivo id_rsa.pub al archivo /root/.ssh/authorized_keys del servidor ssh.

Ahora lo que hacemos es reemplazar la shell actual con el agente de ssh y re-ejecutando la shell bash. El agente de ssh será el encargado de guardar las claves privadas en memoria para que no tengamos que ingresar más de una vez la passphrase:

ssh-agent

Luego ejecutamos el comando ssh-add:

ssh-add

Se nos pedirá la frase, la ingresamos y le damos Enter.

ssh sin contraseña

A través de este tutorial mencionamos varios conceptos que podés ampliar recurriendo a los siguientes enlaces:


  1. Photo by Jametlene Reskp on Unsplash 

Guía Breve sobre ssh con clave pública

La autenticación por clave pública nos permite loguearnos a un host sin necesidad de ingresar usuario y contraseña.

Llaves

unsplash-logo CMDR Shane

Descripción del método

Nociones fundamentales

  • El esquema se basa en criptografía de clave pública.
  • Usamos claves separadas para cifrar y descifrar.
  • Es imposible obtener la clave para descifrar a partir de la clave para cifrar
  • Solamente el cliente sabe la clave privada.

Funcionamiento

  • Desde el lado del cliente ssh creamos un par de claves (una pública y otra privada).

    • Cada clave se guarda en archivo separado.
    • Tenemos la opción en este momento de cifrar su clave privada mediante una frase de paso. La clave privada queda inutilizable si olvidamos esa contraseña.
    • Desde el lado cliente copiamos la clave pública agregándola al archivo ~/.ssh/authorized_keys en su directorio de la máquina remota.
    • Luego de esto, el usuario puede loguearse sin proporcionar la contraseña.
    • Cuando nos logueamos, el programa ssh le dice al servidor que par de claves le gustaría usar para autenticar. El cliente verifica que tiene acceso a la clave privada y el servidor verifica que la clave correspondiente está autorizada para aceptar la cuenta.
    • El servidor puede informarle al cliente los errores que impidan que la autenticación por clave pública se pueda usar exitósamente luego de que la autenticación se complete usando un método diferente.
    • De manera predeterminada si falla el método por clave pública se usará otro método, como por ejemplo el de usuario y password.

Nota:La manera más conveniente de usar una clave pública es con un agente de autenticación que se encargue de guardar en memora las claves privadas descifradas y de esta manera evitar tener que ingresar una y otra vez la frase de paso correspondiente.

Archivos involucrados del cliente

Archivo Descripción
/usr/bin/ssh cliente ssh
/usr/bin/ssh-keygen Generador de par de claves (una pública y otra privada). Con la opción -t se puede especificar el algoritmo
~/.ssh/known_hosts claves públicas de los hosts a los que ya accedimos alguna vez
~/.ssh/id_rsa (nombre predeterminado con algoritmo RSA)
~/.ssh/id_ecdsa nombre predeterminado con algoritmo ECDSA
~/.ssh/id_ed2551 nombre predeterminado con algoritmo ED25519

Archivos involucrados del servidor

Archivo Descripción
/usr/sbin/sshd servidor ssh
~/.ssh/authorized_keys Clave públicas de clientes autorizados

Formato de ~/.ssh/authorized_keys

El siguiente es un ejemplo de un archivo que contiene solamente dos claves pública:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCb96oGSIMquG5UGR6aFXtX6aHboMDS3Pkr8NOuLskabSnSzgUC8IGYvxn86W0xvcWGdVD+Qljl6h16ARFXGpCNWSxktl7TWMnbDn i5AZaJXETV1ZkB5ro5f33gEvaMcZel18X1FcE1RBEJG92ufOoIIastxYo+THU8TW0bwVG08/hHcPn+d9YYEwZ92b/sTQH3rtcvLrAtsSmI8flVc0M054Tmkhf15fXuVlPeYwqYhCWBT1JGg60Jn3ZrsQvD6di0KRBuw0icfeF1mdHnHSlrb7AhcNFs+kds1acWaE3cOINuKJmDHPmsyT6+wujnOx+3TCGVhGC8hm/8dizkALwks/1Zt5T1R8o/erOu8NFfzG3NvOB9dx9szbAHOxKiJ61FH6qOIUGj74xMNNGmCszz57g3JG8gfFe+zc7tlrvXgBIj1ZyY16JC6LkbYjUb5aXJQRLIPSe8XoAJU+UkxTjuXU7lCGnMPH0DjvvgLgpZYlWtL8zGqdu+ruMOE0S2N8= root@dublin.ireland.home

command="yum check-update" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCb96oGSIMquG5UGR6aFXtX6aHboMDS3Pkr8NOuLskabSnSzgUC8IGYvxn86W0xvcWGdVD+Qljl6h16ARFXGpCNWSxktl7TWMnbDnCi5AZaJXETV1ZkB5ro5f33gEvaMcZel18X1FcE1RBEJG92ufOoIIastxYo+THU8TW0bwVG08/hHcPn+d9YYEwZ92b/sTQH3rtcvLrAtsSmI8flVc0M054Tmkhf15fXuVlPeYwqYhCWBT1JGg60Jn3ZrsQvD6di0KRBuw0icfeF1mdHnHSlrb7AhcNFs+kds1acWaE3cOINuKJmDHPmsyT6+wujnOx+3TCGVhGC8hm/8dizkALwks/1Zt5T1R8o/erOu8NFfzG3NvOB9dx9szbAHOxKiJ61FH6qOIUGj74xMNNGmCszz57g3JG8gfFe+zc7tlrvXgBIj1ZyY16JC6LkbYjUb5aXJQRLIPSe8XoAJU+UkxTjuXU7lCGnMPH0DjvvgLgpZYlWtL8zGqdu+ruMOE0S2N8= root@belfast.ireland.home
  • ssh-rsa es el tipo de clave
  • AAAAB3NzaC1yc2EAAAADAQABAAAegQCb96oGSIMquG5UGR6aFXtX6aHboMDS3Pkr8NOuLskabSnSzgUC8IGYvxn86W0xvcWGdVD+Qljl6h16ARFXGpCNWSxktl7TWMnbDnCi5AZaJXETV1ZkB5ro5f33gEvaMcZel18X1FcE1RBEJG92ufOoIIastxYo+THU8TW0bwVG08/hHcPn+d9YYEwZ92b/sTQH3rtcvLrAtsSmI8flVc0M054Tmkhf15fXuVlPeYwqYhCWBT1JGg60Jn3ZrsQvD6di0KRBuw0icfeF1mdHnHSlrb7AhcNFs+kds1acWaE3cOINuKJmDHPmsyT6+wujnOx+3TCGVhGC8hm/8dizkALwks/1Zt5T1R8o/erOu8NFfzG3NvOB9dx9szbAHOxKiJ61FH6qOIUGj74xMNNGmCszz57g3JG8gfFe+zc7tlrvXgBIj1ZyY16JC6LkbYjUb5aXJQRLIPSe8XoAJU+UkxTjuXU7lCGnMPH0DjvvgLgpZYlWtL8zGqdu+ruMOE0S2N8= es la clave pública codificada en base64
  • root@dublin.ireland.home es un comentario opcional
  • command=yum check-update en la segunda línea restringe el acceso permitiendo la ejecución de un único comando.
  • El contenido de este archivo debería tener permisos 0600 y el directorio ~/.ssh 0700.

Fuentes y más recursos