The project started as a STM32 alternative to BusPirate, offering access to the many hardware peripherals of STM32 microcontrollers. The firmware is modular, composed of functional blocks (“units”) that may be activated and configured by the user through INI configuration files. Those files are stored inside the module and edited programmatically, or with a text editor on a virtual FAT16 USB disk.

GEX is used as a GPIO header for the PC, except besides GPIO it also supports a range of hardware buses, and several analog features. The device is configured for a particular hardware setup, but the control script runs on the host PC. This lets you build graphical applications above the low level control code with PyQt or other toolkits, process data with NumPy or SciPy, and more. When needed, the Python library may be called from within MATLAB, too.


GEX can be connected through USB (CDC/ACM - virtual COM port), by a hardware UART, or wirelessly, using a nRF24L01+ transceiver module.

Hardware Functions

The firmware version 1.0 for STM32F072 contains the following key features:

Some features (specifically the analog ones) are experimental and exhibit various limitations. These will be addressed in a later firmware version, possibly as a full rewrite.