SerialWifi packages updated to support NETMF 4.4

The serial wifi (ESP8266) nuget packages have been updated to 3.0.0-beta (meaning you need to enable pre-release packages to get them).

This version now supports both NETMF 4.3 and 4.4 projects on any netmf hardware connected to an ESP8266 serial wifi device.

I am rebuilding a bunch of projects with these new packages and will move the packages to production status if I don’t see any hiccups this coming week.


Thank you, Martin :clap:

@ mcalsyn - Does this mean you haven’t been working on the brainpad display/scratch support? :smiley:

Gosh, I sure wish that one had come with a smiley of some sort… But given that it didn’t, let me walk through how I do this:

Prio 0 : The day job, which keeps peanut butter on the table. 8 hrs/day, five days - 40 hrs
Prio 1 : Paying contracting/consulting gigs, up to 10 hrs/week, done under Microsoft’s moonlighting policy
Prio 2 : Verdant, a highly variable 10 hrs/week, or more if there’s no active paying contract gig, but I try to make sure I get in as much of this as I can
Prio 3 : Open source software efforts, done out of a love for the technology and a love of understanding or creating things. A way of cleansing my palette when the must-do stuff gets me down and a way of expressing more free-form creativity.

Now that adds up to a heck of a lot of hours, but something you probably didn’t know is that I am a person with some serious mobility challenges and I don’t spend a lot of time out of my chair, so I work a six day week and I code. A lot.

What that all means is that the open-source stuff kind of gets done when I can get to it and in the order that I feel inspired to do it. It’s a form or recreation for me. That probably means I should never try to predict when something is going to get done, because in this Pri 3 category, I am demonstrably bad at that and pretty much miss every deadline. But it should be clear why that is.

So yes, this means that while I have worked on Scratch display support, the first version gave disappointing performance (it interfered too much with the scratch frame rate), so I didn’t release it and I have not finished the second approach yet. But I am knocking out some smaller efforts that I also promised to folks. The display support will come, but only as the Prio 0, 1 and 2 tasks allow, and in a way and time I am comfortable with.

I’m thankful for your interest and your question. I know you are eager for this drop, and I love that passion. This whole missive is just so that everyone understands where these freebie open-source efforts fit into my life and why they are treated differently from the other efforts with hard deadlines, and how consequently their delivery may be unpredictable or unsatisfying.


@ mcalsyn - but I thought you are a superhero, one this community’s superheros :wink:


Well, I try to be. This is where my passions lie, and if I can figure out a way to pay the bills and shuffle those priorities, you can be sure I will.


And while I haven’t met in person, and only briefly chatted over anything more real time than this forum, I have to applaud your stamina and drive and achievement. It’s great to see someone put so much into the community so quickly, and I’m glad Justin roped you into stuff when he did.


Much appreciated. I’m grateful to Justin - my wife…not so much :smiley:

EDIT: And Gus and Gary, they’re totally on her list.

1 Like

that did make me laugh out loud :smiley: . Both the Justin bit and the Gus/Gary bit :smiley: .

@ mcalsyn - I also thank you for your great contributions to this board and community. :clap:

If you have time, can you give us a brief update on Verdant?

Yes, I will do a proper update shortly on the Verdant forum. By way of a quick update here, I took a design reset during the last sprint to change from Azure table storage as the default store for user authentication (authn) and authorization (authz) and changed to Azure DocumentDB (which is kind of but not entirely like MongoDB). This greatly simplified a lot of code and will make a lot of what remains simpler to develop. DocumentDB is now the primary back-end data store for everything except the actual data streams.

The other big developments have been a move of all service ‘secrets’ into Azure key vaults; the integration of a GIT back end for device configurations; the creation of an experimental IFU mechanism for Win10 IoT Core; and the creation of a dashboard app similar to the Scratch gateway or IoT Core Dashboard to facilitate onboarding of devices. Once onboarded, devices are managed completely from the web.

The GIT back end means that users will be able to use version-control on their device configurations, complete with roll-back and branching. Verdant is meant to scale and this is a key feature and differentiator.

