Sending binary files via minicom

On 2011/03/31, in Tips, by danny

Minicom is the defacto standard serial communication program for Linux, modeled after the old DOS program Telix.  While Minicom isn’t as advanced as Telix, it does offer quite a bit of functionality that satisfies most common needs.  Unfortunately, it doesn’t include a binary upload option.

While not commonly used, once in a while, you just need it.  Fortunately, Minicom does allow you to define your own file transfer utilities.  So here’s a simple little script you can use that will give you a “binary upload” option in Minicom.  To make things a little prettier, I used a little utility called ‘pv’ so that you can get a progress bar while it transfers your file.

If you don’t already have it, you should be able to find it easily within your Linux distribution:

On RPM-based systems, just type:

sudo yum install pv

On Debian-based systems, type:

sudo apt-get install pv

Now create this script, and place it in your ~/bin/ directory as (for example) bin-xfr.


#!/bin/sh
INFILE=/dev/null
OUTFILE=/dev/null

while [ $# -gt 0 ]; do
 case "$1" in
 -i)
 shift
 INFILE="$1"
 ;;
 -o)
 shift
 OUTFILE="$1"
 ;;
 -h|--help)
 echo "$0 -i infile -o outfile"
 ;;
 *)
 INFILE="$1"
 esac
 shift
done
cat << EOF
binary-xfer utility for minicom
Sending file ${INFILE} to ${OUTFILE}
EOF

/usr/bin/pv --force -i 0.25 -B 128  ${INFILE}  2>&1 > ${OUTFILE}
# Use the line below if you don't have pv!

# /bin/cat ${INFILE} > ${OUTFILE}
cat << EOF

File transfer complete
EOF
sleep 1

Now go over to minicom and go to the configuration menu (via ESC-O), then “File transfer protocols”. You can add a section there called “binary”, point it at your file, and specify:

  • Name: Binary
  • Program: /home/MYUSERNAME/bin/bin-xfer -o %l
  • Name: Y
  • U/D:  U
  • FullScr: Y
  • IO-Red: N
  • Multi:N

Then leave the menu and save your options.  Next time you send a file (via ESC-S), you should see “Binary” listed as an option.

 

 

Leave a Reply

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


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>