Repository navigation
PlayThing 0.2.0-beta
Pre-releaseBeta. I tested it on my Car Thing (S905D2, 512 MiB RAM, ST7701S panel); 0.1.0-beta.5 also works on a newer board revision (a user's report). Known issues: docs/known-issues.md. Use it at your own risk: read the warning in the README.
New in 0.2.0-beta
- Apps. Droid-ify is the app store: it installs, updates, and removes apps without a prompt. An App manager shows the storage and the memory of each app; it can stop an app, clear its cache or its data, remove it, and clean up the caches of all apps (
docs/apps.md). - ThingPod, an iPod-style music player: the knob is the click wheel. It plays the music on the Car Thing and on USB sticks, and the car stereo shows the title and the cover over Bluetooth (
docs/thingpod.md). The image now has Android's media library (MediaProvider). - Home screen. The Apps tile opens an app drawer. A rotate button (next to the Bluetooth status) turns the screen in steps of 90 degrees, to landscape or portrait; the home screen has a portrait layout. While an iPhone is connected, the first press only shows a message: a rotation starts the CarPlay session again, and the iPhone can ask "Trust" again. A second press in 4 s rotates (
docs/home-screen.md). - Fix: frozen screen after an app restart. When the app in front stopped and started again at once (for example after
am force-stop), the screen could stop until a restart. Cause: the hardware composer gave Android the fence of the next frame instead of the fence of the shown frame (docs/graphics.md). - Fix: kernel panic in the fence driver (kernel patch 0008,
docs/kernel.md). A restart of Android's display service could cause a kernel panic and a reboot. - Fix: screenshots and the rotation animation showed a stretched part of the screen (a SurfaceFlinger patch for the turned panel).
- The boot script takes
panel_typefrom the Car Thing's own U-Boot env (lcd_8when the env has none), for units with another panel entry (docs/boot.md). python3 flash.py diagalso shows Android's bootloader message (misc) and the kind of file system on the stock data partition. The flash tool names Nocturne 4 and Mira (installed by Terbium) as other firmware that must be removed first.- Docs: USB audio adapters (
docs/bluetooth-audio.md, "USB audio"). - The system image and the boot area changed. An update keeps
/data.
The full list of changes: CHANGELOG.md.
Android 9 on the Spotify Car Thing as a wired Apple CarPlay receiver, with DiPlay.
What you need
- A Spotify Car Thing whose stock software runs from slot A
- A USB-C hub with Power Delivery input and USB-A ports (tested: Anker 6-in-1), and a PD charger
- A USB-C cable, and a Mac or a Linux computer with Python 3.8 or later, git, and libusb (macOS:
brew install libusb). Windows is not supported.
First install
- Download
plaything-0.2.0-beta.zipbelow, unzip it, and open a terminal in the folderplaything-0.2.0-beta. - Disconnect the Car Thing. Hold presets 1 and 4 (the left and right ends of the top row), connect it directly to the computer, and release after about 3 seconds.
- Run
python3 flash.py install, and push Enter at each question. The tool backs up the full eMMC first (about 6 minutes; keep thebackups/folder), and it tells you when to connect again with preset 4. - When the tool says DONE, connect the Car Thing to the hub with the charger. PlayThing starts in about 1 minute.
If PlayThing or superbird-android is already installed: hold preset 4 while you connect, then run python3 flash.py install. On a Car Thing with the newer Spotify U-Boot, the tool asks for one more connection with preset 4.
Hold preset 1 while you connect to start the stock software at any time. The README in the folder has all the steps, the buttons, and what to do if something goes wrong.
In the zip
| File | Content |
|---|---|
system.raw.xz, boot-area.img, manifest.json |
The image, with placeholders |
flash.py, blobs.py |
The flash tool. It downloads the Mali GPU driver, the video decoder firmware, DiPlay 0.2.20, and Droid-ify 0.7.8 from their public sources, and checks their SHA-256. |
kernel-source.tar.xz, aosp-gpl-source.tar.xz |
The source code of the GPL and LGPL parts |
README.md, SHA256SUMS |
SHA-256 of the zip: 6d8f990f32dc506f71f67548114f438436f91efb1ad94c4713e11238cf8d1dcd
SHA-256 of the finished image (after the tool adds the downloaded files): 7df717e160c194d11cca4e9f3f41735f54e299fdfb0cf4aa7450310fadcc4dd2
Thanks to DiPlay by shihabal3amri, which does the CarPlay work.