There are two sprints left around the UI for the site/device/image management (2w) and config management (2w) before I can open it up for everyone to play with. It does support devices now, but without the UI, one has to directly frob back-end data structures, which of course isn’t workable.

We also now have two commercial early adopters (one in Agriculture, and one in Transport Logistics) who are committed to working with us to develop and refine the service.

Sleep is for the weak.


@ mcalsyn - Sleep is for the weak. Geesh Martin, get some rest.

change from Azure table storage as the default store for user authentication (authn) and authorization (authz) and changed to Azure DocumentDB

Interesting. I am using table storage for web auth, so DocDB made things easier a?
I know you are a busy man, but a sentence or two on why it got better would be interesting.

For users, in storage tables, you need several tables to index login-to-user, email-to-user, roles, claims, etc. I seem to recall that there were seven or more tables in total. WIth documentDb, you can embed the lists of roles and claims right into a single document, and you can use the more advanced SQL queries available in docdb to find user records by id, login or email.

Likewise, things like mailing address and so on can all be in the same document with the user record. The two secrets to effective use of docDb are:

[ul]Denormalization of your schema (the exact opposite of good relational db design). Any bounded-size child data structures should be in the same document as the parent. Child structures that grow without bound should be in separate documents[/ul][ul]And, storing multiple document types in a single collection (docDb is expensive compared to storage tables, but the expense is per-collection, so store all your documents in a single collection, and only scale to more collections for capacity or locality).[/ul]

fwiw, the line count in the I*Store classes all went down by half because I no longer needed multiple table to act as indices

…and man is this ever off-topic now :slight_smile:

Sorry if I sounded demanding about the scratch display support… I didn’t mean to. I am grateful for your efforts.

I was just looking to give my son a brainpad for christmas to use with scratch :slight_smile:

1 Like

No worries. As I said, I like the passionate interest and I will do my best to deliver.

@ mcalsyn - This is looking really good, I started playing with an ESP-01 module a few days back with your previous release, and I just had something working when the latest and greatest came out!
Can you let me know the version of the firmware you are running on your ESP8266?
Mine currently has this version:

Sent command : AT+GMR
Received : AT version: 18 2015 20:55:38)
Received : SDK version:1.4.0
Received : compile time:Sep 18 2015 21:46:52
Received : OK

which amongst others doesn’t like the AT+CWSAP? command:

Sent command : AT+CWSAP?
Received : ERROR
Consumed: ERROR

If I can reflash it with the same version firmware you are testing against it should help.

Thanks for the great work.

This is what I am using (Ingenuity Micro ‘Neon’ ESP8266 breakout) :

Sent command : AT+GMR
Received : AT version:0.23.b2.0(Apr 10 2015 21:21:43)
Received : SDK version:1.0.1(b2)
Received : compile time:Apr 10 2015 21:30:30
Received : OK

I think because of memory constraints on this particular ESP model (ESP-03), I am not able to update beyond this version. OTA updating definitely failed.

It appears that in newer firmware, CWSAP has been changed to CWSAP_CUR and CWSAP_DEF along with many other commands. If I understand correctly _CURR refers to the currently effective state and _DEF refers to the default state stored in flash. _DEF values get loaded upon reboot or startup.

See the AT instruction set here (in Chinese) : [url][/url]

I don’t have a unit that I can try this out on, but it looks like I will need to sniff the version number and adapt the protocol accordingly.

I’ve ordered four ESP12-E modules from banggood today. When they come, I will try to add some intelligence here to use the CUR/DEF protocol when newer firmware versions are detected.

You can get the English AT instruction set for SDK 1.4 here:

My ESP-01 boards only have 4Mb (512kB) memory too, so can’t do OTA, but you can load the latest firmware using the Espressif Flash Download Tool. I used the information here: to find the tool and the latest firmware to update my module.

Links to the SDKs are here on the forum and it looks like the latest is 1.5.0, so mine is running the previous release. However I’ll try dropping it back to the 1.0.1(b) you are using and see how that goes.
I bought a few of the ESP-01 and ESP-03 modules to play around with, to see whether they would be usable as an alternative to the Redpine module on a new board design. However the ESP-12 or ESP-12-E look like a better choice for the final product as they appear to have FCC approval.

1 Like