Now available - desktop Smart Config setup client

Hello Spark Core community –

I mentioned previously that I was working on a desktop Smart Config setup client.

It’s now ready - above you can see how it looks on Mac OS X, Windows 8 and Ubuntu 12.04. You can find all the details here:

I’d really appreciate any feedback on how you got along using either the ready to go binary distribution or compiling things up yourself and running from source.

Before people get too excited only the UI is open source, it still depends on a closed source library from TI.

However over the next week or so I will discuss how to create an open source replacement for the TI logic.

I have already written such a replacement but do not currently plan to release it.

Why? Because I’ve looked at the bytecode for TI’s implementation and I think it would be nicer to create a completely clean room implementation.

This is way simpler than it may initially sound - there is nothing very complex going on in the library.

You need less than 300 lines of very simple logic to handle the encoding and transmission of the SSID etc. and to handle listening out for the connection of a CC3000 enabled device to the network.

Then you need less than 100 lines per platform, i.e. Linux, Mac OS X and Windows, of platform specific logic to retrieve the SSID and other values that cannot easily be retrieved through pure Java calls.

In the post mentioned above I discuss this in more detail.

I’ve also put together blog posts on:

  1. How a CC3000 enabled device announces its presence once it has successfully connected to a network:

  2. How to tell what 802.11 protocol you are currently using to connect to your wifi access point and how to force the use of a particular protocol:

The second of these two posts is needed as my desktop Smart Config setup client may not work if run from a machine that is connected to the AP using 802.11n (rather than b or g). This is due to issues with the underlying TI library that have yet to be determined (and which also affect my rewrite of the TI logic).

I apologize in advance for my TL;DR style - the DNS-SD/mDNS related post in particular is way too long for what it covers.

Usually I hate seeing comments elsewhere that point out spelling or grammar mistakes but please feel free to add niggles about anything in my posts as I hate it when I see things like “your” used instead of “you’re” in other people’s posts yet find myself making these kinds of slips all the time in my own posts!

Regards - and again any feedback is much welcome,



awesome. looking forward to getting my cores! since i do not have a android or iphone, i can only configure the devices using a ubuntu or windows system :slight_smile:

I have created an Ant build file and Eclipse project files, I could commit them if you are interested?


Thanks @chrisb2 - I actually use Maven with Eclipse but I deliberately didn’t check in any build or IDE related files.

I don’t know if there’s a standard pattern for including these files such that everyone can include what’s relevant for their particular IDE (Eclipse, IntelliJ, Netbeans or whatever) and their favorite build system (Ant, Maven, Gradle or whatever) in a neat way that doesn’t clutter things up with X different files for each?

At the moment building is pretty simple (at least on Mac OS X and Linux), i.e. just:

$ javac -classpath 'lib/*' -d bin $(find src -type f)

So I do appreciate the offer, but until I find a good answer to the question above, I’m inclined to leave IDE and build system specific files out of the repo for the moment.

I think you can just commit the POM, then individual IDE’s have plugins which can work with it. For example:


@chrisb2 - indeed pretty much everything supports poms, but this kind of ties things to Maven - which isn’t a big deal as for most people this is all be hidden away by their IDE whether or not they care about Maven. But at the moment, as the build and run process is so simple, I’m inclined to leave things as they are and leave people to wire up whatever they like best.

@ghawkins, Thank you, my past two days have been spent struggling to ‘claim’ my core without owning any smart devices.

So far I’ve installed the Windows driver, found Tera Term (putty failed to function), and confirmed both SSID & password appear perfect…because if I deviate either one my Core perpetually flashes green. With the proper SSID & password I get ~20 green flashes and them back (or is it forward?) to ‘listening mode’ (medium flashing blue).

Do you think your desktop Smart Config may help me out ?


@Redwin88 - I’d be surprised if a problem you are having with configuring your Core via USB could be resolved by using the over-the-air Smart Config mechanism.

Of the two ways to configure the Core I’d assume the USB mechanism, while less convenient (as it requires a cable), is the more reliable of the two - it is not subject to any of the issues that might affect Smart Config, e.g. topology related problems, doubts about the client really being on the same network as the Core or issues with the client talking a variant of 802.11 that the CC3000 doesn’t understand.

So you can try my Smart Desktop client - but if your desktop or laptop is reasonably new it probably uses 802.11n with MIMO when communicating with your access point - which the CC3000 can’t handle.

I’m afraid I’d be inclined to try and get someone to help debug the USB setup.

1 Like