Skip to main content

ArmSoM-CM7s Product Introduction

Let's get to know the ArmSoM-CM7s and ArmSoM-CM7s-IO in 5 minutes

CM7s Introduction​

ArmSoM-CM7s Core Board: compact in size, powerful in performance, built specifically for deep embedded scenarios. The board comes with the Rockchip RK3588S 8-core 64-bit flagship processor (4×Cortex-A76 @ 2.4GHz + 4×Cortex-A55 @ 1.8GHz), built on an advanced 8nm process, offering great computing power and excellent energy efficiency. It features an ARM Mali-G610 high-performance GPU, fully compatible with OpenGL ES 3.2, OpenCL 2.2, and Vulkan 1.2 graphics APIs. It also has a powerful 6 TOPS NPU, supporting INT4/INT8/INT16 mixed-precision computing, easily handling edge AI inference.

The module offers a variety of bus and expansion interfaces, supports eMMC flash memory of different capacities, and can be widely used in industrial IoT, edge computing, and smart devices.

ArmSoM-CM7s

ArmSoM-CM7s
Rockchip RK3588s

Relying on a strong ecosystem and a variety of expansion accessories, ArmSoM can help users easily go from ideas to prototypes to mass production, making it an ideal creative platform for makers, dreamers, and hobbyists.

tip

armsom-cm7s v1.1 CN2 pins 2 and 4 aren't working, will be fixed in the next v1.2 version

Key parameters​

  • SOC:Rockchip RK3588S (8nm LP process)
  • CPU:8-core 64-bit(4×Cortex-A76@2.4GHz + 4×Cortex-A55@1.8GHz)
  • GPU:ARM Mali-G610 3D GPU,supports OpenGL ES3.2 / OpenCL 2.2 / Vulkan 1.2
  • NPU:6 TOPS computing power, supports mixed INT4/INT8/INT16 operations
  • RAM:Supports 4GB/8GB/16GB/32GB LPDDR4/LPDDR4x
  • eMMC:32/64/128/256GB eMMC
  • interface:On-board 3×100-pin connector (DF40C-100DP-04V), supports multiplexed buses and control pins like Type-C/DP1.4, HDMI 2.1/eDP1.3, MIPI DPHY/CSI, USB 3.0/2.0, SATA III/PCIe 2.1 ×1, SDIO 3.0/RGMII, SDMMC, and I2C/I2S/UART/SPI/CAN/PWM/GPIO.
  • Power supply:Input DC 5V (MAX 2500mA); Output DC 3.3V/1.8V (MAX 600mA)
  • Size:55 x 40 x 1.6 mm
  • Operating temperature:0℃ ~ 80 ℃
  • Input:DC 5V MAX 2500mA
  • Output: DC 3.3 V max. 600 mA and DC 1.8 V max. 600 mA
  • PCB size:55 x 40 x 1.6 mm (L x W x H)

Module interfaces and multiplexed functions​

CM7s exposes display, camera, USB and storage expansion signals through its board-to-board connectors for custom carrier designs. The table below describes module signal capabilities; physical connector counts and available functions depend on the carrier hardware and software configuration.

Interface categoryCount and functionNotes
Type-C / DisplayPort1 USB 3.0 / DP 1.4 signal groupThe schematic lists 4-lane DP, Type-C USB and combined USB + 2-lane DP modes; availability depends on the carrier and software.
HDMI / eDP1× HDMI 2.1 or eDP 1.3Multiplexed alternatives, not two independent ports.
USBType-C USB 3.0 channel + 1 optional multiplexed USB 3.0 channel; 3× USB 2.0The Type-C channel is separate from high-speed expansion group 2 below. USB 2.0 comprises 1× OTG + 2× Host; do not double-count multiplexed functions or hub downstream ports.
SDMMC1× SDMMCFor storage expansion on the carrier.
SDIO / RGMIISDIO 3.0 or RGMIIMultiplexed alternatives selected by the carrier design, not two independent interfaces.
MIPI D-PHY TX1× 4-lane + 1× 2-laneTwo transmit interfaces for display expansion.
MIPI D-PHY RX2× 2-laneTwo receive interfaces for camera expansion.
MIPI CSI RX1× 4-lane or 2× 2-laneAlternative lane configurations selected according to camera wiring and configuration.
High-speed expansion group 11× SATA III or PCIe 2.1 ×1Select one function for this signal group.
High-speed expansion group 21× SATA III, PCIe 2.1 ×1 or USB 3.0Select one function for this signal group; the three alternatives are not simultaneously available ports.
Carrier design and interface multiplexing

“Or” indicates alternative functions within a signal group. Do not add these alternatives together as simultaneously available ports. The Type-C / DP channel also supports combined USB + DP lane configurations in the schematic, so it is not always a mutually exclusive choice. Type-C describes a connector form factor; DP and USB functions require the corresponding carrier circuitry. Confirm pin assignments, lane mappings and simultaneous-use combinations against the schematic, pin definitions and device tree configuration for the applicable hardware revision.

CM7s Hardware Info​

Hardware interface​

ArmSoM-CM7s-front & back

ArmSoM-CM7s-front & back
tip
  • Designed as a board-to-board connector

ArmSoM CM7s vs Raspberry Pi CM5​

Here's a comparison chart of the specs for the ArmSoM CM7s and the Raspberry Pi CM5:

