Spotify3DS lets you use your 3DS as a Spotify remote, with playback controls, library browsing, and synchronised lyrics.
demo.mp4
- Top screen: album cover, artist, album/track name
- Bottom screen:
- Player (default view): previous / play-pause / next, plus a seek scrubber
- Library: recently played collections, playlists, saved albums, and their individual tracks. Both your library and any track list can be searched.
- Lyrics: synchronised lyrics (from LRCLIB)
You can use the L/R shoulder buttons from any screen to decrease or increase device volume in any screen.
Scan the QR code below in FBI under Remote Install → Scan QR Code to install the latest CIA directly.
Alternatively, you can manually install Spotify3DS.cia or Spotify3DS.3dsx from the project's latest release.
Now, you'll have to do a one-time setup to link Spotify3DS with your Spotify account. You can do this automatically using the setup app or manually with a Python script that generates a credentials file you copy over to 3DS's SD card. Note that you need a Spotify Premium account to set up Spotify3DS.
- Download the
Spotify3DS-Setupapp for your computer from the latest release. - Follow the app's instructions to create a Spotify app and get your client ID. It will then show you a setup QR code.
- Now open Spotify3DS and choose Scan Setup QR and scan this code. Spotify3DS will then log you in and you can start using the app.
This process writes a creds.cfg file to the spotify folder on your SD card. It
holds a token for your account rather than your password, but anyone who has it
can read your library and listening history and control your playback, so keep it
to yourself. You can revoke it at any time from your Spotify account settings
under Apps.
-
Create an app in the Spotify Developer Dashboard. Select Web API, add
http://127.0.0.1:8888/callbackas a redirect URI, and copy the app's Client ID. No client secret is needed.If you're having difficulty with this, look at this issue to see some screenshots of the process.
-
Clone or download this repo, and run the following command from this project directory to generate your console credentials:
python3 tools/bootstrap_auth.py --client-id <YOUR_CLIENT_ID>
Your browser will open Spotify's authorization page. After approval, the script writes
creds.cfgin the project directory. -
Create a folder named
spotifyat the root of the 3DS SD card and copy the generated file to it. The resulting path must be/spotify/creds.cfg. -
Spotify3DS should now be set up and connected to your account.
-
On any screen:
L/Rdecrease/increase volume- Tap D-pad left/right to skip
- Hold D-pad left/right to seek forwards or backwards
STARTopens lyrics for the current trackBgoes to the previous screen- Hold
Land pressSTARTto exit
-
Player
Aplay/pauseXto go to LibraryYshow/hide cover art- Tap
LYRICSin the header to open lyrics for the current song. - Tap a Recently Played tile to open its tracks; long press it to start playing it immediately.
-
Library:
Astart the selected collection, then play/pauseXopen its tracksZL/ZRjump between recently played / playlists / albums- D-pad up/down to select a collection
- Tap a row's play icon to start it, or its right chevron to open its tracks.
- Tap magnifying glass in the header to search for a playlist/album in your library.
- Press and hold the magnifying glass to view previous searches and search them again
-
Tracks:
Aplay/pause the selected trackXqueue the selected trackZL/ZRsee the previous / next page of tracks on big playlists. Go back from the start of playlist to go to its last page of tracks- D-pad up/down to select a track
- Tap a row's play icon to start it, or its right queue icon to queue it.
- Tap magnifying glass in the header to search the whole album or playlist by track name, artist, or album.
-
Lyrics:
- D-pad/Circle Pad up/down to scroll
- Drag to scroll; tap
FOLLOWfor synchronised lyrics scrolling. - Tap a timestamped line to seek Spotify to it.
Upon searching a track within a playlist, the playlist's tracks are cached so that subsequent searches on that playlist are snappy. A playlist's track cache is invalidated when the playlist is updated in any way.
Spotify's Web API does not expose lyrics. Spotify3DS sends the current track, artist, album, and duration to the open, keyless LRCLIB API. Exact matches are preferred, search results are checked against track metadata and duration, and synchronised lyrics are used only when their LRC timestamps parse successfully. No Spotify access token is sent to LRCLIB.
Build instructions, test tools, release automation, and implementation notes are documented in DEVELOPMENT.md.






