Il firmware del microcontrollore lo scrivo io e posso fargli fare quello che voglio.
In sostanza il client FTP lo sto creando all'interno.
Beh il problema allora non si pone (perchè hai usato telnet)?
Hai a disposizione un'analisi di come dovrebbe comportarsi un client FTP (connettersi al server, autenticarsi, stabilire la connessione dati, uploadare il file).
Non ti resta che implementarla. Se hai problemi specifici con l'implementazione chiedi aiuto.

Ma se prima non provo la sintassi su un sistema "manuale" non posso poi riportarlo nel micro.
Intendi la sessione FTP? In tal caso lo schema è questo: http://cr.yp.to/ftp/browsing.html
Di telnet puoi averne bisogno giusto per fare delle prove.

Funziona tutto ma questo problema della chiusura del file nel protocollo ftp mi sta bloccando. Ecco perche' ho bisogno della soluzione di basso livello.
Continuo a non capire dove sia il problema dato che ti ho gia detto cosa dovresti fare a livello implementativo: chiudere il socket relativo al canale dati e aspettare una risposta sul canale comandi.

PS - in che linguaggio stai scrivendo tutto questo?