Mountaineer Release 4.3 (Beta 1)

Note: There exists newer firmware, see here.





"It is exciting to see Oberon and CSA delivering another high quality release for NETMF. The quality and care of their work makes this port for Cortex-M one of the best offerings of this kind in the industry. Congratulations!"

Lorenzo Tessiore, Microsoft                                                                               See what others are saying...


Release 4.3 is the latest version of Microsoft's .NET Micro Framework. We have updated our NETMF for STM32 port for this version, including solutions for both the Mountaineer USB Mainboard and the Mountaineer Ethernet Mainboard. The compiled binary images of this software (the firmware) and the libraries for developing applications on a PC (the SDK) can be downloaded from this Web page, see below.

Beta 1 Notes

This is the Beta 1 release of the Mountaineer 4.3 firmware and of the Mountaineer 4.3 SDK.

If you intend to use the Gadgeteer libraries, please be aware that it may take a while until there are NETMF 4.3 compatible drivers for all modules. Ask your module suppliers for updated drivers. If you have the source code for a module's Gadgeteer driver for NETMF 4.2, then switching the target framework in Visual Studio to NETMF 4.3 and recompiling the driver should work as well.

For technical support and discussions, please use the GHI forum.

For bug reports, please use our Codeplex site.

At the moment, there are still the NETMF 4.2 QFE2 sources on Codeplex. We will update the source code to 4.3 once the beta phase is over.


You need a computer with Windows 7 or newer.

For Windows 8.1, you need to install .NET Framework 3.5, as Microsoft's NETMF SDK has a dependency on an older .NET framework, which doesn't come pre-installed with Windows 8.1 anymore. You can download it from here.

Step 1 - Microsoft Visual Studio 2012

Make sure that you have Visual Studio 2012 installed. The free Visual Studio Express 2012 for Windows Desktop edition is sufficient, you can download it from here.

If you already have an older version of Visual Studio installed, you can keep it when you install Visual Studio 2012 ("side-by-side installation"). Note that you can develop and deploy NETMF applications for NETMF 4.3 and also for older NETMF releases from within Visual Studio 2012.

Step 2 - Microsoft .NET Micro Framework SDK 4.3

Download Microsoft's .NET Micro Framework SDK 4.3. It is the download labeled SDK 4.3 (RTM) on this page. Now install it on your PC.

Step 3 - Microsoft .NET Gadgeteer Core 2.43.800

This step is only relevant if you want to use your board with .NET Gadgeteer. If you only plan to use plain vanilla NETMF, you can skip to the next step. Otherwise install Microsoft's .NET Gadgeteer SDK 2.43.800 by clicking on the link .NET Gadgeteer Core on this page.

Step 4 - Mountaineer USB drivers

To be able to use Microsoft's Visual Studio and MFDeploy tools with your Mountaineer board, you need to install a USB driver on your PC. There is one driver for the Ethernet mainboard, and one driver for the USB mainboard.

Note: These drivers have been updated on 17-Jul-2014. They now are signed in a way that allows installation on Windows 8 systems.

First, download the drivers contained in the following zip archive:

Mountaineer USB Drivers
This archive contains the Windows Drivers based on WinUSB for 32-bit and 64-bit Windows 7 (or newer) systems.
Mountaineer USB Drivers
Compressed Archive in ZIP Format 2.5 MB

This zip file contains both Mountaineer USB Mainboard and Mountaineer Ethernet Mainboard drivers.

Now unzip the archive, which results in the directory


  ...\Mountaineer USB Drivers


The actual installation will happen during the update of the Mountaineer firmware, in the following step.

Step 5 - Mountaineer firmware 4.3

Mountaineer boards are shipped with NETMF 4.2 QFE1 preinstalled. You need to install new firmware on your board.

First, download the appropriate firmware for your board:

