superbird (Spotify Car Thing) should and could be a brilliant device with a compact package, good enough I/O and a soc better than Raspberry Pi 2 W (although without WiFi and ports). Please keep in mind that this is an embedded device, don't expect it to solve any complicated tasks!
Anyway, if you still think this will become e-waste for you, you can for sure support this project by sending it to me :)
TRY EVERYTHING BELOW AT YOUR OWN RISK!!! If you don't know what you are doing, STOP.
Kernel repo: https://github.com/alexcaoys/linux-superbird-6.6.y
For notes on my kernel tweaks as well as support matrix, please refer to BUILDING.md
.
Compiled Kernel will be available on Kernel Repo release section.
The only major issue now is the display refresh rate is not considered as 60Hz within the system, not sure what is the actual refresh rate though. Please refer to this issue for details.
My Buildroot rootfs is available on this release page. But Buildroot is pretty much a customizable system so do try it out on your own. It's amazing!
Beaware of all the consequences and you can get started.
Please follow the section Boot using stock partition table below.
- Please follow the steps in
PARTITIONING.md
to repartition and restore the system image. - send
env/env_full_custom.txt
to the device. Please refer to the section Boot using custom partition table below for details. - after login using
ssh
,/root/first_login.sh
to run some additional touchups.
Please read BUILDROOT.md
for additional tips/details, etc.
- pyamlboot: https://github.com/superna9999/pyamlboot (For
pyusb
to work, please check) - Restore partitions using superbird-tool:
- kernel params: https://www.kernel.org/doc/html/v6.6/admin-guide/kernel-parameters.html
In order for the display color to work properly, we need to bypass init_display
within u-boot, you can either
-
restore
uboot_envs/env_full_dualboot.txt
using superbird-tool--send_full_env
feature, or -
enter from USB mode and then enter superbird-tool
--burn_mode
Thanks @Fexiven for noticing this (our discussion here).
I took parts from superbird-tool
and wrote the script for booting custom stuff: Please check amlogic_device.py
.
All in one tarball is available on Release page. cd
into the folder and ./initrd.sh
to boot into initrd.
I created an Buildroot uInitrd image in case anything need an in-RAM system (repartitioning for example), please find it in Release and use initrd/env_initrd.txt
in this repo to boot. You will need this often when you are working to build an embedded system (ie. Buildroot)
Please use python amlogic_device.py -i ENV_FILE KERNEL_FILE INITRD_FILE DTB_FILE
to boot kernel + dtb + uInitrd from host. Please check initrd
folder.
set active_slot=_b
and clear dtbo_b partition. Otherwise custom dtb won't be loaded.
- Create empty
dtbo_b
andboot_b
partitions bydd
and restore to device. - Restore new buildroot partition to
system_b
. - Use
uboot_envs/env_b.txt
in this repo to boot. (python amlogic_device.py -c ENV_FILE KERNEL_FILE DTB_FILE
to boot kernel + dtb from host)
After repartitioning and restoring the rootfs as PARTITIONING.md
.
Use uboot_envs/env_p2.txt
in this repo to boot.
python amlogic_device.py -c ENV_FILE KERNEL_FILE DTB_FILE
to boot kernel + dtb from host, OR- Send
env/env_full_custom.txt
to the device. Button 4 for burn mode, Normally it will load envs frombootargs.txt
withinmmcblk2p1
and then boot intommcblk2p2
usingImage
andsuperbird.dtb
frommmcblk2p1
.