Displaying Spotify Now Playing on a 3DS
A showcase of my experiments with niche hardware
When visiting Japan in August 2023, one of my main objectives was to find a Nintendo 3DS I could use for homebrew development and other experiments. I own another 3DS, but it has some save data I don’t want to lose, so I wanted a second one for tinkering.
After digging around multiple HARD-OFF stores in Akihabara, I found a New 3DS LL which was in pretty good condition and sold for a reasonable price. I bought it and was full of excitement to have a second device I could use for tinkering, but didn’t have a specific vision for what I wanted to do with it yet.
Diving into Homebrew
While I didn’t know exactly what I wanted to do with the 3DS yet, I definitely wanted to mod it. I started by installing custom firmware (CFW) using the 3DS Guide. This guide is a fantastic resource that walks you through the entire process step-by-step, making it accessible even for those new to homebrew.
I was truly fascinated by the huge selection of available applications and started playing with the thought of giving homebrew development a shot myself. Considering I wasn’t very familiar with low level development at that time, I knew it would be a challenge, but I was excited to learn.
First Experiment: Spotify Now Playing

Since I’m not a game developer, I wanted to create something that would be useful in my daily life. For a long time, I have been thinking of ways to create a small status display to add some personality to my desk setup. Using a 3DS for this purpose seemed like a fun idea, so I thought about what information I would like to display on it. The first thing that came to mind was the currently playing song on Spotify.
I set up a simple homebrew application that would periodically fetch the currently playing song from Spotify and display it on the 3DS screen. The application used the libcurl
library to make HTTP requests to the Spotify API and libctru
to handle the graphics.
To achieve this, I used following technologies:
- C
libcurl
for HTTP requestslibctru
for graphics and 3DS system callscitro2d
for making a pretty UI- Spotify Web API to fetch the currently playing song
At first, I tried to implement the HTTP requests using the libctru
networking capabilities, but the provided examples did not work with the Spotify API. For some reason, my requests were getting blocked by Cloudflare, despite trying to set a user agent and other headers. After some research, I found that using libcurl
was a better option for making HTTP requests in homebrew applications.
Unfortunately, using libcurl
was not enough to get the requests working. I had to download the SSL certificate of the Spotify website because the 3DS does not come with a built-in certificate store. After that, making requests finally worked.
It took lots of trial and error to get everything working (I shot myself in the foot a lot of times with my lack of knowledge about memory management and C programming in general), but I eventually managed to get the application to fetch the currently playing song from Spotify and display it on the 3DS screen.
The result was a simple but functional application that displayed the song title and artist on the 3DS screen. I was thrilled to see my 3DS displaying the currently playing song from Spotify! I used citro2d to make the UI look a bit nicer, and I was quite happy with the result.