Mountaineer Firmware 4.3 for Ethernet Mainboard
Mountaineer Firmware 4.3
Compressed Archive in ZIP Format 1.2 MB
Mountaineer Firmware 4.3 for USB Mainboard
Mountaineer Firmware 4.3
Compressed Archive in ZIP Format 1.2 MB

Now unzip the downloaded archive, which results in the directory


  ...\Mountaineer Firmware 4.3 Ethernet or

  ...\Mountaineer Firmware 4.3 USB


Open this directory, it contains the file


  Installation Guide for Mountaineer Firmware 4.3.pdf


Open this document and follow the instructions in order to install the Mountaineer firmware.

Step 6 - Mountaineer SDK 4.3

Download the Mountaineer SDK:

Mountaineer SDK 4.3
Mountaineer SDK
Compressed Archive in ZIP Format 2.0 MB

Now unzip the downloaded archive, which results in an installer. Run this installer.

Note that the installer checks whether the Gadgeteer Core is installed (see Step 3 above). Only if this is the case, it installs the Gadgeteer drivers for both Mountaineer USB and Ethernet mainboards. In any case, it installs the Mountaineer DLL, which contains the following namespaces:

  • Mountaineer.Netmf.Hardware (the Gadgeteer-socket-oriented hardware provider),
  • Mountaineer.Stm32.Hardware (the alternate CPU-pin-oriented hardware provider), and
  • Mountaineer.Netmf.Flash (a simple driver for the onboard Flash memory).

Step 7 - Get started

To try out your first Gadgeteer program, follow the steps described in the following document:

Getting started with Mountaineer
Adobe Acrobat Document 660.5 KB

You may then want to try out the samples of the book Getting Started with the Internet of Things. Here the samples are adapted to Mountaineer Ethernet Mainboards.


The following table is intended to make it easier for you to determine if a specific NETMF feature is available for Mountaineer. The supported features fully comply with the standard NETMF distribution of Microsoft.

Some advanced firmware features are only available for engineering projects done in cooperation with the Mountaineer Group; these are labeled as Mountaineer Prime features in the following table.

Feature Support Comments
.NET Micro Framework Supported

Release 4.3.

.NET Gadgeteer


Gadgeteer Core 2.43.800.

Visual Studio


Visual Studio Express 2012 for Windows Desktop (free), or one of the Pro / Premium / Ultimate editions.

VS 2012 can coexist with installations of older Visual Studio versions on the same PC. You can also develop for older versions of NETMF within VS2012.

Single-chip microcontrollers


STM32F407, 168 MHz, 192 KB RAM, 1 MB Flash.

Hardware floating-point Supported

STM32F4 only has hardware (FPU) for single-precision values (type float), not for double-precision values (type double).

Digital I/Os Supported


Analog inputs Supported


Analog outputs Supported


Pulse-Width Modulated (PWM) outputs Supported


USARTs (serial) Supported


I2C bus Supported


SPI bus Supported


USB Device Supported

The Mountaineer USB Mainboard provides two independent USB Device ports. One can be used for debugging and deployment, the other for the application.

USB Host Prime only

Hardware available only on Mountaineer USB mainboard.

For Mountaineer Prime projects: USB mass storage profile for one connected device supported.

Ethernet Supported

Hardware available only on Mountaineer Ethernet Mainboard.

Fast Ethernet driver implementation (interrupt-driven with DMA).

ICMP Supported

lwIP stack.

DHCP Supported

lwIP stack.

UDP Supported

lwIP stack.

TCP Supported

lwIP stack.

Maximum number of open sockets (i.e., simultaneous connections): 5

HTTP Supported


XML parsing Supported

Part of the parser is implemented in native code.

NTP Supported(new)

Hardware available only on Mountaineer Ethernet Mainboard. Must be explicitly enabled, see here.

Real-time clock Supported(new)

See here for more information.

OneWire bus Supported(new)


Hardware watchdog Prime only

For Mountaineer Prime projects: due in Q4 2013.

On-board Flash

Limited support


