How exactly do I use WiFiRS21?

I’m perplexed, I have a WiFiRS21 module I want to begin understanding it so I looked on the site and found this:

OK, so I keep looking and find this:

OK fine, so lets adapt that from WiFiRS9110 to WiFiRS21. I try this then find that the WiFiRS21 class has a completely different set of methods, so that example code ain’t gonna work, so I search the forums and find this:

Great, I have a Raptor too, this will be what I’m looking for…

First thing I see is that this is the sample that uses WiFiRS9110, but I have a WiFiRS21 - err what gives here? Is this right, even though there’s a class named WiFiRS21 we should actually use a class names WiFiRS9110 when working with a device that IS a WiFiRS21…erm… really?

So I use Visual Studio to take me to the system decompiled source for the class WiFiRS9110 perhaps there’s some XML docs there that can help me…Nope the class does have a summary doc but its a link to an article, oh wait its the old OBSOLETE article (but its about WiFiRS21!!!)…darn.

OK so how about doing the same for the WiFiRS21 class…hmm not a lot there just a one liner “A WiFiRS21 module for Microsoft .NET Gadgeteer”.

Also even more bewildering WiFiRS21 is derived from Module.NetworkModule whereas WiFiRS9110 is derived from BaseInterface two different animals.

Finally the Networking article contains this statement “[em]Make sure that you update the pins in the constructor to match your hardware setup[/em].” but all know is that I have a WiFiRS21 module plugged in to socket 11 of my Raptor, how on earth am I to deduce the arguments to that constructor?

I hope you’ll excuse me for saying I’m a tad disappointed here, you’re actively promoting this hardware (WiFiRS21) yet offer no documentation other than something stamped (in red) OBSOLETE, am I being unreasonable here?



PS: The documentation for Networking refers to a namespace System.Net yet I can find no such namespace or assembly as part of my setup (.Net MF 4.3) here:


The manufacture replaced 21 with 91, or the other way, which lead to the name confusion.

As for documentation, I agree with you. Much changed lately and we have improved a lot but more needs to be done.

Have you seen this?

DukeNukem here: posted a working demo, I managed to download this and get it running with VS 2013, it seemed to initialize ok so I’m reasonably pleased.

May I politely suggest that GHI as the vendor here for Raptor and their WiFiRS21 module, put together something like this? it would help a great deal and reduce the frustration, chatter and time wasting on these forums?


@ KorporalKernel - The RS21 Gadgeteer driver is a very thin wrapper around the WiFiRS9110 class. Go to and look at the Gadgeteer source for further information.

Hi, yes I was directed to that tutorial and found it helpful it doesn’t however describe how to leverage the WiFiRS21 module which is what was my next step.

Solid, debugged stable, well commented working samples/demo solutions are what’s missing here, takes a TON of guesswork out and if you guys are confident that a demo/samples works well you know that a user experiencing issues is probably doing something dumb. Right now there’s just far too much uncertainty and guesswork which is a shame because the hardware and software itself seem wonderful, stop making it so hard to enjoy!



@ KorporalKernel - Codeshare is a great starting point for learning how to use any module

Indeed, I already credited you for that - my suggested take-away here is for GHI is to create and maintain a set of these kinds of solutions themselves, a whole family of stable, debugged examples that take the guesswork out and reduce needless chatter on the forums.

I adapted that example to create a listening socket and wait for an incoming connection on port 80.

I ran it, saw it wait then dumped the IP address into a browser and it logged the incoming connection - I’m now happy with all this!

Till next time :wink:


PS: It looks like .Net MF doesn’t support any of the async socket operations - bit of a drag, but I guess it’s OK given these are small resource devices.

OK that’s helpful Mike, explains a lot. Still unsure how one could work out the cpu pin arg values from first principles though, just curios about all this.