Exporting my Nintendo Switch app activity

I was decommissioning my Nintendo Switch (I just bought a Steam Deck :3) and realized it would be nice to get some of the activity data off of it. I had easy access to the screenshots and other stuff Nintendo lets you touch, but it would be nice to have a record of all my play time. It turns out the switch DOES store all this information indefinitely (specifically, it stores app launch and close events), but with no way to get at it or export it. Libnx (a switch homebrew library) exposes a function called pdmqryQueryPlayEvent which allows applications like NX-Activity-Log to get at it.

I ended up using NX-Activity-Log to export everything to JSON. I got all my app interaction events which included a lot of stuff from 2017-2019. Yay!

How I did it

  • I followed switch.homebrew.guide to run homebrew apps on my switch. This required a paperclip and a 4GB+ micro SD card.
    • Their guide is more informed than I am, but the short is I got my switch into RCM (recovery mode) with the paperclip method, made an SD card with Atmosphere, Homebrew Menu, and NX-Activity-Log on it, downloaded fusee-launcher and the fusee, hekate, and lockpick_rcm payloads, launched hekate, and then booted into homebrew menu
  • I ran NX-Activity-Log (open an app while holding R trigger to get to HB menu) and choose NX-Activity-Log
  • Find the JSON export button and run it
  • Copy it off the SD card

The output ends up looking something like the below. Note this is abbreviated and there are other event types in the output too.

{
  "exportString": "September 24 2022, 05:08:03",
  "exportTimestamp": 1664014083,
  "exportVersion": "1.4.0",
  "users": [{
    "id": "################################",
    "name": "#########",
    "titles": [{
      "events": [{
        "clockTimestamp": 1546352350,
        "steadyTimestamp": 51548,
        "type": "Launched"
      }],
      "id": "0100A2F006FBE000",
      "name": "Cat Quest",
      "summary": {
        "firstPlayed": 1546352340,
        "lastPlayed": 1546354200,
        "launches": 1,
        "playtime": 1860
      }
    }]
  }]
}

After all of this I also took a NAND backup and dumped my keys too so if I ever wanted any other data in the future, I could hopefully extract it by flashing a new switch.

Thanks

Really big thanks to NX-Activity-Log and their JSON export feature, switch.homebrew.guide and their other site sdsetup.com for making rooting understandable to an outsider, and to the Team Neptune Discord for steering me in the right direction.