Kookaberry Firmware for use with the Kookaberry V2 series modules and the Raspberry Pi Pico and Pico 2 modules

The new release of the Kooka Firmware V1.11.0 is now available (March 2025) on GitHub and is released to operate on the Kookaberry V2 series modules, the Raspberry Pi Pico (RP2040) and the Raspberry Pi Pico 2 (RP2350)

The KookaSuite IDE version V1.10.0 remains unchanged.

The Kooka Firmware is an implementation of MicroPython for the RP2040 and the RP2350 microcontrollers and is supported by KookaSuite which comprises –

  • KookaBlockly a visual blockly based IDE and
  • KookaIDE a scripting IDE plus access to the MicroPython REPL.

The Kooka Firmware has extensive in-built library functions for Display, timing, clocks, buttons, LEDs, Neopixels, LSM303 accelerometer / magnetometer, temperature, Soil moisture and power probes plus radios, servo motors, data logging and more.

Kooka Firmware

The Kooka Firmware may be accessed as follows:

  • Download the Kooka Firmware for the RP2040 or the RP2350 from the github repository at
    https://github.com/kookaberry/kooka-releases/releases
  • The zip file is the first file in the Assets section of the V1.11.0 release section Tip: The latest version is always the first (on top).
  • Unzip and expose the two files
    • for the RP2040
      • kooka_rp2040.bin and
      •  kooka_rp2040_mboot.uf2
    • for the RP2350
      • kooka_rp2350.bin
      • kooka_rp2350_mboot.uf2
  • The bootloader kooka_rp2040_mboot.uf2 or kooka_rp2350_mboot.uf2 is first loaded onto the Pico
  • The simplest way to load the boot loader is to depower the board (ie unplug the USB cable from the PC), then hold the BOOTSEL button down during board power-up (e.g. hold BOOTSEL down while connecting the USB). The Pico will then appear as a USB removable disc drive.
  • Drag / Drop (copy /paste) the bootloader file onto the disk. The board will write this file to the Pico Flash memory and restart the Pico.
  • When the Pico or Pico 2 is restarted the drive shown will be called KOOKABERRY:
  • Open the KOOKABERRY: drive and drag / drop (copy /paste) the kooka_rp2040.bin or the rp2350.bin file to the root directory. A copy of the .bin file should now appear in the root directory of the KOOKABERRY:
  • Depower the Pico by unplugging the USB cable. Repower the Pico by plugging in the USB cable.
  • The green LED on the Pico will flash as the Kookaberry files are loaded onto the Pico
  • After loading there will be two Folders in the KOOKABERRY: drive being
    • app
    • lib

KookaSuite IDE

The KookaSuite IDE may be accessed as follows:

Use of the Kooka Firmware and KookaSuite

Raspberry Pi RP2040 / RP2350 internal pin assignments for the Pico

Raspberry Pi has pre-assigned four of the GPIO RP2040 / RP2350 pin functions and thus the Pico / Pico 2 boards only exposes 26 of the possible 30 RP2040 / RP2350 microprocessor pins.

See Raspberry Pi Pico / Pico 2 Datasheets at

https://datasheets.raspberrypi.com/pico/pico-datasheet.pdf

https://datasheets.raspberrypi.com/pico/pico-2-datasheet.pdf

Raspberry Pi Pico / Pico 2 internal pin assignments

  • GPIO 23 – This is used internal to the Pico board for Power Control and its use changes the on-board regulator between Pulse Frequency Modulation to Pulse Width Modulation
  • GPIO 24 – This is used to monitor the state of VBUS
  • GPIO 25 – An on-board Green LED is connected pin
  • GPIO 29 – VSYS is monitored internally on the Pico and connected to ADC3

Kookaberry internal pin assignments

The Kookaberry V2 series modules are based on the Raspberry Pi RP2040 microcontroller and have pre-assigned 11 GPIO pins for use with on-board peripherals

Kooka Firmware GPIO internal pin assignments

  • GPIO 0, GPIO 1, GPIO 2 and GPIO 3 – Nordic nRF52 packet radio SPI Bus
  • GPIO 21 and GIPO 22 Nordic nRF52 packet radio SWCLK and SWDIO
  • GPIO 18 , GPIO 19 – LSM303 Accelerometer / Magnetometer I2C SCL / SDA
  • GPIO 2, GPIO 3, GPIO 7, and GPIO 20 – Blue OLED 128 x 64 Display – sh1106 controller – SPI Bus
  • GPIO 6 – Software RESET

