AIoT.IO.VN
AIoT.IO.VN
SmartHome SERIES
🌐 VI • EN

LG SoundBar SK8 - Hardware & Architecture: MediaTek MT8530 SoC, MTD Layout, and Dual-Bank A/B

Ng Nghia Phan • • ⚡ 3 min read • -- views • --
VI EN
TABLE OF CONTENTS (Nhấn để xem)

This article directly analyzes the internal hardware architecture, flash memory partitioning, and operating system boot sequence of the LG Soundbar SK8—foundational knowledge required before modifying firmware.


I. Detailed Hardware Specifications

The SK8 mainboard integrates MediaTek’s MT8530 smart audio processor coupled with specialized peripheral controllers:

ComponentTechnical DetailsOperational Notes
SoC (CPU)MediaTek MT8530 (Dual-core ARM Cortex-A9 @ 1.0 GHz)ARMv7-A, VFPv3-D16 floating point.
RAM256 MB DDR3The hardware contains two 128MB RAM chips. The DSP has a separate dedicated RAM chip.
Flash MemoryHynix H27U4G8F2D (SLC NAND 512MB)4096B data + 128B OOB per page, protected by MediaTek’s hardware NFI BCH ECC engine.
OS / KernelLinux 3.10.26 (arm-linux-gnueabihf)Glibc 2.23, BusyBox SysV init.
Wi-Fi / BTBroadcom BCM43xx (802.11ac 2.4/5GHz + BT 4.2)Driven by wl.ko, initialized via insert_wifi.sh during boot.
Audio DSPHardware Dolby Atmos / DTS:X DecoderCustom I2S/SPI link to SoC, driving Class-D power stages and 5.8GHz RF transmission to the wireless subwoofer.

II. NAND MTD Layout & Dual-Bank A/B Boot Mechanics

The system utilizes an A/B Dual Bank architecture similar to Android Seamless Updates to prevent bricking during OTA flashing:

+---------------------------------------------------------------------------------+
|                                MTD PARTITION MAP                                |
+-----------------------------------+---------------------------------------------+
| /dev/mtd0 - /dev/mtd8             | U-Boot, Boot Env, MAC, Calibration, DRM     |
| /dev/mtd9                         | Kernel Bank A (zImage ~3MB)                 |
| /dev/mtd10                        | Kernel Bank B (zImage ~3MB)                 |
| /dev/mtd11                        | Rootfs Bank A (SquashFS ~65MB, read-only)   |
| /dev/mtd12                        | Rootfs Bank B (SquashFS ~65MB, read-only)   |
| /dev/mtd13 - /dev/mtd20           | ubi_boot, /mnt/db (RW), /mnt/nfs, SysLog    |
+-----------------------------------+---------------------------------------------+

Dual-Bank Operating Principle:

  1. When an OTA update executes, new firmware is written to the idle bank (e.g., if Bank A is active, Bank B is flashed).
  2. The upg_prog flasher validates the 32-bit XOR checksum against the new bank.
  3. If verification succeeds, the boot flag in MTD environment (boot_bank) flips to the updated bank and reboots.
  4. If the new bank fails to boot, U-Boot automatically reverts to the previous operational bank.

III. System Boot Sequence

graph TD A["AC Mains Connected"] --> B["MICOM boots & engages main power relay"] B --> C["U-Boot loads from /dev/mtd0 -> Reads boot_bank flag"] C --> D["Loads Linux Kernel 3.10.26 (mtd9 or mtd10)"] D --> E["Mounts SquashFS RootFS to / (mtd11 or mtd12)"] E --> F["/sbin/init -> /etc/init.d/rcS"] F --> G["/etc/init.d/rcS.custom (Custom Mod Hook)"] F --> H["/usr/bin/bdpprog.sh -> Launches Audio Engine"]

Custom Hook Point: We inject /etc/init.d/rcS.custom into the boot flow to automatically spawn telnetd, shairport-sync, and airbridge as soon as the kernel initialization finishes.


IV. Stock LG ROM Binary Layout (71.25MB)

The official release binary SK8_Main_20061834.bin measures exactly 71,256,864 bytes:

Hex Offset RangeSizeComponentFunction
0x00000000 - 0x00556CCF5,598,416 bytesHeader & KernelBoot headers and compressed zImage.
0x00556CD0 - 0x043C0ACF65,458,592 bytesRootfs SquashFSCompressed Linux OS and userspace binaries.
0x043C0AD0 - 0x043F4CEF213,536 bytesPadding & PIT/VeRSVersion table and partition metadata.
0x043F4CF0 - 0x043F4CFF16 bytesSecurity TrailerCryptographic verification signature and global XOR sum.

16-Byte Security Trailer Structure:

[ 58 6F 52 53 ] [ XX XX XX XX ] [ 53 52 6F 58 ] [ FF FF FF FF ]
     XoRS         XOR Checksum        SRoX         End Padding
  • XoRS (0x586F5253) and SRoX (0x53526F58): Identification magic bytes.
  • XOR Checksum: 32-bit XOR checksum computed across the entire preceding 71MB payload.
  • During firmware repacking, all modified data must be padded with 0x00 to match the exact byte boundary and this XOR sum must be recalculated.
Series •

LG-Soundbar

2 Tập
  1. LG SoundBar SK8 - Hardware & Architecture: MediaTek MT8530 SoC, MTD Layout, and Dual-Bank A/B Reading
  2. LG SoundBar SK8 - Reviving a Decade-Old Dolby Atmos Soundbar with Custom Firmware

Discussion & Feedback 0

Share your questions, feedback or insights with the community