LL-RLP-20 or LL-RXR-27 Module | Over-the-Air File Transfer

Introduction

Following the 1.4.0 release, the Symphony Link protocol supports over-the-air transmission of large files to end-nodes. This capability is useful to update the firmware of the host system, or the Symphony Link module itself.

The Symphony Link File Transfer Protocol (FTP) provides the ability to send files from Conductor to a Symphony Link module. The protocol supports unicast (sending a file to a single end-node) and multicast (sending a file to multiple end-nodes simultaneously).  The FTP is initialized using Conductor's ClientEdge API to send a file to any number of end-nodes.

The protocol sends a file in segments. Each segment is 107 bytes long, with the maximum number of segments in one transfer being 2400. The protocol can therefore transfer a maximum file size of 256 kB.

Symphony Link reserves port 128 exclusively for file transfer traffic.

Diagram of a File Transfer

Checkpoint A: Initializing the client

Checkpoint B: Preparing the file transfer

Checkpoint C: Sending the initial file transfer

Checkpoint D: Finishing the transfer (check for missed segments)

Checkpoint E: Verifying the entire file

symphony_ftp scripts

The following Python scripts provide an example implementation of over-the-air file transfer. The scripts work together to transfer a file from your local machine (the server) to Conductor, to a Symphony Link gateway, over the air to an evaluation board, and finally across the module's host interface to the host system (the client). The client is assumed to be a computer controlling the evaluation board via USB.

These scripts require Link Labs firmware version 1.4.x for the LL-RLP-20 or LL-RXR-27 module.

symphony_ftp_server.py

This Python script is a tool to perform the server portion of the file transfer protocol.

symphony_ftp_server.py

symphony_ftp_packets.py

This Python script defines the uplink and downlink packets used during file transfer. It is used by the client and the server scripts.

symphony_ftp_packets.py

symphony_ftp_client.py

This Python script performs the client portion of the file transfer protocol.

symphony_ftp_client.py