Reverse Engineering efforts of the AMX MST701
Go to file
2024-12-26 19:02:35 +01:00
linux dt: Fix touchscreen 2024-12-21 13:51:43 +01:00
notes doc: Add notes 2024-12-26 19:02:35 +01:00
scripts Initial commit 2024-12-18 13:57:56 +01:00
README.MD doc: Add notes 2024-12-26 19:02:35 +01:00

AMX MST701 Reverse Engineering

The AMX MST701 is a nice little tablet intended for media control in conference rooms. It features a nice full-color TFT, a speaker, and touchscreen for user input, all powered over PoE.

This repository aims to document the hardware to allow repurposing as this device has now reached its end of life.

Hardware

  • LCD: Custom 1024x600 full-color TFT, connected over LVDS
  • Touchscreen: TSC2048, connected over SPI
  • Ethernet: AX88772BLF, connected over USB (usbh1)
  • Ethernet (unused): SMSC8720A, connected via (R)MII+SMI
  • USB: Internal USB-OTG port or External USB-A port (via usbotg)
  • Audio: SGTL5000 + Speaker amp + Microphone, connected over i2s/i2c
  • Power: TPS65150, DA9053
  • CPU: i.MX53 (single-core @ 1 GHz)
  • RAM: 512 MB, 327 MB usable (rest is for GPU/VPU)
  • Storage: 4 GB Micro-SD card
  • Power: PoE
  • Misc: Power/User button on the top right, LED notification lights (unpopulated)
  • Misc dev: Debug LED on SoM, UART header on J3: [?, TX, GND, RX]

Note: The "generic" system components are placed on a little SoM mounted on the main PCB.

Original Software

The original system runs on an ancient 2.6 kernel, with a giant monolithic binary for the official functionality. Audio runs through ALSA, display output is directly written to the framebuffer/DRM. The system is booted by a heavily modified U-Boot that also appears a little broken (e.g. passing kernel arguments doesn't really work).

How to Explore?

  • Passive: Open the device, grab the SD card, browse.
  • Active: Remove the SD card, patch the root login password, boot the system, log in over serial.

See (uncurated) details in notes.md and misc files.

Running Custom Linux

All system components have mainline Linux support. The necessary device tree can be found in linux.

To set up your custom SD card, follow these steps:

  1. Write linux/sd_card_head.img to an SD card.
  2. Partition the SD card as needed for your distribution, keeping a 40 MB space before the first partition
  3. Write rootfs to SD card (e.g. ArchLinuxArm)
  4. Compile Linux kernel (see below) and use scripts/flash_sd.sh /dev/sdX to flash kernel to the SD card (it goes into that "empty" 40 MB space)
  5. Copy Linux kernel modules to rootfs

For future updates via SSH, look into scripts/upload_and_flash.sh.

Compiling Linux

  • Make sure to include the full cmdline hardcoded in the kernel as the U-Boot is a little flaky:
    • console=ttymxc0,115200 root=/dev/mmcblk0p1 rw fbcon=rotate:2
    • or for debugging: earlyprintk=serial,ttymxc0,115200 console=ttymxc0,115200 root=/dev/mmcblk0p2 rw fbcon=rotate:2 loglevel=7
  • Make sure to include all drivers for the hardware
  • Copy and compile the device tree provided in linux/imx53-amx-mst701.dts to the kernel dir and add it to the build system.
  • Use build script scripts/build.sh to build a patched uImage with DTB attached to the kernel

Open Issues

  • Not yet implemented
    • Backlight (configured active by bootloader for now)
    • Notification LEDs (not populated on HW anyways)
  • Broken
    • Touchscreen mapping is off (offset and skewed), prossibly fixable in libinput via transformation matrix.
    • Speaker-amp (gpiochip4,2) not turned on automatically (needs to be activated using gpioset for now)