Raspberry Pi OS for Wi-Fi connectivity on the Spotify Car Thing
Prerequisites • Usage • Donate • Building • Tinkering (Advanced) • Credits • License
- Car Thing with Nocturne 4.1.0 or later installed
- Raspberry Pi with networking, a Mac with macOS 15.0 or newer, or a computer with Windows 10 or newer.
- Pi 1 and 2 are not supported due to the lack of onboard Wi-Fi
- Pi Zero 1 (W) is not supported due to the old architecture
- SD card (Raspberry Pi)
- An 8 GB or larger card is required.
- Working Wi-Fi network
Raspberry Pi
- Download the img.gz from the latest release.
- Use Raspberry Pi Imager, balenaEtcher, or
ddto flash the image to your SD card.- In Raspberry Pi Imager, click "OS" on the left side and use "Use custom", select your SD card, and press write.
- If you are using Wi-Fi, download wpa_supplicant.conf, and fill in your SSID and password (inside of quotes). Then, place it on the root of the SD card.
- If your country is not the United States, replace the
USin the file with your country code.
- If your country is not the United States, replace the
- Power the Raspberry Pi & visit
nocturne-connector.localin any browser.- If this does not work, you will need to find the IP address of the Raspberry Pi from your router, and use that IP address instead of
nocturne-connector.local.
- If this does not work, you will need to find the IP address of the Raspberry Pi from your router, and use that IP address instead of
- Finish setting up Nocturne Connector by following the steps on screen.
macOS 15.0+
- Download the macOS disk image from the latest release.
- Open the disk image and drag Nocturne Connector into your Applications folder.
- Open Nocturne Connector from your Applications folder.
- Finish setting up Nocturne Connector by following the steps on screen.
Windows 10+
- Download the setup .exe from the latest release.
- Run the installer.
- Start Nocturne Connector from the Start menu.
- Finish setting up Nocturne Connector by following the steps on screen.
Nocturne is a massive endeavor, and the team has spent every day over the last year making it a reality out of our passion for creating something that people like you love to use.
All donations are split between the three members of the Nocturne team and go towards the development of future features. We are so grateful for your support!
curl, zip/unzip, genimage, mkpasswd, m4, and mkimage binaries are required.
If you are on an architecture other than arm64, qemu-user-static and binfmt (or use docker run --rm --privileged multiarch/qemu-user-static --reset -p yes) are required.
Use the Justfile. just run will output a flashable img.gz in output, plus a rootfs-only _update.img.gz package used by Connector self-updates.
$ just -l
Available recipes:
connector-api
docker-build
docker-run
docker-qemu
lint
run
windows-check
windows-host-check
windows-host-test
windows-server
windows-test
windows-universal
Before submitting changes, run just test, just lint, and
cd src && bun run build. The lint command uses the installed TypeScript
compiler to check types and reject unused locals and parameters.
Connector images use an A/B root partition layout. The boot partition runs U-Boot, which selects either root slot A or B and rolls back to the previous slot if a new slot fails to boot twice.
Full SD-card images are named nocturne-connector_<version>.img.gz. Self-update packages are named nocturne-connector_<version>_update.img.gz and must be published with the matching .sha256 file in the GitHub release. The web UI Settings page checks for that rootfs-only asset and flashes it to the inactive slot before prompting for a reboot.
The selector helper writes U-Boot's CRC in big-endian byte order and accepts legacy little-endian records during migration. Existing devices running an older helper need the fixed helper installed once, or a full-image reflash, before a rootfs-only update can switch slots.
Persistent connector state, setup/auth data, analytics queue data, and Wi-Fi config live under /data so they survive slot changes.
UART (with a TTY) is enabled and is the recommended way to debug and interact with the system. SSH is open on port 22 if you'd like instead. Root password is nocturne.
The boot filesystem is mounted read-only at /uboot, root slots are /dev/mmcblk0p2 and /dev/mmcblk0p3, and persistent data is /dev/mmcblk0p4. Use ab_active to inspect the current slot and ab_flash <update.img.gz> to manually flash the inactive slot.
This software was made possible only through the following individuals and open source programs:
This project is licensed under the Apache license.
© 2026 Vanta Labs.
"Spotify" and "Car Thing" are trademarks of Spotify AB. This software is not affiliated with or endorsed by Spotify AB.