SpecificationArmSoM CM7sRaspberry Pi CM5
ProcessorRK3588S SoCBroadcom BCM2712
CPU ArchitectureQuad-core ARM Cortex-A76 & Quad-coreCortex-A55Quad-core ARM Cortex-A76
GPUARM Mali-G610 MP4VideoCore VII
NPU6 TOPS computing powerNo built-in NPU
MemorySupports up to 32GB LPDDR4X2GB, 4GB, 8GB, 16GB LPDDR4
StorageeMMC storage (optional capacity)eMMC storage (optional capacity)
Display OutputHDMI 2.1 / eDP 1.3; USB 3.0 / DP 1.4 channel (including combined USB + DP modes)2x HDMI 2.0
Video ResolutionSupports 8K@60fpsSupports 4K@60fps
Network InterfaceGMAC signals exposed; RJ45 on CM7s-IO1x Gigabit Ethernet port
USB PortsType-C USB 3.0 + optional multiplexed USB 3.0; 3× USB 2.02xUSB3.0,1xUSB2.0
GPIOGPIO exposed through board-to-board connectors; 40-pin header on CM7s-IO40 pin GPIO
Expandability1× SATA III / PCIe 2.1 ×1; 1× SATA III / PCIe 2.1 ×1 / USB 3.0 (multiplexed within each group)1x PCIe 2.0
Camera Interface2× 2-lane D-PHY RX; CSI RX: 1× 4-lane or 2× 2-lane2x 4-channel MIPI CSI
Display InterfaceMIPI D-PHY TX:1× 4-lane + 1× 2-lane2x 4-channel MIPI DSI
Power Input5V5V
Dimensions55mm x 40mm55mm x 40mm
Operating System SupportDebian, Android, Ubuntu, Armbian, etc.Raspberry Pi OS, Ubuntu, etc.
Primary Use CasesHigh-end tablets, edge computing, AI, cloud computing, AR/VR, smart security, smart home, and moreEmbedded systems, industrial control, AI/machine learning, digital signage, IoT, edge computing

Product block diagram​

ArmSoM-CM7s-product

ArmSoM-CM7s-product

Hardware Specs​

