This is not Rain: It's a Trickle

I started using rain (a South African ISP) back in March 2019. The coverage was good (the only place I couldn’t get a signal was at Lanseria Airport), while the bandwidth was consistently high. I loved the fact that it was affordable, reliable and portable.

So much has changed.

Rain on Twitter

Speeds up to 10Mbps


The rain website claims that they provide “speeds up to 10 Mbps”. While this is technically true, I believe that it’s also disingenuous.

I started grumbling on Twitter about poor bandwidth around the end of 2019. The standard response from Rain was essentially “Please DM us your details and we’ll investigate”. As you can see from the numerous responses below, they repeatedly request my details, never keeping track of who I was or the nature of my problem.

Bear with me, there are quite a few of these. I just wanted to include a selection to emphasise the fact that this is not a new problem and that they do not keep track of individual customers. Note: These are images because tweets have a funny way of disappearing.

I hope you get the picture.

The fact that they couldn’t be bothered to keep track of who I am or the nature of my problem lead me to conclude that they really didn’t have a clue about “customer service”. Haven’t they heard about CRM systems?

I also received a few emails from them. Here’s a sample. First their instructions for “optimising” my hardware. I received these instructions a few times over the course of the last year.

  • Remove your sim then reinsert it into the device.
  • Restart the router and connect to it with the device that you are using to login to your rain dashboard.
  • Login to your rain dashboard, and click on the *manage* button for your device, under your *My Devices* page on the *My Rain* tab. This is the page next to *My Account*, that usually shows an image of your device.
  • Once connected, please use the optimizer to indicate towards what tower your router should be facing, and try and place your router in that manner, as much as is possible in your home. Please enter your address into the search bar to do this. Please note that the optimizer only shows you which tower you are connected to, and has no other functionality, so you can only use it as a guide and indicator.
  • Windows are optimal for placement, as this greatly decreases the interference between the tower and your router. Please also reboot your router after you have moved it.
rain (optimisation instructions)

This procedure was not helpful. Furthermore, having to put my router in an “optimal” location somewhat defeats the objective. My signal strength is fine. Moving the router around is not going to change anything. Furthermore, regardless of where I placed my router in my home, it always connected to the same tower.

Please note that the utilization of the tower’s resources varies throughout the day and as the usage increases and the resources become more strange the available bandwidth is also affected.

That which you are mentioning is indicative of heavy usage from customers in surrounding areas in the aforementioned time periods. There is nothing that can be done in accordance to assist, as all the towers in your area display the same increased traffic patterns during those times and it would not help getting you to optimize your device can connect to a different tower.

rain (email on 7 January 2021)

Aha, so here they admit that there’s no point in me trying to “optimise” my hardware. Don’t know why they had repeatedly asked me to do so.

Please note we are busy working on improving the services and making sure the towers are being tended to in regards to the bandwidth.

Apologies for the continued inconvenience.

rain (email on 9 January 2021)

And they are apparently addressing the bandwidth issue… but there was no real sign of improvement.

What really pushed me over the edge was the following, which I received from them on 11 January 2021:

I merely needed to inform you on the phone that we are not able to assist further as the network’s traffic is not something we can affect change on in a way that will benefit you specifically, in that the current issues are experienced by not just you.

rain (email on 11 January 2021)

They are aware that I’m not the only person with this problem. And they can’t fix the problem for me “specifically”. Nor for anybody else, it would seem.


I had been intermittently recording my bandwidth and posting it on Twitter. But this was tiresome and didn’t really give me a consistent record. Without solid data, I was nothing more than an occasional Twitter whinger. Time to implement some automation.

I booted up an old laptop and connected it exclusively to my rain router.

I then wrote an R script which

  • used {RSelenium} to periodically connect to and measure the bandwidth
  • recorded each measurement in a CSV file
  • created a screenshot of the page, cropped it and annotated with the date and time and
  • occasionally tweeted about it (with some semi-randomised text).

I set up crontab to run the script every ten minutes from early in the morning until 18:00 in the evening.

Here’s a couple of the automatically generated tweets.

{{< tweet user=“datawookie” id=“1351133274156969991” >}}

{{< tweet user=“datawookie” id=“1351535762362294272” >}}

To keep things fresh I used sample() to randomly select from a list of suitable adjectives.


Having all of those data I could do some analysis. Here’s a sample of the data.

