I wanted to transfer files between two mac computers. The network is wireless-N and both computers have wireless-N modules in them.

The problem is that when I transfer files between them, via file sharing (afp) the network speed caps at 2 megabytes/sec. Just downloading files from the internet I can get faster speeds, so this isn't a constriction of my wifi bandwidth, it appears to be a constriction of the protocol being used.

My wifi-n is set to 130mbits, so I should see real world transfer speeds around 12-16 megabytes/sec

I did this command on both computers sudo sysctl -w net.inet.tcp.delayed_ack=0 which is supposed to lower tcp overhead, but this did not affect it.

How can I get the speed I am expecting?

  • Open the network utility application found under your utilities and check your wifi adapters on each OSX machine and verify what data rate they are linking at wirelessly. Are you running 2.4ghz or 5ghz for the antenna? Jun 19 '12 at 13:07
  • There is no magic "go faster" flag in TCP. Don't turn off delayed ACKs, it just reduces network efficiency. Jun 19 '12 at 13:43
  • 4MB/s is about the theoretical limit for 130Mbps WiFi. Remember, the data has to go from one machine to the AP, then from the AP to the other machine, then the ACK has to go from that machine to the AP, then the ACK has to go from the AP to the other machine. Each handoff of what node is transmitting takes time, all the data gets sent twice, and every packet has a preamble that's sent at minimum speed to tell other nodes the link is in use. Jun 19 '12 at 13:46
  • @DavidSchwartz I think you just explained how the internet works, and I get higher bandwidth from there, so this isn't really an excuse for the speed limit. I will see if there is additional overhead somewhere
    – CQM
    Jun 20 '12 at 0:35
  • 1
    @CQM: No, I explained how Wifi works. The argument does not apply to Internet transfers and that's why they're faster. (The data does not arrive at the AP over Wifi nor do the acknowledgements of the arrived data leave the AP over Wifi. Not only does less data need to be sent over the Wifi link, but just as importantly, far fewer changes in Wifi transmit direction are required.) Jun 20 '12 at 1:18

Get a better access point. You're taking huge bandwidth penalties because the link from the source machine to the access point is sharing bandwidth with the link from the destination machine to the access point. Better access points can handle multiple simultaneous streams. This not only immediately doubles the available bandwidth but it also reduces the number of changes in a stream's transmit direction.

Right now, to send a packet results in roughly the following:

  1. The source machine obtains access to the channel, sends a preamble, and then sends the data to the access point.

  2. The AP sends a preamble and then sends the data to its destination.

  3. The destination obtains access to the channel, sends a preamble, and then sends the acknowledgement to the access point.

  4. The AP sends a preamble and then sends the acknowledgement to the source machine.

All four of these operations are competing for the same bandwidth. Tweaks like disabling 802.11b support can help a bit.

If your 130Mbps link is degrading to 65Mbps or so due to link distance or your channel is shared with anything else (other Wifi systems, Bluetooth), your speed numbers are, unfortunately, about right for a bottom-of-the-line 802.11n access point with no compatibility options disabled.

While product recommendations are off-topic here, you can get WRT610Ns and E3000s refurbished for $60 or less. I've used dozens of them in both home and commercial deployments, all refurbished, and they've all worked like champs. This will give you 5GHz support too, which is generally wide open and performs better (though at shorter distances), assuming any of your endpoints support it. (I prefer the E3000 because it only exists in one hardware version, so I know exactly what I'm going to get.)


Run the builtin airport utility:


The manpage is well not really there but with -h you can find out the options. Look for transmission/beacon drops? May also be worth checking out what the access point says is going on.

What happens if you put one host on wired ethernet and try the same transfer?

  • I considered putting one host on wired. or both, but I will need another ethernet connection. When I was constricted to 100mbit ethernet networks, I found 8-10mb/s to be very tolerable, so when I saw 130mbit wireless I was very surprised that it does not work as well.
    – CQM
    Jun 19 '12 at 16:20
  • I am mainly interested to see if you get ~100 mbit/s from wired to wireless host. If not then you've found that your problem is probably not in tcp tuning but in wireless configuration.
    – jmw
    Jun 19 '12 at 18:12
  • 2
    @CQM: You're comparing things that are not comparable. You have to immediately divide the Wifi bandwith by four. First, you have to halve it because Wifi is not full duplex while Ethernet is. Then you have to halve it because in your "A to B to C" case, Ethernet gives "A to B" its own link. With Wifi, the "A to B" and "B to C" links share bandwidth. So 130Mbps Wifi is comparable to 32Mbps Ethernet. That's before you even consider the cost of preambles and changes in transmit direction. A Wifi raw line speed is simply not comparable to an Ethernet raw line speed at all. Jun 20 '12 at 1:22
  • @DavidSchwartz is very much correct. Jun 20 '12 at 1:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.