How to limit speed of internet connection on Android emulator?

Solution 1:

For Android Studio projects you can do the following:

If you need to change net speed temporarily, then on an emulator toolbar, click three dots (settings), go to Cellular tab and configure the network speed there. You need to have a recent Android Tools.

If you want to set this speed permanently for some emulator image:

  1. Open menu Tools -> Android -> AVD Manager
  2. Select/create your emulator avd image, click Edit
  3. Click Show Advanced Settings button
  4. Set the desired net speed

    Speeds for reference in increasing kbps:

                            UP       DOWN
                      -------- ----------
    gsm   GSM/CSD         14.4       14.4
    hscsd HSCSD           14.4       57.6
    gprs  GPRS            28.8       57.6
    umts  UMTS/3G        384.0      384.0
    edge  EDGE/EGPRS     473.6      473.6
    hsdpa HSDPA         5760.0   13,980.0
    lte   LTE         58,000.0  173,000.0
    evdo  EVDO        75,000.0  280,000.0
    full  No limit           ∞          ∞
    
  5. Re-launch the emulator

OLD ANSWER (obsolete)

If you are working in Eclipse, go to Run->Run Configurations, select your run configuration and then go to "Target" Tab. There you will find a "Network Speed" combobox (under the "Emulator Launch Parameters" section).

If you are running emulator from command line, then you can use "-netspeed" cmd line parameter (run emulator -help-netspeed for overview of possible options)

Solution 2:

Easiest way to tweak things while emulator is still up is to connect to the emulator using a terminal. Just use telnet or netcat (interactively, you can just "telnet localhost 5554" and type "help" -- below examples show how to script it:

$ echo "network speed 100 100" | nc localhost 5554
$ echo "network status" | nc localhost 5554
Current network status:
  download speed:     100000 bits/s (12.2 KB/s)
  upload speed:       100000 bits/s (12.2 KB/s)
  minimum latency:  0 ms
  maximum latency:  0 ms

You can also set the delay/latency:

$ echo "network delay gprs" | nc localhost 5554
$ echo "network status" | nc localhost 5554
Current network status:
  download speed:     100000 bits/s (12.2 KB/s)
  upload speed:       100000 bits/s (12.2 KB/s)
  minimum latency:  150 ms
  maximum latency:  550 ms

Just makes it easier to do things at runtime and test various scenarios (via automation, manual testing, etc).

Solution 3:

Appium set network speed with

adb emu network speed

example:

adb emu network speed gsm

all values(see appium doc ): gsm, hscsd, gprs, umts, edge, hsdpa, lte, evdo, full