Managed Driver for the TI CC3100 Wifi chip available

First, the driver is a work in progress (some stuff does not work), but it’s totally usable right now! The driver is completely Managed code C# communicating completely over UART. I have added a gadgeteer port to one of my TI CC3100 Boost modules and it is working well. From a communication perspective, it’s rock solid actually.

Source code is available here: https://cc3100.codeplex.com

Currently working:

  • Connect to wifi with SSID and Password (No SmartConfig or WPS, yet)
  • Internet Time example using client UDP sockets
  • DNS lookup
  • Support for the integrated Dynamic HTML capability!! With this feature alone, you could do a web service and custom pages with the integrated web server.

Also, I have successfully sent an email using google’s SSL encrypted e-mail server on the CC3100 (not using my driver though). However, I have a Secure socket method coded, and it just needs debugging before that will work!

Here’s a video for proof!

13 Likes

We need someone to put module to custom circuits then.

Agreed, what we need now is a way to simply turn the device usable for wider tests, and custom board/module if that makes sense. The Element14 price on the module here in AUS isn’t that great ($44 plus postage) so we really need someone who has quantity power to build and get the price down for us

That is great work Valkyrie-MT on the drivers!

I agree with the others, we need a module. This will aid in testing as well if people start using it.

One thing, why did you chose UART and not SPI?

Great question. Before this, I’d never used Uart on an embedded device. However, the cc3000 was very difficult to get working and stable over spi. My fear was that TI had a slightly different implementation of SPI. I had to add resistors on mosi, miso, and clk to make it work, and I’m still not sure why it was necessary. So, when i started with the cc3100 I decided to try uart first and do spi as a fallback. But, Uart worked immediately and I haven’t thought about it since. Also, since the web server is embedded, the bandwidth needed is going to be low, so even at the uart speed of 115200, it is probably excessive for nearly all use cases. Having said that, the driver can be made to support spi. I probably won’t do it, but you probably would just need a new constructor for the driver class and modify the read and write methods. Probably very similar to the cc3000 driver.

My next focus will be local name resolution. Maybe LLMNR, mDNS, and NetBios. Most of the code is already there from my work on the cc3000.

Also, I want to make a real web service using this dynamic html stuff. And, work out the SSL sockets.

All that will likely be done in the next couple weeks.

What I really want is the cc3100mod. That is the module TI is about to release that can be more easily added to a hobbyist board.

1 Like

Yeah, we need a module. But until TI releases the cc3100mod, all anyone can do is modify the cc3100boost. I soldered on a gadgeteer socket onto mine last night. I’ll post the details if others are interested in making one.

Another cool thing… Since TI’s firmware update runs over uart on the PC, if there was a gadgeteer module, it could be updated with a simple PC adapter to connect USB to uart plus a converter to a gadgeteer socket. I could probably throw that together with parts I already have lying around. Heck, a USB to gadgeteer u socket might already exist for all I know…

Update: Lookie there https://www.ghielectronics.com/catalog/product/287

Awesome, now with that adapter, I should be able to program the firmware through the gadgeteer port!

1 Like

Any timeframe?

I think I saw September stated somewhere and that it is in FCC review.

The driver now supports mDNS, LLMNR, and even NetBIOS over TCP name resolution.

Note: Only Windows XP would use NetBIOS over TCP so that is disabled by default. But, it is easily enabled by just setting wifi.NetBiosNamingEnabled = true;

Now I am going to try to get the profiles working. I am trying to implement an automated wifi pairing process that does not require a UI other than a single push button :slight_smile:

9 Likes

awesome work, can’t wait until we can buy a module for this!

Ok, just a quick note. The cc3100 driver works great. Not long after my last post, I got the profile stuff working and successfully implemented the AutoConnect. Also, methods wrapping the Access Point mode are used and it works great. I just checked in the latest to http://cc3100.codeplex.com .

I have already integrated the cc3100 into my old project and it immediately worked far better than the cc3000 ever did. So, at this point I encourage everyone to just use it. This driver and the cc3100 have some amazing capabilities.

P.S. I put the SmartConfig implementation on hold… for a variety of reasons.
#1 - Under a variety of circumstances, Smartconfig does not work, so a backup way to pair would always be necessary. Two reasons SmartConfig does not always work – heavy packet traffic or 5GHz wifi.
#2 - Other than making the user connect to an AP to configure, AutoConnect is no worse (from an end-user perspective) than SmartConfig (note: encryption can easily be added onto AutoConnect).

Still on the To do list: SSL socket testing, handling device reset (although it’s never been necessary yet), Reset profiles with push-button.

Note: although a custom web server example could work with TCP sockets, using the integrated Web server offers too much benefit and speed to even consider this. In fact, by offloading the web server, it just leaves the host CPU more responsive. Also, services can be implemented using the dynamic page rendering without using sockets. Trust me, unless you plan on implementing an SSL web server (good luck), I would not bother with the a socket based web server.

5 Likes

more awesome. Do you think it’s worth making something “nice” to connect the cc3100boost to at this time, or still hang around for cc3100mod ?

Great work!

@ Valkyrie-MT how is implementing SSL sockets going?

Yeah, SSL client TCP sockets are a key reason for my move to the cc3100. As with other commands, I sniffed serial communications while running the TI example. In this case, I successfully opened an SSL connection to GMail’s mail server and sent a message successfully. I captured all the message commands and implemented the special socket opening. I have not yet tested it though, but having seen the commands, I have little doubt that it will work.

If you have a cc3100, let me know and I’ll throw together what the example code should look like and you can test it for me. My intent is to have the SSL socket support and a higher level API for easy use of the Windows Notification Services.

-Valkyrie-MT

1 Like

@ Valkyrie-MT - I was being lazy and waiting for someone to create a custom module. :-[

I have limited time, but would like to get involved in testing. Can you confirm I just need the CC3100BOOST and CC31XXEMUBoost for testing?

I was planning to use a Corba II for testing, as I have one sitting around not being used at the moment.

@ Valkerie-MT any updates ?

is someone planning for a gadgeteer version of a CC3100 based module ?

the CC3100MOD module is meant to be a good reference design, but I haven’t seen them start selling them yet. You can see the reference design info but its not really usable for a punter to make a board.

1 Like

@ PiWi - Yeah, we have no data sheet or components yet for the cc3100 module. As soon as the datasheet is available, I’ll design a board for some prototyping and maybe a gadgeteer version. But, right now we are still in a holding pattern waiting for TI. The last I heard, the datasheet was going to be available in “early November”, so it might be any day now. And, I would hope that modules will be available within a month.

2 Likes

@ Valkyrie-MT - Thanks for the update