"Soon" is finally here!

Has “soon” finally arrived? Yes it has and it did on both ends, ours and Microsoft’s. First, let us introduce you to NETMF-PPP support. With today’s release you will now be able to use the network over PPP (Point to Point Protocol) to establish a connection to a mobile cellular network, right from your NETMF device, and using standard .NET sockets. Besides PPP, the SDK covers some small issues, like supporting virtual machines and improvements on the newly introduced Cerb-family USB Host. This SDK package is also optimized for a better user experience and it is a lot smaller in size! There are new NETMF and Gadgeteer SDK releases to support VS2013, with alpha support for VS2014. Those releases are still in beta so they are not part of our SDK shipping today, just yet.

We want to take this opportunity to thank all of you for your patience while we pulled all this together. The changes were major and difficult as explained in previous news posts, http://www.ghielectronics.com/community/forum/topic?id=16274

Other good news is that TinyBooter should be optional from now on, unless there is a major release or an unexpected deep issue that needs to be addressed. We will include a note with the release notes when TinyBooter is needed. What does this mean? No need to run the device in any special mode to update the firmware, just open MFDeploy (or our FEZ Config), select the new firmware and click deploy! No buttons to press and no switches to move! But how is it optional? For example, this SDK includes the same TinyBooter for G120, EMX and Cerb-family as the last release. For G400 and Hydra, there is a small update to support VM (virtual machines). If you are not using a VM, there is no need to update TinyBooter…enjoy!

How do I start with PPP to connect my device to a mobile network?
First you need one of our supported devices (G120, EMX, G400) and a PPP modem. We recommend our cellular modem, http://www.ghielectronics.com/catalog/product/322 If using a Gadgeteer mainboard, just plug the modem in. If not, wire it using the breakout module. Please also note that currently the Seeed Cellular Radio Module does not support PPP through the Gadgeteer driver, it is only supported through pure NETMF. However, this is something that we will be providing in a future release. Here is a minimal code example showing the connection, easy!

using GHI.Networking;
using Microsoft.SPOT;
using Microsoft.SPOT.Net.NetworkInformation;
using System.IO.Ports;
using System.Net;
using System.Text;
using System.Threading;

public class Program
    public static void Main()
        NetworkChange.NetworkAvailabilityChanged += NetworkChange_NetworkAvailabilityChanged;
        NetworkChange.NetworkAddressChanged += NetworkChange_NetworkAddressChanged;

        var port = new SerialPort("COM2", 115200, Parity.None, 8, StopBits.One);

        //Your initialization AT commands may differ.
        SendAT(port, "AT+CGDCONT=2,\"IP\",\"your APN\"");
        SendAT(port, "ATDT*99***2#");

        var netif = new PPPSerialModem(port);
        netif.Connect(PPPSerialModem.AuthenticationType.Pap, "", ""); //This differs based on your SIM card.

        //Network ready once NetworkAvailabilityChanged and NetworkAddressChanged fire (this may take up to a minute depending on your board/SIM).


    private static void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
        Debug.Print("Network address changed.");

    private static void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
         Debug.Print("Network availability changed: " + e.IsAvailable.ToString());

         if (e.IsAvailable)

    private static void SendAT(SerialPort port, string command)
        var sendBuffer = Encoding.UTF8.GetBytes(command + "\r");
        var readBuffer = new byte[256];
        var read = 0;

        port.Write(sendBuffer, 0, sendBuffer.Length);

        while (true)
            read += port.Read(readBuffer, read, readBuffer.Length - read);

            var response = new string(Encoding.UTF8.GetChars(readBuffer, 0, read));

            if (response.IndexOf("OK") != -1 || response.IndexOf("CONNECT") != -1)

What’s Next?
As many of you know by now, there has been a renewed focus on IoT and NETMF from Microsoft. Microsoft has recently released a new website, VS2013 support, alpha VS2014 support and a new Gadgeteer release to work with the new NETMF release. The next step for GHI Electronics is to release a beta SDK taking advantage of the VS2013 and VS2014 support. That and concentrating on improving networking, which is something that Microsoft and GHI Electronics are currently working on.

As always, we would like to thank our community and customers for their loyalty and support throughout the years.

NETMF and Gadgeteer package 2014 R4: http://www.ghielectronics.com/support/netmf/sdk/23/netmf-and-gadgeteer-package-2014-r4


Great news on the TinyBoot Loader.


Great news indeed!

How did you achieve “a lot smaller in size”?

@ Architect - Most of it came from the fact that all of the Gadgeteer images were way bigger than they needed to be.

Oh, SDK. I see. For some reason I thought it was the actual firmware that got smaller.


Please clarify. The modem in your catalogue is a Seeed module as I remember?

How can I know if a given modem will work?

Congrats on the new SDK, installed immediately and tried to update my Cobra 1 and met with a GHI Bootloader issue.

It won’t load the driver as can be seen in the picture. Any recommendations ?

@ PiWi -

You don’t need to update tinyBooter if upgrade from to on EMX

Also, are you using Window 8? EMX bootloader may not work correctly on Win8
If win7, try to reconnect few times.

@ njbuch - The original post is a bit unclear. The cellular radio module we sell (originally from Seeed) can be used for PPP, however you must use it through pure NETMF. There is no PPP functionality in the Gadgeteer driver yet (it will be added in a coming release).

Great news. :clap:

The bootloader is still on …
The 7’’ (not CP7) LCD display is going bananas

And still the bootloader is recognized but runs in this driver loader is spitting the same error over and over

And yes, I’m on Win8.1 64 bits. Works on all but this Cobra 1 device …

Very good news, well done GHI! :clap:

Well, after all kinds of removal of questionable drivers, PC reboots and trying all USB ports the only USB port which is not powered or USB 3 savvy it picked up the GHI Bootloader on COM9 and I was able to update the TinyBooter via Fez config … that worked finally as expected … even the program running against Azure using the build in network worked without single change just a new deploy, picked up his DHCP stuff, getting the internet time via NTP and storing the daa into Azure … just great, yahoo !

But with one minor loss, can’t get the LCD back to life it stay red has 3 vertical stripes and displays nothing not even the boot message … :wall: :wall:

@ PiWi - Can you post a picture of the display with the red stripes?

@ Everyone - I edited the main post regarding PPP to be more clear, thanks John.

@ John - Hereby the picture, with External Power connected.

@ PiWi - Can you load the display configuration in FEZ Config and verify that it is correct?

1 Like

@ Andre & @ John - done that before and didn’t work. Loaded the settings from device and got zippo back (in 1st picture) figuring out the settings applied them to LCD using fez config and voila the LCD came back to live but with still the three stripes in the middle of the screen … 2x purple and 1x yellow … I think I had the last freq set to 25000 instead of 18000 but don’t know for sure … at least it helped … calibration is off though

A picture where the vertical lines are easier to see …

Great job guys!..

I am having a bit a difficulty using the latest SDK (R4)… It installs fine but in VS 2013 I get the error: “The installed .NET Micro Framework does not support Visual Studio 2013”.

I uninstalled Micro Framework 4.3 QFE 1 and GHI SDK… and then tried installing NET Micro Framework V4.3 SDK-R2-Beta and then NETMF and Gadgeteer Package 2014 R4 to see if that helped… but nothing.

Is there an specific order?.. or the current beta does not support VS 2013 (even though it appears in the template list)