Category:Amlogic
Amlogic | |
Name | Amlogic Incorporated |
---|---|
Country | USA / Worldwide |
Industry | ARM |
Resources | English homepage, Chinese homepage |
Amlogic Incorporated, or Amlogic (sometimes AMLogic) is a chip maker company which has its headquarters in the USA. They mainly operate in China.
They mainly produce SoCs suitable for use in set top boxes running either AOSP or Android TV, but also produce SoCs used in televisions.
Discussion
There's an IRC channel hosted on the Libera.Chat IRC network by the linux-meson.com community:
- Network:
irc.libera.chat
- Port: 6667 (plain) or 6697 (TLS, secure)
- Channel:
#linux-amlogic
- Web chat: Libera.Chat KiwiIRC
For anything postmarketOS-related on Amlogic there's also an IRC channel on OFTC:
- Network:
irc.oftc.net
- Port: 6697 (TLS, secure)
- Channel:
#amlogic-postmarketos
- Web chat: OFTC WebChat
- Matrix bridge: #oftc_#amlogic-postmarketos:pixie.town
Devices with an Amlogic SoC
Generic device ports
These devices are combined into generic ports. Refer to chipset when looking for your device.
Device | Architecture | Mainline | USB Net | Flashing | Screen | Wifi | FDE | Battery | 3D | Audio | Bluetooth | HDMI/DP | USB-OTG |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Amlogic Generic TV Box | aarch64 | Y | N | - | - | - | - | Y | Y | - | Y | - |
Non-generic device ports
Other devices that are not combined into generic ports.
Device | Chipset | Architecture | Booting | Mainline | USB Net | Flashing | Screen | Wifi | FDE | Battery | 3D | Audio | Bluetooth | HDMI/DP | USB-OTG |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ainol Novo 10 Hero | Amlogic AML8726-MX | armv7 | No | ||||||||||||
Amediatech x96 Air | Amlogic S905X3 | aarch64 | Yes | Y | Y | N | - | Y | N | N | Y | ||||
Amediatech x96 Max Plus | Amlogic S905X3 | aarch64 | Yes | Y | Y | N | - | Y | N | N | Y | ||||
Amediatech X96 Mini | Amlogic S905W | aarch64 | Yes | Y | Y | N | - | Y | P | N | - | ||||
Beelink gt1 (Ultimate) | Amlogic S912 | aarch64 | Yes | Y | - | Y | Y | P | - | Y | Y | Y | Y | - | |
HomeX X1 | Amlogic S905X | aarch64 | No | - | |||||||||||
HTV box HTV 3 | Amlogic S805 | armv7 | No | ||||||||||||
Insignia Fire TV Edition (Full HD) | Amlogic T950Z | aarch64 | No | - | - | ||||||||||
LETV U2 | Amlogic S812-H | armv7 | No | ||||||||||||
Libre Computer AML-S805X-AC-V1.0 | Amlogic S805X | aarch64 | Yes | Y | - | N | - | - | - | Y | Y | - | Y | - | |
Libre Computer AML-S905X-CC-V1.0 | Amlogic S905X | aarch64 | Yes | Y | - | N | - | - | - | Y | Y | - | Y | - | |
Mecool KM2 Plus | Amlogic S905X4 | aarch64 | No | N | N | - | |||||||||
ODROID N2+ | Amlogic S922X (rev C) | aarch64 | Yes | N | - | - | Y | - | - | - | - | - | - | ||
Onn uhd | Amlogic S905X2 | aarch64 | Yes | Y | Y | ||||||||||
Radxa Zero | Amlogic S905Y2 | aarch64 | Yes | Y | Y | P | P | - | Y | N | Y | Y | |||
TrekStor SurfTab ventos 7.0 HD | Amlogic AML8726-MX | armv7 | N | ||||||||||||
Vensmile M8S | Amlogic S812 | armv7 | No | ||||||||||||
ZTE ZXV10 B860HV5 | Amlogic S905X2 | aarch64 | Yes | Y | - | N | - | N | - | - | Y | N | Y | Y |
Supported SoCs
SoC | Codenames | Arch | Year | Mainline | UART | USB | Storage | Display | CPU | GPU | Pinctrl | I²C | Audio | Video | Thermal | WiFi | BT | Modem | GPS | Camera | Suspend |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Amlogic AML8726-MX | Meson6 | armv7f | 2012 | Yes | P | N | N | N | P | N | N | N | N | N | N | - | - | - | - | - | |
Amlogic S805 | Meson8b | armv7f | 2014 | Yes | Y | Y | P | P | Y | Y | P | Y | N | P | Y | - | - | - | - | - | |
Amlogic S812/S812-B/S812-S/S802 | Meson8,Meson8m2 | armv7f | 2014 | Yes | Y | Y | P | P | Y | Y | P | Y | N | P | Y | - | - | - | - | - | |
Amlogic S905 | GXBB | aarch64 | 2015 | Yes | Y | Y | P | Y | Y | Y | Y | Y | Y | P | Y | - | - | - | - | - | N |
Amlogic S905D2/S905X2/S905Y2 | G12A | aarch64 | 2019 | Yes | Y | Y | P | Y | Y | Y | Y | Y | Y | P | Y | - | - | - | - | - | |
Amlogic S905D3/S905X3/S905Y3 | SM1 | aarch64 | 2019 | Yes | Y | Y | P | Y | Y | Y | Y | Y | Y | P | Y | - | - | - | - | - | |
Amlogic S905W/S905D/S905X/S905L/S805X/S805Y/S905Z | GXL | aarch64 | 2016 | Yes | Y | Y | P | Y | Y | Y | Y | Y | Y | P | Y | - | - | - | - | - | |
Amlogic S905X4/S905C2 | SC1 | aarch64 | 2021 | No | <--- No encoding yet --> | - | - | - | - | - | |||||||||||
Amlogic S912 | GXM | aarch64 | 2016 | Yes | Y | Y | P | Y | Y | Y | Y | Y | Y | P | Y | - | - | - | - | - | |
Amlogic S922X/A311D | G12B | aarch64 | 2019 | Yes | Y | Y | P | Y | Y | Y | Y | Y | Y | P | Y | - | - | - | - | - |
-H variant
There's also a -H variant of some Amlogic SoCs (like the S905X, S812, etc), which merely include Dolby licenses, but otherwise they're the same as the non-H counterparts.
Boot process
Generally, the boot ROM (=BL1) of Amlogic-based devices either boot to:
- SPI NOR
- eMMC
- NAND
- an SD card
- USB (via a custom protocol, please note that BL1 cannot boot from a USB stick)
Order depends on POC
.
You can force them to boot from an SD card or USB (via Amlogic's in-house protocol) by using a HDMI dongle(There are seem a lot of clone of it for booting via USB in china). This is a suitable alternative for those who want to boot to an SD card without wiping everything else, and for devices that have a locked flash mode that would be bricked if the eMMC is wiped. Some devices e.g. Libre Computer AML-S905X-CC-V1.0 (librecomputer-lepotato) also have a button to enter USB mode or, in the case of the Libre Computer AML-S905D3-CC-V0.2 (librecomputer-solitude), have a switch to force eMMC/SD boot.
BL1 looks for an @AML
header which contains multiple entries for BL2. The header roughly looks like this:
struct aml_hdr {
/* before magic word: random bytes ignored by BL1 */
uint32_t magic; /* "@AML" */
uint32_t total_size; /* header+binary size */
uint8_t header_size; /* header size */
uint8_t root_key_index; /* amlogic secureboot-related */
/* version */
uint8_t version_major;
uint8_t version_minor;
uint32_t padding1;
/* checksum */
uint32_t digest_type;
uint32_t digest_offset;
uint32_t digest_size;
uint32_t data_offset;
/*
* signing the BL2 image,
* this is completly ignored if secureboot isn't enabled
*/
uint32_t key_type;
uint32_t key_offset;
uint32_t key_size;
uint32_t data_size;
uint32_t payload_type;
uint32_t payload_offset;
uint32_t payload_size;
uint32_t padding2;
} __packed;
Depending on the SoC family, what happens before U-Boot runs may differ; refer to their respective SoC page.
U-Boot quirk in some set-top boxes
Most set-top boxes have U-Boot on the eMMC, which then (for some reason) looks for the following U-Boot scripts if a "multiboot" mode is triggered on either an SD card or a USB device (FAT32 boot partition!):
aml_autoscript
s905_autoscript
s805_autoscript
(if using an Amlogic S8XX SoC. Not packaged.)
If it doesn't find either ones, it'll boot to Android.
This is believed to be a quirk enabled by Amlogic themselves for their reference boards and since box manufacturers usually base their box on reference boards, including u-boot, it's possible that it has been unintentionally retained.
Triggering "multiboot" mode depends on the set-top box, but they generally have a button at the bottom or hidden inside the AV port. Press it while plugging in your power supply and it should work.
We use this quirk to load a mainline U-Boot and then boot postmarketOS (see soc-amlogic-s905PMOS).
Sometimes, however, the "multiboot" mode isn't available on some devices or after some Android TV upgrades; that is the case for the Xiaomi Mi Box 3 (xiaomi-once), which doesn't have this feature unless you manually implement it in the U-Boot environment via the U-Boot shell (some devices might disable the U-Boot shell as well).
Flashing
Amlogic USB Burning tool
The Amlogic USB Burning tool is Amlogic's proprietary flashing software. It's used to flash Amlogic devices by using Amlogic's in-house protocol. It only works on Microsoft Windows.
There's also another proprietary CLI tool from Amlogic called update
. It allows you to read the Amlogic SoC info, flash the firmware, temporarily boot firmware (u-boot) (just like fastboot boot boot.img
), extract the firmware and lock the flash mode with a password in the flash mode.
It has a Microsoft Windows version and a GNU+Linux version.
That software is built with an old toolchain and most binaries are x86-only. |
Some other software is built around this CLI tool such as aml-linux-usb-burn, aml-usb-load-uboot and aml-flash-tool
aml-flash-tool bundles an ARM build of the CLI tool. |
pyamlboot
pyamlboot is an effort to reverse-engineer Amlogic's custom USB boot protocol. It allows you to boot any binary you want (depending on the device). Instructions on how to use it can be found on the GitHub page linked below.
See also
- Linux and U-Boot mainlining status
- Boot into flashing mode with a HDMI dongle
- pyamlboot
- Port Amlogic-based set top boxes
- Boot flow
- Efforts to reverse-engineer Amlogic's proprietary utils (those utilities are used above to create a working FIP)
- Reversing BL2
Pages in category "Amlogic"
The following 8 pages are in this category, out of 8 total.