bare metal Raspberry Pi Zero / Zero W port of MicroPython
Switch branches/tags
Nothing to show
Clone or download
boochow Merge pull request #17 from boochow/rpi
 fix: slave address is sent when i2c.write restarts (i.e. stop = false in previous write)
Latest commit cc1b22e Aug 16, 2018


MicroPython on bare metal Raspberry Pi Zero / Zero W

How to build

git clone
cd micropython-raspberrypi
git submodule update --init
cd micropython; git submodule update --init; cd ..
cd raspberrypi; make


  1. MICROPY_HW_USBHOST=1 to enable USB keyboard support.
  2. MICROPY_MOUNT_SD_CARD=1 to mount SD card on /sd in the boot sequence.

How to install

  1. download bootcode.bin and start.elf from
  2. copy bootcode.bin and start.elf to the root of your microSD card
  3. copy build/firmware.img to the root of your microSD card
  4. copy build/config.txt to the root of your microSD card. (if config.txt already exists, edit it to add a line kernel=firmware.img.)

Modules and Classes

See wiki.


The First bare metal Raspberry Pi port by Stefan Naumann. (Bare-Metal Raspberry Pi port by naums · Pull Request #3522 · micropython/micropython)

csud USB host driver by Alex Chadwick. (Chadderz121/csud: Chadderz's Simple USB Driver for Raspberry Pi I modified this to support RPi zero/zero W. The modified version is here).

sd.c SD card driver by Zoltan Baldaszti. (raspi3-tutorial/0B_readsector at master · bztsrc/raspi3-tutorial)

A lot of bare metal examples by David Welch. (dwelch67/raspberrypi: Raspberry Pi ARM based bare metal examples)