A simple driver is provided in the Mountaineer SDK and described here. Add a reference to the Mountaineer assembly, and then use the FlashDriver class in namespace Mountaineer.Netmf.Flash.

SD Cards Prime only

No corresponding hardware (card slot or Gadgeteer socket) available on commercially available Mountaineer mainboards.

For Mountaineer Prime projects: fast (4 bit bus) implementation supported for cards up to 4 GB.

FAT file system Not supported

Considered for a later release (requires driver for on-board Flash).

See also the community-contributed Tiny File System of Taylorza and its driver by LouisCpro.

In-the-field update of firmware Not supported

Considered for a later release (MFUpdate / Microbooter).

SSL Not supported

Open SSL is about an order of magnitude too large for the STM32 on-chip memories.


Limited support


Bitmap data type and graphics operations are now supported in principle. However, there is no standard way in NETMF for efficiently copying a bitmap to a display. Thus displays are currently not supported.

Touch screens Not supported

Mountaineer mainboards have no T sockets.

FTP Not supported

Never required in customer projects yet.

SMTP Not supported

Never required in customer projects yet.

CAN bus Not supported

No support in standard NETMF.

Extended weak references Not supported

Mechanism is hardly usable in practice (nondeterministic commit times to Flash - you never know when your data is safely stored). Moreover, the STM32F4 Flash block structure would waste far too much of the on-chip Flash for EWR.

DPWS Not supported

Never required in customer projects yet. Our focus is typically on more light-weight REST-based services instead.

GCC Not supported

Never required in customer projects yet.

Even the latest GCC version for Cortex-M still produces massively slower and larger code than the tools that we use (ARM MDK-Cortex-M 5.0).


You can find the NETMF source code of the Mountaineer firmware on our Codeplex site.

Known issues

Issue  Description
1) SD Card operations sometimes take long to complete

Somestimes it can take up to a minute for an SD Card read or write operation to complete.


This may be a bug in the NETMF file system's Flush() method (


Workaround:   new Microsoft.SPOT.IO.VolumeInfo("\\SD").FlushAll();

2) Gadgeteer analog output values too large

Analog output is 40 times too large.


This is a bug of the Gadgeteer Core (; plain vanilla NETMF code is not affected.


Workaround: use PWM instead of analog output.

3) NetworkUp event issue

(to be corrected in Beta 2)

NetworkUp event does not fire if board starts up with cable attached (


Workaround: see the above Codeplex issue.

4) LWIP assertion failure

Sometimes LWIP produces an assertion ("tcp_pcb_purge: listen pcb does not have accepts pending" failed).


Workaround: none needed (ignore output).

5) Slower without debugger

Program can be slower without attached debugger (


Workaround: don't use Debug.Print().

6) Gadgeteer Web server

No response is received from a Gadgeteer.Networking.WebServer instance.

7) 10 Mbps does not work

(to be corrected in Beta 2)

Network stack does not work with 10 Mbps switches.

8) UDP broadcasts

(to be corrected in Beta 2)

UDP broadcasts cause exceptions.

9) Hangup after deployment

(to be corrected in Beta 2)

After deployment, a soft reboot happens, which sometimes hangs up the board.
10) No deployment when USB stick plugged in

When an USB stick is plugged in to the USB host connector, deployment does not work.


Only relevant for Mountaineer Prime.

11) Wrong exception for disposed socket Using a disposed socket causes a SocketException instead of an ObjectDisposed exception (

12) Parity issue

(to be corrected in Beta 2)

Using odd/even parity for serial ports does not work.


Workaround: add 1 to bit number.

13) NotSupportedException in Gadgeteer

When creating an empty Gadgeteer project and starting it, a System.NotSupportedException is thrown in the Microsoft.SPOT.IO.dll.


Workaround: none needed (ignore exception).

14) Device hangs when deploying and Ethernet cable is plugged in

TCP stack hangs waiting for DHCP if there are multiple devices in the network with the same MAC address.


Workaround: make sure that every device has unique MAC address.