ODROID-M1 (Hardkernel)

Hardkernel CoSBClinux

⚡ The essentials in 60 seconds

One of the most defining characteristics of the ODROID-M1 is its exceptional storage flexibility, particularly regarding high-speed data access. The board includes an M.2 NVMe M-Key socket that supports PCIe 3.0 with two lanes. In practical terms, this allows for read speeds of approximately 1,600 MB/s, which is roughly four times faster than the same SSD would perform on a Raspberry Pi CM4 system. This makes the M1 an attractive choice for network-attached storage (NAS) applications or any scenario requiring rapid data retrieval. Beyond NVMe, the board offers native SATA 3.0 connectivity with a dedicated power connector, though it is important to note that this port supplies only 5 volts. This is sufficient for 2.5-inch solid-state drives or portable hard drives, but 3.5-inch desktop hard drives require external power sources. Additionally, the board supports eMMC modules and microSD cards, giving users multiple layers of storage options. A unique feature is the 16 MB SPI NOR flash preloaded with Petitboot, a flexible boot manager that simplifies the process of booting from NVMe or SATA devices, although users must be mindful of the physical SPI Boot Select switch, which determines whether the system uses this flash memory or defaults to other boot methods.

Connectivity options on the ODROID-M1 are robust, though they come with a notable omission: there is no onboard Wi-Fi or Bluetooth. Users requiring wireless capabilities must rely on external USB dongles, a design choice that keeps the board’s cost lower and allows for more flexibility in choosing wireless standards. For wired networking, the board features a Gigabit Ethernet port powered by a Realtek RTL8211F transceiver, ensuring stable and fast local network connections. The USB interface includes two USB 3.0 ports, one of which can be configured as a USB 2.0 On-The-Go (OTG) port via a jumper, along with two USB 2.0 ports and a micro-USB device port. For display output, the M1 supports HDMI 2.0, capable of driving 4K resolution at 60 frames per second with HDR support. It also includes a MIPI DSI interface for connecting small displays, which was tested with a 1280x800 screen, and a MIPI CSI interface for camera modules. Audio is handled by an RK809 or RK817 codec, providing a 3.5 mm headphone jack and a mono speaker output.

The physical design of the ODROID-M1 is larger than many "Raspberry Pi-like" boards, measuring 122 x 90 x 16 mm, with a substantial heatsink that extends the footprint to 123 x 100 mm. This larger size accommodates the powerful components and the extensive cooling required for sustained performance. The board is powered via a DC barrel jack accepting 7.5 to 15.5 volts, with a 12V 2A adapter recommended for optimal stability. Power consumption is remarkably efficient, with idle usage around 1.3 watts and heavy load peaks at 4.5 watts. During stress tests, temperatures peaked just over 50°C at an ambient temperature of 35°C, indicating effective thermal management. The board also includes a 40-pin GPIO expansion header, which provides access to general-purpose input/output lines for hardware projects, although the exact pinout and voltage levels should be verified against the official Hardkernel documentation, which may require manual browser access due to automated fetch restrictions.

Software support for the ODROID-M1 is comprehensive, catering to both official and community-driven ecosystems. Hardkernel provides official images for Ubuntu 20.04 and 22.04 LTS, as well as Android 11, though these initially shipped with a Linux 4.19 kernel. For users seeking modern kernel features, such as the Panfrost GPU driver, community distributions like Armbian and DietPi are highly recommended. These distributions support the board with mainline Linux kernels, which have seen significant improvement since the initial device tree was added in late 2022. The mainline support includes drivers for the GPU, HDMI, audio, and storage controllers, making the board increasingly compatible with standard Linux software. A known issue in earlier mainline kernels involved a pinmux regression affecting analog audio, but this was resolved in October 2025, highlighting the active maintenance of the board’s software stack.

In summary, the ODROID-M1 is a versatile single-board computer that excels in storage performance and connectivity, making it ideal for home servers, media centers, and development projects. Its combination of a powerful quad-core processor, fast NVMe storage, and extensive I/O options offers a compelling value proposition. While it lacks built-in wireless connectivity and requires attention to boot configuration due to its SPI flash setup, these are minor trade-offs for its performance capabilities. With strong community support and active mainline Linux integration, the ODROID-M1 remains a relevant and powerful choice for enthusiasts and professionals alike.

