Вам нужно вручную обрабатывать соединения и отсылать команды.
Список команд описан тут
www.nsftools.com/tips/RawFTP.htm
Для примера можно через telnet попробовать протокол. Вот пример общения с ftp.debian.org:
pastebin.com/Cweysg4C
На ESP будет удобней использовать пассивный режим. Для этого перед использованиям комманд LIST RETR и некоторых других нужно отослать команду PASV, в ответ прийдут данные для второго подключения.
227 Entering Passive Mode (a1,a2,a3,a4,p1,p2)
где a1.a2.a3.a4 это IP адрес, а p1*256+p2 порт для подключения
Например для получения содержимого папки debian:
отсылаете "PASV" в ответ приходит
227 Entering Passive Mode (130,89,148,12,68,176).
Открываете второе подключение на 130.89.148.12 на порт 17584 (68*256+176)
После отсылки в первом подключении команды "LIST debian" во второе прийдет ответ
-rw-rw-r-- 1 1176 1176 1063 Mar 01 22:03 README
-rw-rw-r-- 1 1176 1176 1290 Jun 26 2010 README.CD-manufacture
-rw-rw-r-- 1 1176 1176 2591 Mar 01 22:03 README.html
....
drwxr-xr-x 3 1176 1176 4096 Oct 10 2012 tools
Аналогично с получением файла, его содержимое будет приходить во второе соединение.