Bug bounty: Kill the 'Cyan flash of death'

Well, silence is the absence of sound. So if there is no sound (==news) that’s silence, or :-). Have you ever been in a phone call where suddenly the background noise stops? And you ask “are you still there”?

Anyway it’s good news that none of the conspiracy theories seem to hold :-).

There is only one thing I wonder: If TI has such a big QA lab and such a lengthy QA procedure, then how could all these issues have possibly slipped through??? (Not the fault of the Spark, of course). I mean TCP did barely work, UDP does not work (not preserving packet boundaries is no UDP for me)…

To be fair to TI,

  1. you can’t test all the router make in the world. Like android app makers can’t customize for all and some might have an issue. So feedback is important :slight_smile:

  2. everyone is in an unique wifi environment and the not a majority is hit with the event even though the fix is definitely needed.

  3. I feel that they moved fast to zoom in on the issue and even took extra steps to get this fix out and I applaud them for that.

  4. :spark: core is one of the largest product with a CC3000 and this create new environments untested.

:smiley:

1 Like

I promise not to be annoyed if Spark Team updates this thread daily :slight_smile:

4 Likes

The meeting with TI went well, and Spark HQ are busy making plans to roll out the new improved firmware.

Look for an update any day now on the feature content of the next sprint.

2 Likes

Will the result of this activity be TI releasing a new CC3000 Firmware and Host Driver package? e.g. version 1.13, 1.12.1 or something like that? Ref: http://processors.wiki.ti.com/index.php/CC3000_Release_Notes

I do not know if they plan to formally release a package that matches the code they have released to us.
I understand that TI has a release scheduled for May/June that will include some additional fixes/features beyond the issues behind CFOD, that may be the next formal release from them.

Thanks @AndyW, Is the fix confined to the CC3000 firmware or does it also impact the Host Driver as well? Also what CC3000 firmware release did the KickStarter Spark Cores ship with?

The current fix is CC3000 firmware only.

The May/June release will have host driver changes also.

I’ll defer to others what host driver version the spark code is based on.

1 Like

I’m working on a project and found lots of great information on this data stream. I also purchased some Adafruit CC3000 chips and was able to port functionality from that code into a solution that worked for me. Hopefully it will work for you, too. I’m not a professional developer, so please forgive sloppy formatting. BSD license applies.

    typedef struct Result_Struct{
        uint32_t        num_networks;
        uint32_t        scan_status;
        uint8_t         rssiByte;
        uint8_t         Sec_ssidLen;
        uint16_t        time;
        uint8_t         ssid_name[32];
        uint8_t         bssid[6];
    } ResultStruct_t;       /**!ResultStruct_t : data struct to store SSID scan results */
    
    void structSSID(){
    char ssidname[32];
    ResultStruct_t SSIDScanResultBuff;
    int res = (wlan_ioctl_get_scan_results(0, (uint8_t* ) &SSIDScanResultBuff)); //loads results into struct
    if (res != 0) {
        Serial.println("Could not get WiFi Scan results.");
        }
    int index = SSIDScanResultBuff.num_networks;
    int i = 0;
    while (i<index){
        int _rssi = (SSIDScanResultBuff.rssiByte >> 1);
        int _mode = (SSIDScanResultBuff.Sec_ssidLen & (~0xFC));
        uint8_t ssidLen = (SSIDScanResultBuff.Sec_ssidLen >> 2);
        strncpy(ssidname, (char *)SSIDScanResultBuff.ssid_name, 
          ssidLen);
        ssidname[ssidLen] = 0;
        long rssi = _rssi-128;	
        String myrssi = String(rssi, (unsigned char)DEC);
        String encrypted = "";
        switch (_mode) {
    		case 0:
    		    encrypted = "OPEN";
    			break;
    		case 1:
    		    encrypted = "WEP";
    			break;
    		case 2:
    		    encrypted = "WPA";
    			break;
    		case 3:
    		    encrypted = "WPA2";
    			break;
    	}
    	String SSID = ssidname;
    	String results = SSID + "," + myrssi + "," + encrypted;
    	Serial.println(results);
    	int res1 = (wlan_ioctl_get_scan_results(0, (uint8_t* ) 
            &SSIDScanResultBuff)); //iterates the buffer
    	if (res1 != 0) Serial.println("Get Scan Results iteration 
            failed");
    	i++;
        }
    }
1 Like

Hey gang, any new updates on this thread?

Hi @vicatcu

I know the Spark team has been planning the roll-out of a patch for TI CC3000 but they want it to be safe for everybody and so I think the testing is taking some time. I think they said this is going to be an “opt-in” patch, so they can go slow and make sure it works.

I know it is in the works!

1 Like

Just checking in, is this thread where we’ll see an announcement when new firmware comes out?

Hi @vicatcu,

Yes! We’ll update this thread when we get an official patch from TI, but that is certainly taking longer than we expected. We have an unofficial patch that is a significant improvement, so we’re very optimistic. We’re also working on a smooth opt-in system for delivering the patch to everyone’s Cores, so that should happen in the coming weeks.

Thanks,
David

3 Likes

@dave @AndyW @zach
Just saw on TI web site announcement dated 15 May 2014 for v1.13.7 but when trying to download the link is invalid.

Maybe you guys have better connections to get this?

Although it shows and as being for the MSP430FR5739 I assume the binary is included and can be used with/for the Spark?

1 Like

Yes, we believe that this release is the same as the one we have been testing and are readying for release. I have asked TI for confirmation, since the link is dead and we can’t validate for ourselves.

1 Like

Looks like its available now. I was able to download and update last night. So far, so good.

Hi, how did you update? I would be so glad to finally have it…

I’m actually not using a Spark Core, but another device that uses the CC3000: BrewBit Model-T (code here).

I have just been monitoring this thread as we have been facing the same issues as you guys. We pulled the update into our code in about 10 minutes. It was a very easy upgrade for us, but I am not sure how the Spark patch programmer is intended to be used. So unfortunately, it looks like you will have to wait for the official Spark update.

Edit: Looks like the Spark patch programmer is basically just the stock CC3000 one, so the only change you have to make to this is to replace wlan_drv_patch, drv_length, fw_patch, and fw_length with the values in the CC3000 patch programmer.

Okay, thanks a lot. I will try that…

Edit: Okay, thanks, success! I was able to flash the new firmware to the CC3000. Tried with my test application and it seems to be a lot more stable. I was able to crash it, though, by making many HTTP requests very fast. Still… But at least it now stays up for more than 5 minutes. Will let you know, if it stays up constantly. Thanks very much!!!

Update: so it still dies after a couple of hours, or when there are too many requests coming in too fast and then you close a connection. :-(. There seems to be some improvement but not much.

1 Like