Forum (1 topic) →

AttrSpecsverified
socRockchip RK3568B2 — a plastic-package variant of the RK3568 chosen during the IC shortage (CNX; Hardkernel forum explanation, forum.odroid.com f=29 t=44218).✔
cpuquad-core Arm Cortex-A55 (Armv8.2-A, 64-bit) @ up to 2.0 GHz (Wikipedia lists 1.992 GHz) — confirms the "quad A55" claim.? unverified
gpu_npuArm Mali-G52 MP2 GPU; 0.8 TOPS NPU AI accelerator (CNX).? unverified
ram4 gb? unverified
storage- MicroSD socket (mainline: sdmmc0 enabled, DTS) - eMMC module socket (mainline: sdhci enabled; eMMC 5.1 per Wikipedia) - 16 MB SPI NOR flash preinstalled with Petitboot (CNX; mainline DTS enables the Rockchip SPI flash controller with jedec,spi-nor and fixed partitions) - Native SATA 3.0 port + SATA power connector (5 V only), tested ≈500 MB/s (CNX) - M.2 NVMe M-Key socket, 2-lane PCIe 3.0, tested ≈1600 MB/s — about 4× the same SSD on a Raspberry Pi CM4 system (CNX). Mainline DTS enables pcie3x2 + pcie30phy (DTS).✔
video1× HDMI 2.0 up to 4Kp60 with HDR/EDID; 1× 4-lane MIPI DSI (tested with 1280×800 display) (CNX). Mainline enables VOP2 + HDMI TX (DTS; commit "Enable vop2 and hdmi tx on ODROID-M1").? unverified
camera1× 2-lane MIPI CSI (CNX).? unverified
audio3.5 mm headphone jack + mono speaker output (1.3 W @ 8 Ω); RK809/RK817 codec on I2S1 (CNX; mainline simple-audio-card "Analog RK817", DTS).? unverified
networking1× Gigabit Ethernet RJ45 via Realtek RTL8211F transceiver (CNX); mainline: GMAC0 RGMII with generic ethernet-phy-ieee802.3-c22 PHY (DTS). No onboard WiFi/Bluetooth — absent from every spec sheet reviewed; Hardkernel sells USB WiFi dongles instead (CNX M1S review).✔
usb2× USB 3.0 (one configurable as USB 2.0 OTG via jumper), 2× USB 2.0, 1× micro-USB device port (CNX).? unverified
gpio40-pin expansion header (CNX; Wikipedia counts 24 usable GPIO lines) + separate UART header for the serial console.? unverified
powerDC barrel jack (5.5×2.1 mm), 7.5–15.5 V, 12 V/2 A adapter recommended (CNX); Wikipedia states 7.5–17 V up to 25 W. Mainline DTS models a fixed dc_12v input regulator.? unverified
power_consumption_hardkernel_via_cnxsuspend 0.06 W, idle 1.3 W, heavy load 4.5 W.? unverified
thermalstress test peaked a little over 50 °C at 35 °C ambient with the stock heatsink (CNX).? unverified
dimensions_weightboard 122 × 90 × 16 mm; heatsink 123 × 100 × 19 mm; 253 g with heatsink (CNX).? unverified
miscpower button, SPI Boot Select switch, IR receiver (mainline: gpio-ir-receiver, DTS), RTC battery holder, 2 system LEDs (red power, blue heartbeat — both in mainline DTS), M.2 LED.? unverified
  • Manufacturer: Hardkernel Co., Ltd. (South Korea) — device tree copyright line "Copyright (c) 2022 Hardkernel Co., Ltd." (mainline DTS).
  • Year introduced: 2022. Launched March 29, 2022 per CNX Software (launch article); Wikipedia's ODROID table also lists 2022 (en.wikipedia.org/wiki/ODROID). - Note: some task briefs date the CNX announcement to 2023 — that is the ODROID-M1S (announced 2023-11-14, CNX). The original M1 is a 2022 product.
  • Status: Active. At launch Hardkernel stated Rockchip guarantees RK3568B2 supply for 15 years and planned B2B availability of the M1 until 2036+ (CNX launch article). Successors exist (ODROID-M1S 2023, ODROID-M2 2024) but the M1 remains in Hardkernel's Rockchip product line (CNX M2 article).
  • Launch price: $90 for the 8 GB RAM model; $70 for the 4 GB model (out of stock at launch) (CNX launch article).
  • Variants: 4 GB and 8 GB LPDDR4 at launch (CNX; Wikipedia lists the 8 GB model).

