Matthew Panzarino was Managing Editor at TNW. He's no longer with the company, but you can follow him on Twitter. Matthew Panzarino was Managing Editor at TNW. He's no longer with the company, but you can follow him on Twitter.
A bug discovered in iOS 6.0’s AV Foundation framework is causing podcasts and audio streams to download multiple times, creating data overages for content delivery networks and those streaming audio over cellular connections. The discovery, which is well documented, came via the Public Radio Exchange labs.
The issue is a potentially major one. The audio streams that are being pulled down by iOS 6 through a variety of apps including Apple’s Podcasts and other apps that use the streaming player are being increased in size by a huge factor. This could very well include iTunes Match, as some users have seen it when only using Apple’s cloud music mating service.
The streams are being downloaded multiple times as connection errors cause them to fire off a new session. And, the entire time that a stream is active, it is being downloaded over and over.
Here’s a chart that shows a spike in the data used to deliver This American Life when Apple’s Podcasts app and iOS 6 were released. Obviously TAL being featured in the app meant a spike in popularity, but it turns out that there was more to it than that.
Because the ranges of these requests seem to overlap and the requests themselves each carry some overhead, this causes a single download of an MP3 to use significantly more bandwidth than in iOS 5. In one case, the playback of a single 30MB episode caused the transfer of over 100MB of data.
You can see the bug in action here, where the stream continuously restarts, downloading chunks of data each time it does. This makes the total effective size of a podcast or audio stream much, much larger than its actual size:
According to the research, the issue has apparently been corrected in iOS 6.0.1, which Apple just released last week, and does not exist in iOS 5. So only devices running iOS 6.0 are affected. Regardless, this could very well cause overages in data plans for those streaming podcasts over LTE and other cellular connections. PRX Labs’ logs show the error happening over cellular connections from their customers, though all of their testing was done on WiFi.
Note, however, that we’re seeing some reports in Apple discussion forums that the issue still exists on iOS 6.0.1, contradicting what PRX found.
There have, of course, been widespread tales of people using more data on their iOS 6 devices as they kept using 3G or LTE connections even on WiFi. This was theoretically fixed by carrier updates issued by Apple, but this AV Foundation bug could very well have been another contributor.
An article by Glenn Fleishman at TidBits back in Septembernoted that, while Verizon’s carrier update could have fixed iPhone 5 issues, there were still questions about where data was going on iOS 6 devices. And podcaster Moisés Chiullan ran down his experiences with the data overage on The Frequency back in October.
Even if you haven’t been affected as you use WiFi to download podcasts and other audio streams, iOS 6.0 will still detrimentally affect CDNs that are sending huge amounts more data to users than they need to.
Whether that is the only audio-related bug in AV Foundation that was fixed remains to be seen. I’ve seen several issues with streaming audio over LTE and switching between LTE and Wif causing drops in the connection. Remember too, that while PRX tested audio streams, this could very well happen with video streams as well.
For now, what we encourage everyone to do is to update to iOS 6.0.1 immediately if you stream podcasts. You could end up saving yourself a lot of data. If you’ve been bitten by this, some users have reported success contacting their carrier to have the overage charges removed.
We’ve reached out to Apple on this issue and will update this post when we receive a response.
Image Credit: Justin Sullivan/Getty Images
Get the TNW newsletter
Get the most important tech news in your inbox each week.