QTM Services: Difference between revisions
m Created page with "Category:Services QTM is the N3DS system module in charge of handling head tracking. = QTM user service "qtm:u" = {| class="wikitable" border="1" |- ! Command Header ! De..." |
|||
(20 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:Services]] | [[Category:Services]] | ||
QTM is the | 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 services= | |||
= QTM user service "qtm:u" = | = QTM user service "qtm:u" = | ||
{| class="wikitable" | {| class="wikitable" | ||
! Command ID !! Description | |||
|- | |- | ||
| 0x00010080 || GetRawTrackingDataEx | |||
|- | |- | ||
| | | 0x00020080 || GetTrackingDataEx | ||
| | |||
|- | |- | ||
| 0x00030000 || EnableManualIrLedControl | |||
|- | |||
| 0x00040000 || DisableManualIrLedControl | |||
|- | |||
| 0x00050040 || SetIrLedStatus | |||
|- | |||
| 0x00060000 || IsCurrentAppBlacklisted | |||
|} | |} | ||
= QTM service "qtm:s" = | = QTM system service "qtm:s" = | ||
{| class="wikitable" | "qtm:s" has access to all "qtm:u" commands and more: | ||
{| class="wikitable" | |||
! Command ID !! Description | |||
|- | |- | ||
| 0x04010040 || SetCentralBarrierPosition | |||
|- | |- | ||
| | | 0x04020000 || GetCameraLux | ||
| | |||
|- | |- | ||
| 0x04030000 || EnableAutoBarrierControl | |||
|- | |||
| 0x04040000 || DisableAutoBarrierControl | |||
|- | |||
| 0x04050040 || SetBarrierPosition | |||
|- | |||
| 0x04060000 || GetCurrentBarrierPosition | |||
|- | |||
| 0x04070040 || SetIrLedStatusOverride | |||
|- | |||
| 0x040801C0 || SetCalibrationData | |||
|- | |||
| 0x04090000 || GetQtmStatus | |||
|- | |||
| 0x040A0040 || SetQtmStatus | |||
|} | |} | ||
= QTM service "qtm:sp" = | = QTM service "qtm:sp" = | ||
{| class="wikitable" | qtm:sp has access to all "qtm:u", "qtm:s" commands and more: | ||
{| class="wikitable" | |||
! Command ID !! Description | |||
|- | |||
| 0x08010040 || NotifyTopLcdModeChange | |||
|- | |- | ||
| 0x08020000 || NotifyTopLcdPowerOn | |||
|- | |- | ||
| | | 0x08030000 || IsExpanderInUse | ||
| | |||
|- | |- | ||
| 0x08040000 || NotifyTopLcdPowerOff | |||
|} | |} | ||
= QTM service "qtm:c" = | 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. | ||
{| class="wikitable" | |||
= QTM "hardware check" service "qtm:c" = | |||
{| class="wikitable" | |||
! 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. |