I'm having a problem with the Raspberry Pi Pico hello world example using the C/C++ SDK on Ubuntu. When I drag and drop the hello_usb.uf2 binary the USB drive connection to the Pico terminates as expected, but when I run "minicom -b 115200 -o -D /dev/ttyACM0" in my terminal window it returns to the command line after a few seconds without displaying any output from the Raspberry Pi Pico.

I noticed the following warning in the "Getting Started with Raspberry Pi Pico" online document which may be the source of my problem.

If you have not initialised the tinyusb submodule in your pico-sdk checkout then USB CDC serial, and other USB functions and example code, will not work as the SDK will contain no USB functionality.

Question: How do I initialize the tinyusb submodule in my pico-sdk checkout?

2 Answers 2


The tinyUsb is linked as a submodule of pico-sdk repository so, in order to compile it you will have to initialize it using git.

To initialize the tinyusb submodule you need to enter in your pico-sdk directory and run the following command line:

git submodule update --init

There is already a basic working app included in the pico-sdk. Under pico-sdk, look in lib/tinyusb/examples/device/cdc_dual_ports. Build the UF2 file for this, and push the UF2 file to the Pico board. The board will reboot itself and /dev/ttyACM0 will become available on your native Linux system. You can then use minicom as you wrote above. This example program sends the typed characters back as lower-case; that's how you know the program is working.

The procedure for building the uf2 file:

$ cd  $PICO_SDK_PATH/lib/tinyusb/examples/device/cdc_dual_ports
$ mkdir build && cd build
$ cmake .. && make -j4

You'll get a fresh uf2 file in the build directory.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.