File transfer over a serial line

Posted on

Problem :

I have 2 linux computers, and a serial line between them, one of them is only accessible through a serial line that has shell on it. How can I transfer files between the 2 computers?

I’ve heard that it can be done with some rz/sz magic…

Can I do the same trick with a pseudo-terminal instead of other computer?

Solution :

You need a terminal application like minicom. Then you connect the two computers, start minicom on one side, connect to the other side (the one where you can login) and use the sz command to send the file. Minicom will automatically detect the file transfer. Note that you might need to install the sz command on the login machine, how that is done is dependent on your distribution.

Copying txwikinger’s answer, I would use kermit, the grandfather of file transfer programs. We used it in the 80’s, long before there was Linux. Wikipedia suggests it may be better than zmodem (sz).

An alternative approach is to use SLIP or PPP, as suggested by Axel. But this howto for PPP is about 15 years old.

You could make use of the “Serial Line Internet Protocol” as described here.

Once two systems are interconnected by a slip line, you can use any IP-based tool (ftp, rcp, scp, ssh, …) to exchange files. It probably takes too long to configure for a once-only purpose but might be worth looking at for embedded systems with RS232 port or old systems from a pre-LAN aera.

My way of transferring a file.bin via serial connection is to use openSSL tool since I don’t have other options to do base64 encoding and back:

openssl enc -base64 <file.bin > file.b64


openssl enc -base64 -d <file.b64 > file.bin

Leave a Reply

Your email address will not be published. Required fields are marked *