A confirmed regression in firmware v3.9.1 that affects all file transfer operations via the SDK.
Symptoms
- First file download/upload succeeds normally
- Second file operation immediately after fails
- Must wait 5 to 40 seconds (varies randomly) before the controller allows a new connection on port 20011
- Affects all methods using port 20011: file download, file upload, backup operations, point table read/write
Confirmed: not present in v3.8.7
This is a regression. In v3.8.7, file operations worked perfectly back-to-back without any delay. A community member provided detailed reproduction steps and a test script (FileTransferBug.zip) to Fairino, but their development team reported being unable to reproduce the issue.
Workaround: add delays between operations
import time
# Download first file
robot.FileDownload("/home/robot/program1.lua", "local_program1.lua")
# Wait for port cooldown — 10s is usually enough, but 40s may be needed
time.sleep(15)
# Download second file
robot.FileDownload("/home/robot/program2.lua", "local_program2.lua")
For batch operations (e.g. backing up 20 LUA files), this means the total time goes from ~2 seconds to 5+ minutes. Not ideal.
Also affects LUA file operations
The same cooldown issue has been observed when downloading files from the controller via the WebApp (System → Backup). After downloading one file, you may need to wait before downloading another.
Downgrade option
If file transfers are critical to your workflow, you can revert from v3.9.x to v3.8.7 by uploading the older firmware. This has been confirmed to work without data loss (backup your data first just in case).