Why do London buses keep disappearing? (And how I’m trying to find them again).

A Bus, disappearing. (Badly) edited version of photo from Bus Routes in London Wiki/JamieAmoah

Here’s an annoying thing that happens to me fairly regularly: I’m waiting at the bus stop for a bus. I pull out my phone to check when the bus is coming. It tells me the bus is coming in 9 minutes. I check again, it says it’s coming in 8 minutes. Then I check *again*, and the bus has vanished.

Admittedly, there are worse problems than this in the world, and typically a few minutes later it reappears on the TfL Go app1, shortly before physically appearing in front of me. But this is not a great “user experience”, especially if I get to the bus stop in the period where the bus has ‘vanished’, or if I’m actually not at the bus stop but sat at home trying to minimise the amount of time waiting at the bus stop in the cold and now having to figure out which buses do or don’t plausibly exist.

But hey, you kids today don’t know you’re born: who remembers when to get a bus in suburban London you would just stand at the stop for somewhere between 5 and 65 minutes in the hope that one would eventually turn up? Who remembers when the bus man brought round the bus once a week? Who remembers dying after getting run over by a REAL bus? We loved it!

Still, having survived into the exciting age of apps, and Transport for London having gone to all the bother of making sure you can find out when the bus is coming, it is a bit annoying that the system seems to constantly break. And what’s weird is I am pretty sure this a new problem, or at least one I’m experiencing more often, with the same buses at the same stops. So what’s going on?

The answer, possibly, is that the exciting new technology that powers all this stuff is not now very exciting or new. When you open an app to check when the bus is going to come, what that app is doing is accessing TfL’s own system, which has a big list of predicted arrival times for different buses at different stops. Ultimately this derives from the iBus, or rather, the iBuses – an onboard computer aboard every bus in London that does various important cyber-things, including transmitting the position of the bus back to TfL so they can update the predicted arrival times at the remaining stops on the route. But iBus is now quite an old system – it first introduced back in 2006, which is a long time ago in real terms, but even longer in technological ones.

A TfL press release from 2009 announcing that iBus had been fitted to every bus in the city boasts that the system uses technology “including satellite tracking and GPRS data transfer”. GPRS (sometimes called 2.5G) was what we used to use in the old days to browse a very crappy version of the internet on very crappy mobile phones, which was impressive then. Who remembers when the GPRS man used to bring the GPRS? Well, actually this might be the problem: maybe the GPRS man doesn’t come around as often as he used to.

Replying to a query on TfL’s online Tech Forum, James Evans, Digital Service Performance Manager at TfL explained that, as of January 2023, their working theory was that:

coverage on 2G has been degraded across London by the cellular networks so that 4G & 5G services can be provisioned on existing towers

TfL Tech Forum

Which makes sense – the companies that run the mobile phone networks intend to stop supporting both 2G and 3G services by 2033 – though they have ostensibly given Ofcom a special pinky promise that they won’t break anything before then, it seems plausible that in reality there would an increasing number of issues with systems relying on these services. What is presumably happening with the disappearing buses is that when a vehicle passes into a 2G blackspot, iBus fails to phone home its location and so no update is passed to the arrival predictions service.

What I don’t quite understand is why this necessarily results in the bus completely disappearing. What I would do, if I were to design such a system, would be to keep track of the last known predictions – if a bus ‘disappears’ for a few minutes it seems unlikely that the predicted arrival time is going to be that far out.

I mean, if you spend too much time on your own and have sort of lost it you could actually put this into practice, write a script that checks TfL’s publicly accessible arrivals data a few times a minute, dumps this data into a database, then check the data to see not only the most recent arrival data, but the predictions for any buses that were in previous sets of arrival data retrieved within the last few minutes. For example.

Some buses, yesterday.

This is what I knocked up – a little webpage that shows you the arrivals due at a given stop, how much time remains until the predicted arrival, and when the server it connects to last saw information about a given bus2 – so even when it’s gone from the TfL data, I can still see when it will probably arrive.

So why doesn’t TfL’s own app do this?3 I don’t want to be one of those twats who has spent 5 minutes thinking about a thing and thinks he’s outwitted those who worked for years on a thing.

For one thing, when they built the arrivals prediction system maybe it seemed genuinely unlikely that you’d lose GPRS coverage – and some of the stops I have the problems are in slightly leafier more spread out parts of London, so the coverage problems may well be getting worse here faster than anywhere else.

And you’ve also got the problem that the bus could genuinely have “disappeared” – it could have broken down, got into an accident, or terminated early for arcane service regulation reasons. Who the hell knows what happens if a bus goes onto a sudden diversion? Is it worse to promise a bus that doesn’t turn up or deliver one that hasn’t been promised? I can see why you would want to minimise the former – and whereas I can write myself a website that gives me enough to assess the probability a bus is ‘real’, this is a slightly complex idea to communicate to a user who hasn’t spent too much time thinking about buses.

A practical explanation might well be that TfL is simply waiting for iBus2, a replacement for the existing systems, the procurement of which is a ongoing concern – though one that’s been delayed to the point where the contract with the existing iBus provider has been extended to at least 2027. Which must be causing some anxiety if the network that system relies on is continuing to fall to bits…

Anyway, if you’re hoping this is the bit where I announce that I’m taking my work on this public and launching my own exciting bus app, well, um, sorry, no. There are presumably 678 things wrong with what I’ve done that I haven’t noticed yet! You’ll just yell at me when it breaks! I’d have to make ‘an icon’! If you want know where the missing buses go to you’ll have to make your own stupid app.4

  1. Other apps are available, but seem to show the same slightly unhelpful information. ↩︎
  2. It turns out updating the amount of data necessary quickly enough that you can get useful information back out of it is *quite hard* and if you know what an SQL query is you would either be impressed or horrified at the weird janky solution I cobbled together from various different Stack Overflow answers. ↩︎
  3. For all I know it actually does, but chooses not show data older than a given time that’s too short to help my specific situation. ↩︎
  4. Or pay me a million quid, maybe I’ll do it then. ↩︎

Posted

in

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *