Communication with the UART-enabled firmware is possible directly via USB through the Nucleo’s built-in ST-link.

However data transfer is considerably slower with UART than with SPI. At 115.2kbps a full transfer takes >640ms.

For a linux system the user must have the read/write permissions to:


On a Debian-based system this is easily and permanently achieved by adding the user to the group dialout:

sudo adduser esben dialout

There are two options:

  1. Using the command line interface (Otterly CLI)
  2. Using a graphical user interface (pyCCDGUI)

For the CLI any system with a gcc compiler should suffice.

For the GUI the requirements is python3 with matplotlib, numpy, pyserial and tkinter.


The graphical user interface for the TCD1304.

If you decide to use the GUI, I strongly recommend you to also take a look at Jens-Ulrich Frölich’s blog Leaves of Science or his github-page. He has improved the user experience a lot and uses Octave to analyze the collected data.