Amlogic S905(-H)

The Amlogic S905, also known as Meson GXBB, is a fairly capable high-end media player SoC mainly used in Android set-top boxes. It's capable of hardware decoding up to 4K@60fps, for multiple formats including H.264, AVS+, and 10-bit, and part of the S9 family of Amlogic chipsets. It has great U-Boot and mainline Linux support, making it a great candidate for building a set-top box or single-board computer powered by postmarketOS.

There's also the Amlogic S905-H SoC, which merely just includes Dolby licenses.

Boot process
See: Amlogic

BL1 looks for a valid and signed BL2 at different offsets depending on the storage media:


 * On an SD card: offset 512, header and checksum from offset 528 to 623, BL2 and FIP at offset 4608 onwards
 * On eMMC: offset 0, header and checksum from offset 16 to 111, BL2 and FIP at offset 4096 onwards

There's a bug where, because of the zero-offset requirement on eMMC, MBR structures cannot coexist, requiring tweaks to allow an MBR parition table to coexist. Further reading: https://github.com/LibreELEC/amlogic-boot-fip/pull/8

BL2 is signed by using a proprietary utility from Amlogic called, for example:

There's a replacement for  called. See https://github.com/afaerber/meson-tools. For example, one could use: It has been confirmed to work on ODROID-C2 and Videostrong KII Pro (videostrong-kii-pro).

GPU and hardware acceleration
Works. Lima is used for hardware acceleration.

IR RX
Works. Aftermarket and original IR remotes are expected to work out of the box (as seen on Videostrong KII Pro (videostrong-kii-pro)). Doesn't require much configuration.

Audio
Works. Requires a device tree patch on the Videostrong KII Pro (videostrong-kii-pro), that adds the appropriate nodes (else the card is never pobed) which is slowly making its way upstream. HDMI audio works, but S/PDIF is untested.

Hardware decoding and encoding
See: https://libera.irclog.whitequark.org/linux-amlogic/2023-02-10

The Amlogic S905(-H) supports hardware decoding up to 4K@60fps, but in the mainline kernel it's limited to 1080p. Downstream kernels relied on lengthy hacks to get it working up to 4K, and thus they were not included in the mainline kernel (to their defense Amlogic did successfully enable 4K playback on 3.x kernels).

To get hardware encoding to work, refer to this issue comment. It boils down to:
 * Making sure CONFIG_VIDEO_MESON_VDEC is set:  (See )
 * Build FFmpeg from https://github.com/jc-kynesim/rpi-ffmpeg/commits/dev/4.4/rpi_import_1

There are some issues, however:
 * Needs non-free firmware
 * 10-bit media (e.g. 4K) won't work
 * MPEG1/2/4 support is broken

So sometimes you may want to resort to using software decoding.

Hardware encoding doesn't work yet.

DVB
Needs a demux driver.

OTG
Untested. Broken according to linux-meson.com

U-Boot
Most (all?) set-top boxes based on this SoC use U-Boot as their primary bootloader, but mainline U-Boot has great support for this SoC. Running mainline U-Boot as the primary bootloader and as the secondary bootloader works fine. If you want to use U-Boot as the primary bootloader, refer to Videostrong KII Pro (videostrong-kii-pro)/U-Boot as primary bootloader, replacing mentions of with your device or one close enough (which have RAM timings that work on your device). Please note that BL2 and BL30 are proprietary; there's an on-going effort on porting mainline Arm Trusted Firmware-A to Videostrong KII Pro (videostrong-kii-pro).