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
- for the RP2040
- 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:
- Download the Kooka Firmware for the rp2040 from the github repository at
https://github.com/kookaberry/kooka-releases/releases - Go to the Assets section of the V1.10.0 release (open the menu if needed) and locate the zip file containg the V1.10.0 release files
- Download KookaSuite for a Windows Based PC or a MAC via the links provided
- The reference documentation for this may be found at
https://kookaberry-reference-guide.readthedocs.io/en/latest/
https://kookablockly-reference-guide.readthedocs.io/en/v1.10.0/
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
- UART A and B assignments are
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