# A tibble: 1,073 × 5
   time                         id time_ping speed_download speed_upload
   <dttm>                    <dbl>     <dbl>          <dbl>        <dbl>
 1 2021-01-07 10:40:02 10707693015       213           0.08         5.18
 2 2021-01-07 11:00:02 10707767988        87           0.06         6.2 
 3 2021-01-07 11:10:02 10707804287       309           0.07         4.72
 4 2021-01-07 11:20:02 10707846467        39           0.27         8.63
 5 2021-01-07 11:40:02 10707918179        42           0.46         5.32
 6 2021-01-07 11:50:02 10707956494        41           0.44         7.33
 7 2021-01-07 12:00:02 10707998213        45           0.68         3.65
 8 2021-01-07 12:10:01 10708037500        35           0.68         8.28
 9 2021-01-07 12:20:01 10708077497        39           0.44         8.25
10 2021-01-07 12:30:01 10708118351        37           1.17         3.08
# … with 1,063 more rows

I have 1058 distinct measurements between 10:40 on 7 January 2021 and 13:10 on 23 January 2021. I could have carried on for longer, but to be honest, I lost interest and there was quite sufficient data to prove my point.

Ping Time

Let’s start by looking at the ping time, which is a measure of latency. Here’s the distribution of ping times for rain. The average is around 50 ms, which is actually pretty good!

Distribution of ping times.

Point Measurements

Now let’s move on to bandwidth. The panels in the figure below show individual measurements of download and upload speed as points, with a smoothing curve to indicate the average.

Measurements of upload and download speeds.

What are the takeaways from this figure?

  • Download speed can be pretty decent early in the morning (event getting up above 30 Mbps on occasion), but sinks to dismal levels around 07:00 in the morning.
  • Upload speed is good (though variable) throughout the day.

With all of those points the figure is rather cluttered. Let’s see if we can clean it up.


Rather than looking at individual measurements, we’ll look at their distribution and break the result down by hour. In the figure below each panel gives the distribution of upload and download speeds for a specific hour of the day.

Distribution of upload and download speeds versus time of day (stacked density plot).

The distribution of both upload and download speeds is broad early in the morning. However, from 07:00 the download speed collapses and is confined to a narrow spike close to zero. The upload speed remains good (though variable) throughout the day.

Another way of looking at the distributions is with a ridge plot. I’m undecided which presentation I prefer, so I’ve included both.

Distribution of upload and download speeds versus time of day (ridge plot).


Let’s look at the download data in one last format. The heatmap below shows the average download speed broken down by hour and date.

Download speed as a function of date and time of day.

Aggregating those results by day of week we see that Sunday is actually slightly better than the other days of the week, with decent download speeds persisting one hour later into the day. I assume that this is simply because usage picks up just a little bit slower on a leisurely Sunday morning.

Download speed as a function of day of week and time of day.


The summary table below shows that you’d be lucky to get anywhere near 10 Mbps during business hours.

Rain Download Speed
7 January 2021 to 23 January 2021
n Speed (Mbps)
min 5% mean 95% max
4:00 - 5:00 38 0.35 1.63 13.66 30.56 36.52
5:00 - 6:00 70 0.28 2.81 10.69 24.12 26.16
6:00 - 7:00 80 0.55 0.82 4.53 11.70 17.10
7:00 - 8:00 85 0.20 0.30 1.60 4.57 8.09
8:00 - 9:00 85 0.10 0.20 1.45 5.07 12.03
9:00 - 10:00 79 0.05 0.14 1.03 3.27 9.09
10:00 - 11:00 72 0.08 0.19 1.26 3.43 13.79
11:00 - 12:00 80 0.06 0.13 0.93 2.67 5.51
12:00 - 13:00 85 0.09 0.16 0.70 2.10 4.62
13:00 - 14:00 75 0.07 0.14 1.01 3.10 5.24
14:00 - 15:00 78 0.14 0.18 0.73 2.01 4.13
15:00 - 16:00 78 0.06 0.19 0.66 2.06 3.71
16:00 - 17:00 71 0.08 0.20 0.91 2.65 3.08
17:00 - 18:00 82 0.14 0.18 0.71 1.94 2.46
Based on 1058 observations.

Sorry, rain, we’re breaking up. And the problem isn’t me (or my hardware), it’s you.

<img src=“it-not-me-it-you.jpeg” alt=“It’s not me, it’s you (a meme).”


The data I gathered for this post are available here. Note that I’ve been recording data for both Rain and Telkom ADSL (the latter measurements are more patchy because they were not gathered from a dedicated machine). Use the contents of the isp column to differentiate.