CategoryFunction
SOC
  • RockChip RK3588S
  • CPU
  • RK3588S quad-core Cortex-A76 @ 2.4GHz and quad-core Cortex-A55 @ 1.8GHz, 8nm process
  • GPU
  • ARM Mali-G610 MP4 GPU
  • ARM Mali-G610 MP4 quad-core GPU, supports OpenGL ES 1.1/2.0/3.2, OpenCL 2.2, Vulkan 1.1/1.2, with a computing power of 450 GFLOPS
  • NPU
  • 6 TOPS@INT8
  • Supports INT4, INT8, INT16, and FP16 mixed operations
  • Supports deep-learning frameworks: TensorFlow, PyTorch, Caffe, and more.
  • VPU/Codec
  • Hardware decoding: supports 8K@60fps (H.265/VP9/AVS2), 8K@30fps (H.264), and 4K@60fps (AV1).
  • Hardware encoding: 8K@30fps (H.265/H.264), with simultaneous encoding and decoding.
  • ISP
  • Integrated 48MP ISP, supports HDR and 3DNR
  • RAM
  • Supports 4GB/8GB/16GB/32GB LPDDR4/LPDDR4x
  • Flash
  • 32GB/64GB/128GB/256GB eMMC
  • SDMMC signals exposed; the microSD socket is on the carrier
  • PCIe 2.1 ×1 signals exposed; CM7s-IO provides an M.2 Key M socket (PCIe 2.1 ×1)
  • Display
  • 1× HDMI 2.1 or eDP 1.3; HDMI supports 8K@60Hz or 4K@120Hz
  • 1 USB 3.0 / DP 1.4 signal group, including combined USB + DP modes; DP supports up to 8K@30Hz
  • MIPI D-PHY TX: 1× 4-lane + 1× 2-lane; MIPI DSI supports up to 4K@60Hz
  • Camera
  • MIPI D-PHY RX: 2× 2-lane
  • MIPI CSI RX: 1× 4-lane or 2× 2-lane
  • Up to 2.5Gbps per lane; available combinations depend on carrier wiring and software configuration
  • Network
  • 1x GMAC, providing RGMII/RMII interface output
  • SDIO 3.0 or RGMII: multiplexed signals selected according to the carrier design
  • PCIe
  • Group 1: 1× SATA III or PCIe 2.1 ×1
  • Group 2: 1× SATA III, PCIe 2.1 ×1 or USB 3.0
  • Select one function within each multiplexed group
  • USB
  • Type-C USB 3.0 channel; 1 additional optional multiplexed USB 3.0 channel; 3× USB 2.0
  • The optional USB 3.0 channel shares high-speed expansion group 2 with PCIe / SATA; the Type-C channel is separate
  • Type-C / DP functionality depends on the carrier design
  • Audio
  • SPDIF_Tx x2
  • I2S x4
  • PDM x2
  • Others
  • UART DEBUG x1
  • Fan-control and RTC-related signals exposed; fan connector, RTC IC and battery connector on CM7s-IO
  • RK3588S Block Diagram​

    RK3588S Block Diagram
    rk3588S block diagram

    Pin Definition​

    ArmSoM-CM7s_Pinout

    hardware documentation​

    Get CM7s schematics, DXF, and other hardware materials

    Google Drive link

    CM7s-IO Introduction​

    The CM7s-IO is the IO board for the ArmSoM CM7s, measuring 100x79x41 mm. It's great for quickly evaluating the features of the ArmSoM CM7s platform, debugging peripheral drivers, and developing system prototypes. It can also serve as a reference hardware design for products like industrial gateways, edge AI inference terminals, and multimedia interactive devices, helping users smoothly transition from prototyping to mass deployment.

    CM7s-IO Hardware Info​

    Hardware Specs​

    The CM7s-IO board is an expansion board designed specifically for the CM7s computing module, aimed at helping with system and embedded board development.

    • 1x HDMI output, 1x Type-C (DP) output
    • 4× USB 3.0 Type-A (expanded by an RTS5411S USB hub and sharing its upstream link)
    • Supports Gigabit Ethernet RJ45
    • Firmware flashing and device mode via USB Type-C
    • GPIO: 40-pin header
    • Power connector: DC barrel jack for 12V power input
    • Expansion: M.2 (M key, PCIe 2.1 ×1), microSD
    • MIPI DSI: 1x 4-lane MIPI DSI, supports up to 4K@60fps (x4)
    • MIPI CSI0: 1x 4-lane MIPI CSI, up to 2.5Gbps per lane
    • MIPI CSI1: 1x 2-lane MIPI CSI, up to 2.5Gbps per lane
    • Others: HPOUT, FAN, VRTC
    • Dimensions: 100 x 79 x 1.6 mm (3.94 × 3.11 × 0.06 inches)
    • Weight: 60g

    Hardware interface​

    ArmSoM-CM7s-IO

    ArmSoM-CM7s-IO
    tip

    The CM7s-IO Board uses 12V DC power.

    Pin Definition​

    40-PIN Socket

    ArmSoM CM7S 40Pin

    Open full-size pinout

    Checked against the CM7S-IO V1.0 schematic. Numbers in the diagram are physical pins. NC means not connected; DNP means not populated. Alternate functions require matching system configuration; legacy GPIO numbers are not Linux gpiochip line offsets.

    GPIO number (legacy)FunctionPhysical pinPhysical pinFunctionGPIO number (legacy)
    —+3.3V
    1
    2
    +5.0V—
    63GPIO1_D7 / PWM15_IR_M3 / UART1_CTSN_M1 / I2C8_SDA_M2
    3
    4
    +5.0V—
    62GPIO1_D6 / PWM14_M2 / UART1_RTSN_M1 / I2C8_SCL_M2
    5
    6
    GND—
    39GPIO1_A7 / PWM3_IR_M3 / SPI2_CS0_M0 / PDM1_SDI0_M1
    7
    8
    UART2_TX_M0 / GPIO0_B5 / I2S1_MCLK_M1 / I2C1_SCL_M013
    —GND
    9
    10
    UART2_RX_M0 / GPIO0_B6 / I2S1_SCLK_M1 / I2C1_SDA_M014
    130GPIO4_A2 / I2S1_LRCK_M0 / SPI0_CLK_M1
    11
    12
    GPIO3_B2 / UART2_RX_M2 / I2S2_SDI_M1 / PWM3_IR_M1106
    131GPIO4_A3 / UART0_TX_M2
    13
    14
    GND—
    18GPIO0_C2
    15
    16
    GPIO1_A0 / UART6_RX_M1 / SPI4_MISO_M2 / I2C2_SDA_M432
    —+3.3V
    17
    18
    GPIO1_A1 / UART6_TX_M1 / SPI4_MOSI_M2 / I2C2_SCL_M433
    42GPIO1_B2 / UART4_RX_M2 / SPI0_MOSI_M2 / PDM1_SDI3_M1
    19
    20
    GND—
    41GPIO1_B1 / SPI0_MISO_M2 / PDM1_SDI2_M1
    21
    22
    GPIO1_B0 / SPI2_CS1_M0 / PDM1_SDI1_M140
    43GPIO1_B3 / UART4_TX_M2 / SPI0_CLK_M2 / PDM1_CLK1_M1
    23
    24
    GPIO1_B4 / UART7_RX_M2 / SPI0_CS0_M2 / PDM1_CLK0_M144
    —GND
    25
    26
    GPIO1_B5 / UART7_TX_M2 / SPI0_CS1_M245
    57GPIO1_D1 / SPI1_MOSI_M2 / UART6_RX_M2 / I2C7_SDA_M0 / PDM0_SDI1_M0 / I2S0_SDO2 / I2S0_SDI3
    27
    28
    GPIO1_D0 / SPI1_MISO_M2 / UART6_TX_M2 / I2C7_SCL_M0 / I2S0_SDO156
    58GPIO1_D2 / SPI1_CLK_M2 / UART4_TX_M0 / PWM0_M1 / I2C1_SCL_M4 / PDM0_SDI2_M0 / I2S0_SDO3 / I2S0_SDI2
    29
    30
    GND—
    59GPIO1_D3 / SPI1_CS0_M2 / UART4_RX_M0 / PWM1_M1 / I2C1_SDA_M4 / PDM0_SDI3_M0 / I2S0_SDI1
    31
    32
    GPIO4_B2 / CAN1_RX_M1 / PWM14_M1 / I2S1_SDO1_M0 / UART8_RTSN_M0 / SPI0_CS0_M1 / I2C7_SCL_M3138
    139GPIO4_B3 / CAN1_TX_M1 / PWM15_IR_M1 / I2S1_SDO2_M0 / UART8_CTSN_M0 / I2C7_SDA_M3
    33
    34
    GND—
    52GPIO1_C4 / SPI4_CS1_M0 / PWM11_IR_M2 / I2C2_SDA_M3 / PDM0_CLK1_M0
    35
    36
    GPIO1_D5 / SPI1_CS1_M2 / PDM0_SDI0_M061
    54GPIO1_C6 / PWM15_IR_M2 / I2C4_SDA_M4 / PDM0_CLK0_M0
    37
    38
    GPIO0_C4 / I2C4_SDA_M2 / PDM0_CLK1_M1 / UART0_RX_M0 / PWM2_M020
    —GND
    39
    40
    GPIO0_C5 / I2S1_SDI0_M1 / I2C4_SCL_M2 / PWM4_M0 / UART0_TX_M021
    FAN
    0.8mm connector (CN5)
    PinAssignmentDescription
    1VCC5V0_DEVICE_S05V power output
    2GNDGND
    3Switched returnConnected to the Q45 collector and controlled by FAN_PWM6_M0 through Q45/Q46; not a direct logic-level PWM pin
    HPOUT
    0.8mm connector (CN4)
    PinAssignmentDescription
    1AORRight channel
    2AOLLeft channel
    3GNDGND
    VRTC

    0.8mm connector(J27)

    PinAssignmentDescription
    1+Positive electrode
    2-negative electrode

    Getting started​

    📝

    CM7s-IO User Manual

    How to start using your CM7s Kit

    Development Materials​

    SDK source code​

    Google Drive links, including software information and hardware information:

    Google Drive link

    Official mirror​

    ArmSoM provides the following official system images. Select the matching product folder and image version in the shared drive. How do I flash a system image?📤📤

    The following systems have been officially tested and verified by ArmSoM:

    LogoDescriptionDownload
    Debian 12Debian 12 for CM7s-IO:
    Debian 12 (Bookworm) system images. Open the matching product folder in the shared drive; available versions and desktop variants are listed there.
    Google Drive root folder
    UbuntuUbuntu 22.04 LTS for CM7s-IO:
    Ubuntu 22.04 LTS (Jammy Jellyfish) system images. Select the matching image in the product folder in the shared drive.
    Google Drive root folder

    Third-party mirror​

    logoDescriptionDownload
    armbian-logoArmbian for CM7s-IO:
    Armbian is a computing build framework that lets users create ready-to-use images with working kernels based on various single-board computer configurations. It provides a variety of pre-built images for some supported single-board computers, usually based on Debian or Ubuntu.
    Armbian Image

    User Manual​

    1. Preparation for getting started​

    Before you start using the ArmSoM-CM7s-IO product, please get the following items ready

    Tool Preparation​

    • Power supply
    • System Installation (Choose One)
      • Onboard eMMC startup
        • Flashing the USB Type-C cable, use a 12V power adapter to supply power to the motherboard; to write an image from the CM7s-IO Type-C port to the CM7s, you need to connect the CM7s-IO and PC with a USB Type-C cable, and at the same time use the 12V power adapter to power the CM7s-IO through its DC port.
      • MicroSD card/TF card boots
        • MicroSD card/TF card, Class 10 or above, at least 8GB SDHC, and card reader
        • Here are the high-speed TF cards tested and verified by the ArmSoM team
          • SanDisk 32GB TF (MicroSD) Dashcam & Security Monitoring Dedicated Storage Card (Recommended for Long-Term Operation)
          • SanDisk 32GB TF (MicroSD) Storage Card for Dashcams & Security Monitoring (Recommended for Long-Term Use)
          • SanDisk TF 8GB Class10 microSD
          • SanDisk TF 128G Class10 microSD XC TF 128G 48MB/S:

    You can set up the CM7s as an interactive computer with a desktop, or as a headless computer that can only be accessed over the network. To set up the CM7s as a headless computer, you'll configure the hostname, user account, network connection, and SSH during the initial OS installation. If you want to use the CM7s directly, you'll need the following extra accessories:

    Optional options

    • Keyboard & Mouse
    • HDMI monitor and HDMI cable
    • Ethernet cable
    • Camera module
    • LCD display
    • 3.5mm wired headphones.

    Power supply​

    • Supports DC 12V power adapter, 2.5mm

    Account needed to log in​

    UsernamePassword
    rootroot
    armsomarmsom

    2. Choose Burning Method​

    3. Interface Usage​

    If this is your first time using the CM7s Kit, please get familiar with the products first. CM7s Hardware interface and CM7s-IO Hardware interface,so that you can better understand the following content.

    3.1 Debugging Serial Port​

    Use a USB-to-serial chip (CH340) to connect the TTL serial cable to the 40-pin on CM7s-IO:

    CM5-IOConnectSerial Module
    GND (pin 6)--->GND
    TX (pin 8)--->RX
    RX (pin 10)--->TX
    tip

    Serial Communication Parameters

    • Baud rate: 1500000
    • Data bits: 8
    • Stop bits: 1
    • Parity: None
    • Flow control: None

    3.2 Ethernet Port​

    1. First, plug one end of the Ethernet cable into the ArmSoM-CM7s-IO's Ethernet port, and plug the other end into the router, making sure the network is working properly.
    2. Once the system starts, it will automatically assign an IP address to the Ethernet card via DHCP, with no other configuration needed.
    3. On the ArmSoM-CM7s Linux system, the command to check the IP address is shown below, where end1 is the name of the Ethernet device.
    armsom@armsom:~$ ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
    valid_lft forever preferred_lft forever
    2: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 46:fc:71:98:e2:45 brd ff:ff:ff:ff:ff:ff
    3: end1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether d6:3c:08:0f:a4:05 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.156/24 brd 192.168.1.255 scope global dynamic noprefixroute end1
    valid_lft 43188sec preferred_lft 43188sec
    inet6 fd45:d3b4:e549::8a2/128 scope global dynamic noprefixroute
    valid_lft 43186sec preferred_lft 43186sec
    inet6 fd45:d3b4:e549:0:54c0:d3b4:6f75:62be/64 scope global dynamic noprefixroute
    valid_lft 5386sec preferred_lft 2686sec
    inet6 fe80::aeef:d7f3:1189:902b/64 scope link noprefixroute
    valid_lft forever preferred_lft forever

    After the CM7s starts up, there are three ways to check the IP address:

    • Connect an HDMI monitor, log into the system, and use the terminal to enter the ip a command to check the IP address.
    • Connect a debug serial port and use the terminal to enter the ip a command to check the IP address.
    • If you do not have a debug serial port or an HDMI monitor, you can also check the IP address of the CM5 Kit's Ethernet port through the router's management interface. However, sometimes the IP address may not be visible on the router. If the IP address is not visible, troubleshoot as follows:
      • First, check if the Linux system has started normally. If the green light on the CM5 Kit is steady, it has generally started correctly.
      • Check if the Ethernet cable is securely connected, or try a different cable.
      • Try using a different router, as issues have been encountered where routers cannot properly assign IP addresses or the assigned IP address does not show up on the router.
      • If no other router is available, you will need to connect an HDMI monitor or use a debug serial port to check the IP address.
    tip

    Note that DHCP automatic IP assignment on the CM7s does not require any configuration.

    1. Use the ping utility to check network connectivity.

    The following command tests network connectivity. You can stop ping by pressing Ctrl+C.

    armsom@armsom:~$ sudo ping -I end1 www.baidu.com
    PING www.wshifen.com (103.235.46.96) from 192.168.1.156 end1: 56(84) bytes of data.
    64 bytes from 103.235.46.96 (103.235.46.96): icmp_seq=1 ttl=44 time=311 ms
    64 bytes from 103.235.46.96 (103.235.46.96): icmp_seq=2 ttl=44 time=311 ms
    64 bytes from 103.235.46.96 (103.235.46.96): icmp_seq=3 ttl=44 time=312 ms
    64 bytes from 103.235.46.96 (103.235.46.96): icmp_seq=5 ttl=44 time=312 ms
    64 bytes from 103.235.46.96 (103.235.46.96): icmp_seq=6 ttl=44 time=311 ms
    ^C
    --- www.wshifen.com ping statistics ---
    6 packets transmitted, 5 received, 16.6667% packet loss, time 5021ms
    rtt min/avg/max/mdev = 311.040/311.447/311.866/0.296 ms
    tip

    Only regular users need to use sudo; root does not.

    3.3 HDMI​

    CM7s-IO supports HDMI up to 8Kp60.

    1. Connect the CM7s-IO to an HDMI monitor using an HDMI cable.
    2. After booting Linux, image output on the HDMI monitor indicates that the HDMI port is working properly.
    tip

    Note: Although many laptops have an HDMI port, it is usually output-only and does not support HDMI input. This means the HDMI output of another device cannot be displayed on the laptop screen. Before connecting the development board's HDMI output to a laptop, make sure the laptop supports HDMI input. If there is no HDMI display, first check whether the installed system includes a desktop environment. A server version displays only the terminal.

    HDMI-to-VGA Display Test​
    1. Prepare the following accessories:
    • HDMI-to-VGA adapter
    • A VGA cable and a monitor with a VGA port
    1. The HDMI-to-VGA display test is shown below.

    sige-hdmi-vga

    sige-hdmi-vga
    tip

    When using HDMI-to-VGA display output, no settings are required on the CM5 Kit or in Linux; the development board's HDMI output only needs to work properly. If the test fails, check the HDMI-to-VGA adapter, VGA cable, and monitor.

    3.4 DP Display (Type-C)​

    The Type-C port on CM7s-IO supports DisplayPort (DP) video output. To connect a monitor with a Type-C video input, use a full-featured USB-C to USB-C cable that supports DP Alt Mode video transmission. A charging-only USB-C cable cannot carry video.

    For a monitor with a standard DisplayPort input, use a USB-C to DisplayPort video cable that supports output from a USB-C DP Alt Mode source to a DP monitor.

    3.5 USB​

    Testing with a USB Mouse or Keyboard​
    1. Connect a USB keyboard to a USB port on the CM7s.
    2. Connect the CM7s to an HDMI monitor.
    3. If the mouse or keyboard can operate the system normally, the USB port is working properly (a mouse can only be used with a desktop system).
    Testing with a USB Storage Device​
    1. First, connect a USB flash drive or USB external hard drive to a USB port on the ArmSoM-CM7s.
    2. Run the following command. If an sdX device appears in the output, the USB drive has been detected successfully.
    armsom@armsom:~$ cat /proc/partitions | grep "sd*"
    major minor #blocks name
    8 0 30720000 sda
    8 1 30718976 sda1
    1. Use the mount command to mount the USB drive under /mnt, then you can view its files.
    armsom@armsom:~$ mkdir -p /test
    armsom@armsom:~$ sudo mount /dev/sda1 /test/
    mount: /test: /dev/sda1 already mounted on /test.
    1. After mounting, use df -h to view the USB drive's capacity usage and mount point.
    armsom@armsom:/$ df -h | grep "sd"
    /dev/sda1 30G 64K 30G 1% /test

    3.6 M.2 Key M​

    The CM7s-IO provides an M.2 Key M connector:

    • There is an M.2 Key M connector on the back of the product. The board has a standard M.2 2280 mounting hole for an M.2 2280 NVMe SSD.
      Note: This M.2 interface does not support M.2 SATA SSDs.

    After connecting the NVMe device, try mounting it to a newly created directory. A successful mount indicates that it is working.

    root@armsom:/# mkdir temp
    root@armsom:/# mount /dev/nvme0n1 temp

    3.7 Micro SD card slot​

    The CM7s-IO has a standard onboard microSD card slot, primarily used as a system boot drive or for additional storage.

    1. To use an SD card as the system boot drive, insert the prepared bootable SD card into the Micro SD card slot before powering on the board. The CM7s will boot from the SD card first.

    2. To use the SD card for additional storage, follow the steps below. First, check the log messages generated when the SD card is inserted:

    armsom@armsom:~$ [  293.228591] mmc_host mmc1: Bus speed (slot 0) = 148500000Hz (slot req 150000000Hz, actual 148500000HZ div = 0)
    [ 293.309039] dwmmc_rockchip fe2c0000.mmc: Successfully tuned phase to 155
    [ 293.309114] mmc1: new ultra high speed SDR104 SDHC card at address 0001
    [ 293.310505] mmcblk1: mmc1:0001 ASTC 7.44 GiB
    [ 293.326321] mmcblk1: p1 p2

    The output shows that the system has detected the inserted SD card (mmcblk1, capacity 7.44 GiB, with partitions p1 and p2). Next, check the SD card device information.

    armsom@armsom:~$ sudo fdisk -l /dev/mmcblk1
    Disk /dev/mmcblk1: 7.44 GiB, 7990149120 bytes, 15605760 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: gpt
    Disk identifier: BDFDC9CF-2FC3-46BB-AF10-C9DF254BB1E2

    Device Start End Sectors Size Type
    /dev/mmcblk1p1 32768 1081343 1048576 512M Linux extended boot
    /dev/mmcblk1p2 1081344 15605726 14524383 6.9G Linux filesystem

    The filesystem partition is /dev/mmcblk1p2. Mount the SD card as follows:

    armsom@armsom:~$ sudo mkdir -p /mnt/sdcard
    armsom@armsom:~$ sudo mount /dev/mmcblk1p2 /mnt/sdcard
    [ 491.938107] EXT4-fs (mmcblk1p2): recovery complete
    [ 491.939897] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Quota mode: disabled.
    mount: (hint) your fstab has been modified, but systemd still uses
    the old version; use 'systemctl daemon-reload' to reload.
    armsom@armsom:~$ df -h /mnt/sdcard
    Filesystem Size Used Avail Use% Mounted on
    /dev/mmcblk1p2 6.8G 6.6G 0 100% /mnt/sdcard
    armsom@armsom:~$ cd /mnt/sdcard/
    armsom@armsom:/mnt/sdcard$ ls
    bin dev home lost+found mnt proc run snap swapfile tmp var
    boot etc lib media opt root sbin srv sys usr

    3.8 Audio​

    1. View the system's sound cards.​
    root@armsom:~# aplay -l
    **** List of PLAYBACK Hardware Devices ****
    card 0: rockchipdp0 [rockchip-dp0], device 0: rockchip-dp0 spdif-hifi-0 [rockchip-dp0 spdif-hifi-0]
    Subdevices: 1/1
    Subdevice #0: subdevice #0
    card 1: rockchiphdmi0 [rockchip-hdmi0], device 0: rockchip-hdmi0 i2s-hifi-0 [rockchip-hdmi0 i2s-hifi-0]
    Subdevices: 1/1
    Subdevice #0: subdevice #0
    card 2: rockchipes8388 [rockchip,es8388], device 0: dailink-multicodecs ES8323 HiFi-0 [dailink-multicodecs ES8323 HiFi-0]
    Subdevices: 1/1
    Subdevice #0: subdevice #0

    In the listed sound cards, card 2: rockchipes8388 is the onboard ES8388 audio codec on the CM7s-IO. It is used with the onboard MIC microphone for recording and the onboard 3.5 mm HPOUT headphone jack for audio playback.

    2. Configure Audio Controls​

    Before testing recording and playback, run the following commands to configure the audio.

    • Configure the onboard microphone
    armsom@armsom:~$ amixer -c 2 cset numid=45 1    # Left PGA Mux = Line 2L    
    armsom@armsom:~$ amixer -c 2 cset numid=46 1 # Right PGA Mux = Line 2R
    armsom@armsom:~$ amixer -c 2 cset numid=27 8 # Left-channel gain (range 0–8, default: 0)
    armsom@armsom:~$ amixer -c 2 cset numid=28 8 # Right-channel gain (range 0–8, default: 0)
    • Configure the headphone output
    armsom@armsom:~$ amixer -c 2 cset numid=34 30,30    # OUT1 analog volume (left and right values, range 0–33)
    armsom@armsom:~$ amixer -c 2 cset numid=55 on # Enable the OUT1 output channel (disabled by default)
    3. Record Audio​

    Record audio using the onboard MIC microphone and the arecord command.

    armsom@armsom:~$ arecord -D hw:2,0 -f S16_LE -r 44100 -c 2 -d 5 /tmp/record.wav
    Recording WAVE '/tmp/record.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
    4. Play Audio​

    Connect headphones with a 3.5 mm plug to the 3.5 mm headphone jack, then use the aplay command to play audio.

    armsom@armsom:~$ aplay -D hw:2,0 /tmp/record.wav
    Playing WAVE '/tmp/record.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

    3.9 40 PIN​

    The CM7s provides a 40-pin GPIO header that is compatible with most commonly available sensor applications.

    Using wiring-armbian​

    Download the wiringOP source code to the development board: wiring-armbian

    • After downloading the wiringOP source code, build and install it by running the following commands:
    root@armsom:~# cd wiring-armbian/
    root@armsom:/wiring-armbian# chmod +x build
    root@armsom:/wiring-armbian# ./build
    • After the build completes, edit /etc/armbian-release, change the board name to 'armsom-cm7s', then save and exit.
    root@armsom:~# vi /etc/armbian-release
    BOARD=armsom-cm7s
    • The output of the gpio readall test command is shown below.
     root@armsom:/wiring-armbian# gpio readall
    +------+-----+----------+--------+---+ ArmSoM-CM7s +---+--------+----------+-----+------+
    | GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
    +------+-----+----------+--------+---+----++----+---+--------+----------+-----+------+
    | | | 3.3V | | | 1 || 2 | | | 5V | | |
    | 63 | 0 | I2C8_SDA | (null) | 0 | 3 || 4 | | | 5V | | |
    | 62 | 1 | I2C8_SCL | (null) | 0 | 5 || 6 | | | GND | | |
    | 39 | 2 | GPIO1_A7 | IN | 1 | 7 || 8 | 1 | ALT10 | UART2_TX | 3 | 13 |
    | | | GND | | | 9 || 10 | 1 | ALT10 | UART2_RX | 4 | 14 |
    | 130 | 5 | GPIO4_A2 | IN | 0 | 11 || 12 | 1 | IN | GPIO3_B2 | 6 | 106 |
    | 13 | 7 | GPIO4_A3 | ALT10 | 1 | 13 || 14 | | | GND | | |
    | 18 | 8 | GPIO0_C2 | IN | 1 | 15 || 16 | 0 | IN | UART6_RX | 9 | 32 |
    | | | 3.3V | | | 17 || 18 | 0 | IN | UART6_TX | 10 | 33 |
    | 42 | 11 | SPI_MOSI | IN | 0 | 19 || 20 | | | GND | | |
    | 41 | 12 | SPI_MISO | IN | 0 | 21 || 22 | 1 | IN | GPIO1_B0 | 13 | 40 |
    | 43 | 14 | SPI_SCLK | IN | 0 | 23 || 24 | 1 | IN | SPI0_CS0 | 15 | 44 |
    | | | GND | | | 25 || 26 | 1 | IN | SPI0_CS1 | 16 | 45 |
    | 57 | 17 | I2C7_SDA | (null) | 0 | 27 || 28 | 0 | (null) | I2C7_SCL | 18 | 56 |
    | 58 | 19 | UART4_TX | (null) | 0 | 29 || 30 | | | GND | | |
    | 59 | 20 | UART4_RX | (null) | 0 | 31 || 32 | 1 | IN | PWM14_M1 | 21 | 138 |
    | 139 | 22 | CAN1_TX | IN | 1 | 33 || 34 | | | GND | | |
    | 52 | 23 | GPIO1_C4 | ALT11 | 1 | 35 || 36 | 0 | (null) | GPIO1_D5 | 24 | 61 |
    | 54 | 25 | GPIO1_C6 | IN | 1 | 37 || 38 | 1 | IN | UART0_RX | 26 | 20 |
    | | | GND | | | 39 || 40 | 1 | IN | UART0_TX | 27 | 21 |
    +------+-----+----------+--------+---+----++----+---+--------+----------+-----+------+
    | GPIO | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | GPIO |
    +------+-----+----------+--------+---+ ArmSoM-CM7s +---+--------+----------+-----+------+
    • Set the GPIO pin to output mode. The argument is the wPi number corresponding to the pin.
    root@armsom:/wiring-armbian# gpio mode 5 out
    • Read the current logic level of the corresponding pin.
    root@armsom:/wiring-armbian# gpio read 5
    0
    • Set the GPIO pin to output a high level. Then measure the pin voltage with a multimeter; a reading of 3.3 V indicates success.
    root@armsom:/wiring-armbian# gpio write 5 1
    root@armsom:/wiring-armbian# gpio read 5
    1
    • Set the GPIO pin to output a low level. Then measure the pin voltage with a multimeter; a reading of 0 V indicates success.
    root@armsom:/wiring-armbian# gpio write 5 0
    root@armsom:/wiring-armbian# gpio read 5
    0
    • Other pins can be configured in the same way; simply change the wPi number to the number corresponding to the desired pin.

    3.10 RGB LED​

    The CM7s has a user LED (green) and a power indicator LED (red).

    • User LED By default, it acts as a heartbeat LED and can be controlled by the user.

    • Power Indicator LED By default, a steadily lit LED indicates that the system is operating normally.

    The user LED can be controlled with the following commands.

    armsom@armsom:~$ echo 0 > /sys/class/leds/led-green-usr/brightness (off)
    armsom@armsom:~$ echo 1 > /sys/class/leds/led-green-usr/brightness (on continuously)
    armsom@armsom:~$ echo heartbeat > /sys/class/leds/led-green-usr/trigger (restore heartbeat mode)

    3.11 RTC​

    • The CM7s integrates an LK8563S RTC chip. The CM7s-IO also has an onboard VRTC connector for an RTC battery.
    root@armsom:~# dmesg | grep -w rtc
    [ 2.024480] rtc-hym8563 6-0051: rtc information is invalid
    [ 2.032951] rtc-hym8563 6-0051: registered as rtc0
    [ 2.033959] rtc-hym8563 6-0051: setting system clock to 2021-01-01T12:00:00 UTC (1609502400)
    • Locate rtc0, then use the following commands to set the system time and synchronize it with rtc0.
    // Read the current time from the RTC chip
    root@armsom:~# hwclock -r -f /dev/rtc0
    2026-04-28 07:26:02.198445+08:00

    // View the current system time
    root@armsom:~# date
    Tue Apr 28 07:26:38 AM CST 2026

    // Set the system time
    root@armsom:~# date -s "2026-10-12 10:30:00"
    Mon Oct 12 10:30:00 AM CST 2026

    // Write the current system time to the RTC
    root@armsom:~# hwclock -w -f /dev/rtc0

    // Read the RTC chip's time again
    root@armsom:~# hwclock -r -f /dev/rtc0
    2026-10-12 10:30:45.494092+08:00
    • If an RTC battery is connected, power off and restart the CM7s, then check the RTC time. The following command should show that the RTC retains the time set above (as if it had not lost power).
    • If no RTC battery is connected, the following command will show that the time has reset because the RTC lost power and its data.
    root@armsom:~# sudo hwclock -r -f /dev/rtc0
    2026-04-28 07:26:02.198445+08:00

    3.12 MIPI-CSI​

    CM7s-IO supports a two-lane IMX219 (Raspberry Pi Camera Module 2) on CAM0 and a four-lane OV13850 (ArmSoM camera-module1) on CAM1. Power off before connecting ribbon cables and check their orientation.

    Enable Camera Configuration​

    Edit the CM7s boot configuration:

    armsom@armsom:~$ sudo nano /boot/uEnv/uEnvarmsom-cm7s-io.txt

    Remove the leading # from the required lines. The following configuration enables both cameras:

    dtoverlay=/dtb/overlay/rk3588s-armsom-cm7s-io-camera-imx219-cs0-overlay.dtbo
    dtoverlay=/dtb/overlay/rk3588s-armsom-cm7s-io-camera-ov13850-cs1-overlay.dtbo

    Save and reboot:

    armsom@armsom:~$ sudo reboot
    Check Cameras and Device Nodes​

    The following logs and nodes were collected on CM7s with Debian 12 / Linux 6.1 and both cameras enabled:

    armsom@armsom:~$ dmesg | grep -E "imx219|ov13850"
    [    2.805909] ov13850 1-0010: Detected OV00d850 sensor, REVISION 0xb2
    [ 2.892223] imx219 4-0010: Detected IMX000219 sensor
    PortCameraI2C addressCIF topologyISP topologyISP main output
    CAM0 (2 lanes)IMX2194-0010/dev/media0/dev/media2/dev/video22
    CAM1 (4 lanes)OV138501-0010/dev/media1/dev/media3/dev/video31

    Node numbers may vary with the image and enabled devices. A single enabled camera may use /dev/video11. Identify the correct ISP output node before replacing the nodes below; do not use CIF RAW nodes for preview:

    armsom@armsom:~$ v4l2-ctl --list-devices
    armsom@armsom:~$ media-ctl -d /dev/media0 -p
    armsom@armsom:~$ media-ctl -d /dev/media2 -p
    armsom@armsom:~$ v4l2-ctl -d /dev/video22 --get-fmt-video
    armsom@armsom:~$ v4l2-ctl -d /dev/video31 --get-fmt-video
    Tools and the 3A Service​

    Some images require GStreamer to be installed manually. If gst-launch-1.0 is missing, run:

    Before refreshing the index, check the system clock and repositories in Update the APT package source list.

    armsom@armsom:~$ sudo apt-get update
    armsom@armsom:~$ sudo apt-get install -y gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-x

    Start or restart the 3A service before capture for automatic exposure and white balance:

    armsom@armsom:~$ sudo systemctl restart rkaiq_3A.service

    Run only one set of capture commands at a time. Preview requires a local desktop terminal. Press Ctrl+C to exit; recording uses -e, so wait for file finalization. If no image appears after switching capture methods, stop capture and restart the 3A service.

    OV13850 Camera​

    These examples use 2112×1568 with a configured rate of 30 FPS. Actual frame rate depends on exposure and other factors.

    Capture a frame (raw NV12, not JPEG):

    armsom@armsom:~$ v4l2-ctl -d /dev/video31 --set-selection=target=crop,top=0,left=0,width=2112,height=1568 --set-fmt-video=width=2112,height=1568,pixelformat=NV12 --stream-mmap=3 --stream-to=ov13850.nv12 --stream-count=1 --stream-poll

    Record video (H.264 / MP4):

    armsom@armsom:~$ gst-launch-1.0 -e v4l2src device=/dev/video31 num-buffers=300 ! video/x-raw,format=NV12,width=2112,height=1568,framerate=30/1 ! mpph264enc ! h264parse ! mp4mux ! filesink location=ov13850.mp4

    The image must include the matching Rockchip encoder plugin. Check with gst-inspect-1.0 mpph264enc.

    Preview:

    armsom@armsom:~$ gst-launch-1.0 v4l2src device=/dev/video31 ! video/x-raw,format=NV12,width=2112,height=1568,framerate=30/1 ! videoconvert ! ximagesink sync=false handle-events=false
    IMX219 Camera​

    Capture and preview use 3280×2464 @ 15 FPS. Do not configure this full-resolution mode for 30 FPS.

    Capture a photo (JPEG):

    armsom@armsom:~$ GST_V4L2SRC_MAX_RESOLUTION=3280x2464 gst-launch-1.0 v4l2src device=/dev/video22 num-buffers=1 io-mode=4 ! video/x-raw,format=NV12,width=3280,height=2464 ! videoconvert ! jpegenc ! filesink location=imx219.jpg

    Record video (MJPEG / AVI):

    The following software-encoding example scales ISP output to 1920×1080 @ 15 FPS and produces large files. Full-resolution IMX219 H.264 hardware recording timed out on the tested image, so the old 8MP / 30 FPS command is not retained. This MJPEG example has not yet been verified on hardware.

    armsom@armsom:~$ gst-launch-1.0 -e v4l2src device=/dev/video22 num-buffers=150 ! video/x-raw,format=NV12,width=1920,height=1080,framerate=15/1 ! videoconvert ! jpegenc ! avimux ! filesink location=imx219.avi

    Preview:

    armsom@armsom:~$ GST_V4L2SRC_MAX_RESOLUTION=3280x2464 gst-launch-1.0 v4l2src device=/dev/video22 ! video/x-raw,format=NV12,width=3280,height=2464,framerate=15/1 ! videoconvert ! ximagesink sync=false handle-events=false

    GST_V4L2SRC_MAX_RESOLUTION is a mode-selection extension in some SDK images. If unsupported, omit it and use a mode supported by the actual node.

    Preview Both Cameras Simultaneously​

    Download the CM7s dual-window preview script to the board. In a local desktop terminal, enter its directory and run:

    armsom@armsom:~$ sudo apt-get install -y python3-gi gir1.2-gtk-3.0 gir1.2-gstreamer-1.0 gir1.2-gst-plugins-base-1.0
    armsom@armsom:~$ sudo systemctl restart rkaiq_3A.service
    armsom@armsom:~$ python3 cm7s-dual-camera-preview.py

    The script targets a 1920×1080 screen, with IMX219 on the left and OV13850 on the right. Each ISP output is 640×480, scaled proportionally to 960×720 without cropping. Measured rates were approximately 15 FPS and 25 FPS; both cameras' colors and smoothness were confirmed. Update the camera list if node numbers differ. Press Ctrl+C to exit.

    Test image below: titles and upper/lower black borders were cropped out. Only the left IMX219 image was rotated 180° to correct its orientation; the right image is unchanged.

    CM7s IMX219 and OV13850 simultaneous preview

    3.13 MIPI DSI​

    The CM7s MIPI-DSI interface supports resolutions up to 2K@60Hz.

    1. Connect the ribbon cable as shown below.

    cm5-io-display-10-hd

    cm5-io-display-10-hd
    1. The Linux image does not enable the MIPI LCD configuration by default. To use a MIPI LCD, enable it manually.
    root@armsom:~# nano /boot/uEnv/uEnvarmsom-cm7s-io.txt
    #dtoverlay=/dtb/overlay/rk3588s-armsom-cm7s-io-display-1200x1900-10.1hd-overlay.dtbo

    Uncomment this line, save and exit, then reboot. The LCD should light up.

    Product Certificate​

    CE / FCC / RoHS​

    Supply Statement​

    ArmSoM-CM7s will be produced at least until August 2034.

    Accessory​

    The official accessories we designed for the ArmSoM-CM7s-IO are meant to help you get the best performance from your computer.

    Purchase Samples​

    ArmSoM Official Website: https://www.armsom.org/product-page/cm7s

    ArmSoM Official AliExpress Store: https://aliexpress.ru/item/1005013244630755.html?gatewayAdapt=glo2rus&sku_id=12000060657514869

    ArmSoM Official Taobao Store: https://item.taobao.com/item.htm?id=1074292029401

    For OEM & ODM, please contact: sales@armsom.org

    Expert Perspective​

    User Case​

    Notes​

    [Electrostatic Protection]
    1. Before handling the device, please ensure you wear an anti-static wrist strap or take electrostatic discharge measures to prevent damage to the development board.
    2. Assembly should be performed in an electrostatic-safe environment, avoiding operations in dry and low-humidity conditions.
    3. When not in use, store the device in an anti-static bag and keep it in a suitably temperature-controlled, low-humidity environment to prevent static electricity buildup.
    4. When handling the device, avoid friction or collisions to prevent the generation of static electricity that could cause damage.
    5. When holding the device, try to avoid direct contact with the chips on the mainboard to prevent static damage.
    6. Do not plug or unplug wires or other devices while the device is operating to avoid damage from electrical surges.
    7. When connecting or disconnecting the GPIO/MIPI expansion interfaces, make sure to turn off the power and disconnect the power cable to prevent damage from electrical current.
    [Heat Management]

    Without effective cooling measures, the surface temperature of the main chip may exceed 60 degrees. When handling the device, please avoid direct contact with the SoC and surrounding power inductors to prevent burns. Ensure that the environment is well-ventilated during operation to prevent localized heat buildup, which could lead to overheating. Additionally, do not place the device in direct sunlight. It is recommended to choose between the official cooling fan, heat sink, or third-party cooling kits based on specific usage conditions to ensure optimal cooling performance.

    Contact us