Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Esptool | 4,761 | 59 | 33 | 3 days ago | 31 | May 27, 2022 | 31 | gpl-2.0 | Python | |
Espressif SoC serial bootloader utility | ||||||||||
Serial | 1,422 | 602 | 135 | 4 months ago | 10 | August 30, 2018 | 61 | bsd-3-clause | Go | |
Nut | 1,089 | 10 hours ago | 1 | February 27, 2018 | 588 | other | C | |||
The Network UPS Tools repository. UPS management protocol Informational RFC 9271 published by IETF at https://www.rfc-editor.org/info/rfc9271 | ||||||||||
Rshell | 775 | 6 | 4 | a month ago | 31 | December 30, 2021 | 118 | mit | Python | |
Remote Shell for MicroPython | ||||||||||
Orsserialport | 694 | 32 | a month ago | 16 | March 15, 2016 | 29 | mit | Objective-C | ||
Serial port library for Objective-C and Swift macOS apps | ||||||||||
Docker Deconz | 447 | a year ago | 11 | mit | Shell | |||||
deCONZ Docker Image | ||||||||||
Picocom | 429 | a year ago | 1 | February 27, 2018 | 32 | gpl-2.0 | C | |||
Minimal dumb-terminal emulation program | ||||||||||
Go Serial | 415 | 10 | 50 | 4 years ago | August 08, 2022 | 23 | apache-2.0 | Go | ||
A Go library for dealing with serial ports. | ||||||||||
Nrjavaserial | 314 | 64 | 11 | 4 months ago | 29 | May 22, 2020 | 35 | other | Java | |
A Java Serial Port system. This is a fork of the RXTX project that uses in jar loading of the native code. | ||||||||||
Serial Port Json Server | 308 | 5 years ago | August 17, 2015 | 39 | gpl-2.0 | Go | ||||
A serial port JSON websocket server for Windows, Mac, Linux, Raspberry Pi, or BeagleBone Black that lets you communicate with your serial port from a web application. This enables web apps to be written that can communicate with your local serial device such as an Arduino, CNC controller, or any device that communicates over the serial port. |
Remserial
---------
The remserial program acts as a communications bridge between a TCP/IP
network port and a Linux device such as a serial port. Any character-oriented
Linux /dev device will work.
The program can also use pseudo-ttys as the device. A pseudo-tty is like
a serial port in that it has a /dev entry that can be opened by a program
that expects a serial port device, except that instead of belonging to
a physical serial device, the data can be intercepted by another program.
The remserial program uses this to connect a network port to the
"master" (programming) side of the pseudo-tty allowing the device driver
(slave) side to be used by some program expecting a serial port. See example
3 below for details.
The program can operate as a server accepting network connections from
other machines, or as a client, connecting to remote machine that
is running the remserial program or some other program that accepts
a raw network connection. The network connection passes data as-is,
there is no control protocol over the network socket.
Multiple copies of the program can run on the same computer at the same
time assuming each is using a different network port and device.
Some examples:
1) Give access to a RS232 device over a network.
The computer with the serial port connected to the device (such as a
data aquisition device) runs the remserial program:
remserial -d -p 23000 -s "9600 raw" /dev/ttyS0 &
This starts the program in daemon mode so that it runs in the background,
it waits for connections on port 23000 and sets up the serial port
/dev/ttyS0 at 9600 baud. Network connections to port 23000 from any
machine can then read and write to the device attached to the serial port.
This can be started from /etc/rc.local or as an entry in /etc/inittab
or set up as a system service with a file in /etc/rc.init/.
2) Connect an RS232 device to a specified server.
The computer with the serial port connected to the device (such as a
data aquisition device) runs the remserial program:
remserial -d -r server-name -p 23000 -s "9600 raw" /dev/ttyS0 &
This would be used with case number 1 above creating an end-to-end serial
port connection. What goes in the serial port on one machine would come
out the serial port of the other machine. The ports could be running at
different baud rates or other serial port settings.
3) Connect a Linux program that needs a serial port to a remote serial port.
Some programs are written to communicate directly with a serial port such
as some data aquisition programs. The remserial program can use
pseudo-ttys to fool the program into thinking that it is talking to a
real serial port on the local machine:
remserial -d -r server-name -p 23000 -l /dev/remserial1 /dev/ptmx &
This creates a file called /dev/remserial1 which can be used by the
data aquisition application as its serial port. Any data sent or received
is passed to the remote server-name on port 23000 where a computer configured
in case number 1 above passes it to a real serial port.
The remserial program uses the special pseudo-tty master device /dev/ptmx
(see man ptmx) which creates a slave device that looks like a normal
serial port named /dev/pts/something. Unfortunately, the actual device
name created isn't consistent, so the remserial program creates a symbol
link from the device name specified with the -l option to the /dev/pts/
name that was created allowing the other application to be configured
with a consistent device name.
4) Server farm console control.
Assuming multiple Linux servers (such as web servers) are set up to have a
serial port as their console instead of a monitor/keyboard, their serial
ports could be connected to a control server using a multi-port serial board.
On the control server, a copy of remserial is run for each server:
remserial -d -p 23000 -s "115200 raw" /dev/ttyS0 &
remserial -d -p 23001 -s "115200 raw" /dev/ttyS1 &
remserial -d -p 23002 -s "115200 raw" /dev/ttyS2 &
remserial -d -p 23003 -s "115200 raw" /dev/ttyS3 &
etc.
From any computer on the local network, use a telnet program to connect
to the control server on the appropriate port:
telnet control-server-name 23002
This would connect through the associated serial port to the desired server's
console. This example would then give the user console access to the 3rd
server.
Careful scripting such as using the Linux "expect" program could allow
batches of commands to be run on each server.
Other Linux program useful with remserial
-----------------------------------------
- nc - The netcat program is similar to remserial except that it creates
connections between network ports and command line standard input and
output.
For example, with case number 1 above, the following command run on
another computer will send the contents of the named file out the
serial port used by the remserial program:
nc server-name 23000