iOS Diagnostics

Ever wondered what diagnostic information your iOS device stores, and (if you're opted in) sends to Apple? I explain the most common entries.

Wooo, codes.

At the time of writing, there is a lot of kerfuffle in the tech world over the ‘Carrier IQ’ issues — namely, carriers stealing your info. I know very little about it and so won’t comment here, but it has revealed another interesting piece of info: You can look through the diagnostics on your iOS device and see what’s being sent to Apple (if indeed you have opted to send such info).

This info can be accessed by looking in Settings -> General -> About -> Diagnostics and Usage -> Diagnostic and Usage Data. You’ll see a long list of logfiles with complicated names.

It’s quite cryptic, even to someone fairly well versed in programming. Here are some excerpts from mine and my interpretations of their meaning:

So go on then, what does this all mean?

The most numerous logfiles on my device are the ones entitled something along the lines of awdd_YYYY-MM-DD-HH-MM-MS-IDENTIFIER.metriclog (a real example being awdd_2011-11-25-08-39-53_9-4ec4bb0c_90003.metriclog).

These appear to be a mixture of general data transfer records, and (more interestingly) records of apps which have made use of the location services on your device (On my iPad 2 this will obviously be the built in GPS, I would be interested to hear from people with non GPS models — do you also have these records?).

The type of metric that is being logged can be determined by the five digit hex number after the last underscore in the name. My records include the following numbers:

See how many there are…

  • 7F004: metricCCDiagnosticsAllowed – these diagnostics contain plenty of data — mainly to do with cell phone network usage. Diagnostics include:
    • Sent/unsent/recieved SMS and mms messages (just the count, not the actual messages)
    • Data sent and recieved, I assume measured in packets
    • Wifi hardware data and preference data
    • Bluetooth power state and connected devices (note: I have no connected devices, can someone connect one and see what info this stores?)
  • 80014: metricCCAirplaneMode – records a times stamp and the on/off status of airplane mode
  • 90001: wifiPowerState – Sends only two values, a time stamp and ‘powerstate’. Not sure what this is.
  • 90003: wifiAssociation – stores basic info about the wifi network being connected to, such as signal level, channel and the type of security in place.
  • 90007: wifiMetricIPv4DHCPLatency – stores the latency associated with DHCP activities on connecting to a network
  • A0003: locationUpdateSession – this gets a bit more interesting. This message is sent whenever an app or the system requests a location from the hardware. It stores the following information:
    • Timestamp/time stamp end. Stores time and period of update
    • Desired accuracy. Not sure what this actually does, seems to be -1 usually.
    • Cell/wifi available/pass code locked/airplane mode: self explanatory
    • TTFF (time to first fix) and TTFFGPS. These are usually zero or numbers under 10, so I’m assuming this is amount of time taken to get a gps fix from the satellites. Bundled: identifier of the app wanting location data Achieved accuracy: not sure if this is on an arbitrary scale. Largest value I’ve seen is 10.
  • A0005: compassSession – a request from an app for compass data. Interesting that this is separate from location data – I suppose the hardware is separate, after all. B0001: bluetoothPowerState – stores timestamp and whether or not bluetooth is on

Log-Aggregated

These files are long but contain some of the most interesting info like app background processing times, launch counts, and even hardware stuff like average charging time/energy!

Some highlights:

  • Mobile backup average duration, and file count
  • App Active/Background Times (in seconds or minutes? Not sure)
  • iPad NAND (SSD) statistics
  • iMessage stats including messages sent/received, send times, delivery times etc
  • Maps stats, particularly street view requests
  • Stats about awake and asleep times, including wake reasons and avg. sleep time.

Other Diagnostics

The above make up the bulk of the messages, but there are a few others which pop up too:

  • Low memory warnings — these are interesting as they tell you exactlyhow much ram each process is using.
  • Crash logs — usually not hugely interesting apart from to the developers of the apps that crash
  • Panic logs — if you’ve been unfortunate enough to experience kernel panics (the screen rapidly fades to black and the device restarts) you’ll have a kernel panic log, with a name ending panic.plist. This is mainly low level stuff that confuses me, but it’s interesting to see that my kernel panic was caused by a watchdog timer timeout.

In Conclusion…

All in all, these messages appear to be harmless — I certainly can’t find anything that gives away my location (despite Apple’s warning paragraph), or anything I’ve ever written/anyone I’ve written to. The most worrying thing I found was per-app launch counts, live times and background processing times — but even these are no different from the analytics that track you on pretty much every website there is.

It seems that Apple are not stalking us (although who knows what cell phone carriers are doing…), and I can see no downside to opting in to submitting diagnostic messages. All an all, they’re interesting to look through.