Попробовал, используя TCP/IP стек Quectel, сделать свой FTP клиент на МК. В общем, что нашёл, сравнивая разные логи:
Все "нормальные" клиенты используют для задания пути к записываемому файлу команду CWD <имя папки>. Потом пишут файл командой STOR <имя файла>
QUECTEL же пытается писать файл, указывая полный путь в виде STOR <имя папки>/<имя файла>. Имя папки(путь), естественно, было предварительно указано командой QFTPPATH. Вот, видимо, такая конструкция и не нравится маршрутизатору. Это подтвердилось проверкой.
Но теперь я застрял на этапе передачи данных:
сервер ждет продолжения передачи (?) и не дает сообщения "226 Transfer complete."
Устанавливаем соединение с сервером.
Логинимся.
проверка пароля.
230 Logged on
переключаемся в бинарный режим
посылаем команду PASV
получаем адрес и порт для второго соединения
227 Entering Passive Mode (хх,хх,хх,хх,234,102)
открываем это соединение
получаем CONNECT OK !
команда CWD <имя папки>
ответ: 250 CWD successful
STOR <имя файла>
ответ: 150 Connection accepted
Запихиваем в UART наши данные, заканчивая передачу, например CTRL+Z (0x1A)
для пробы брал 160 байт.
получаем от QUECTEL сообщение SEND OK
Ну и на этом всё... висим. ФТП сервер в маршрутизаторе висит до перезапуска. Но файл при этом пишется! На флешке он есть!
Можно правда, принудительно со стороны QUECTELа прервать передачу командой ABOR или закрыть оба соединения.
Что не так? Что ждёт сервер?
P.S. с "Filezilla FTP server" всё аналогично.