My first troubleshooting step would be to inspect any firewall rules between the TFTP server and the device; I suspect that the first acknowledgement packet from the server isn't getting back to your device. The TFTP protocol will spin off a random high UDP port to service each request to keep UDP port 69 available to continue servicing other requests. You should be able to verify this with a packet sniffer like Wireshark. I'm betting that the first packet (which contains the filename, hence the empty file) from the device gets to the TFTP server, but the acknowledgement packet doesn't get back to the device, so the device times out instead of continuing to send data.
Hope this helps.