D-Shift Developer & API Info

Developer information for the D-Shift Sequential Shift Light

Are you an app developer who has an idea for directly controlling the light outputs, tweaking the shift light Target RPM on the fly, or obtaining the vehicle’s current RPM and voltage for use in your app? Here are the details on how to talk to this product wirelessly, so that you can start coding your app!

Notices

All information and app compatibility is provided as-is with no guarantee or warranty of any kind, and is subject to change without notice. Dauntless Devices LLC shall not be liable for your use, misuse, or inability to use these or other features.

D-Shift, Dauntless Devices, and associated logos are trademarks of Dauntless Devices LLC. This product and its documentation are Copyright © 2023 Dauntless Devices LLC. All Rights Reserved.

You may not represent yourself, your apps, or other products as originating from us, or being officially endorsed by us unless we choose to make such a statement ourselves. Instead, please use appropriate referential language such as “works with D-Shift by Dauntless Devices LLC” or “YourApp for D-Shift”, provided that it is in a manner that would not cause consumers to believe that your app or product came from us or is endorsed by us.

Wireless Communications

Users should first use the official D-Shift app to securely pair the shift light to their mobile device, and then afterwards other compatible apps running on that same mobile device can easily communicate with it. Although this product will always appear in scans (unless in sleep mode), serial communications will not function unless the devices have been paired with each other, and pairing attempts will not be successful unless the device is in pairing mode at the time (which requires the user to press a button on the device to enter). Our app streamlines all of that first-time setup for the user, and can provide them with any future firmware updates, etc.

This product implements serial communications in a manner compatible with many serial-over-BLE implementations, using common generic 16-bit service and characteristic UUIDs. This will work with most serial terminal apps that support BLE, and most general purpose serial-over-BLE sample code should also be relevant, when provided with the correct UUIDs.

  • Device Name: DauntlessShift_XXXXXX (where XXXXXX is the last 6 characters of the serial number)
  • Service UUID: fff0 (16-bit) / 0000fff0-0000-1000-8000-00805f9b34fb (128-bit)
  • Read Characteristic UUID: fff1 (16-bit) / 0000fff1-0000-1000-8000-00805f9b34fb (128-bit)
  • Write Characteristic UUID: fff2 (16-bit) / 0000fff2-0000-1000-8000-00805f9b34fb (128-bit)

Common “DD” Commands

CommandNameNotes
DD CTDevice Core TemperatureTypically higher than the ambient air temp, may not be very accurate
DD HWHardware and Firmware InfoTechnical information unlikely to be useful to 3rd party apps. Most future feature or API changes will be based on the version reported by “DD I”
DD IProduct Name & VersionExample: “D-Shift v1.0”
DD PWRDevice / Vehicle Power Level (Volts)Reported voltage may dip when lights are active
DD SNDevice Serial NumberHexadecimal
DD SSCAN Traffic SnapshotReports the most recent data packet received for each CAN ID. Like “DD TRV” but an instant one-shot. Send “DD SS 1” to enable before first use.
DD SSVCAN Traffic Snapshot – VerboseSame as “DD SS” but includes data age and interval (in milliseconds)
DD TRCAN Traffic ReportPassively detects bus data rate (if not already set), type (11 vs 29 bit or mixed), and message volume of connected CAN. Requires traffic to be present on the CAN (unlikely if connected via the OBD port on modern cars, due to gateway).
May be followed by a ‘1’ – ‘9’ indicating time (250ms increments) to monitor each data rate tested; traffic at the detected rate will be monitored for 4x this value.
DD TRVCAN Traffic Report – VerboseSame as “DD TR” but reports specific observed IDs, frame data, and counts
DD TRR
DD TRRV
CAN Traffic Report – Refresh Bus RateSame as “DD TR” / “DD TRV”, but guarantees a fresh bus rate detection
DD UPDevice UptimeHow long device has been running since power-up or last reboot

D-Shift “DS” Commands

CommandNameNotes
DS COUNTNumber of lights
DS OPT optionGet an Option Value (eg Target RPM, Brightness, etc)See DS OPT section below
DS OPT option valueSet an Option ValueSee DS OPT section below
DS RGB …Control RGB Light OutputSee DS RGB section below
DS RPMCurrent Engine RPM

DS OPT – Get or Set an Option Value

Examples using “RPM” option (Target RPM):

Get Current Option Value: DS OPT RPM

Set Option Value: DS OPT RPM 6500

Option IDNameNotes
BRIGHTBrightness DimmingHigher is more dim (less bright)
BRIGHT TBrightness Dimming – Temporary SettingOnly valid for Set, not Get
FLASHFlashing PatternHex value of two color values stuffed into a byte, one nybble each. See color table below. Example: 68 = Blue and White
PATTERNSequential PatternSet zero to disable sequential pattern
PCOLORSSequential Pattern Colors4 hex color values, separated by commas. Use black (zero) to disable a color option. See color table below. Example: 1, 2, 5, 0 = Green, Yellow, Magenta, Black (disabled)
RPMTarget RPM
SPANRPM Span for Sequential PatternThis works out to a percentage of the Target RPM

DS RGB – Control RGB Light Output

Set a light output immediately: DS RGB index, rrggbb

"index" is the light's index, starting from zero, or "ALL" for all lights
"rrggbb" is the color in one of the following forms:
 - Common RGB color in hexadecimal form
 - Raw RGB color in hexadecimal, prefixed with an 'R' (eg "R00B090"; see section below)
 - A pre-defined string: Black, Green, Yellow, Orange, Red, Magenta, Blue, Cyan, White, or Gray
Example - Set All Lights to Yellow
 Pre-Defined String: DS RGB ALL, Yellow
 Common RGB Method: DS RGB ALL, FFFF00
 Raw RGB Method: DS RGB ALL, RFFB000

Prepare a light output, but don’t set it yet: DS RGB P index, rrggbb

Apply the light outputs you had prepared, all at once: DS RGB ON

Release light control and return to normal operation: DS RGB OFF

Note: Light control will automatically be released if these commands haven’t been used for a few seconds, and you can send “DS RGB ON” as a keep-alive to prevent that from happening.

Device RGB Colors

This device has different and more intense lighting output than typical screens, with different intensity characteristics per channel, which can affect color accuracy.

By default, the color values used are common screen RGB values, which the device then converts into its own raw RGB output values. Although this is not perfect, the color accuracy should be reasonably close in many cases.

You also have the option of sending uncalibrated Raw RGB values, prefixed with an ‘R’, so that you have access to the full range of the hardware’s lighting capability. This option can be used to achieve a slightly brighter output, however Raw RGB values tend to display a bit differently on the device than they do on your screen. You would need to do some adjustments yourself if you wish to maintain color accuracy, and it’s conceivable that this relationship could change with different hardware revisions.

At the time of this writing, we typically suggest turning down the green and blue channels when sending a Raw RGB value to the device, and we offer the following color suggestions:

ColorRaw RGBCommon RGBOption Value (hex)
Black (off)0000000000000
Green00A00000FF001
YellowFFB000FFFF002
OrangeFF3700FF80003
RedFF0000FF00004
MagentaC000D0FF00FF5
Blue0000FF0000FF6
Cyan00B09000FFFF7
WhiteFFF0E0FFFFFF8