BMW Car Data Service
The car's Etch service provides a set of functions prefixed with cds_
, perhaps standing for Car Data Service, which provide a way for the phone app to receive live-updating information about the car.
CDS Subscription
The Connected app calls cds_create
to receive an integer handle. Then, for each data point it wants, it:
- It calls
cds_addPropertyChangedEventHandler(handle:int, ident:string, propertyName:string, intervalLimit:int)
- It triggers an instant fetch by calling
cds_getPropertyAsync(handle:int, ident:string, propertyName:string)
Then, the car will call the client callback method cds_onPropertyChangedEvent(handle:int, ident:string, propertyName:string, propertyValue:string)
with a JSON payload. Changes to the data point will be sent this same way, but no more often than the requested intervalLimit
in milliseconds.
CDS Data points
Ident | Name | Example Value | Notes |
---|---|---|---|
0 | replaying | {"error":400} | |
1 | climate.ACCompressor | {"ACCompressor":1} | |
3 | climate.ACMode | {"ACMode":{"maxCool":0,"recirculation":1,"defrost":0}} | |
4 | climate.ACSystemTemperatures | {"ACSystemTemperatures":{"evaporator":19,"heatExchanger":19}} | Units: Celcius |
5 | climate.driverSettings | {"driverSettings":{"desiredTemperature":20.0,"program":2,"automaticBlower":1}} | Temp Units: Celcius |
6 | climate.passengerSettings | {"passengerSettings":{"desiredTemperature":20.0,"program":63,"automaticBlower":1}} | Temp Units: Celcius |
7 | climate.residualHeat | {"residualHeat":3} | |
8 | climate.seatHeatDriver | {"seatHeatDriver":0} | |
9 | climate.seatHeatPassenger | {"seatHeatPassenger":0} | |
10 | communication.currentCallInfo | {"currentCallInfo":{"name":" ","number":" "}} | |
11 | communication.lastCallInfo | {"lastCallInfo":{"name":"","number":"","numberType":89159028}} | |
12 | controls.convertibleTop | {"error":401} | |
13 | controls.cruiseControl | {"cruiseControl":{"desiredSpeed":30,"status":0}} | Speed Units: kmph |
15 | controls.defrostRear | {"defrostRear":0} | |
16 | controls.headlights | {"headlights":1} | |
18 | controls.lights | {"lights":{"brights":0,"parking":1,"frontFog":0,"rearFog":0}} | |
20 | controls.startStopStatus | {"startStopStatus":128} | |
21 | controls.sunroof | {"sunroof":{"openPosition":0,"tiltPosition":0,"status":0}} | Same as window, but tilt can increase while status:0 |
22 | controls.turnSignal | {"turnSignal":0} | |
23 | controls.windowDriverFront | {"windowDriverFront":{"position":2,"status":1,"drive":0}} | Closed when Status:0 |
24 | controls.windowDriverRear | {"windowDriverRear":{"position":0,"status":0,"drive":0}} | Fully Open when Status:2 |
25 | controls.windowPassengerFront | {"windowPassengerFront":{"position":0,"status":0,"drive":0}} | Open at {Position*2}% when Status:1 |
26 | controls.windowPassengerRear | {"windowPassengerRear":{"position":0,"status":0,"drive":0}} | |
27 | controls.windshieldWiper | {"windshieldWiper":0} | |
28 | driving.acceleration | {"acceleration":{"lateral":-0.19,"longitudinal":65535.00}} | Units: Probably m/s |
29 | driving.acceleratorPedal | {"acceleratorPedal":{"position":0,"ecoPosition":0}} | Units: Percentage |
30 | driving.averageConsumption | {"averageConsumption":{"averageConsumption1":27.2,"averageConsumption2":4093.0,"unit":3}} | Displayed consumption, uses a consumption unit |
31 | driving.averageSpeed | {"averageSpeed":{"averageSpeed1":24.7,"averageSpeed2":4093.0,"unit":2}} | Displayed speed, uses a speed unit |
32 | driving.brakeContact | {"brakeContact":0} | Unit: Percentage |
34 | driving.clutchPedal | {"clutchPedal":{"position":0}} | Unit: Percentage |
35 | driving.DSCActive | {"DSCActive":0} | |
36 | driving.ecoTip | {"ecoTip":0} | |
37 | driving.gear | {"gear":0} | 1:N 2:R 3:P 4+:D1+ |
38 | driving.keyPosition | {"keyPosition":{"running":1,"starting":0,"accessory":1}} | |
39 | driving.odometer | {"odometer":41811} | Units: KM |
40 | driving.parkingBrake | {"parkingBrake":2} | {1,4,16}Yellow {2,8,32}Red {3,12,48}Green |
41 | driving.shiftIndicator | {"shiftIndicator":0} | |
42 | driving.speedActual | {"speedActual":0} | Units: kmph |
43 | driving.speedDisplayed | {"speedDisplayed":0} | Units: kmph |
44 | driving.steeringWheel | {"steeringWheel":{"angle":-10.5,"speed":-0.0,"error":0}} | Angle Units in Degrees |
45 | driving.mode | {"mode":3} | 2:Comfort 3:Basic 4:Sport 5:Sport+ 6:Race 7:EcoPro 8:EcoPro+ 9:Comfort+ |
46 | engine.consumption | {"consumption":0} | |
47 | engine.info | {"info":{"numberOfGears":6,"numberOfCylinders":4,"fuelType":4,"gearboxType":0,"displacement":2000}} | |
50 | engine.RPMSpeed | {"RPMSpeed":0} | |
51 | engine.status | {"status":0} | |
52 | engine.temperature | {"temperature":{"engine":19,"oil":18}} | Units: Celcius |
53 | engine.torque | {"torque":0} | Units: Newton Meter |
54 | entertainment.multimedia | {"multimedia":{"title":" ","artist":" ","album":" ","source":0}} | Seems only populated for USB and Bluetooth |
55 | entertainment.radioFrequency | {"radioFrequency":88500} | |
56 | entertainment.radioStation | {"radioStation":{"frequency":88500,"name":"KQED HD","HDMode":1,"HDChannel":1,"nameInfo":6}} | |
57 | navigation.currentPositionDetailedInfo | {"currentPositionDetailedInfo":{"street":"S Street Ln","houseNumber":"","crossStreet":"","city":"City Name, CA","country":"United States"}} | Sometimes is empty |
59 | navigation.finalDestination | ||
60 | navigation.finalDestinationDetailedInfo | ||
61 | navigation.GPSExtendedInfo | {"GPSExtendedInfo":{"altitude":65530,"heading":144,"quality":443,"speed":32768}} | Heading 0 is north, counts up to 360 degrees CCW |
62 | navigation.GPSPosition | {"GPSPosition":{"latitude":12.345678,"longitude":-12.345678}} | |
63 | navigation.guidanceStatus | {"guidanceStatus":0} | |
65 | navigation.infoToNextDestination | {"infoToNextDestination":{"airDistance":4294967.295,"direction":255,"distance":4294967.295,"remainingTime":-1,"routeHandle":0}} | |
66 | navigation.nextDestination | {"nextDestination":{"name":"","type":0,"latitude":0.000000,"longitude":0.000000}} | |
67 | navigation.nextDestinationDetailedInfo | ||
68 | sensors.battery | {"battery":72} | Units: Percentage |
70 | sensors.doors | {"doors":{"driver":1,"passenger":0,"driverRear":2,"passengerRear":2}} | 0:Closed 1:Open 2:Missing |
71 | sensors.fuel | {"fuel":{"range":522,"reserve":0,"tanklevel":39}} | Units range:KM tankLevel:Liters |
72 | sensors.PDCRangeFront | {"PDCRangeFront":{"outLeft":253,"left":117,"middleLeft":96,"middleRight":95,"right":37,"outRight":0}} | |
73 | sensors.PDCRangeRear | {"PDCRangeRear":{"outLeft":254,"left":253,"middleLeft":50,"middleRight":50,"right":253,"outRight":254}} | |
74 | sensors.PDCStatus | {"PDCStatus":1} | When the car's rearview camera screen is open |
76 | sensors.seatOccupiedPassenger | {"seatOccupiedPassenger":0} | 0:Not 1:Occupied |
77 | sensors.seatbelt | {"seatbelt":{"driverFront":0,"passengerFront":0,"driverRear":2,"passengerRear":2,"centerRear":2}} | 0:Disconnected 1:Connected 2:Unknown |
78 | sensors.temperatureExterior | {"temperatureExterior":14.0} | Units: Celcius |
79 | sensors.temperatureInterior | {"temperatureInterior":20.7} | Units: Celcius |
81 | sensors.trunk | {"trunk":0} | 0:Closed 1:Open |
82 | vehicle.country | {"country":2} | |
83 | vehicle.language | {"language":3} | Language Enum |
84 | vehicle.type | {"type":49} | |
85 | vehicle.unitSpeed | {"unitSpeed":1} | Units Enum |
86 | vehicle.units | {"units":{"airPressure":3,"consumption":3,"date":2,"time":2,"temperature":2,"fuel":1,"distance":2,"speedometerDigital":3,"sportPower":2,"sportTorque":2,"electricConsumption":1}} | Units Enum |
87 | vehicle.VIN | {"VIN":"T123456"} | |
88 | engine.rangeCalc | {"rangeCalc":{"energyREXGenerator":65535,"energyEMotorTraction":65535,"energyEMotorRecuperation":65535,"auxConsumerEnergy":65535,"auxConsumerEnergyBaseLoad":65535}} | |
89 | engine.electricVehicleMode | {"electricVehicleMode":15} | |
90 | driving.SOCHoldState | {"SOCHoldState":3} | |
91 | driving.electricalPowerDistribution | {"error":401} | |
92 | driving.displayRangeElectricVehicle | {"displayRangeElectricVehicle":4095} | Units: the user's vehicle.units pref, not always KM |
93 | sensors.SOCBatteryHybrid | {"SOCBatteryHybrid":255.00} | Units: Percentage |
94 | sensors.batteryTemp | {"batteryTemp":255} | Units: Celcius |
95 | hmi.iDrive | ||
96 | driving.ecoRangeWon | {"ecoRangeWon":0.8} | Units: KM |
97 | climate.airConditionerCompressor | {"airConditionerCompressor":{"actualPower":255,"dualMode":3,"actualTorque":0}} | |
98 | controls.startStopLEDs | {"startStopLEDs":0} | |
99 | driving.ecoRange | {"ecoRange":118} | Units: KM |
100 | driving.FDRControl | {"FDRControl":512} | |
101 | driving.keyNumber | {"keyNumber":1} | |
102 | navigation.infoToFinalDestination | ||
103 | navigation.units | {"units":4} | |
104 | sensors.lid | {"lid":0} | Hood status - 0:Closed 1:Open |
105 | sensors.seatOccupiedDriver | {"seatOccupiedDriver":4} | |
106 | sensors.seatOccupiedRearLeft | {"seatOccupiedRearLeft":4} | |
107 | sensors.seatOccupiedRearRight | {"seatOccupiedRearRight":4} | |
108 | vehicle.systemTime | {"systemTime":85651502} | |
109 | vehicle.time | {"time":{"hour":21,"minute":52,"second":13,"date":26,"month":4,"weekday":4,"year":2018}} | |
110 | driving.drivingStyle | {"accelerate":0.0,"brake":0.0,"shift":0.0} | The number of stars shown in the Connected app |
111 | driving.displayRangeElectricVehicle | {"displayRangeElectricVehicle":4095} | A duplicate of 92? |
112 | navigation.routeElapsedInfo | ||
113 | hmi.tts | {"TTSState":{"state":1,"currentblock":-2,"blocks":0,"type":"","languageavailable":1}} | |
114 | hmi.graphicalContext | {"graphicalContext":{"visibleContext":20,"focusIndex":100035,"listIndex":15,"widgetType":"LT_Button_1Row_1CheckLeft_1IconLeft","enabled":"1","selected":"0","menuTitle":"Media/Radio","appType":"1","shiftDirections":"L","scrollDirection":"vertical"}} | |
115 | sensors.PDCRangeFront2 | {"error":400} | |
116 | sensors.PDCRangeRear2 | {"error":400} | |
117 | cds.apiRegistry | {"error":400} | |
118 | api.carcloud | {"error":400} | |
119 | api.startJSApp | {"error":400} |
Units
The car has a big enum of Units used in vehicle.units and other units fields.
Consumption
- L/100km
- MPG (UK gal)
- MPG (US gal)
- KM/L
Distance
- Kilometers
- Miles
Fuel
- Liters
- UK Gallons
- US Gallons
Speed
- KM/H
- MPH
Vehicle Language
- DE
- EN_UK
- EN_US
- ES_ES
- IT
- FR_FR
- NL_BE
- NL_NL
- AR
- ZH_TW
- ZH_CN
- KO
- JA
- RU
- FR_CA
- ES_MX
- PT
- PL
- EL
- TR
- HU
- RO
- SV
- PT_BR
- -
- -
- SK
- CS
- SL
- DA
- NO
- FI
- ID
- TH