Cookie
Electronic Team, Inc. uses cookies to personalize your experience on our website. By continuing to use this site, you agree to our cookie policy. Click here to learn more.

Puertos serie de Linux - Guía completa

Nikolai Svarachevsky Nikolai Svarachevsky
Actualizado: Aug 4, 2026

Aquí puedes aprender cómo conectarte a un dispositivo serie Linux, así como una forma sencilla de conectar dispositivos serie adjuntos a un ordenador remoto. Usaré como ejemplo una impresora de recibos compatible con ESC/POS.

14 días de prueba gratuita
Precio de licencia a partir de $259.95
Disponible para
usb a escritorio remoto

Comprobación de sus puertos

Los puertos serie son un tipo de dispositivo serie. El comando dmesg te ayudará a ver si el sistema operativo detectó y reconoció un dispositivo serie. Si lo hizo, aparecerá en la salida de este comando.

Como dmesg enumera todos los dispositivos del sistema, filtraremos la salida a través de grep. Este busca en el texto las líneas que contienen la palabra clave proporcionada. Los nombres de los puertos serie en Linux comienzan con “ttyS”, así que podemos usar eso como consulta. La salida de dmesg se puede pasar a grep conectando los dos comandos con una tubería (el símbolo |). También requerirá privilegios de superusuario, por lo que es necesario añadir sudo. El comando resultante se ve así:

sudo dmesg | grep tty
resultados de búsqueda de dmesg
Los dispositivos se enumerarán junto con sus correspondientes nombres de archivo de dispositivo. Estos son archivos en /dev, como ttyS0 y ttyS1, que luego podemos usar como argumentos para otros comandos, para especificar con qué puerto serie se debe interactuar. Además, dmesg puede indicar un problema técnico si el dispositivo no aparece en absoluto.

Si está utilizando adaptadores USB a serie, aparecerán como dispositivos ttyUSB. También se pueden encontrar en dmesg usando el mismo comando.

Importante: para poder usar los puertos serie del sistema, un usuario debe estar en el grupo dialout. Si bien esto no es un problema para el primer usuario predeterminado, se convierte en uno al intentar acceder a los puertos serie como otros usuarios, aquellos que se crearon después de que se instaló el sistema.

En otras palabras, si encuentra el error "Could not open serial port...", ejecute el siguiente comando:

sudo adduser your_user_name dialout

Sustituya "your_user_name" por el usuario que tiene problemas para acceder a los puertos.

Interacción con dispositivos serie

Usando utilidades estándar

Dado que los puertos serie se representan mediante archivos en Linux, se pueden usar utilidades estándar como echo y cat para interactuar con ellos. stty se puede usar para cambiar la configuración del puerto. Veamos cómo se utiliza cada una de estas aplicaciones.

Con stty, puedes configurar la velocidad en baudios del puerto, la cantidad de bits de datos, la paridad, el tipo de handshaking (también conocido como control de flujo) y otros parámetros. Esto puede ser necesario para interactuar con un dispositivo o una aplicación, ya que la mayoría de las veces los parámetros deben coincidir para que la conexión funcione.

Nota de Nick:
Ejecuté la siguiente demostración en Debian 11 (Bullseye) con una impresora SP-POS88VMF.
Sin embargo, también puedes probar los comandos proporcionados con una conexión null-modem entre dos puertos serie o USB a serie en el mismo equipo. En ese caso, tendrás que modificar el comando cat para que escuche en el otro puerto conectado, no en el que envía.


Usa el siguiente comando para listar la configuración actual de tu puerto:

sudo stty -a -F <your port>
Ver la configuración del puerto con stty
Y este es un comando de ejemplo que configura la velocidad en baudios del puerto ttyS0 en 9600, los bits de datos en 8, y habilita el control de flujo RTS/CTS:

sudo stty -F /dev/ttyS0 9600 cs8 crtscts

Con la configuración adecuada seleccionada, podemos enviar datos al dispositivo con echo. Es posible enviar texto sin formato a un puerto serie con echo, así:

echo 'TEXT' > /dev/ttyS0

Sin embargo, para hacer esto, necesitas iniciar sesión como superusuario. Esto se puede hacer con el comando “su -”.

En nuestro caso, se necesitan símbolos ASCII especiales, como ESC y Retorno de carro, para aprovechar al máximo la impresora conectada. Una forma de hacerlo es usando el argumento -e de echo y secuencias de escape. Una secuencia de escape para caracteres ASCII se inicia con \x, seguida de un número hexadecimal que corresponde al carácter.
Por ejemplo, así es como se puede imprimir la palabra “TEXT” con secuencias de escape:

echo -e '\x54\x45\x58\x54'

Enviaremos los siguientes mensajes:

1B 40 (ESC @, Initialize)
1B 6D (ESC m, Full Cut)
4C 49 4E 45 20 31 ("LINE 1")
1B 21 80 (Enable Underline)
4C 49 4E 45 20 32 ("LINE 2")
0D 0A (CR LF, New Line)
1B 6D (Full Cut)


Se necesita el argumento -e para permitir las secuencias de escape hexadecimales “\x”. Así es como se ve en el terminal y en la impresión resultante:
Comandos de impresora mediante echo e impresión de resultados
Mientras que echo puede usarse para enviar datos a través de una conexión serie, cat puede usarse para recibirlos. En nuestro caso, la impresora responderá a las solicitudes estándar ESC/POS de estado e información de ID. Esto significa que necesitaremos capturar las respuestas. Primero, iniciaremos cat, escuchando el dispositivo ttyS0 y redirigiendo la salida a un archivo de texto:

