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

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:2/4/8/16/32GB LPDDR4/4X
  • 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.0, 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
  • 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)

CM7s Hardware Info​

Hardware interface​

ArmSoM-CM5-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 Output1x HDMI 2.1, 1x DP 1.42x HDMI 2.0
Video ResolutionSupports 8K@60fpsSupports 4K@60fps
Network Interface1x Gigabit Ethernet port1x Gigabit Ethernet port
USB Ports1x USB3.0,3x USB2.02xUSB3.0,1xUSB2.0
GPIO40 pin GPIO40 pin GPIO
Expandability2x PCIE2.1/SATA31x PCIe 2.0
Camera Interface1x 4-channel MIPI CSI, 2x 2-channel MIPI CSI2x 4-channel MIPI CSI
Display Interface1x 4-channel MIPI DSI2x 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

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
  • 4GB/8GB/16GB 32GB LPDDR4/LPDDR4x/LPDDR5,default is LPDDR5 8GB
  • Flash
  • 32GB/64GB/128GB eMMC,default is eMMC 64GB
  • Supports MicroSD card expansion
  • M.2 M-KEY Socket:PCIe2.1 NVMe SSD
  • Display
  • 1x HDMI OUT 2.1, supports 8K@60Hz or 4K@120Hz 2x MIPI DSI with a maximum resolution of 4K@60Hz
  • 1x DP1.4, supports up to 8K@30Hz
  • Camera
  • 2x 4-lane MIPI CSI, up to 2.5Gbps per lane
  • Supports up to three MIPI camera inputs
  • Network
  • 1x GMAC, providing RGMII/RMII interface output
  • PCIe
  • 2x PCIe 2.0 1-lans
  • USB
  • 3x USB 3.0
  • 2x USB 2.0 Host
  • 1x USB 2.0 OTG
  • 1× Type-C (USB 3.1)
  • Audio
  • SPDIF_Tx x2
  • I2S x4
  • PDM x2
  • Others
  • UART DEBUG x1
  • FAN x1
  • RTC x1
  • 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
    • 4x USB 3.0 Type-A
    • 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, supports PCIe), 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

    tip

    The CM7s-IO Board uses 12V DC power.

    Pin Definition​

    40-PIN Socket
    GPIO numberFunctionPinPinFunctionGPIO number
    +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_M0
    13
    -GND
    9
    10
    UART2_RX_M0
    / GPIO0_B6 / I2S1_SCLK_M1 / I2C1_SDA_M0
    14
    130GPIO4_A2 / I2S1_LRCK_M0 / SPI0_CLK_M1
    11
    12
    GPIO3_B2 / UART2_RX_M2 / I2S2_SDI_M1 / PWM3_IR_M1106
    13GPIO4_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 (CN4)
    PinAssignmentDescription
    1VCC_5V05V Power ouput
    2GNDGND
    3PWMPWM Control
    HPOUT
    0.8mm connector (CN3)
    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​

    The ArmSoM team uses Debian bullseye as the official operating system.How do I flash a system image?📤📤

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

    logoDescriptionCloud drive path
    debian-bullseyedebian12 for CM7s-IO :
    Debian 12 brings thousands of new and updated packages, supporting a variety of desktop environments and processor architectures (including 32-bit and 64-bit PCs, ARM, MIPS, and PowerPC). But one of the biggest changes is that the Linux kernel has been upgraded from version 5.10 to 6.1 LTS.
    ArmSoM->ArmSoM-CM7s->software
    ubuntuubuntu22.04 for CM7s-IO :
    Ubuntu 22.04, code-named 'Jammy Jellyfish', is a version officially released by Canonical on April 21, 2022.
    ArmSoM->ArmSoM-CM7s->software

    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.

    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

    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 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.5 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.6 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.7 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.8 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.9 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.10 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.11 MIPI-CSI​

    Enable Camera Configuration​

    Before using a camera, enable the camera device-tree overlay by locating the following two lines:

    root@armsom:~# nano /boot/uEnv/uEnvarmsom-cm7s-io.txt
    #dtoverlay=/dtb/overlay/rk3588s-armsom-cm7s-io-camera-imx219-cs0-overlay.dtbo
    #dtoverlay=/dtb/overlay/rk3588s-armsom-cm7s-io-camera-ov13850-cs1-overlay.dtbo

    Uncomment the line for the camera you want to use, save the file, exit, and reboot.

    Basic Commands​

    • First, check the device node name assigned to each camera in different situations:
    1. When both cameras are enabled at the same time, the IMX219 camera is usually video22 and the OV13850 camera is usually video31.
    2. When only one camera is enabled, its node is usually video11.
    • View the media topology. When both cameras are enabled, the IMX219 camera is usually media0 and the OV13850 camera is usually media1.
    root@armsom:/# media-ctl -d /dev/media1 -p

    View the video formats supported by the video node.

    root@armsom:~# v4l2-ctl -d /dev/video31 --get-fmt-video
    Format Video Capture Multiplanar:
    Width/Height : 2112/1568
    Pixel Format : 'NV12' (Y/UV 4:2:0)
    Field : None
    Number of planes : 1
    Flags :
    Colorspace : sRGB
    Transfer Function : Rec. 709
    YCbCr/HSV Encoding: Rec. 709
    Quantization : Full Range
    Plane 0 :
    Bytes per Line : 2112
    Size Image : 4967424

    Install gst-launch-1.0​

    • Check if the system has gst-launch-1.0 installed; if not, you'll need to install it first.
    root@armsom:/# apt-get update
    root@armsom:/# apt-get install gstreamer1.0*

    Using the ArmSoM camera-module1​

    This camera uses the camera-module1 module. After connecting and powering on the camera module, check the boot log.

    root@armsom:/# dmesg | grep ov13850
    [ 2.302905] ov13850 5-0010: driver version: 00.01.05
    [ 2.302944] ov13850 5-0010: Failed to get power-gpios, maybe no use
    [ 2.303067] ov13850 5-0010: supply avdd not found, using dummy regulator
    [ 2.303153] ov13850 5-0010: supply dovdd not found, using dummy regulator
    [ 2.303186] ov13850 5-0010: supply dvdd not found, using dummy regulator
    [ 2.303213] ov13850 5-0010: could not get default pinstate
    [ 2.303220] ov13850 5-0010: could not get sleep pinstate
    [ 2.308532] ov13850 5-0010: Detected OV00d850 sensor, REVISION 0xb2
    [ 2.332058] ov13850 5-0010: Consider updating driver ov13850 to match on endpoints
    [ 2.332084] rockchip-csi2-dphy csi2-dphy0: dphy0 matches m00_b_ov13850 5-0010:bus type 5

    Replace /dev/video31 in the commands below with the video node actually registered on your system.

    • Capture an image using v4l2-ctl.
    // video31 or video11
    root@armsom:/# systemctl restart rkaiq_3A.service
    root@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=/nv12.bin --stream-count=1 --stream-poll
    • Preview (requires a monitor for real-time preview)
    // video31 or video11
    root@armsom:/# gst-launch-1.0 v4l2src device=/dev/video31 ! video/x-raw,format=NV12,width=2112,height=1568, framerate=30/1 ! xvimagesink

    armsom-w3-imx415-camera

    Using Raspberry Pi Camera Module 2​

    This camera uses the Raspberry Pi Camera Module 2 module. After connecting and powering on the camera module, check the boot log.

    root@armsom:/# dmesg | grep imx219
    [ 4.049680] imx219 4-0010: driver version: 00.01.02
    [ 4.074430] imx219 4-0010: Model ID 0x0219, Lot ID 0x258b89, Chip ID 0x056c
    [ 4.074460] imx219 4-0010: Consider updating driver imx219 to match on endpoints
    [ 4.074477] rockchip-csi2-dphy csi2-dphy4: dphy4 matches m01_b_imx219 4-0010:bus type 5

    After confirming the driver is loaded, run the following command to take a photo or record a video

    • take a photo
    video22 or video11
    root@armsom:~# GST_V4L2SRC_MAX_RESOLUTION=3280x2464 gst-launch-1.0 v4l2src device=/dev/video11 io-mode=4 ! videoconvert ! video/x-raw,format=NV12,width=3280,height=2464 ! jpegenc ! multifilesink location=photo.jpg
    • record a video
    video22 or video11
    root@armsom:~# GST_V4L2SRC_MAX_RESOLUTION=3280x2464 gst-launch-1.0 v4l2src num-buffers=512 device=/dev/video11 io-mode=4 ! videoconvert ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! tee name=t ! queue ! mpph264enc ! queue ! h264parse ! mpegtsmux ! filesink location=/tmp/video.mp4
    • Preview (requires a monitor for real-time preview)
    video22 or video11
    root@armsom:~# GST_V4L2SRC_MAX_RESOLUTION=3280x2464 gst-launch-1.0 v4l2src device=/dev/video11 ! video/x-raw,format=NV12,width=3280,height=2464, framerate=30/1 ! xvimagesink
    tip

    Due to differences in mirror versions, some versions require manually installing gstreamer1.0. In these cases, if you get an error when using the command above to capture images, you can remove the GST_V4L2SRC_MAX_RESOLUTION=3280x2464 prefix and capture the images directly.

    3.12 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

    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.