We have an apache server that hosts firmware files for some embedded devices. These files are not very large, only about 160kb. The embedded devices use an EDGE mobile connection to connect to this server and download an update when needed. The problem we are having is that there is a software bug in some of this devices that causes high packet loss. If the network connection is really good, the devices will manage to download the file and update. The problem is in most cases this doesn't happen.
I don't think the packet loss is caused by the network because the download always begins well. After about 4KB, when the device starts writing the data to flash and the connection slows to a crawl and never recovers. Normally this slowdown should be temporary, once the data is saved the download speed should improve.
Looking at the network traffic packets are still being sent by both sides but there are losses and the server just spends most of the time waiting for acknowledgment.
I was wondering if there is any way to force the server to resend the packets more often. I've tried changing the tcp congestion control to westwood but it doesn't help. Is there any setting in the web server (any web server) that could do this? Or maybe a way to write our own for this purpose? This is just a temporary solution until we update the buggy devices.