cat /dev/ttyS0 > examplefile

La aplicación debe seguir ejecutándose para recibir datos, por lo que es necesario abrir una nueva ventana o pestaña de Terminal para enviar solicitudes a nuestro dispositivo. Usaremos echo para enviar lo siguiente:

1D 49 31 (Request model ID)
1D 49 32 (Request type ID)
Dado que las respuestas se proporcionarán en formato hexadecimal, la salida directa de cat, que se registró en “examplefile”, no será legible para los humanos. En su lugar, ejecutaremos el archivo a través de hexdump:
Solicitud y respuesta de impresora

Usando gtkterm

Linux también proporciona terminales serie como minicom y gtkterm que pueden interactuar de forma integral con los puertos serie, gestionando tanto la entrada como la salida, ofreciendo más opciones de formato y facilitando las cosas en general.

Como ejemplo, probaremos gtkterm. De forma similar a stty, gtkterm necesita iniciarse con argumentos de línea de comandos para especificar la configuración de la conexión, si los valores predeterminados no son adecuados.

Nota de Nick:
Aunque Minicom es una herramienta muy flexible, los controles complicados la hacen inadecuada para el uso por parte de principiantes, y difícil de cubrir en una guía rápida. Si quieres empezar a aprender sobre Minicom, comienza con su página man para evitar confundirte una vez que inicies la aplicación.

Interfaz de GTKTerm
Algunas opciones útiles incluyen eco local (para duplicar los datos que envías en tu lado), registro, vista hexadecimal y envío de datos hexadecimales. Además, ten en cuenta los indicadores en la parte inferior derecha: muestran los estados de las líneas de señal DTR, RTS, CD, DSR y RI; es otra forma de ver que el dispositivo está conectado y preparado para recibir datos.
Menú de configuración e indicadores de protocolo de enlace en GTKTerm

Conectarse a un puerto serie en su red local

En algunos casos, es necesario compartir un dispositivo serie entre varios ordenadores, o quizá quieras sustituir una conexión serie física entre dos ordenadores por una virtual. Uno de mis proyectos - Serial to Ethernet Connector - es una forma eficiente de lograrlo. Además de poner los puertos físicos a disposición en una red local, la aplicación puede crear puertos virtuales a los que pueden acceder las aplicaciones.

Serial to Ethernet Connector se puede configurar rápidamente y cuenta con una interfaz de línea de comandos que facilita su integración en un flujo de trabajo de Terminal o en scripts de bash. Habrá documentación detallada, guías de usuario y expertos de soporte al cliente para ayudar. Además, hay una prueba gratuita de 15 días disponible, así que recomiendo encarecidamente probarlo.

Cómo usar el Serial to Ethernet Connector

1
Regístrese para una prueba gratuita en esta página. Espere a que la clave de activación llegue a su buzón.
Regístrate para una prueba gratuita
2
Dirígete al Centro de descargas. Elige el instalador adecuado para tu distribución de Linux y arquitectura.
Ir al Centro de descargas
3
Abre tu Terminal, navega hasta el archivo y usa los siguientes comandos en sistemas basados en Debian (necesitarás acceso de superusuario):

dpkg -i serial_ethernet_connector_64.deb
apt-get install -f


O este comando en Fedora o CentOS:

sudo rpm -i serial_ethernet_connector_64.rpm

Una vez finalizada la instalación, reinicia tu ordenador.
4
Utilice su código de activación ejecutando el siguiente comando:

evesecli register <your activation code>

La activación se puede verificar ejecutando:

evesecli license

Estos pasos de instalación y activación deberán completarse en ambas máquinas que se conectarán.
Usa tu código de activación
5
Dado que enviaremos mensajes entre dos aplicaciones, crearemos puertos virtuales tanto para el servidor como para el cliente. Comience usando el siguiente comando en el servidor:

evesecli add -v /tmp/ttyLS0 server --local 5000

El comando “start” abrirá la conexión:

evesecli start /tmp/ttyLS0

Además, necesitará conocer la dirección IP de su computadora en la red local. Ejecute “hostname -I” (i mayúscula).
crear puertos virtuales tanto para el servidor como para el cliente
6
En el equipo cliente, ejecute lo siguiente:

evesecli add -v /tmp/ttyRS0 client --remote <your IP address>:5000
evesecli start /tmp/ttyRS0


Puede verificar si la conexión se realizó correctamente usando “evesecli list”. Debería mostrar que hay 1 conexión.
verifique si la conexión fue exitosa
7
Finalmente, dado que los puertos conectados son ambos virtuales, pueden probarse, como antes, con cat/echo.
como los puertos conectados son ambos virtuales, se pueden probar
No olvides que puedes usar “man evesecli” para obtener más información sobre las opciones y comandos disponibles. Además, hay una guía del usuario que se puede consultar para ver ejemplos e información general sobre el uso de Serial to Ethernet Connector.

Mis credenciales

Soy Nikolai Svarachevsky, un desarrollador senior empleado en Electronic Team, Inc. Soy desarrollador líder en múltiples proyectos, incluido Serial to Ethernet Connector. He escrito código de nivel comercial con fines de comunicación serial, redes y cifrado. Además, soy un usuario avanzado de Linux y me encanta encontrar nuevas formas de usar tanto las utilidades integradas como el software de terceros para resolver problemas, ya sean simples o complejos. Espero que esta guía te resulte útil.
Serial to Ethernet Connector
Access remote serial port over IP Network for Windows
14 días de prueba gratuita
Precio de licencia a partir de $259.95
Disponible para