QTM Services

Revision as of 19:43, 17 September 2024 by TuxSH (talk | contribs) (QTM documentation)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


QTM is the New_3DS system module in charge of handling head tracking. A maximum of three (only two until 9.3.0-21) sessions for *all* QTM services combined.

Head tracking is not usable when any other process is using any of the cameras, QTM returns error 0xC8A18008 for this.

QTM only tracks the position of the user's two eyes, but does not track the area they are focusing at. Hence, "eye-tracking" is sometimes used to refer to this feature on 3DS, even though it means something else outside the 3DS hacking scene.

Refer to this libctru commit for more details: https://github.com/devkitPro/libctru/commit/8e55cdf05d1f2c07f350ec678d0f0d6a7a2df214

QTM servicesEdit

QTM user service "qtm:u"Edit

Command ID Description
0x00010080 GetRawTrackingDataEx
0x00020080 GetTrackingDataEx
0x00030000 EnableManualIrLedControl
0x00040000 DisableManualIrLedControl
0x00050040 SetIrLedStatus
0x00060000 IsCurrentAppBlacklisted

QTM system service "qtm:s"Edit

"qtm:s" has access to all "qtm:u" commands and more:

Command ID Description
0x04010040 SetCentralBarrierPosition
0x04020000 GetCameraLuminance
0x04030000 EnableAutoBarrierControl
0x04040000 DisableAutoBarrierControl
0x04050040 SetBarrierPosition
0x04060000 GetCurrentBarrierPosition
0x04070040 SetIrLedStatusOverride
0x040801C0 SetCalibrationData
0x04090000 GetQtmStatus
0x040A0040 SetQtmStatus

QTM service "qtm:sp"Edit

qtm:sp has access to all "qtm:u", "qtm:s" commands and more:

Command ID Description
0x08010040 NotifyTopLcdModeChange
0x08020000 NotifyTopLcdPowerOn
0x08030000 IsExpanderInUse
0x08040000 NotifyTopLcdPowerOff

GSP always keeps an handle to this service open. NS sometimes uses this service (to blacklist some internal test applications, see NS_CFA), but when it does it opens then immediately closes the session thereafter.

QTM "hardware check" service "qtm:c"Edit

Command ID Description
0x00010000 StartHardwareCheck
0x00020000 StopHardwareCheck
0x00030040 SetBarrierPattern
0x00040000 WaitAndCheckExpanderWorking
0x00050040 SetIrLedStatusOverride

The commands for this service are separate from all the other services documented above.