Introducing mIP - A 100% Managed TCP/IP Stack for .NET MF

Greetings all,

All the relevant info can be found at http://mip.codeplex.com

I have started a new codeplex project called mip (managed Internet Protocol) to create a robust TCP/IP stack that is easy to use for .NET MicroFramework. Basically, if you have a .NET MF device with SPI support, you can now connect an enc28j60 based ethernet adapter to it without changing your firmware at all. That’s right, you can use the smaller firmware without ethernet and just add this library.

The basics are functional right now, but it has only been tested with a small sample web page and only with my 2-wire router. Please let me know if it works for you so I can check off different routers from the compatibility list. Also, if you have changes you want to make, please let me know! Or if you see it do something wrong, capture it with wireshark for me and send me the capture file…

Tested to work with ENC28 + CerbuinoBee
Also, tested with a generic enc28j60 module from ebay and the Cerb40. (wiring directions are in the intellisense tooltip of the enumeration in the Start method)

Enjoy!

-Valkyrie-MT

8 Likes

Very cool! Be sure to post it in the GHI helps you sell your modules thread and put it in the wiki.

Brilliant! I am glad you got it finally complete and up for everyone to enjoy.

Someone may think, why managed? We lost an opportunity in the past because a customer needed 2 independent network interfaces but we only had one. With this, you can have few, not just 2! It won’t be the fastest but it surly opens new doors of possibilities.

Thanks Valkyrie-MT

Wow, that is all I can say. That looks really impressive and I can see how this could be useful in many ways.

Valkyrie-MT, you are a boss! Great job! :slight_smile:

Is this small enough to run on a Panda/Rhino ?

Amazing job!

Eric,

Good question. It compiles to a 22kb PE file, so I would think that it would fit on a Panda/Rhino.

-Valkyrie-MT

great!!!
could this be used for the Roving Networks wifly rv-xv on xbee?

The Wifly module already has a TCP/IP stack built in.

That is very cool,
and thanks for sharing…

i noticed you are including the local naming using mDNS and net-bios, i was kind of wondering how hard would be to include ( UPnP ) which would definitely be cool…

I’m playing with the UPnP as of now, if i succeed i’ll let you know… none the less don’t let that stop you from investigating the possibility to add support for it…

Thanks.

Hi Valkyrie-MT,

this is indeed a very impressive and highly promising project!

I really like your primary goals for the project:

  • Durability – keep running despite exceptions
  • Never block – No method should ever block and the code should be written to make this impossible
  • Features that make usage and discovery simple for the end-user
  • Sensible default values such as DHCP on by default
  • Support for Local Naming such as mDNS and even NetBIOS over TCP
  • Small – embedded devices have very little memory
  • Simple code – code should be easy and simple to foster contributions

Thanks, and please keep up the great work!

Cuno

PS
Maybe someone in the community would be interested in looking into writing a mIP driver for the STM32F407 with built-in Ethernet controller, e.g., for the upcoming Mountaineer Ethernet mainboard? CSA’s driver for LWIP could be a starting point (http://netmf4stm32.codeplex.com/SourceControl/changeset/view/1e6869691598).

Cuno,

I took a look at it and porting that driver is do-able. I am actually re-poritng the enc28j60 driver from the original Microchip code now (almost done). Unfortunately, I don’t have any hardware with that implemented. If someone can get me the hardware, I can give it a try.

Jay Jay, uPNP is totally possible. I see it’s just some UDP messages. But what do think it would be good for?

-Valkyrie-MT

It is great if added, because one it would allow us to open PORT in routers firewall (to allow access to the device from teh internet without users intervention) when it Upnp is enabled of course and it would also allow us to set a Presentation Web Page, when Upnp is detected by any Supported OS… which would allow other Upnp compatible devices to control our microcontrollers.

thanks.

Please contact me at pfister@ oberon.ch, we can send you a board.

Jay Jay,

SOLD! I am totally sold on the idea to add UPnP! “it would allow us to open PORT in routers firewall” – fantastic. That is totally in keeping with my goal of simplicity for the user! That is definitely getting added to the To-Do list!

-Valkyrie-MT

For that, a driver already exists: http://netmftoolbox.codeplex.com/wikipage?title=Toolbox.NETMF.Hardware.WiFlyGSX

Great to hear that…
i’m currently taking a stab at it, if I’m successful I’ll share my findings.

Thank you.

w00t, received 3 ENC28J60 modules today! Time to get cracking with this library :slight_smile:

Super! I have written a new driver that won’t have the restrictions of GPL, fixed the the link events, and fixed a memory leak. I intend to check that code in today…

-Valkyrie-MT