Skip to content

Data & cloud

Vehicle data pipelines

What a fleet actually produces, why almost none of it can be sent anywhere, and the filtering decisions that determine whether a data programme is useful or merely expensive.

Intermediate7 minData · Cloud · Telemetry

"Vehicles generate terabytes of data" appears in every SDV presentation. It is true and almost entirely misleading, because the interesting question is not how much is generated but how little can usefully leave.

The numbers that shape everything#

The pipeline#

Every stage should reduce the data — the cheapest byte is the one never sentSensorscontinuous, rawOn-vehiclefilter · aggregateUplinkmetered, intermittentCloudfleet analysisgigabytes/hourmegabytes/hourkilobytes/houraggregates onlyThe decision that matters is at stage 2what you compute on the vehicle never becomes a privacy or bandwidth problemsomebody pays for the uplink · somebody is accountable for the personal databoth are usually the OEM, and both have regulatory consequences
Volume falls by orders of magnitude at every stageEach stage exists to discard data. The design work is deciding what to discard, and that decision has to happen on the vehicle.

Collection#

Signals come off the buses, out of the data broker, and from application telemetry. At this point everything exists and nothing has been decided.

On-vehicle filtering#

Buffering#

Transport and ingestion#

Batched, compressed, authenticated, usually MQTT or HTTPS. The cloud side is ordinary data engineering: ingest, validate, store, and make queryable.

Gotcha

Schema evolution is the part that bites. Vehicles in the field run software from several model years, all emitting slightly different payloads for years.

Version every message, never reuse a field name with a new meaning, and make the ingestion side tolerant of both older and newer shapes than it expects. A schema change that assumes the whole fleet updates together is a schema change that will lose data.

The categories of data, and their different rules#

Not all vehicle data is the same kind of thing, and treating it uniformly is a mistake.

CategoryExampleVolumeSensitivityTypically
DiagnosticFault codes, ECU healthLowLowAlways collected
OperationalSpeed, energy use, temperaturesMediumMediumAggregated
BehaviouralBraking style, feature usageMediumHighConsent required
LocationGNSS traceMediumVery highConsent, minimised
MediaCamera, microphoneEnormousVery highAlmost never leaves
ApplicationCrash logs, UI telemetryLowMediumStandard app rules

What this means for cockpit engineering#

Your app telemetry is part of a shared budget. An analytics SDK sending events per interaction is trivial on a phone and can be significant across a fleet on metered cellular. Batch, aggregate, and consider whether each event earns its bytes.

Aggregate before sending, not after. The instinct from server work — collect everything, decide later — inverts here. Deciding later means paying to transmit data you will discard.

Design for offline as the normal case. Not an error path. Queue, persist across reboot, and define what gets dropped when the queue is full.

Never log location or personal data casually. A debug log with GPS coordinates that syncs to a backend is a compliance incident, and the investigation will find it.

Know which consent your feature depends on. If it needs behavioural data, what happens for a customer who declined? "It silently does nothing" is not an acceptable answer.

Next#

Where the processing should happen — vehicle or cloud.

References & further reading

Code links target the main branch on cs.android.com. AOSP moves — if a path 404s, search the symbol instead.