
Multicdc LEDs
ondras12345/multicdc
RP2040-based 6-channel USB to UART converter with Zephyr RTOS

RP2040-based 6-channel USB to UART converter with Zephyr RTOS
Multicdc is an open-source printed circuit board by ondras12345, from the ondras12345/multicdc repository on GitHub, published under the MIT licence. It is a 2-layer board of 54.6 × 49.5 mm with 35 parts on 47 nets, routed with 251 tracks and 10 vias.
It is built around the Π122M30, RP2040-ZERO and ESD5Z3.3T1G, with the P4SMAJ5.0A among its other parts. Its parts include 12 capacitors, 10 connectors, 7 ICs and 2 diodes. It belongs with the RP2040 boards of this library.
This is a simple RP2040-based 6-channel USB to UART converter.
This is my first project using the Zephyr RTOS, so there might be lots of mistakes. However, it seems to work.

The device creates 7 /dev/ttyACM* devices when connected to a linux host.
The first 6 are linked to hardware UARTs, and /dev/ttyACM6 is used for
logging and shell.
The RP2040 only has 2 hardware UARTs. The other 4 channels use the PIOs.
Unfortunately, the pico-uart-pio driver doesn't allow changing the baud
rate at runtime. For this reason, baud rates (current-speed) for those
channels need to be set in the device tree (app.overlay).
Pin map (most of these can be changed arbitrarily):
| pin | function |
|---|---|
| P0 | Tx0 |
| P1 | Rx0 |
| P2 | Tx1 |
| P3 | Rx1 |
| P4 | Tx2 |
| P5 | Rx2 |
| P6 | Tx3 |
| P7 | Rx3 |
| P8 | Tx4 |
| P9 | Rx4 |
| P10 | Tx5 |
| P11 | Rx5 |
. ~/zephyrproject/.venv/bin/activate
. ~/zephyrproject/zephyr/zephyr-env.sh
west build
# enter bootloader: press BOOT button, press & release RESET, release BOOT
west flashsudo tee /etc/udev/rules.d/99-multicdc.rules > /dev/null << "EOF"
SUBSYSTEM=="tty", ENV{ID_VENDOR_ID}=="2fe3", ENV{ID_MODEL_ID}=="6cdc", ENV{ID_USB_INTERFACE_NUM}=="00", SYMLINK+="tty-mcdc0ch0"
SUBSYSTEM=="tty", ENV{ID_VENDOR_ID}=="2fe3", ENV{ID_MODEL_ID}=="6cdc", ENV{ID_USB_INTERFACE_NUM}=="02", SYMLINK+="tty-mcdc0ch1"
SUBSYSTEM=="tty", ENV{ID_VENDOR_ID}=="2fe3", ENV{ID_MODEL_ID}=="6cdc", ENV{ID_USB_INTERFACE_NUM}=="04", SYMLINK+="tty-mcdc0ch2"
SUBSYSTEM=="tty", ENV{ID_VENDOR_ID}=="2fe3", ENV{ID_MODEL_ID}=="6cdc", ENV{ID_USB_INTERFACE_NUM}=="06", SYMLINK+="tty-mcdc0ch3"
SUBSYSTEM=="tty", ENV{ID_VENDOR_ID}=="2fe3", ENV{ID_MODEL_ID}=="6cdc", ENV{ID_USB_INTERFACE_NUM}=="08", SYMLINK+="tty-mcdc0ch4"
SUBSYSTEM=="tty", ENV{ID_VENDOR_ID}=="2fe3", ENV{ID_MODEL_ID}=="6cdc", ENV{ID_USB_INTERFACE_NUM}=="0a", SYMLINK+="tty-mcdc0ch5"
SUBSYSTEM=="tty", ENV{ID_VENDOR_ID}=="2fe3", ENV{ID_MODEL_ID}=="6cdc", ENV{ID_USB_INTERFACE_NUM}=="0c", SYMLINK+="tty-mcdc0shell"
EOF
sudo udevadm control --reload-rules
sudo udevadm trigger| Qty | Value | Footprint | References |
|---|---|---|---|
| 12 | 100n | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12 |
| 6 | Conn_02x04_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_Vertical | J1, J2, J3, J4, J5, J6 |
| 6 | Π122M30 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U1, U2, U3, U4, U5, U6 |
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 3 | Conn_01x06_Pin | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J7, J8, J9 |
| 1 | Conn_01x08_Pin | Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical | J10 |
| 1 | ESD5Z3.3T1G | Diode_SMD:D_SOD-523 | D2 |
| 1 | P4SMAJ5.0A | Diode_SMD:D_SMA_Handsoldering | D1 |
| 1 | RP2040-Zero | ondra:RP2040-Zero | U7 |
It measures 54.6 × 49.5 mm and has 2 copper layers, 1.6 mm thick.
35 parts, built around the Π122M30, RP2040-ZERO, ESD5Z3.3T1G and P4SMAJ5.0A. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the ondras12345/multicdc repository on GitHub, at the commit this page was made from: the board is hardware/multicdc/multicdc.kicad_pcb and its schematic hardware/multicdc-LEDs/multicdc-LEDs.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

ondras12345/multicdc
RP2040-based 6-channel USB to UART converter with Zephyr RTOS


Kofen/PoE_Ethernet_GPIB_Adapter
This folder contains the necessary hardware files for the PoE Ethernet GPIB Adapter project.

RichardRozehnal/Atari-SIO2SD-Mini
Atari SIO2SD disk drive emulator for 8bit Atari.

solderable/storm-tracker-hardware
Open-source-ready Storm Tracker hardware design, documentation, BOM, and manufacturing package

PSU-Ext-Org/psu-ext-hardware
A repository to store PSU-EXT hardware design assets, schematics, circuit diagrams, CAD files and manufacturing data.

Cadburies/SisuAssistant
Sailing yacht Sisu: Home Assistant + ESPHome Marine Board (alternator regulation, tanks) + MQTT kernel, Signal K/Grafana/InfluxDB on a NAS, and Sisu Nav chart & weather-routing cockpit.