+ Strengths

  • Fast native NVMe on a sub-$100 ARM SBC: 2-lane PCIe 3.0 M.2 slot measured at ≈1600 MB/s at launch — ~4× the same SSD on a Raspberry Pi CM4 (CNX). Combined with GbE this made the M1 an early budget NAS/mini-server favorite.
  • Three simultaneous storage classes: NVMe + native SATA 3.0 (with 5 V SATA power) + eMMC module + microSD — SATA and SPI flash were later removed on the M1S, making them M1-specific (CNX M1S article).
  • 16 MB SPI flash with Petitboot + SPI Boot Select switch — network/disk boot flexibility unusual on RK3568 boards (CNX).
  • 12 V DC jack and power button (the M1S reverted to 5 V USB-C), plus RTC battery holder and IR receiver (CNX).
  • 0.8 TOPS NPU (RK3568 RNNP) and hardware video codecs (RK3568 family feature; CNX SoC comparison links).
  • Form factor note: despite the "pi-like" catalog grouping, the M1 is not Raspberry-Pi-sized: 122 × 90 × 16 mm (vs 85 × 56 mm on a Pi 4), with the large under-board heatsink extending to 123 × 100 mm (CNX). The Pi-like comparison is functional (GPIO header, HDMI, GbE, maker positioning), not mechanical.
  • Mainline-friendly today: full device tree in torvalds/linux with GPU (Panfrost), HDMI, audio, NVMe, eMMC, SD, NOR, IR, LEDs, SARADC enabled (DTS).

− Weaknesses

  • Official images ship a 4.19 BSP kernel (Linux 4.19.219 on Ubuntu, 4.19.193 on Android at launch) — no modern mainline features (Panfrost GPU, etc.) on the vendor stack; mainline support arrived separately (CNX launch article).
  • Mainline analog-audio pinmux regression (fixed Oct 2025): I2S1 claimed pins already held, producing rockchip-pinctrl ... pin gpio1-10 already requested / rockchip-i2s-tdm ... Error applying setting and dead RK817 audio; fixed by limiting I2S1 pins to SCLK/LRCK/SDI0/SDO0 (commit d425aef66e62).
  • SATA port power is 5 V only — fine for 2.5″ SSDs/HDDs, but 3.5″ spinning drives need external power (CNX launch article).
  • No onboard WiFi/BT — USB dongle required (spec sheets, CNX; accessory use in CNX M1S review).
  • Boot-source switch gotcha: the SPI Boot Select switch decides whether the SPI NOR (Petitboot) path is used; with Petitboot active, SD/eMMC boot behaves differently than users expect.
  • Big heatsink constrains enclosures: 123 × 100 × 19 mm heatsink vs 122 × 90 mm board; Hardkernel's metal case uses a sliding-slot design (CNX).
  • RK3568B2 vs RK3568 naming: B2 is a package variant forced by the 2021-2022 chip shortage; datasheets/lead-time confusion documented by Hardkernel (forum thread, via CNX).
  • Retour d'expérience expert expert — expert-pi-like
    • Petit bilan sur l'ODROID-M1 après quelques mois d'utilisation. Le point fort incontestable reste le stockage : le port M.2 NVMe en PCIe 3.0 x2 est vraiment rapide, on atteint les 1600 Mo/s annoncés, ce qui écrase tout ce qu'on peut faire sur un Raspberry Pi CM4. C'est un vrai atout pour un NAS ou u… — expert-pi-like
    • Merci pour ce retour. Tu confirmes bien que le format n'est pas du tout Pi-like en réalité ? J'ai vu les dimensions (122x90mm) et le radiateur qui dépasse, ça va me poser problème pour mon boîtier existant prévu pour un Pi 4. De plus, l'absence de WiFi/Bluetooth embarqué est un peu frustrante, on e… — makershadow
    • Exact pour les dimensions, le radiateur fait 123x100x19mm, ça ne rentre dans aucun boîtier standard Pi. Pour l'audio, le bug de pincmux I2S1 qui tuait le codec RK817 sur mainline a été corrigé récemment (octobre 2025), donc si tu as un noyau à jour, l'audio fonctionne. Mais sur les vieilles images … — expert-pi-like

