Skip to content

S905l3a Box

Hardware Notes

Warning

This One-KVM image has been tested on ZTE B863AV3.2M and CM311-1a-CH. Other S905L3A boxes may not be fully compatible. If incompatible, consider the Docker-based deployment below.

When using armbian-install, the following devices/DTBs are supported:

--------------------------------------------------------------------------------------
ID    SOC        MODEL                               DTB                                               
--------------------------------------------------------------------------------------
301   s905x2     X96-Max-4GB,Tx5-Max                 meson-g12a-x96-max.dtb                            
302   s905x2     X96-Max-2GB,A95X-F2                 meson-g12a-x96-max-rmii.dtb                       
303   s905x2     MECOOL-KM3-4G                       meson-g12a-sei510.dtb                             
304   s905l3a    E900V22C-D,CM311-1a-CH,IP112H       meson-g12a-s905l3a-e900v22c.dtb                   
305   s905l3a    CM311-1a-YST                        meson-g12a-s905l3a-cm311.dtb                      
306   s905l3a    M401A,UNT403A,B863AV3.2-M           meson-g12a-s905l3a-m401a.dtb                      
0     Other      Customize                           Enter-custom-dtb-name                              
--------------------------------------------------------------------------------------

Integrated Image Deployment

  1. Write the integrated image to a USB drive or TF card
  2. Boot into Android TV
  3. In Android TV, obtain ROOT and install an APK to switch boot to external media (USB/TF)
  4. Use the APK to boot into Armbian from external media, then run armbian-install to install to eMMC using the correct model

Install example: install

Docker Deployment

  1. Flash a ROOT-capable Android and install the APK to switch external boot
  2. Prepare a bootable Armbian on a USB drive; boot it using Android
  3. Use armbian-install to write Armbian to eMMC
  4. Replace package mirrors; install Docker
  5. Run One-KVM in Docker, ensure the OTG port is set to device mode, and make it start at boot. After confirming the container is healthy, enable Docker and container autorun

Commands:

  • Run the kvmd container
    1
    2
    3
    4
    5
    sudo docker run --name kvmd -itd --privileged=true \
        -v /lib/modules:/lib/modules:ro -v /dev:/dev \
        -v /sys/kernel/config:/sys/kernel/config -e OTG=1 -e VIDEONUM=1 \
        -p 8080:8080 -p 4430:4430 -p 5900:5900 -p 623:623 \
        registry.cn-hangzhou.aliyuncs.com/silentwind/kvmd
    
  • Set OTG to device mode

    1
    2
    3
    4
    5
    6
    # Enable OTG device mode
    sudo echo device > /sys/class/usb_role/ffe09000.usb-role-switch/role
    # Add the above to /etc/rc.local
    sudo nano /etc/rc.local
    # Make executable
    sudo chmod +x /etc/rc.local
    
  • Enable autorun

    sudo systemctl enable docker
    sudo docker update --restart=always kvmd
    

Usage

Hardware safety warning

To avoid issues such as the target failing to boot or detect devices (and in rare cases hardware damage), take one of these precautions before using a dual-headed USB cable:

Option 1: cut/remove the red 5V (VCC) wire in the USB cable so only the data lines (D+/D−) and ground remain, breaking the power path.

Option 2: insert a USB hub with its own power switch into the USB link and keep that switch off while connecting.

Some low-power targets can back-power from the KVM via the OTG port before their main power is applied, leaving them in a bad state that persists even after you power them normally.

Unless you fully understand the risks, use one of the safeguards above to protect your hardware.

Data safety reminder

Avoid hard power-offs. Cutting power while eMMC writes are in progress can corrupt data.

If you must cut power, run sync after write operations. For shutdowns/reboots, prefer poweroff or reboot so the system flushes data cleanly.