STM32 Ext Board Concept - Thoughts?

I’ve been working on a hybrid of @Vitaly’s uHub and uPico boards for my own use, and thought I’d share the concept here if anybody’s interested.

The goal is to get some of the functionality of both boards together, at a slightly lower manufacturing cost.

  • Two USB C ports connected directly to the USB C pins, to avoid the need for a USB hub.
  • STM32 replacing the RP2040, to avoid the need for crystal or flash components.
  • Connecting the microcontroller to the uConsole via GPIO instead of USB, to both preserve uConsole’s USB lines and make the microcontroller’s USB lines externally accessible.
  • Same USB C ports in the same position as the uHub, so the same faceplate should work for both.

With a CM4, you’d be able to program the STM32 over UART or I2C. With any other core, it will still work, but if they don’t have UART or I2C support for those pins, you might need to program the STM32 externally over USB.

The pins to program and reset the STM32 would be accessible either by physical button or over GPIO.

Power management is dependent on the uConsole (there’s no on-board linear regulator, and the device USB port has it’s power line disconnected). In theory, I could change this?

My main goal for the STM32 would be to use it as a USB HID device, sending keyboard commands to a headless computer over USB.

If I can find physical space on the board, I might also try to break out more microcontroller pins to possibly allow myself to solder in a sensor or LEDs or something.

This is my first STM32 project and my first fully assembled PCB project (I’ve only done keyboards before), so I’m not entirely sure what I’m doing.

Github linked below, but I don’t really know how Github works.


One embarrassing thing I’ve just realized is that the buttons would not be accessible in this layout.

just to make sure: you want to use the STM32 to have a USB-Client device in the uConsole?
If i recall correctly, the USB-C on the uconsole is wired as a usb-client and can be configured. I think i remember a thread in here where someone used it to expose the uconsole as a network interface and for transfering files as an usb stick.

I dont have any experience with it, but maybe it is worth a look.

Unfortunately, the USB-C on the uConsole isn’t connected to data on the CM4.

It’s also sometimes just nice to have a microcontroller.

based on the schematics it is connected, but i found the thread and realized that the issue is more … sofisticated:

dunno if it is fixable by a revision of the CM4 adapter or by using a CM4S instead.

well in case you go into production: i would love to order one :slight_smile:
only thing i would suggest: adding solder points for an internal usb device, so you could wire it inside and simply “block” the corresponding usb-c connector with a cover.