Community feedback and projects

  • Armbian community images / home server & NAS builds

    Armbian community images / home server & NAS builds — supported board odroidm1 : , . (unverified au 2026-10-13) — reference hosted on armbian, unverified status verified on 2026-10-13. Project documented in the odroid-m1 (SBC) sheet; role: deepen hands-on exp…

  • DietPi lightweight server images for ODROID-M1

    DietPi lightweight server images for ODROID-M1 — official DietPi_OdroidM1-ARMv8 target: . (unverified au 2026-10-13) — reference hosted on dietpi, unverified status verified on 2026-10-13. Project documented in the odroid-m1 (SBC) sheet; role: deepen familiar…

  • Mainline Linux enablement

    Mainline Linux enablement — (the porting project itself, by Aurelien Jarno and contributors) — board DTS and feature-enabling commits in ; enables Debian/Ubuntu/Fedora generic arm64 kernels on the board. (unverified au 2026-10-13) Hardkernel official BSP — ke…

  • CNX Software launch & comparison coverage

    CNX Software launch & comparison coverage — (hands-on setup guidance, NVMe/SATA benchmarks context): , . (unverified au 2026-10-13)

  • Community projects hub

    Community projects hub — ODROID forum board for the M1 line: . (unverified au 2026-10-13) — community hosted on forum, unverified status verified on 2026-10-13. Project documented in the odroid-m1 (SBC) datasheet; role: deepen the handling of this board.

Content not available yet.

  • Official images ship a 4.19 BSP kernel (Linux 4.19.219 on Ubuntu, 4.19.193 on Android at launch) — no modern mainline features (Panfrost GPU, etc.) on the vendor stack; mainline support arrived separately (CNX launch article).
  • Mainline analog-audio pinmux regression (fixed Oct 2025): I2S1 claimed pins already held, producing rockchip-pinctrl ... pin gpio1-10 already requested / rockchip-i2s-tdm ... Error applying setting and dead RK817 audio; fixed by limiting I2S1 pins to SCLK/LRCK/SDI0/SDO0 (commit d425aef66e62).
  • SATA port power is 5 V only — fine for 2.5″ SSDs/HDDs, but 3.5″ spinning drives need external power (CNX launch article).
  • No onboard WiFi/BT — USB dongle required (spec sheets, CNX; accessory use in CNX M1S review).
  • Boot-source switch gotcha: the SPI Boot Select switch decides whether the SPI NOR (Petitboot) path is used; with Petitboot active, SD/eMMC boot behaves differently than users expect.
  • Big heatsink constrains enclosures: 123 × 100 × 19 mm heatsink vs 122 × 90 mm board; Hardkernel's metal case uses a sliding-slot design (CNX).
  • RK3568B2 vs RK3568 naming: B2 is a package variant forced by the 2021-2022 chip shortage; datasheets/lead-time confusion documented by Hardkernel (forum thread, via CNX).
  • Allumer une LED depuis le connecteur GPIO debutant Schéma : IMG-odroid-m1-debutant-1-odroidm1-led-gpio.svg — LED et résistance 330 Ω branchées sur le connecteur 40 broches de l'ODROID-M1, masse commune
  • Lire un bouton et afficher dans la console debutant Schéma : IMG-odroid-m1-debutant-2-odroidm1-bouton-console.svg — bouton-poussoir entre une broche GPIO et la masse, résistance de pull-up interne activée, terminal console à l'écran
  • Premier script Python : état de la carte debutant Schéma : IMG-odroid-m1-debutant-3-odroidm1-premier-script-python.svg — ODROID-M1 avec son SSD NVMe M.2, un terminal affichant le rapport système généré par le script Python
  • Variation d'intensité d'une LED en PWM intermediaire Schéma : IMG-odroid-m1-intermediaire-1-odroidm1-pwm-led.svg — LED de puissance pilotée par un transistor NPN depuis une broche PWM du connecteur 40 broches, avec résistance de base
  • Lire un capteur I2C (température/humidité) intermediaire Schéma : IMG-odroid-m1-intermediaire-2-odroidm1-i2c-capteur.svg — petit capteur I2C à 4 broches relié au bus SDA/SCL du connecteur 40 broches de l'ODROID-M1 avec résistances de pull-up
  • Ethernet Gigabit et accès SSH intermediaire Schéma : IMG-odroid-m1-intermediaire-3-odroidm1-ethernet-ssh.svg — ODROID-M1 relié par câble RJ45 au routeur (Ethernet Gigabit Realtek RTL8211F), un ordinateur portable se connectant en SSH, absence de WiFi notée
  • Booter sur NVMe, eMMC ou SD et récupérer une carte bloquée avance Schéma : IMG-odroid-m1-avance-1-odroidm1-boot-nvme.svg — les trois supports de démarrage de l'ODROID-M1 (microSD, module eMMC, SSD M.2 NVMe), le switch SPI Boot Select et la puce SPI NOR 16 Mo avec Petitboot
  • Surveillance thermique et fréquence CPU avance Schéma : IMG-odroid-m1-avance-2-odroidm1-thermique.svg — ODROID-M1 avec son dissipateur 123×100 mm, sondes de température des quatre coeurs Cortex-A55 et courbe de fréquence dans un terminal
  • NAS Samba et conteneurs Docker sur NVMe avance Schéma : IMG-odroid-m1-avance-3-odroidm1-nas-samba.svg — ODROID-M1 en serveur NAS : SSD NVMe et disque SATA 2,5 pouces partagés en Samba, conteneurs Docker, clients du réseau local

