MO-62A is a single-board computer designed for edge AI inference, machine vision, and industrial control applications. It is powered by the TI AM62A7 processor — a quad-core Arm Cortex-A53 SoC with a dedicated MMA (Matrix Multiplication Accelerator) delivering up to 2 TOPS of AI inference performance.
| Feature | Specification |
|---|---|
| SoC | TI AM62A74 (Quad-core Cortex-A53 @ 1.4 GHz + Cortex-R5F) |
| AI Accelerator | MMA, 2 TOPS |
| Memory | LPDDR4 (32-bit) |
| Storage | Micro SD (boot / storage) |
| Display | Micro HDMI (up to 1080p, via SiI9022ACNU) |
| Networking | 1 × Gigabit Ethernet RJ45 |
| Wireless | Wi-Fi + Bluetooth (FG6221A, U.FL antenna connector) |
| USB | 1 × USB Type-C (power + USB 2.0), 4 × USB 2.0 Type-A |
| Camera | 22-pin FPC CSI (4-lane MIPI CSI-2) |
| Audio | 3.5 mm combo jack (headphone + microphone) |
| Expansion | 40-pin header (GPIO / I2C / SPI / UART / PWM) |
| RTC | PCF85263ATL with battery backup connector |
| Fan | PWM fan connector (PWM + TACH) |
| Power Input | USB Type-C 5 V (≥ 3 A recommended) |
| LEDs | Red (Power), Green (Activity) |
| Debug | UART0 serial console (3-pin SH1.0 connector) |
| OS | Debian 13 (Trixie) with XFCE desktop |
| Connector / Component | Location |
|---|---|
| USB Type-C (Power + USB 2.0) | Top edge, left |
| 4 × USB 2.0 Type-A | Top edge, right |
| Micro HDMI | Right edge, top |
| RJ45 Ethernet | Right edge, bottom |
| Micro SD slot | Bottom edge |
| 40-pin expansion header | Left edge |
| CSI camera connector | Center, FPC |
| 3.5 mm audio jack | Front edge |
| Wi-Fi / BT antenna connector | U.FL, near wireless module |
| Debug UART (SH1.0 3-pin) | Near USB-C |
| Fan connector | Near 40-pin header |
The following items are required to get started:
| Item | Notes |
|---|---|
| MO-62A board | |
| USB Type-C power supply | 5 V, ≥ 3 A |
| Micro SD card | ≥ 16 GB, Class 10 / UHS-I (U1) or faster |
| Micro HDMI cable | Connect to a monitor or TV |
| RJ45 Ethernet cable | Required for initial network setup |
| Host computer | Windows, macOS, or Linux — for flashing the SD card |
The following items are optional but useful:
| Item | Notes |
|---|---|
| IMX219 CSI camera module | |
| USB keyboard and mouse | For direct desktop use |
| 3.5 mm headset | Headphone output + microphone input |
| CR1220 coin cell battery | For RTC backup power |
| Wi-Fi antenna (U.FL) | Improves wireless range significantly |
| PWM fan | 4-pin, 5 V |
Download the latest pre-built SD card image from the release page, The image is distributed as a .img.zip file.
The full SDK source code (kernel, device tree, filesystem customisation) is available at:
GitHub:
Download and install .
Click Flash from file.
Select the downloaded .img.zip file.
Click Select target.
Choose the Micro SD card from the device list.
Click Flash! to start writing.
Wait until Flash Complete! is shown, then safely remove the SD card.
Warning: All existing data on the SD card will be erased.
Insert the SD card — push the flashed Micro SD card into the card slot on the underside of the board until it clicks.
Connect the display — plug a Micro HDMI cable into the board and connect the other end to your monitor.
Connect Ethernet — plug an RJ45 cable into the Gigabit Ethernet port for network access.
Connect peripherals — attach a USB keyboard and mouse to any of the four USB 2.0 Type-A ports (optional).
Connect the camera — if using an IMX219, connect the FPC ribbon cable to the 22-pin CSI connector (see ).
Apply power — connect the USB Type-C power supply last. The red Power LED will illuminate immediately.
After power is applied, the board boots from the Micro SD card. A normal boot takes approximately 30–45 seconds. The green Activity LED will blink during boot.
Note — First Boot: On the very first boot, the system automatically expands the root filesystem to fill the SD card. This takes an additional 1–2 minutes, after which the board reboots automatically. The desktop will appear after the second boot completes. Subsequent boots are normal speed.
Expected sequence:
U-Boot SPL (R5) → U-Boot (A53) — brief console output
Linux kernel decompresses and loads device tree
systemd brings up services — on first boot, filesystem expansion runs here and triggers an automatic reboot
XFCE desktop appears on the HDMI display
The XFCE desktop loads automatically. Default credentials:
| Field | Value |
|---|---|
| Username | debian |
| Password | temppwd |
First login only: The default password is valid for one login. You will be prompted to set a new password immediately after logging in. The new password takes effect right away.
If no display is available, the board can be accessed via the 3-pin UART0 debug connector (SH1.0, 1.0 mm pitch).
| Pin | Signal |
|---|---|
| 1 | RXD |
| 2 | TXD |
| 3 | GND |
Serial settings: 115200 baud, 8N1, no flow control
# Linux host example (replace /dev/ttyUSB0 with your adapter's device node)
minicom -D /dev/ttyUSB0 -b 115200The board obtains an IP address via DHCP automatically on boot.
From the XFCE desktop terminal:
ip addr show eth0From a host on the same network (if mDNS is enabled):
ping mo-62a.localssh debian@<board-ip>
# or
ssh debian@mo-62a.localConnect to a Wi-Fi network using nmcli:
# List available networks
nmcli device wifi list
# Connect to a network
nmcli device wifi connect "SSID" password "password"Alternatively, use the XFCE network manager applet in the system tray.
Note: A U.FL antenna connector is provided on the board. Attaching an external antenna significantly improves wireless range.
The MO-62A supports the IMX219 CSI camera module (Sony IMX219) via the 22-pin FPC CSI connector.
Gently lift the FPC connector latch on the CSI port.
Insert the ribbon cable with the contacts facing the board (metal contacts down).
Press the latch down to lock the cable.
The imx219-preview.sh script is pre-installed at /usr/local/bin/imx219-preview.sh.
# Basic preview at 15 fps (default)
sudo imx219-preview.sh
# Preview at 30 fps
sudo imx219-preview.sh 30
# Low-light mode (maximum gain and exposure at 5 fps)
sudo GAIN=232 imx219-preview.sh 5The preview displays live video on the HDMI output. Press Ctrl+C to exit.
Note: The script requires root (
sudo) becausekmssinkneeds DRM master access. Any running desktop session (lightdm) is stopped automatically while the preview is running and restarted on exit.
| Variable | Default | Range | Description |
|---|---|---|---|
FPS | 15 | 5/8/10/15/30 | Frame rate (passed as first argument) |
WB_R | 0.5 | 0.0 – 1.0 | White-balance red channel reference |
WB_B | 0.6 | 0.0 – 1.0 | White-balance blue channel reference |
GAIN | 150 | 0 – 232 | Analogue gain (increase for low-light conditions) |
DGAIN | 256 | 256 – 4095 | Digital gain (higher values increase noise) |
EXPOSURE | auto | lines | Exposure lines (defaults to maximum for chosen FPS) |
Example — warmer white balance at 10 fps:
sudo WB_R=0.4 WB_B=0.5 imx219-preview.sh 10The 40-pin expansion header provides GPIO signals at 3.3 V logic levels. All user-accessible signal pins default to GPIO mode. Optional peripheral functions (I2C, SPI, UART, PWM) can be enabled via device tree overlay.
Note: Pins 27/28 (I2C2) are permanently assigned to the internal I2C bus used by the camera module and cannot be used as general GPIO.
See the complete 40-pin table in below.
All 40 pins are listed below. Use gpioset / gpioget from the gpiod package for GPIO-mode pins.
| Pin | Name | Default Function | gpiochip | Line | Optional Function |
|---|---|---|---|---|---|
| 1 | 3V3 | 3.3 V power | — | — | — |
| 2 | 5V | 5 V power | — | — | — |
| 3 | GPIO2 | GPIO (MCU_GPIO0_20) | gpiochip0 | 20 | WKUP_I2C0_SDA |
| 4 | 5V | 5 V power | — | — | — |
| 5 | GPIO3 | GPIO (MCU_GPIO0_19) | gpiochip0 | 19 | WKUP_I2C0_SCL |
| 6 | GND | Ground | — | — | — |
| 7 | GPIO4 | GPIO (GPIO0_39) | gpiochip1 | 39 | — |
| 8 | GPIO14 | GPIO (GPIO1_25) | gpiochip2 | 25 | UART5_TXD |
| 9 | GND | Ground | — | — | — |
| 10 | GPIO15 | GPIO (GPIO1_24) | gpiochip2 | 24 | UART5_RXD |
| 11 | GPIO17 | GPIO (GPIO1_23) | gpiochip2 | 23 | — |
| 12 | GPIO18 | GPIO (GPIO1_0) | gpiochip2 | 0 | MCASP2_ACLKX |
| 13 | GPIO27 | GPIO (GPIO0_42) | gpiochip1 | 42 | — |
| 14 | GND | Ground | — | — | — |
| 15 | GPIO22 | GPIO (GPIO1_22) | gpiochip2 | 22 | — |
| 16 | GPIO23 | GPIO (GPIO0_38) | gpiochip1 | 38 | — |
| 17 | 3V3 | 3.3 V power | — | — | — |
| 18 | GPIO24 | GPIO (GPIO0_40) | gpiochip1 | 40 | — |
| 19 | GPIO10 | GPIO (GPIO1_18) | gpiochip2 | 18 | SPI0_D0 (MOSI) |
| 20 | GND | Ground | — | — | — |
| 21 | GPIO9 | GPIO (GPIO1_19) | gpiochip2 | 19 | SPI0_D1 (MISO) |
| 22 | GPIO25 | GPIO (GPIO0_14) | gpiochip1 | 14 | — |
| 23 | GPIO11 | GPIO (GPIO1_17) | gpiochip2 | 17 | SPI0_CLK |
| 24 | GPIO8 | GPIO (GPIO1_15) | gpiochip2 | 15 | SPI0_CS0 |
| 25 | GND | Ground | — | — | — |
| 26 | GPIO7 | GPIO (GPIO1_16) | gpiochip2 | 16 | SPI0_CS1 |
| 27 | I2C2_SDA | I2C2 SDA (i2c-2) | — | — | (camera bus, fixed) |
| 28 | I2C2_SCL | I2C2 SCL (i2c-2) | — | — | (camera bus, fixed) |
| 29 | GPIO5 | GPIO (GPIO0_36) | gpiochip1 | 36 | — |
| 30 | GND | Ground | — | — | — |
| 31 | GPIO6 | GPIO (GPIO0_33) | gpiochip1 | 33 | — |
| 32 | GPIO12 | GPIO (GPIO1_14) | gpiochip2 | 14 | EHRPWM0_B |
| 33 | GPIO13 | GPIO (GPIO1_13) | gpiochip2 | 13 | EHRPWM0_A |
| 34 | GND | Ground | — | — | — |
| 35 | GPIO19 | GPIO (GPIO0_91) | gpiochip1 | 91 | MCASP2_AFSX |
| 36 | GPIO16 | GPIO (GPIO1_9) | gpiochip2 | 9 | EHRPWM1_A |
| 37 | GPIO26 | GPIO (GPIO0_41) | gpiochip1 | 41 | — |
| 38 | GPIO20 | GPIO (GPIO1_5) | gpiochip2 | 5 | MCASP2_AXR0 |
| 39 | GND | Ground | — | — | — |
| 40 | GPIO21 | GPIO (GPIO1_2) | gpiochip2 | 2 | MCASP2_AXR1 |
gpiochip0=mcu_gpio0(MCU domain).gpiochip1=main_gpio0(GPIO0_x).gpiochip2=main_gpio1(GPIO1_x).
All expansion header I/O pins operate at 3.3 V. Do not connect 5 V signals directly to GPIO pins.
The board ships with libgpiod v2.x. The -c flag is required to specify the chip.
List all GPIO chips:
gpiodetectRead a GPIO input (example: Pin 11 / BCM GPIO23 → gpiochip2 line 23):
gpioget -c gpiochip2 23
# Output: "23"=active (active = high, inactive = low)Read multiple pins at once:
gpioget -c gpiochip1 39 42
gpioget -c gpiochip2 23
# Output: "39"=active "42"=activeDrive a pin high and hold (example: Pin 7 / BCM GPIO4 → gpiochip1 line 39):
# Run in the background — the pin stays driven until the process is killed
gpioset -c gpiochip1 39=1 &
# Release the pin (restores to input)
pkill gpiosetDrive a pin for a fixed duration, then release:
# Hold high for 2 seconds, then exit automatically
gpioset --hold-period=2s -c gpiochip1 39=1Toggle a pin repeatedly (example: 500 ms high → 500 ms low → exit):
gpioset -t 500ms,500ms,0 -c gpiochip1 39=1Monitor pin edges (example: Pin 11 → gpiochip2 line 23):
gpiomon -c gpiochip2 23 # both edges
gpiomon --edges=rising -c gpiochip2 23Scan I2C2 bus (pins 27/28, /dev/i2c-2):
i2cdetect -y 2PWM on pin 32 (BCM GPIO12 → pwmchip0 channel 0), 1 kHz, 50% duty cycle:
# Export channel 0
echo 0 | sudo tee /sys/class/pwm/pwmchip0/export
# Set period 1 ms = 1000000 ns
echo 1000000 | sudo tee /sys/class/pwm/pwmchip0/pwm0/period
# Set duty cycle 500 µs = 500000 ns
echo 500000 | sudo tee /sys/class/pwm/pwmchip0/pwm0/duty_cycle
# Enable
echo 1 | sudo tee /sys/class/pwm/pwmchip0/pwm0/enableThe image ships with DPMS (display power management) disabled by default. If the screen goes blank, press any key or move the mouse to check whether the display manager is still running. If the issue persists, verify:
cat /etc/X11/xorg.conf.d/10-no-dpms.conf
grep xserver-command /etc/lightdm/lightdm.conf# Check that the CSI capture device is present
v4l2-ctl --list-devices
# Check media pipeline topology
media-ctl -d /dev/media0 --print-topologyIf the camera is not listed, verify that the FPC cable is fully seated in the connector and the latch is locked.
Ensure the SD card is fully inserted (it should click into place).
Try a different card. Cards smaller than 16 GB or slower than Class 10 may not work reliably.
Re-flash the image and verify the write completed without errors.
The on-board U.FL connector requires an external antenna for reliable Wi-Fi performance. Without an antenna, range will be very limited.