2

I have an embedded Linux on a custom board and I would like to send and receive file over its serial port.

The only way to communicate with this device is over serial and the device offers a console on this serial port.

This board doesn't have kermit neither busybox rx nor lrzsz.

- Sending file to remote

I was able to send file to the board following this thread.

Host side                              Remote side

cat file | base64 > file_b64
                                       cat > file_b64
minicom's ctrlA-S => send 'file_b64'
                                       cat file_b64 | base64 --decode > file

- Getting file from remote

Now I would like to retrieve a file from remote system.

Minicom has a tool for receiving files but as I only have the serial port's console using minicom to issue commands on remote side, I can't find how to do it.

I have tried using kermit on host side but it seems that I also needs to have kermit on the remote side.


EDIT:

I have also tried to reverse the sending method but with no success as i receive nothing from serial port on host side.

Host side                              Remote side

                                       cat file | base64 > file_b64
                                       (sleep 10; cat file_b64 > /dev/ttyS0) &
                                       minicom's ctrlA-X => exit minicom
cat /dev/ttyUSB0 > file_b64

Can't use minicom's receive tool cause it only support xmodem, ymodem, zmodem and kermit tranfers and not ascii.


Is there a way to retrieve files from remote without having to type commands into its console?

3

Finally found out that I was issuing the wrong command on receiver's side.

Receive command shall be : cat < /dev/ttyUSB0 > file_b64

Summary

To receive from remote :

          Host side                |             Remote side
                                   |
                                   |    #Encode to base64
                                   |    cat file | base64 > file_b64
                                   |
                                   |    #Send after timeout
                                   |    (sleep 10; cat file_b64 > /dev/ttyS0) &
                                   |
       #############################################################
       ### Exit minicom but keep configuration (ctrlA-Z, then Q) ###
       #############################################################
                                   |
#Receive file                      |
cat < /dev/ttyUSB0 > file_b64      |
                                   |
#Decode file                       |
cat file_b64 | base64 -di > file   |
2

Summarizing above posts i found something like this:

Sending.

Start receiving on target:

cat | base64 -d > filetotarget.bin

Exit minicom with Ctrl-A + Q and then run on host machine:

cat filetotarget.bin | base64 > /dev/ttyUSB0

Return to minicom and press Ctrl-D to finish receive process.

Receiving.

Start delayed send on target:

sleep 10 ; cat filefromtarget.bin | base64

Exit minicom with Ctrl-A + Q. Then start receiving on host:

cat < /dev/ttyUSB0 | base64 -di > filefromtarget.bin

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.