Code library — examples written for this board

  • clignotante.py Python

    The getting-underway script on an SBC: an LED on the GPIO header blinks at 1 Hz. python3-gpiod drives the GPIO chip straight through the kernel, with no proprietary library.

  • bouton-gpio.py Python

    A button on the GPIO header triggers an action on press and release. Generic version that polls the gpiod line directly, with a 30 ms software debounce filter.

  • capteur-i2c.sh Bash

    The Linux reflex for any I2C sensor: scan the bus with i2cdetect, confirm the chip is there, then read a few registers with i2cget. Direct terminal output without writing a line of application code.

  • surveillance-temperature.sh Bash

    With zero dependencies, this script reads the thermal sensor exposed by the Linux kernel, logs CPU temperature and frequency to CSV and prints an alert past a threshold. Perfect to size passive cooli…

  • capteur-dht11.py Python

    The Adafruit CircuitPython driver runs on stock Linux: it bit-bangs the DHT 1-wire protocol through libgpiod. The script prints temperature and humidity every 2 s, shrugging off invalid frames withou…

  • servo-pwm-sysfs.sh Bash

    The Linux kernel PWM interface (sysfs) is identical on every board: 20 ms period, 0.5-2.5 ms pulse. This bash script sweeps a servo over 3 cycles then cuts power to stop the buzzing.

  • serveur-web-capteur.py Python

    With no external dependency, the board becomes a web server: an HTML page shows SoC temperature and uptime, a JSON endpoint exposes them to dashboards. The network reflex for monitoring a headless SB…

  • reseau-ethernet.sh Bash

    In a fixed installation, a static IP avoids hunting the board in the DHCP lease list. The script creates (or fixes) a manual NetworkManager profile on the Ethernet port, then pings the gateway to ver…

  • journal-cron.sh Bash

    The cron + short-script pair is Linux' universal scheduler: every minute, CPU load and temperature are appended to a CSV with built-in rotation. Zero dependencies, zero daemons, survives reboots on i…

  • veilleur-systemd.py Python

    A heartbeat LED plus a per-second service check: the script becomes a systemd daemon with Restart=always, started at boot. The robustness pattern for a headless embedded board.

Examples and repos found online