This article is specifically for people who make accessories for the micro:bit. Please also see our general user information about the latest micro:bit revision.


Overview

Thanks for your continuing support of the micro:bit. The breadth and diversity of accessories available for the micro:bit is a great strength and we’ve worked extremely hard to make the latest revision of the micro:bit work as smoothly as possible with as many accessories as possible.


This article provides information to help you continue to support the 5 million existing micro:bits in the world and the latest board revision with the exciting new features of a speaker and microphone.


If you’d like to keep up to date with technical information about the device, please sign up to our DAL, Devices and Editors mailing list which provides information on hardware revisions, or key low-level software changes as early as possible.


Contents


MakeCode Arcade

Microsoft Research is designing a reference design for MakeCode Arcade accessories that allow the latest revision of the micro:bit to be used as an Arcade platform. This will include a number of options for the size, quality and cost of the extensions allowing a range of unique designs. The Foundation is working closely with Microsoft on the specification and will not approve extensions or add to the website any accessories for the micro:bit that are specifically for MakeCode Arcade but do not follow this specification, as it risks too much fragmentation and complexity for our users.


Accessories that make use of the large ring pins, should be unaffected by this revision.

The edge connector should be completely compatible electrically; The latest revision has one additional non-shared GPIO, all other pins and pin modes are compatible.

There are inevitably small layout differences in the placement of the components, and the possible implications of these is covered below.

If you publish hex files for demonstrating your accessories, then please see our guidance for content publishers that covers the need to update hex files in the editor in which they were created.

There are a few considerations for people who have made accessories.


Denoting compatibility

We have published a set of compatibility logos for accessory makers and extension authors to use to denote board compatibility. These can be found in the Foundation Brand Guidelines.


Board changes

Dimensions

51.60mm(w) 42.00mm(h) 11.65mm(d), button depth to board 4.55mm, speaker depth to board 3.00mm, JST connector to board 5.50mm

The overall depth of the board does not change as the JST connector is the deepest part.


Speaker

The obvious physical change is the addition of the speaker on the back of the board. The profile of the rear of the board does not change, it should still fit in accessories that make use of the edge connector, but if your accessory is mounted closer to the board than the depth of the current JST connector, you will need to check that it still fits the latest board revision and how it affects the use of the speaker.


By default the micro:bit will output sound to both the edge connector pins and the on-board speaker. If your accessory makes use of a speaker, you may wish to disable the onboard speaker. This will need to be done in software; extensions for MakeCode and objects for the Python Editor will support this.


Microphone

The on-board microphone is also rear-mounted, but has a sound input hole on the front of the board, alongside a microphone activity LED, which will be lit red when in use. If the micro:bit is mounted horizontally on your accessory, you may need to consider how this affects the response of the microphone and the visibility of the microphone LED.


The micro:bit logo is gold plated copper and responds to capacitive touch in the same way that the large pins do. In previous revisions, the micro:bit only supported resistive touch.


Antenna

The position of the antenna has altered so that it is on an angle and it has also been copper coated to make it more visible. It will still behave in the same way, but if your accessory makes use of radio or Bluetooth we suggest that you test your software packages with both board revisions in case any threshold tweaks are necessary.


Hardware changes

I2C bus

Whereas on previous revisions, the I2C bus was shared between the motion sensor chip and the edge connector, this is no longer the case. The latest revision has dedicated external i2c lines from the nRF52 to use with accessories. These are the addresses used by the micro:bit.



accelerometermagnetometer (compass)
motion sensor variant 1 (LSM303AGR)0x19 (0x32/0x33)0x1E (0x3C/0x3D)
motion sensor variant 2 (FXOS8700CQ)0x1F (0x3E/0x3F)0x1F (0x3E/0x3F)

Power

The micro:bit can now be powered from the two losenge shaped pads on the rear of the board and the 3V/GND pins.


If you use the losenge pads, you must diode (or otherwise) protect themselves from the micro:bit having power via another source. This was still necessary on the previous revision when the board was powered from the battery but is now true for USB and edge-connector power also.


The nRF52 supplies 300mA to drive the board. 110mA is reserved for powering on-board components. 190mA is then available for accessories.


Schematic

The schematic will be published on the tech site when the hardware is publically available. Please get in touch to request early access to the V2 schematic.


Software changes

MakeCode extensions

If your MakeCode extension makes use of mBed or the DAL, you may need to revise them to be compatible with CODAL and both revisions of the board. The latest revision no longer makes use of mBED.

If the extension is incompatible, the MakeCode editor will fail to compile the program.


A list of known extensions that need work is here https://github.com/microsoft/pxt-microbit/issues/3506 and  we have published guidance on fixing



Python modules

The additional memory available to the latest revision means that you have more space to create Python modules to work with your accessories and the micro:bit.


Hex file compatibility


Universal Hex files

The latest board revision introduces a superset of the Intel-Hex format that enables compatibility across processor variants. A Universal Hex is a file that contains the binary data for both micro:bit v1 and micro:bit V2, in a format that the DAPLink can process to only write to memory the data relevant to its micro:bit board.

A Universal Hex hex file will work on a v1 or V2 board. A clear indication that you are working with this format is that a compiled .hex file will be ~1.8Mb as opposed to ~700Kb in size.


We have published a Universal Hex creator tool to support this


https://tech.microbit.org/software/universal-hex-creator/


Hex format compatibility

The Universal Hex format has been developed to ensure the best experience for users when moving between board variants. There may be cases where it is not possible to support both boards, for example, an accessory that is designed only to target the V2 board variant. In these cases, to ensure the best user experience when flashing a hex file to any board variant, the file should always include an error message to signify board incompatibility to the user. If we do not do this, it results in a silent failure, which can be very confusing to users.


We have created a standalone error hex that can be combined with a V2 only hex to produce a Hex that will work on a V2 board, but error if used on a v1. You can read more about how this works on our Hex format page.