diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx index dc73d4b..1e2da11 100644 --- a/src/app/about/page.tsx +++ b/src/app/about/page.tsx @@ -1,444 +1,15 @@ -'use client' -import { Navbar } from '@/components/about-navbar' -import { Container } from '@/components/container' -import { Footer } from '@/components/footer' -import { Link } from '@/components/link' -import { ChevronRightIcon } from '@heroicons/react/16/solid' +import AboutPage from '@/components/about-page' +import type { Metadata } from 'next' -const people = [ - { - name: 'Brandon Saldan', - role: 'Software Engineer', - imageUrl: 'https://usenocturne.com/map/1.jpg', - href: 'https://github.com/brandonsaldan', +export const metadata: Metadata = { + title: 'About', + description: + 'The team behind Nocturne and our mission to give Car Thing hardware a second life.', + alternates: { + canonical: 'https://usenocturne.com/about', }, - { - name: 'bbaovanc', - role: 'Software Engineer', - imageUrl: 'https://usenocturne.com/map/3.jpg', - href: 'https://github.com/bbaovanc', - }, - { - name: 'Dominic Frye', - role: 'Software Engineer', - imageUrl: 'https://usenocturne.com/map/2.jpg', - href: 'https://github.com/itsnebulalol', - }, - { - name: 'shadow', - role: 'Software Engineer', - imageUrl: 'https://usenocturne.com/map/4.jpg', - href: 'https://github.com/68p', - }, -] - -const testimonials = [ - { - body: 'Thank you for helping revive this device!', - author: { - name: 'Jade Robbins', - handle: 'jaderobbins', - imageUrl: 'testimonials/1.jpg', - }, - href: 'https://x.com/jaderobbins/status/1861117484927197615', - }, - { - body: 'This is awesome thank you!', - author: { - name: 'Alex Fife', - handle: 'alextfife', - imageUrl: 'testimonials/2.jpg', - }, - href: 'https://x.com/alextfife/status/1861080147954180142', - }, - { - body: 'These people are doing amazing work.', - author: { - name: 'Jeff Xu', - handle: 'JSandals1', - imageUrl: 'testimonials/3.jpg', - }, - href: 'https://x.com/JSandals1/status/1861238960548163770', - }, - { - body: 'I love when people take matters into their own hands.', - author: { - name: 'Ray Wong', - handle: 'raywongy', - imageUrl: 'testimonials/4.jpg', - }, - href: 'https://x.com/raywongy/status/1861248921877569892', - }, - { - body: 'Sick!!!!!!!!!', - author: { - name: 'alistair', - handle: 'alistaiir', - imageUrl: 'testimonials/5.jpg', - }, - href: 'https://x.com/alistaiir/status/1856887872370217401', - }, - { - body: 'So excited for this!', - author: { - name: 'Jim England', - handle: 'JimEngland', - imageUrl: 'testimonials/6.jpg', - }, - href: 'https://x.com/JimEngland/status/1852470793684635941', - }, - { - body: 'lfg, this is the news i’ve been waiting for!!!', - author: { - name: 'janniks', - handle: 'janniksco', - imageUrl: 'testimonials/7.jpg', - }, - href: 'https://x.com/janniksco/status/1852361766283444334', - }, - { - body: 'Incredible stuff!', - author: { - name: 'brian', - handle: 'officialbois', - imageUrl: 'testimonials/8.jpg', - }, - href: 'https://x.com/officialbois/status/1852280293320999021', - }, - { - body: 'Oh this is cool.', - author: { - name: 'Parker Rex', - handle: 'ParkerRex', - imageUrl: 'testimonials/9.jpg', - }, - href: 'https://x.com/ParkerRex/status/1861615461676241376', - }, -] - -function Hero() { - return ( -
- - - Nocturne Public Beta Now Available - - - } - /> - -
- ) -} - -function About() { - return ( -
-
-
- -
-
- ) } -export default function Home() { - return ( -
- -
-
- -
-
-
- ) +export default function Page() { + return } diff --git a/src/app/installation/page.tsx b/src/app/installation/page.tsx index 1a5a443..a2db78f 100644 --- a/src/app/installation/page.tsx +++ b/src/app/installation/page.tsx @@ -1,702 +1,25 @@ -'use client' -import { Container } from '@/components/container' -import { Footer } from '@/components/footer' -import { Gradient } from '@/components/gradient' -import { Link } from '@/components/link' -import { Navbar } from '@/components/navbar' -import { SectionLink } from '@/components/section-link' -import { Heading, SectionTitle, SubSectionTitle } from '@/components/text' -import { ChevronRightIcon } from '@heroicons/react/16/solid' - -function Hero() { - return ( -
- - - - Nocturne Public Beta Now Available - - - } - /> -
-

- Installation Guide -

-

- Whether you're a tech enthusiast or just getting started, we'll walk - you through every step of the process. -

-
-
-
- ) -} - -function InstallationGuide() { - return ( - -
- Prerequisites -

- Unless receiving power through a Linux computer, running Nocturne on - your Car Thing requires a host device such as a Raspberry Pi, a - microSD card, a microUSB to USB-C cable, a microUSB/your power - source's connector, as well as a Spotify Premium account. You will - also need{' '} - - superbird-tool - {' '} - to flash the image regardless of your computer's operating system. -

- - Installation -

- Installing Nocturne differs slightly depending on your operating - system. -

- - - Windows - - Raspberry Pi Setup -

- Download and open{' '} - - Raspberry Pi Imager - - , select Raspberry Pi OS (Legacy, 64-bit) Lite, select "Edit - Settings", check "Set hostname", check "Set username and password" - (set a password), check "Configure wireless LAN", (enter your - network's SSID and password), check "Set local settings". Open the - Services tab, enable SSH, and use password authentication. Write the - configured OS to your microSD card and insert it into your Raspberry - Pi. -

- - Flashing Process -

- If you haven't already, download{' '} - - superbird-tool - {' '} - and run the setup process detailed{' '} - - here - - . -

-

- Download and unzip the latest image from{' '} - - Releases - - , connect Car Thing to your computer in USB Mode (hold preset buttons - 1 and 4 while connecting), and run the following from your command - line: -

-
-          
-            {`# Go into the superbird-tool repository
-$ cd C:\\path\\to\\superbird-tool-main
-
-# Find device
-$ python superbird_tool.py --find_device
-
-# Flash Nocturne image, without resetting the data partition 
-$ python superbird_tool.py --dont_reset --restore_device C:\\path\\to\\nocturne-image\\image`}
-          
-        
- -

- After the flashing completes, connect your Raspberry Pi to your - computer, and change directories to the scripts folder. -

-
-          
-            {`# Go into the setup-scripts folder
-$ cd \\path\\to\\nocturne-image\\setup-scripts`}
-          
-        
- -

- There are two different ways to use Nocturne. You can either use it at - your desk, or in your car. -

- - - Using Nocturne at your desk (Windows) - -

- Connect your Car Thing to the Raspberry Pi and run the following from - your command line: -

-
-          
-            {`# Transfer setup_host_rpi.sh to Raspberry Pi
-$ scp \\path\\to\\nocturne-image\\setup-scripts\\setup_host_rpi.sh pi@raspberrypi.local:/home/pi/
-
-# SSH into Raspberry Pi
-$ ssh pi@raspberrypi.local
-
-# Make setup_host_rpi.sh executable
-$ chmod +x /home/pi/setup_host_rpi.sh
-
-# Execute setup_host_rpi.sh
-$ sudo ./setup_host_rpi.sh
-
-# Reboot Raspberry Pi
-$ sudo reboot`}
-          
-        
- - - Using Nocturne in your car (Windows) - -

- Connect your Car Thing to the Raspberry Pi and run the following from - your command line: -

-
-          
-            {`# Transfer setup_host_rpi.sh to Raspberry Pi
-$ scp \\path\\to\\nocturne-image\\setup-scripts\\setup_host_rpi.sh pi@raspberrypi.local:/home/pi/
-
-# SSH into Raspberry Pi
-$ ssh pi@raspberrypi.local
-
-# Make setup_host_rpi.sh executable
-$ chmod +x /home/pi/setup_host_rpi.sh
-
-# Execute setup_host_rpi.sh
-$ sudo ./setup_host_rpi.sh
-
-# Reboot Raspberry Pi
-$ sudo reboot`}
-          
-        
- -

- For car usage, you will also need to run the setup_hotspot.py script: -

-
-          
-            {`# Transfer setup_hotspot.py to Raspberry Pi
-$ scp \\path\\to\\nocturne-image\\setup-scripts\\setup_hotspot.py pi@raspberrypi.local:/home/pi/
-
-# SSH into Raspberry Pi
-$ ssh pi@raspberrypi.local
-
-# Execute setup_hotspot.py
-$ sudo python3 ./setup_hotspot.py`}
-          
-        
- -

- The script will ask you to input the name of your hotspot, as well as - the password for the hotspot. After the script completes, Nocturne is - almost ready to be used in your car! -

- - - macOS - - Raspberry Pi Setup -

- Download and open{' '} - - Raspberry Pi Imager - - , select Raspberry Pi OS (Legacy, 64-bit) Lite, select "Edit - Settings", check "Set hostname", check "Set username and password" - (set a password), check "Configure wireless LAN", (enter your - network's SSID and password), check "Set local settings". Open the - Services tab, enable SSH, and use password authentication. Write the - configured OS to your microSD card and insert it into your Raspberry - Pi. -

- - Flashing Process -

- If you haven't already, download{' '} - - superbird-tool - {' '} - and run the setup process detailed{' '} - - here - - . -

- -

- Download and unzip the latest image from{' '} - - Releases - - , connect Car Thing to your computer in USB Mode (hold preset buttons - 1 and 4 while connecting), and run the following from your command - line: -

-
-          
-            {`# Go into the superbird-tool repository
-$ cd /path/to/superbird-tool-main
-
-# Find device
-$ /opt/homebrew/bin/python3 superbird_tool.py --find_device
-
-# Flash Nocturne image, without resetting the data partition 
-$ /opt/homebrew/bin/python3 superbird_tool.py --dont_reset --restore_device /path/to/nocturne-image/image`}
-          
-        
- -

- After the flashing completes, connect your Raspberry Pi to your - computer, and change directories to the scripts folder: -

-
-          
-            {`# Go into the setup-scripts folder
-$ cd /path/to/nocturne-image/setup-scripts`}
-          
-        
- - - Using Nocturne at your desk (macOS) - -

- Connect your Car Thing to the Raspberry Pi and run the following from - your command line: -

-
-          
-            {`# Transfer setup_host_rpi.sh to Raspberry Pi
-$ scp /path/to/nocturne-image/setup-scripts/setup_host_rpi.sh pi@raspberrypi.local:/home/pi/
-
-# SSH into Raspberry Pi
-$ ssh pi@raspberrypi.local
-
-# Make setup_host_rpi.sh executable
-$ chmod +x /home/pi/setup_host_rpi.sh
-
-# Execute setup_host_rpi.sh
-$ sudo ./setup_host_rpi.sh
-
-# Reboot Raspberry Pi
-$ sudo reboot`}
-          
-        
- - - Using Nocturne in your car (macOS) - -

- Connect your Car Thing to the Raspberry Pi and run the following from - your command line: -

-
-          
-            {`# Transfer setup_host_rpi.sh to Raspberry Pi
-$ scp /path/to/nocturne-image/setup-scripts/setup_host_rpi.sh pi@raspberrypi.local:/home/pi/
-
-# SSH into Raspberry Pi
-$ ssh pi@raspberrypi.local
-
-# Make setup_host_rpi.sh executable
-$ chmod +x /home/pi/setup_host_rpi.sh
-
-# Execute setup_host_rpi.sh
-$ sudo ./setup_host_rpi.sh
-
-# Reboot Raspberry Pi
-$ sudo reboot`}
-          
-        
- -

- For car usage on macOS, you will also need to run the setup_hotspot.py - script: -

-
-          
-            {`# Transfer setup_hotspot.py to Raspberry Pi
-$ scp /path/to/nocturne-image/setup-scripts/setup_hotspot.py pi@raspberrypi.local:/home/pi/
-
-# SSH into Raspberry Pi
-$ ssh pi@raspberrypi.local
-
-# Execute setup_hotspot.py
-$ sudo python3 ./setup_hotspot.py`}
-          
-        
- - - Linux - -

- A Raspberry Pi is not required on Linux, unless you want to use - Nocturne in your car. -

- - Raspberry Pi Setup -

- Download and open{' '} - - Raspberry Pi Imager - - , select Raspberry Pi OS (Legacy, 64-bit) Lite, select "Edit - Settings", check "Set hostname", check "Set username and password" - (set a password), check "Configure wireless LAN", (enter your - network's SSID and password), check "Set local settings". Open the - Services tab, enable SSH, and use password authentication. Write the - configured OS to your microSD card and insert it into your Raspberry - Pi. -

- - Flashing Process -

- If you haven't already, download{' '} - - superbird-tool - {' '} - and run the setup process detailed{' '} - - here - - . -

- -

- Download and unzip the latest image from{' '} - - Releases - - , connect Car Thing to your computer in USB Mode (hold preset buttons - 1 and 4 while connecting), and run the following from your command - line: -

- -
-          
-            {`# Go into the superbird-tool repository
-$ cd /path/to/superbird-tool-main
-
-# Find device
-$ sudo python3 ./superbird_tool.py --find_device
-
-# Flash Nocturne image, without resetting the data partition 
-$ sudo python3 ./superbird_tool.py --dont_reset --restore_device /path/to/nocturne-image/image`}
-          
-        
- -

- After the flashing completes, unplug and replug your Car Thing, and - change directories to the scripts folder: -

- -
-          
-            {`# Go into the setup-scripts folder
-$ cd /path/to/nocturne-image/setup-scripts`}
-          
-        
- - - Using Nocturne at your desk (Linux) - -

- At this point, there are two different scripts that you can use. The - first one,{' '} - - setup_host_apt.sh - - , is used on Linux distros that utilize apt as it's package manager. - The second one,{' '} - - setup_host_pacman.sh - - , is used on Linux distros that utilize Pacman as it's package - manager. If you use Pacman, replace - - setup_host_apt.sh - {' '} - in the following commands with - - setup_host_pacman.sh - {' '} - to continue with setup. -

-

- It is important to note that{' '} - - setup_host_pacman.sh - {' '} - has not been tested very well, so it may not work as intended for - setup. -

- -
-          
-            {`# Make setup_host_apt.sh executable
-$ chmod +x setup_host_apt.sh
-
-# Execute setup_host_apt.sh
-$ sudo ./setup_host_apt.sh`}
-          
-        
- - - Using Nocturne in your car (Linux) - -

- To use Nocturne in your car, you will need to have a Raspberry Pi to - provide network. -

-

- Connect your Raspberry Pi to your computer, your Car Thing to the - Raspberry Pi, and run the following from your command line: -

- -
-          
-            {`# Transfer setup_host_rpi.sh to Raspberry Pi
-$ scp /path/to/nocturne-image/setup-scripts/setup_host_rpi.sh pi@raspberrypi.local:/home/pi/
-
-# SSH into Raspberry Pi
-$ ssh pi@raspberrypi.local
-
-# Make setup_host_rpi.sh executable
-$ chmod +x /home/pi/setup_host_rpi.sh
-
-# Execute setup_host_rpi.sh
-$ sudo ./setup_host_rpi.sh
-
-# Reboot Raspberry Pi
-$ sudo reboot`}
-          
-        
- -

- Continue setting up Nocturne by following the steps outlined{' '} - - here - - . Then, select Login with Phone, scan the QR Code, and enter the - Client ID and the Client Secret, and login to Spotify. After logging - in, you are ready to use Nocturne! -

- - - Troubleshooting - - - - superbird-tool: USBTimeoutError - -

- If you are running into this error while flashing your Car Thing, try - using the option{' '} - - --slow_burn - {' '} - or{' '} - - --slower_burn - {' '} - in the command used to flash. -

-

This will look like the following:

-
-          
-            {`$ python ./superbird_tool.py --dont_reset --slow_burn --restore_device /path/to/nocturne/image`}
-          
-        
-

- If this still does not resolve the error, then you will have to edit - line 164 (the one that says{' '} - - MULTIPLIER = 8 - - ) in{' '} - - superbird_device.py - -

-

- If your flashing is failing at{' '} - - executing bulkcmd: "amlmmc part 1" - - , then try running the following command manually. This may take a few - tries to succeed: -

-
-          
-            {`$ python ./superbird_tool.py --bulkcmd "amlmmc part 1"`}
-          
-        
-

- - python - {' '} - in the above commands depends on what OS you are running: -

-
    -
  • - For Windows, it will be{' '} - - python - -
  • -
  • - For macOS, it will be{' '} - - /opt/homebrew/bin/python3 - -
  • -
  • - For Linux, it will be{' '} - - python3 - -
  • -
- - - superbird-tool: "bulkcmd timed out or failed!" after system_b - -

- If you are running into this error while flashing your Car Thing, you - must replace the{' '} - - superbird_partitions.py - {' '} - file in the - - superbird-tool - {' '} - folder with the one provided in this repo. -

-

- This error occurs since some devices have a smaller data partition, - causing the error when attempting to flash the data partition. -

- - - superbird-tool: AssertionError - -

- If you are running into this error while flashing your Car Thing, you - must install the{' '} - - libusbk - {' '} - driver in Zadig. You can do this with the steps found{' '} - - here - - , and replacing{' '} - - libusb-win32 - {' '} - with{' '} - - libusbk - {' '} - instead. -

- -

- If your issue is not listed here, or if you need help, join our{' '} - - Discord server - {' '} - for assistance. -

- - - Download - -

- You can download the latest flashable version of Nocturne for Windows, - macOS and Linux{' '} - - here - - . -

-
-
- ) +import InstallationPage from '@/components/installation-page' +import type { Metadata } from 'next' + +export const metadata: Metadata = { + title: 'Installation Guide', + description: + 'Step-by-step instructions for installing Nocturne on your Car Thing. Learn how to set up Nocturne for both desk and car use, with detailed guides for Windows, macOS, and Linux.', + alternates: { + canonical: 'https://usenocturne.com/installation', + }, + keywords: [ + 'Nocturne installation', + 'Car Thing setup', + 'Car Thing software', + 'Car Thing hack', + 'Spotify Car Thing mod', + 'Car Thing Linux setup', + 'Car Thing Windows setup', + 'Car Thing macOS setup', + ], } -export default function Home() { - return ( -
- -
-
- -
-
-
-
- ) +export default function Page() { + return } diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 401e2e8..2efb4a3 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -12,7 +12,7 @@ export const metadata: Metadata = { 'When Spotify ended support, we created a new beginning. Join our growing community of users giving their Car Thing a second life with our free, open source solution.', metadataBase: new URL('https://usenocturne.com/'), alternates: { - canonical: '/', + canonical: 'https://usenocturne.com', }, keywords: [ 'Nocturne', diff --git a/src/app/lib/getLastModified.ts b/src/app/lib/getLastModified.ts index 2393ca3..427d64e 100644 --- a/src/app/lib/getLastModified.ts +++ b/src/app/lib/getLastModified.ts @@ -38,7 +38,6 @@ export async function getLatestCommitDate() { const latestDate = new Date(latestTimestamp) const formattedDate = latestDate.toISOString().split('T')[0] - console.log('Formatted date for Schema.org:', formattedDate) return formattedDate } catch (error) { console.error('Error fetching commit dates:', error) diff --git a/src/components/about-page.tsx b/src/components/about-page.tsx new file mode 100644 index 0000000..dc73d4b --- /dev/null +++ b/src/components/about-page.tsx @@ -0,0 +1,444 @@ +'use client' +import { Navbar } from '@/components/about-navbar' +import { Container } from '@/components/container' +import { Footer } from '@/components/footer' +import { Link } from '@/components/link' +import { ChevronRightIcon } from '@heroicons/react/16/solid' + +const people = [ + { + name: 'Brandon Saldan', + role: 'Software Engineer', + imageUrl: 'https://usenocturne.com/map/1.jpg', + href: 'https://github.com/brandonsaldan', + }, + { + name: 'bbaovanc', + role: 'Software Engineer', + imageUrl: 'https://usenocturne.com/map/3.jpg', + href: 'https://github.com/bbaovanc', + }, + { + name: 'Dominic Frye', + role: 'Software Engineer', + imageUrl: 'https://usenocturne.com/map/2.jpg', + href: 'https://github.com/itsnebulalol', + }, + { + name: 'shadow', + role: 'Software Engineer', + imageUrl: 'https://usenocturne.com/map/4.jpg', + href: 'https://github.com/68p', + }, +] + +const testimonials = [ + { + body: 'Thank you for helping revive this device!', + author: { + name: 'Jade Robbins', + handle: 'jaderobbins', + imageUrl: 'testimonials/1.jpg', + }, + href: 'https://x.com/jaderobbins/status/1861117484927197615', + }, + { + body: 'This is awesome thank you!', + author: { + name: 'Alex Fife', + handle: 'alextfife', + imageUrl: 'testimonials/2.jpg', + }, + href: 'https://x.com/alextfife/status/1861080147954180142', + }, + { + body: 'These people are doing amazing work.', + author: { + name: 'Jeff Xu', + handle: 'JSandals1', + imageUrl: 'testimonials/3.jpg', + }, + href: 'https://x.com/JSandals1/status/1861238960548163770', + }, + { + body: 'I love when people take matters into their own hands.', + author: { + name: 'Ray Wong', + handle: 'raywongy', + imageUrl: 'testimonials/4.jpg', + }, + href: 'https://x.com/raywongy/status/1861248921877569892', + }, + { + body: 'Sick!!!!!!!!!', + author: { + name: 'alistair', + handle: 'alistaiir', + imageUrl: 'testimonials/5.jpg', + }, + href: 'https://x.com/alistaiir/status/1856887872370217401', + }, + { + body: 'So excited for this!', + author: { + name: 'Jim England', + handle: 'JimEngland', + imageUrl: 'testimonials/6.jpg', + }, + href: 'https://x.com/JimEngland/status/1852470793684635941', + }, + { + body: 'lfg, this is the news i’ve been waiting for!!!', + author: { + name: 'janniks', + handle: 'janniksco', + imageUrl: 'testimonials/7.jpg', + }, + href: 'https://x.com/janniksco/status/1852361766283444334', + }, + { + body: 'Incredible stuff!', + author: { + name: 'brian', + handle: 'officialbois', + imageUrl: 'testimonials/8.jpg', + }, + href: 'https://x.com/officialbois/status/1852280293320999021', + }, + { + body: 'Oh this is cool.', + author: { + name: 'Parker Rex', + handle: 'ParkerRex', + imageUrl: 'testimonials/9.jpg', + }, + href: 'https://x.com/ParkerRex/status/1861615461676241376', + }, +] + +function Hero() { + return ( +
+ + + Nocturne Public Beta Now Available + + + } + /> + +
+ ) +} + +function About() { + return ( +
+
+
+ +
+
+ ) +} + +export default function Home() { + return ( +
+ +
+
+ +
+
+
+
+ ) +} diff --git a/src/components/installation-page.tsx b/src/components/installation-page.tsx new file mode 100644 index 0000000..1a5a443 --- /dev/null +++ b/src/components/installation-page.tsx @@ -0,0 +1,702 @@ +'use client' +import { Container } from '@/components/container' +import { Footer } from '@/components/footer' +import { Gradient } from '@/components/gradient' +import { Link } from '@/components/link' +import { Navbar } from '@/components/navbar' +import { SectionLink } from '@/components/section-link' +import { Heading, SectionTitle, SubSectionTitle } from '@/components/text' +import { ChevronRightIcon } from '@heroicons/react/16/solid' + +function Hero() { + return ( +
+ + + + Nocturne Public Beta Now Available + + + } + /> +
+

+ Installation Guide +

+

+ Whether you're a tech enthusiast or just getting started, we'll walk + you through every step of the process. +

+
+
+
+ ) +} + +function InstallationGuide() { + return ( + +
+ Prerequisites +

+ Unless receiving power through a Linux computer, running Nocturne on + your Car Thing requires a host device such as a Raspberry Pi, a + microSD card, a microUSB to USB-C cable, a microUSB/your power + source's connector, as well as a Spotify Premium account. You will + also need{' '} + + superbird-tool + {' '} + to flash the image regardless of your computer's operating system. +

+ + Installation +

+ Installing Nocturne differs slightly depending on your operating + system. +

+ + + Windows + + Raspberry Pi Setup +

+ Download and open{' '} + + Raspberry Pi Imager + + , select Raspberry Pi OS (Legacy, 64-bit) Lite, select "Edit + Settings", check "Set hostname", check "Set username and password" + (set a password), check "Configure wireless LAN", (enter your + network's SSID and password), check "Set local settings". Open the + Services tab, enable SSH, and use password authentication. Write the + configured OS to your microSD card and insert it into your Raspberry + Pi. +

+ + Flashing Process +

+ If you haven't already, download{' '} + + superbird-tool + {' '} + and run the setup process detailed{' '} + + here + + . +

+

+ Download and unzip the latest image from{' '} + + Releases + + , connect Car Thing to your computer in USB Mode (hold preset buttons + 1 and 4 while connecting), and run the following from your command + line: +

+
+          
+            {`# Go into the superbird-tool repository
+$ cd C:\\path\\to\\superbird-tool-main
+
+# Find device
+$ python superbird_tool.py --find_device
+
+# Flash Nocturne image, without resetting the data partition 
+$ python superbird_tool.py --dont_reset --restore_device C:\\path\\to\\nocturne-image\\image`}
+          
+        
+ +

+ After the flashing completes, connect your Raspberry Pi to your + computer, and change directories to the scripts folder. +

+
+          
+            {`# Go into the setup-scripts folder
+$ cd \\path\\to\\nocturne-image\\setup-scripts`}
+          
+        
+ +

+ There are two different ways to use Nocturne. You can either use it at + your desk, or in your car. +

+ + + Using Nocturne at your desk (Windows) + +

+ Connect your Car Thing to the Raspberry Pi and run the following from + your command line: +

+
+          
+            {`# Transfer setup_host_rpi.sh to Raspberry Pi
+$ scp \\path\\to\\nocturne-image\\setup-scripts\\setup_host_rpi.sh pi@raspberrypi.local:/home/pi/
+
+# SSH into Raspberry Pi
+$ ssh pi@raspberrypi.local
+
+# Make setup_host_rpi.sh executable
+$ chmod +x /home/pi/setup_host_rpi.sh
+
+# Execute setup_host_rpi.sh
+$ sudo ./setup_host_rpi.sh
+
+# Reboot Raspberry Pi
+$ sudo reboot`}
+          
+        
+ + + Using Nocturne in your car (Windows) + +

+ Connect your Car Thing to the Raspberry Pi and run the following from + your command line: +

+
+          
+            {`# Transfer setup_host_rpi.sh to Raspberry Pi
+$ scp \\path\\to\\nocturne-image\\setup-scripts\\setup_host_rpi.sh pi@raspberrypi.local:/home/pi/
+
+# SSH into Raspberry Pi
+$ ssh pi@raspberrypi.local
+
+# Make setup_host_rpi.sh executable
+$ chmod +x /home/pi/setup_host_rpi.sh
+
+# Execute setup_host_rpi.sh
+$ sudo ./setup_host_rpi.sh
+
+# Reboot Raspberry Pi
+$ sudo reboot`}
+          
+        
+ +

+ For car usage, you will also need to run the setup_hotspot.py script: +

+
+          
+            {`# Transfer setup_hotspot.py to Raspberry Pi
+$ scp \\path\\to\\nocturne-image\\setup-scripts\\setup_hotspot.py pi@raspberrypi.local:/home/pi/
+
+# SSH into Raspberry Pi
+$ ssh pi@raspberrypi.local
+
+# Execute setup_hotspot.py
+$ sudo python3 ./setup_hotspot.py`}
+          
+        
+ +

+ The script will ask you to input the name of your hotspot, as well as + the password for the hotspot. After the script completes, Nocturne is + almost ready to be used in your car! +

+ + + macOS + + Raspberry Pi Setup +

+ Download and open{' '} + + Raspberry Pi Imager + + , select Raspberry Pi OS (Legacy, 64-bit) Lite, select "Edit + Settings", check "Set hostname", check "Set username and password" + (set a password), check "Configure wireless LAN", (enter your + network's SSID and password), check "Set local settings". Open the + Services tab, enable SSH, and use password authentication. Write the + configured OS to your microSD card and insert it into your Raspberry + Pi. +

+ + Flashing Process +

+ If you haven't already, download{' '} + + superbird-tool + {' '} + and run the setup process detailed{' '} + + here + + . +

+ +

+ Download and unzip the latest image from{' '} + + Releases + + , connect Car Thing to your computer in USB Mode (hold preset buttons + 1 and 4 while connecting), and run the following from your command + line: +

+
+          
+            {`# Go into the superbird-tool repository
+$ cd /path/to/superbird-tool-main
+
+# Find device
+$ /opt/homebrew/bin/python3 superbird_tool.py --find_device
+
+# Flash Nocturne image, without resetting the data partition 
+$ /opt/homebrew/bin/python3 superbird_tool.py --dont_reset --restore_device /path/to/nocturne-image/image`}
+          
+        
+ +

+ After the flashing completes, connect your Raspberry Pi to your + computer, and change directories to the scripts folder: +

+
+          
+            {`# Go into the setup-scripts folder
+$ cd /path/to/nocturne-image/setup-scripts`}
+          
+        
+ + + Using Nocturne at your desk (macOS) + +

+ Connect your Car Thing to the Raspberry Pi and run the following from + your command line: +

+
+          
+            {`# Transfer setup_host_rpi.sh to Raspberry Pi
+$ scp /path/to/nocturne-image/setup-scripts/setup_host_rpi.sh pi@raspberrypi.local:/home/pi/
+
+# SSH into Raspberry Pi
+$ ssh pi@raspberrypi.local
+
+# Make setup_host_rpi.sh executable
+$ chmod +x /home/pi/setup_host_rpi.sh
+
+# Execute setup_host_rpi.sh
+$ sudo ./setup_host_rpi.sh
+
+# Reboot Raspberry Pi
+$ sudo reboot`}
+          
+        
+ + + Using Nocturne in your car (macOS) + +

+ Connect your Car Thing to the Raspberry Pi and run the following from + your command line: +

+
+          
+            {`# Transfer setup_host_rpi.sh to Raspberry Pi
+$ scp /path/to/nocturne-image/setup-scripts/setup_host_rpi.sh pi@raspberrypi.local:/home/pi/
+
+# SSH into Raspberry Pi
+$ ssh pi@raspberrypi.local
+
+# Make setup_host_rpi.sh executable
+$ chmod +x /home/pi/setup_host_rpi.sh
+
+# Execute setup_host_rpi.sh
+$ sudo ./setup_host_rpi.sh
+
+# Reboot Raspberry Pi
+$ sudo reboot`}
+          
+        
+ +

+ For car usage on macOS, you will also need to run the setup_hotspot.py + script: +

+
+          
+            {`# Transfer setup_hotspot.py to Raspberry Pi
+$ scp /path/to/nocturne-image/setup-scripts/setup_hotspot.py pi@raspberrypi.local:/home/pi/
+
+# SSH into Raspberry Pi
+$ ssh pi@raspberrypi.local
+
+# Execute setup_hotspot.py
+$ sudo python3 ./setup_hotspot.py`}
+          
+        
+ + + Linux + +

+ A Raspberry Pi is not required on Linux, unless you want to use + Nocturne in your car. +

+ + Raspberry Pi Setup +

+ Download and open{' '} + + Raspberry Pi Imager + + , select Raspberry Pi OS (Legacy, 64-bit) Lite, select "Edit + Settings", check "Set hostname", check "Set username and password" + (set a password), check "Configure wireless LAN", (enter your + network's SSID and password), check "Set local settings". Open the + Services tab, enable SSH, and use password authentication. Write the + configured OS to your microSD card and insert it into your Raspberry + Pi. +

+ + Flashing Process +

+ If you haven't already, download{' '} + + superbird-tool + {' '} + and run the setup process detailed{' '} + + here + + . +

+ +

+ Download and unzip the latest image from{' '} + + Releases + + , connect Car Thing to your computer in USB Mode (hold preset buttons + 1 and 4 while connecting), and run the following from your command + line: +

+ +
+          
+            {`# Go into the superbird-tool repository
+$ cd /path/to/superbird-tool-main
+
+# Find device
+$ sudo python3 ./superbird_tool.py --find_device
+
+# Flash Nocturne image, without resetting the data partition 
+$ sudo python3 ./superbird_tool.py --dont_reset --restore_device /path/to/nocturne-image/image`}
+          
+        
+ +

+ After the flashing completes, unplug and replug your Car Thing, and + change directories to the scripts folder: +

+ +
+          
+            {`# Go into the setup-scripts folder
+$ cd /path/to/nocturne-image/setup-scripts`}
+          
+        
+ + + Using Nocturne at your desk (Linux) + +

+ At this point, there are two different scripts that you can use. The + first one,{' '} + + setup_host_apt.sh + + , is used on Linux distros that utilize apt as it's package manager. + The second one,{' '} + + setup_host_pacman.sh + + , is used on Linux distros that utilize Pacman as it's package + manager. If you use Pacman, replace + + setup_host_apt.sh + {' '} + in the following commands with + + setup_host_pacman.sh + {' '} + to continue with setup. +

+

+ It is important to note that{' '} + + setup_host_pacman.sh + {' '} + has not been tested very well, so it may not work as intended for + setup. +

+ +
+          
+            {`# Make setup_host_apt.sh executable
+$ chmod +x setup_host_apt.sh
+
+# Execute setup_host_apt.sh
+$ sudo ./setup_host_apt.sh`}
+          
+        
+ + + Using Nocturne in your car (Linux) + +

+ To use Nocturne in your car, you will need to have a Raspberry Pi to + provide network. +

+

+ Connect your Raspberry Pi to your computer, your Car Thing to the + Raspberry Pi, and run the following from your command line: +

+ +
+          
+            {`# Transfer setup_host_rpi.sh to Raspberry Pi
+$ scp /path/to/nocturne-image/setup-scripts/setup_host_rpi.sh pi@raspberrypi.local:/home/pi/
+
+# SSH into Raspberry Pi
+$ ssh pi@raspberrypi.local
+
+# Make setup_host_rpi.sh executable
+$ chmod +x /home/pi/setup_host_rpi.sh
+
+# Execute setup_host_rpi.sh
+$ sudo ./setup_host_rpi.sh
+
+# Reboot Raspberry Pi
+$ sudo reboot`}
+          
+        
+ +

+ Continue setting up Nocturne by following the steps outlined{' '} + + here + + . Then, select Login with Phone, scan the QR Code, and enter the + Client ID and the Client Secret, and login to Spotify. After logging + in, you are ready to use Nocturne! +

+ + + Troubleshooting + + + + superbird-tool: USBTimeoutError + +

+ If you are running into this error while flashing your Car Thing, try + using the option{' '} + + --slow_burn + {' '} + or{' '} + + --slower_burn + {' '} + in the command used to flash. +

+

This will look like the following:

+
+          
+            {`$ python ./superbird_tool.py --dont_reset --slow_burn --restore_device /path/to/nocturne/image`}
+          
+        
+

+ If this still does not resolve the error, then you will have to edit + line 164 (the one that says{' '} + + MULTIPLIER = 8 + + ) in{' '} + + superbird_device.py + +

+

+ If your flashing is failing at{' '} + + executing bulkcmd: "amlmmc part 1" + + , then try running the following command manually. This may take a few + tries to succeed: +

+
+          
+            {`$ python ./superbird_tool.py --bulkcmd "amlmmc part 1"`}
+          
+        
+

+ + python + {' '} + in the above commands depends on what OS you are running: +

+
    +
  • + For Windows, it will be{' '} + + python + +
  • +
  • + For macOS, it will be{' '} + + /opt/homebrew/bin/python3 + +
  • +
  • + For Linux, it will be{' '} + + python3 + +
  • +
+ + + superbird-tool: "bulkcmd timed out or failed!" after system_b + +

+ If you are running into this error while flashing your Car Thing, you + must replace the{' '} + + superbird_partitions.py + {' '} + file in the + + superbird-tool + {' '} + folder with the one provided in this repo. +

+

+ This error occurs since some devices have a smaller data partition, + causing the error when attempting to flash the data partition. +

+ + + superbird-tool: AssertionError + +

+ If you are running into this error while flashing your Car Thing, you + must install the{' '} + + libusbk + {' '} + driver in Zadig. You can do this with the steps found{' '} + + here + + , and replacing{' '} + + libusb-win32 + {' '} + with{' '} + + libusbk + {' '} + instead. +

+ +

+ If your issue is not listed here, or if you need help, join our{' '} + + Discord server + {' '} + for assistance. +

+ + + Download + +

+ You can download the latest flashable version of Nocturne for Windows, + macOS and Linux{' '} + + here + + . +

+
+
+ ) +} + +export default function Home() { + return ( +
+ +
+
+ +
+
+
+ ) +}