161

Is there a way to slow down the internet connection to the iPhone Simulator, so as to mimic how the App might react when you are in a slow spot on the cellular network?

mfaani
37.1k20 gold badges196 silver badges329 bronze badges
asked Apr 7, 2010 at 16:03
2
  • Alan's answer should be accepted. Commented Jan 29, 2019 at 8:46
  • @StanislavMayorov this question is from 9 years ago. Alan then gave an updated answer 4 years later. It is now 5 years after that. Sorry I am not going through and reconsidering accepted answers on my old questions. Commented Sep 21, 2019 at 2:41

8 Answers 8

340

How to install Apple’s Network Link Conditioner

These instructions current as of October 2019.

Warning: If you just upgraded to new version of macOS, make sure you install the very latest Network Conditioner (in Additional Tools for Xcode) or it may silently fail; that is, you will turn it on but it won’t throttle anything or drop any packets.

Update: As of Xcode 11, there may be an even simpler way to simulate network conditions on tethered devices; see this blog post . For how to affect simulated devices, continue below, as before.

  1. Install Xcode if you don’t have it.

  2. Open Xcode and go to Xcode › Open Developer Tool › More Developer Tools...

Screen shot of navigating the menu as described

  1. Download Additional Tools for Xcode (matching your current Xcode version)

Additional IO Tools download link

  1. Open the downloaded disk image and double-click the Network Link Conditioner .prefpane under "Hardware" to install it.

pref pane in DMG

system preferences showing installation prompt

  1. There we go!

Screen shot of the preference pane

  1. Be sure to turn it on. You need to select a profile and enable the network conditioner.

enter image description here

Caveat

This won't affect localhost, so be sure to use a staging server or co-worker's computer to simulate slow network connections to an API you’re running yourself. You may find https://ngrok.com/ helpful in this regard.

answered Dec 8, 2014 at 17:39
Sign up to request clarification or add additional context in comments.

8 Comments

for Xcode 8, this is included in "Additional Tools for Xcode 8" (instead of "Hardware IO Tools for Xcode")
@MohitSingh Thanks. I have updated the answer above.
There seem to be no Additional Tools for Xcode 10.3?
@leo, just use the current Additional Tools for the major version of Xcode you have. For example, use Additional Tools for Xcode 11 if you have Xcode 11.1 installed.
Or, more accurately, use the latest available Additional Tools, up to the version of Xcode you have. For example, use Additional Tools for Xcode 11 if you have Xcode 11.1 installed, since currently there is no version specifically for 11.1.
|
85

"There's an app for that!" ;) Apple provides "Network Link Conditioner" preference pane that does the job quite well.

  • for Xcode versions prior to 4.3, the pane installer can be found in your Developer folder, e.g. "/Developer/Applications/Utilities/Network Link Conditioner", after installation, if daemon fails to start and you don't want to reboot your machine, just use sudo launchctl load /system/library/launchdaemons/com.apple.networklinkconditioner.plist
  • if you are already done with Developer folder, you can install the pane as a part of "Hardware IO Tools for Xcode" package available via Mac Dev Center additional downloads section.

Link to download page (you must log in with your Apple ID): https://developer.apple.com/downloads/index.action
(credits to @nverinaud)

answered Mar 6, 2012 at 8:34

6 Comments

Here is a link to browse available downloads : developer.apple.com/downloads/index.action
doesnt work on Mountain Lion ... stackoverflow.com/questions/12414676/…
would be nice if it were app specific, and not for the whole computer
You can download "Hardware IO Tools" from Apple's developer tools site now. They update it for new releases of Xcode (and thus OSX): In Xcode, click Xcode -> Open Developer Tool -> More Developer Tools..., login, find the latest archive, download, copy the files somewhere, double click the Network Conditioner preference pane thingy, install it... yay!
I guess doesn't work for Yosemite. I set it to "lossy" but actually didn't get any difference
|
71

An app called SpeedLimit

https://github.com/mschrag/speedlimit

Works great.

chris.

Jeremy Mack
5,0042 gold badges28 silver badges22 bronze badges
answered Apr 7, 2010 at 17:00

5 Comments

awesome just tried that out and it does the business. Thanks!
Yosemite: failed to set speed limit
Broken, it says Failed to set speed limit
The right way to do this is explained by Alan H. answer.
"I am no longer able to maintain this project. Please feel free to fork and take ownership."
20

It also worth mentioning that Xcode also has a built in way for devices, not simulator.

  • Just go 'Devices and Simulator' (cmmd+shift+2)
  • Select your device
  • Scroll down til you find 'Device Conditions'
  • Set your desired profile
  • Hit Start

enter image description here

To have this working you need to install 'Network Link Conditioner' on your Mac. See steps mention in Alan's answer

answered Feb 4, 2020 at 15:27

Comments

2

You can enable network conditioner from you iOS device as well. First enable developer mode: Settings -> Privacy & Security -> Developer Mode -> toggle it on

Then, go to Settings -> Developer -> Network Link Conditioner and choose a profile to simulate a network condition

answered May 13, 2024 at 13:50

Comments

1

I would argue that a slow connection isn't enough to simulate real-work mobile data network behaviour - since there is also much more packet loss, higher latencies and more dropped connections too.

Here is a handy script I found to configure the firewall to emulate these parameters:

http://pmilosev-notes.blogspot.com/2011/02/ios-simulator-testing-over-different.html


#!/bin/sh
if [ "$#" -ne "3" ]
then
 echo "Usage:\n0ドル <bandwidth in kpbs> <delay in ms> <packet loss ratio>";
 exit 1
fi 
BW=1ドル
DELAY=2ドル
PLR=3ドル
sudo ipfw pipe 1 config bw ${BW}Kbit/s delay $DELAY plr $PLR
sudo ipfw add 1 pipe 1 all from me to not me
sudo ipfw add 2 pipe 1 all from not me to me
echo "RETURN to stop connection noise"
read
sudo ipfw delete 1
sudo ipfw delete 2
exit 0

Some suggested values you can use:

Scenario Bw (Kbit) delay (ms) pr (ratio)
2.5G mobile (GPRS) 50 200
3G mobile 1000 200 0.2
VSAT 5000 500 0.2
Busy LAN on VSAT 300 500 0.4
mfaani
37.1k20 gold badges196 silver badges329 bronze badges
answered Jun 2, 2011 at 9:20

2 Comments

Network Link Conditioner (tool from Apple that installs as a preference pane) simulates slow connections, packet loss, and latency.
Network Link Conditioner, added in OS X Lion (released in July 2011), makes scripts like this unnecessary.
1

You can do it in really device through Xcode(14) settings

Debug -> Induce Device conditions -> Network Link -> select the Network you want

enter image description here

answered Jan 20, 2023 at 16:42

1 Comment

This doesn't seem to work for simulators, only real devices.
0

There isn't a direct way to emulate a slow connection, unlike, say, the nice network connection emulator that blackberry developers enjoy. However, since your simulator's connection goes through your computer - you can simply focus on slowing down your computer's connection.

You'll want to achieve two things (depending upon your circumstances):

  • throttle your bandwidth
  • increase your latency

Maybe this will point you in right direction:

http://www.macosxhints.com/article.php?story=20080119112509736

There are some good open source solutions, too, but I so can't remember their names.

This question might help: How to throttle network traffic for environment simulation?

answered Apr 7, 2010 at 16:13

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.