OK, I solved it. Sniffing a bit with Ethereal pointed out what went wrong.
In the original script there is:
echo -en "get ASUSSPACELINK\x01\x01\xa8\xc0 /dev/null\nquit\n" | tftp 192.168.1.1
Like I said, after this line the LED stops blinking right away. No response to upload the firmware anymore.
I found out that in Windows it 'puts' the file to 192.168.1.49 instead of 192.168.1.1. To do so it first 'gets' with ASUSSPACELINK\x31\x01\xa8\xc0 instead of ASUSSPACELINK\x01\x01\xa8\xc0. Of course the 1 refers to 192.168.1.1 and the 31h refers to 192.168.1.49.
Conclusion: it only works if I do a get with \x31 instead of \x01. Don't ask me why but this is just the way it is. Maybe Asus changed it on purpose.