Let's begin, shall we?
This is the DeskThing project. Using Spotify's existing Car Thing, the DeskThing makes the perfect desk assistant. In short, the DeskThing serves as an alternative OS for the Spotify Car Thing. It allows you to load up community-made apps to it to do anything from control your local audio to seeing who is in your discord call! This is an open source project made by me, Riprod, an independant developer who's not even out of college! If you waant to help contribute to this endeveavor and attetmpt to revive the car thing, you can do so through my buymeacoffee link or through Github Sponsors.
Cheers!
Dammit Jeff posted a video covering the DeskThing! Check it out here
Instead, go to The Official Website and download the installer for your OS For a video walkthrough of v0.6.0, go to this video
All instructions are up-to-date as late of v0.9.0-beta. Later versions may differ in functionality and setup
The DeskThing is a simple CarThing Chromium-based website that can communicate with a Desktop APP on your computer. The CarThing can:
Note: Not all of these are updated and are pending a revision. This is new as of v0.7.0
-
- Download apps directly from the Desktop App GUI
- Manage and update the Car Thing's display
- Probably more - just check it out already
-
- Make any button do any function!
- Control audio with the top buttons, front buttons, back buttons, really whatever you want!
- Modify them from the Desktop UI
- Add more directly from apps! (Basically, you can do anything)
-
- Show currently listening (Album, Artist, Song name, album art)
- Control Spotify (Skip, pause, play, rewind, shuffle, repeat)
- Supports Podcasts too!
- Set Audio Output Source
- Spotify app installation instructions here
-
- Show currently listening (Album, Artist, Song name, album art)
- Control the current media (Skip, pause, play, rewind, shuffle, repeat)
- no setup instructions yet. Drag-n-drop the .zip from /releases/apps/ into the GUI
-
- Show current call status (Participants, who's talking, their mute status)
- Control Discord (Mute/Unmute Deafen/Undeafen Disconnect)
-
Control Individual User Volume -
See message preview - Discord app installation instructions here
-
- Show local weather
- Temperature
- AQI, UV Index, Wind Speed + Direction, Visibility
- 12 Hour forecast
- Weather app installation instructions here
-
-
Currently Listening To -
Audio Controls (Skip, Rewind, Fast Forward) -
Audio Status (%through) - Audiobook Library
- Audiobook stats (Progress, Length of book, time left, ASIN)
- Audible app installation instructions here
-
-
- Control different views on your launchpad!
- Show your system resource usage on your novation launchpad
- Add timers from your launchpad
-
Show weather from launchpad -
Show time on launchpad -
Trigger macros from launchpad - Launchpad app installation instructions here
-
- See all organizations
- See all boards
- See all lists
- See all cards
- See all tags
- Set different lists as your favorites
- Trello app installation instructions here
- Macropad / Streamdeck
- GUI Companion
- Dashboard/Settings for config changes
- General audio control
- Advanced Spotify Stats
- Home Assistant
- Pomodoro Timer
- Google Calendar
- More details in the Trello Board
This is under constant development, so features will come as soon as I can make them. Suggestions welcome!
Setting up to v0.6.0 that shows how to flash
Upgrading to v0.8.0 from 0.6.0
Step-by-step instructions
- Flash Your CarThing:
- Follow the instructions in the superbird-tool repository to flash your CarThing device with the necessary image.
If you need help, refer to the detailed instructions at the end of this page
-
Get the installer should be under releases
- Run the 'deskthing-0..--setup.' installer on your computer
-
Check for your device:
- Under the 'Devices' tab, ensure your device shows up. If it does not, join the Discord server and report the issue, this can be buggy on some machines.
A few things to try if it isn't working is to 1: Use task manager to kill all instances of ADB 2: Run DeskThing as administrator 3: Unplug and plug in your Car thing 4: Install ADB and manually check with
adb devices
- If the device shows up, go to the 'Client Downloads' tab and click the latest version. It should show up at the top (Staged: Deskthing CLient)
- Go back to the 'Devices' tab and click 'Push Staged Webapp' It should take a second, and then your Car Thing should restart.
- Load Apps
- Congrats! You're basically done. Now go to 'Apps' and then 'Webapps' and download any apps you want. Ensure you check dependencies before doing so as this could cause errors.
Any Issues? Contact me through the Deskthing discord server or via DMs to @riprod
First, when you install the DeskThing installer, you'll need to run
sudo xattr -r -d com.apple.quarantine DeskThing.app
to fix the app. Otherwise it'll say it's corrupted or something
Because ADB on the car thing and MacOS is funky, you need to run this on the DeskThing's ADB
chmod +x /Applications/DeskThing.app/Contents/Resources/mac/adb
Finally, the image linked above won't always work for MacOS. So instead, use the following image (it is a discord download for now) as it fixes ADB for MacOS
Go to Releases -> MACOS LISTEN UP to find the updated link Discord will cycle the url for the link so this one will expire after a given amnt of time The new location is on thingify.tools. Use v8.9.2
Thanks! Have a good day
Alternative flashing tutorial for Windows
It is HIGHLY recommended to use the new ifixit tutorial https://www.ifixit.com/Guide/How+to+Install+Custom+Firmware+onto+Car+Thing/178814
Links:
Process:
- Go to superbird-tool and install it based off your operating system. Come back once you can run
python superbird_tool.py --find_device
and see your Car Thing - Unplug the Car Thing
- Hold buttons 1 and 4 (the four large top buttons are mapped from left to right) and plug it in.
- Wait a few seconds. If the screen does not turn on, that means you are in boot mode. You can release the buttons
- Run
python superbird_tool.py --burn_mode
to enter burn mode
Note: This step may say it fails to enter burn mode. This is okay, continue on as if it worked. There is information in the discord as to why this is.
- Download 8.9.2-thinglabs.zip files from Thingify Tools (linked above) and in that same folder (unzip them)
- (Windows only) Download zadig and install the WinUSB driver for GX-CHIP (select it and click "Install Driver")
Alternatively use libusbK if it does not work you may have to click "Show All devices" to see it
- Run
python superbird_tool.py --restore_device /path/to/extracted/firmware/folder
(This may take a while) - After the firmware is flashed, the Car Thing should be ready with ADB enabled. To check, run
adb shell ls -l /usr/share/qt-superbird-app/
and you should see webapp as one of the folders. - Ensure that
adb devices
works and registerswhateveryouridis device
as one of the options - Continue setup from here
- 🔧 superbird-tool - This is the CarThing image that is being used. Be sure to either include this link or steps on how to flash the CarThing.
- 🐤 superbird-custom-webapp - The React web app framework that this project started with.
- 🗨️ Car Thing Hax Community Discord - The discord where there is this project and so much more!
Questions? DM me on discord @riprod
Interested in developing an app? Well here's a great place to start! Make sure you join the DeskThing discord server so I, or anyone else, can help you out!
Start with
npm create deskthing@latest
And follow the prompts to set up the app environment. From there, you can reference:
These are apps that make the deskthing "firmware" functional! When you use spotify on your deskthing, it's using the spotify app (linked here). What you interact with is driven by the "src/App.tsx"
This is what allows deskthing apps to "function". When you hit the pause button on the spotify app, it makes a request to the deskthing-client which routes your request (through the deskthing-app-client package, source code linked here). This deskthing-app-client request doesn't return a response, instead it listens for events through the deskthing-app-client using the "on" method.
This is what allows the deskthing-server to make custom requests. When the deskthing-server gets a request to pause the current spotify song, it forwards that action through the deskthing-app-server back to the spotify apps "server/index.ts" which can be handled in your app using the deskthing-app-server "on" method to respond to custom requests from the deskthing-client.
Good luck!