Jump to content

Amlogic S905W/S905D/S912/S905X/S905L/S805X/S805Y/S905Z

From postmarketOS Wiki
Revision as of 19:42, 7 December 2023 by FerassElHafidi (talk | contribs)
Amlogic S905X/
S905W/
S905Z/
S905L/
S805X/
S805Y
Amlogic S905X chip
Amlogic S905X chip
Manufacturer Amlogic
Name S905X/
S905W/
S905Z/
S905L/
S805X/
S805Y
Architecture aarch64
CPU 4x 1.2/1.512/2 GHz Cortex-A53
GPU Mali-450 MP3
Year 2016
Process 28nm
Mainline yes
Community Page https://linux-meson.com/
Components
CPU
Works
UART
Works
Storage
Partial
USB
Works
Display
Works
GPU
Works
Pinctrl
Works
I²C
Works
SPI
No data
Audio
Works
Video
Partial
Thermal
Works
NPU
No data
Suspend
No data
Ethernet
No data
SATA
No data


The S905X/S905W/S905Z/S905L/S805X/S805Y are very similar to each other and are part of the GXL Amlogic SoC family.

Here are the differences between them:

  • S905Z: Used in the Amazon Fire TV 3 (amazon-needle), seems to be identical to the S905X except for the lack of ethernet,VP9 hardware decoding).
  • S905W: A slightly higher clock variant (CPU cores up to 2 GHz) of S905X
  • S905L: Identical to the S905X except for the lack of VP9 decoding, camera interface and TS inputs.
  • S805X: a slightly lower clocked (CPU cores up to 1.2 GHz) and stripped down variant of S905X
  • S805Y: Used in Xiaomi Mi TV Stick (xiaomi-aquaman), seems to be identical to the S805X.

Devices

Device Codename Chipset Mainline booting
Amazon Fire TV 3 amazon-needle Amlogic S905Z No
Amediatech X96 Mini amediatech-x96-mini Amlogic S905W Y Yes
HomeX X1 AK1708m-16 Amlogic S905X No
Libre Computer AML-S805X-AC-V1.0 librecomputer-lafrite Amlogic S805X Y Yes
Libre Computer AML-S905X-CC-V1.0 librecomputer-lepotato Amlogic S905X Y Yes
OTT X96 ott-x96 Amlogic S905X Y Yes
Xiaomi Mi Box 3 xiaomi-once Amlogic S905X-H Y Yes
Xiaomi Mi TV Stick xiaomi-aquaman Amlogic S805Y P Yes

Boot process

See: Amlogic#Boot process

BL1 looks for a header (named @AML header) at different offsets depending on the storage media:

  • On an SD card or eMMC: offset 512 (512 bytes completly ignored by BL1), header and checksum from offset 528 to 623, payload at offset 4608 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 aml_encrypt_gxb, but there's a replacement called gxlimg. See https://github.com/repk/gxlimg. It has been confirmed to work on Libre_Computer_AML-S905X-CC-V1.0_(librecomputer-lepotato)

Then BL2 loads the following:

  • BL30/SCP_BL2: System control processor firmware
  • BL31: EL3 Runtime Software
  • BL32: OPTEE (optional)
  • BL33: U-Boot

All bootloader stages except U-Boot are proprietary. BL31 can be replaced with upstream Arm Trusted Firmware-A. There's also an ongoing effort led by User:F to reverse-engineer BL2 and port U-Boot SPL.

See also