Note: The virtual Kookaberry IDE display, LEDs and buttons can be accessed by using the KookaSuite IDE by using the IDE ‘show display’ function

The Kooka Firmware thus reserves some RP2040 / RP2350 microprocessor pin assignments for the Kookaberry V2 functionality and makes available 16 Pico GPIO pin functions of the RP2040 for external use.  The unreserved GPIO pins on the Pico are supported by the KookaSuite IDE.

Available GPIO pins on the Pico when the Kooka Firmware is used :

GPIO 4                 GP4

GPIO 5                 GP5

GPIO 8                 GP8

GPIO 8                 GP8

GPIO 9                 GP9

GPIO 10              GP10

GPIO 11              GP11

GPIO 12              GP12                                         P3A

GPIO 13              GP13                                         P3B

GPIO 14              GP14

GPIO 15              GP15

GPIO 16              GP16

GP10 17              GP17

GPIO 26              GP26                                         P1

GPIO 27              GP27                                         P2

GPIO 28              GP28                                         P4

GPIO 29              GP29                                         P5   only if made available -see Pico reserved pins

See the mapping table below:

Other Considerations

The Kooka Firmware V1.11.0 plus the KookaSuite IDE maintain the Kookaberry V2 module pinout assignment as well as supporting the Pico GPIO nomenclature.  The following should be considered when using the Kooka Firmware on the Pico.

  • The Kookaberry V2 has 5 on board connectors assigned P1 to P5.
  • P1, P2, P4 and P5 have a single GPIO connection and P3 has two GPIO connections.

This connector assignment is used in the Kooka Firmware with the following GPIO pins:

  • P1 – GP26
  • P2 – GP27
  • P3A – GP12 and P3B – GP13
  • P4 – GP 28
  • P5 – GP29
  • Two UARTs are supported using KookaBlockly (a visual editor based on Blockly) being UART-A and UART-B.
    • UART A and B assignments are
      • UART-A TX = GP12         RX = GP13
      • UART-B TX = GP4           RX = GP5

This assignment does not prohibit UART functionality being assigned to other GPIO pins as detailed in the Pico or RP2040 / RP2350 documentation.

  • PWM functionality may be typically assigned to any available GPIO pin
  • Hobby type servos may be typically assigned to any available GPIO pin
  • Neopixel displays may be typically assigned to any available GPIO pin
  • The Pico has made available three analogue inputs on GP26, GP27 and GP28. These are also assigned to connector P1, P2 and P4 on the Kookaberry V2.  In addition, the RP2040 has an additional analogue input on GP29.  This is used internally on the Pico to monitor V-SYS.  The Kookaberry V2 Series modules do not assign V-SYS to GP29 and makes this analogue input available on connector P5.
  • I2C software functionality may be assigned on any two GPIO pins. The Kooka Firmware typically assigns an I2C function to connector P3 with the ability to change this assignment to any two GPIO pins
  • SPI functionality may be assigned to GPIO pins with typically four pins being used to effect SPI functionality.
  • A Software RESET is assigned to GPIO GP6. This is normally left at a HI (logical 1).  When taken to a LOW (Logical 0) it will reset the Kooka Firmware.  This allows a firmware reset without having to perform a Power Up Reset (PUR).  A reset button on the Kookaberry is available to implement this software reset function.
  • The Green LED on the Pico at GP25 is used by the Kooka Firmware to show data transmission over the USB port.
  • The KookaSuite IDE is available to support modules that can use the Kooka Firmware and this may be downloaded from GitHub for either a Windows 10/11 based PC or a MAC as referenced above

Raspberry Pi is a trade mark of Raspberry Pi Ltd, UK

Pico is a microprocessor module manufactured by Raspberry Pi Ltd, UK

Blockly is a library from Google for building beginner-friendly block-based programming languages.

Kookaberry and Kooka are trademarks of Kookaberry Pty Ltd, Australia

The Kooka Firmware release and KookaSuite have been written by Damien George (George Robotics Pty Ltd –

MicroPython) in collaboration with Kookaberry Pty Ltd and the AustSTEM Foundation Ltd