# UNO Q — Hardware & Specifications ## Architecture at a glance The UNO Q combines two processors on one classic UNO form-factor board: | Role | Chip | Details | Runs | |---|---|---|---| | **MPU (Linux side)** | Qualcomm **QRB2210** (Dragonwing) | Quad-core Arm Cortex-A53 @ **2.0 GHz**; Adreno 702 GPU @ 845 MHz; dual ISP up to 25 MP @ 30 fps | **Debian Linux** (full OS, upstream support) | | **MCU (Arduino side)** | **STM32U585** | Arm Cortex-M33 @ up to **160 MHz**, **2 MB flash**, **786 KB SRAM** | Arduino sketches on **Zephyr OS** | | **Radio** | **WCBN3536A** | Dual-band **Wi-Fi 5** (2.4/5 GHz) + **Bluetooth 5.1**, onboard antennas | — | | **Multimedia codec** | **ANX7625** | Video/audio out over the USB-C connector (DisplayPort) | — | | **PMIC** | Qualcomm **PM4145** | Power management | — | The two processors are internally linked by a dedicated serial connection managed by the `arduino-router` service (see the Bridge reference). There is no need — and it is a mistake — to bridge them with external wires. ## Memory & storage variants - **RAM:** 2 GB or 4 GB **LPDDR4**. - **Storage:** 16 GB or 32 GB **eMMC**. - Product SKU family: **ABX00162 … ABX00173**. - Arduino recommends the **4 GB** variant for standalone / single-board-computer use (running the desktop + App Lab on-device). The 2 GB variant is fine when driven from a PC in Network Mode. ## Powering the board Three supported ways to power it (choose one): 1. **USB-C** cable providing **5 VDC / 3 A** (cable not included). 15 W sink. 2. External **+5 VDC** to the **5V** pin. 3. External **+7–24 VDC** to the **VIN** pin. For a standalone desk setup the usual path is a USB-C multiport (dongle) adapter with external power delivery feeding the board while also breaking out HDMI/USB. **Apple's USB-C dongle has been tested and found incompatible** — use a non-Apple multiport adapter. The board **boots automatically when powered** — you do not press the power button to start it. ## USB-C connector — it does far more than power/programming | Feature | Capability | |---|---| | USB power (sink) | 5 VDC / 3 A (15 W) | | USB standard | USB 3.1 Gen 1 (5 Gb/s) | | Display over USB-C | DisplayPort output | With a USB-C **dongle** you additionally get: **HDMI** video out, **USB camera** input, **audio** (USB or 3.5 mm headset), **Ethernet**, **HID** (keyboard/mouse), and **storage** (microSD/USB drive). This is what makes SBC mode possible. ## Form factor & connectors - **Classic Arduino UNO form factor** → compatible with the huge existing range of UNO **shields**. - **Two connector tiers:** - **UNO-style headers** on top — prototyping/debugging, shield-compatible. - **High-speed header connectors** on the bottom (JMISC, JDIGITAL, JANALOG, JCTL, etc.) exposing extra digital pins and low-level interfaces. - Pinout PDF, datasheet, schematics, and STEP files are published on the Arduino docs product page (model ABX00162). Point users there for mechanical/CAD detail. ## Onboard user interface ### 8×13 blue LED matrix (MCU-controlled) - 104 LEDs (8 rows × 13 cols), driven by the STM32. - Library: `Arduino_LED_Matrix.h`. Draw a frame from a `uint8_t[104]` array. - Supports **grayscale/dimming**: `matrix.setGrayscaleBits(bits)` — e.g. `3` → 8 levels (0–7), `8` → 256 levels (0–255). ```cpp #include Arduino_LED_Matrix matrix; uint8_t frame[104] = { /* 8 rows of 13 values */ }; void setup() { matrix.begin(); matrix.setGrayscaleBits(1); // 1 bit = on/off matrix.draw(frame); } void loop() {} ``` ### 4× RGB LEDs — split across both processors - **LED 1 & LED 2 → controlled by the MPU (Linux)** via the sysfs LED class at `/sys/class/leds/...`. - **LED 3 & LED 4 → controlled by the MCU (sketch)** via `digitalWrite()` on named pins. - **All onboard RGB LEDs are ACTIVE-LOW** — logic `0` / `LOW` turns a segment **ON**. MPU (Linux) sysfs names: - LED 1: `red:user`, `green:user`, `blue:user` - LED 2: `red:panic`, `green:wlan`, `blue:bt` ```bash echo 1 | tee /sys/class/leds/red:user/brightness # ON echo 0 | tee /sys/class/leds/red:user/brightness # OFF ``` Or from Python via App Lab's helper: ```python from arduino.app_utils import App, Leds Leds.set_led1_color(1, 0, 0) # LED1 red on Leds.set_led1_color(0, 0, 0) # LED1 off ``` MCU (sketch) pin names: `LED3_R/LED3_G/LED3_B`, `LED4_R/LED4_G/LED4_B` — remember active-low: ```cpp pinMode(LED3_R, OUTPUT); digitalWrite(LED3_R, LOW); // red ON (active-low) ``` ### Power button - **Long press (5+ seconds) → reboots the Linux system.** - Not needed to power on (auto-boots on power). ### Hardware debug UART (system console) - A dedicated low-level UART on the **JCTL** connector exposes the SoC's main console (bootloader messages + Linux shell login). - **Parameters: 115200 bps, 1.8 V logic.** - ⚠️ **1.8 V logic only** — you must use a **1.8 V** USB-to-TTL converter (e.g. DSD Tech SH-U09C5). Using a 3.3 V/5 V adapter can damage the board. - Use for deep debugging when the board won't boot or the network is unavailable; ordinary work should use SSH instead.