The CC3000 is a complex chip that has its own firmware published by Texas Instruments. You might find it necessary to upgrade the firmware, for example to use the latest version with recent bug fixes. Luckily it's easy to upgrade (and downgrade) firmware on the chip using a few included examples in the Adafruit CC3000 Arduino library.
Currently there are two firmware versions provided in the library:
- Version 1.12 - This is a minor bug fix release with release notes here.
- The 1.12 and earlier firmware versions are known to have problems with heavy load and certain network conditions which can cause the CC3000 to lock up. Consider upgrading to the more recent 1.13 release if you run into stability issues.
- Version 1.13 - This is another bug fix release with release notes here.
- The 1.13 release has a fix for internal CC3000 issues which cause lock ups under heavy usage and certain network conditions. However note that the 1.13 release also appears to have bugs with UDP traffic. Most internet traffic uses TCP instead of UDP so you likely won't run into problems and should consider upgrading to the latest 1.13 firmware.
- Version 1.14 - This is a bug fix release with release notes here.
To upgrade to a specific version first make sure you have the most recent Adafruit CC3000 Arduino library installed. If you installed the CC3000 library some time ago make sure to download and install it again as fixes and new firmware versions are added periodically.
Next make sure your CC3000 is wired to your Arduino and can successfully run CC3000 sketches like buildtest. If there's a problem communicating with the CC3000 you want to find out before your start the firmware upgrade. Also be sure you're using a good quality 1 amp or more external power supply and not a computer/laptop USB port to power the Arduino & CC3000!
Now in the Arduino IDE load one of the driverpatch_X_XX CC3000 examples, where X_XX is the version like driverpatch_1_13 for version 1.13. Adjust any of the pins to communicate with your Arduino just like you would to run buildtest. Compile and load the sketch on your Arduino.
Open the serial monitor at 115200 baud and you should see a message such as a the following (try pressing the Arduino's reset button if you see no message):
Enter some text and press send to start the firmware upgrade process. The upgrade will happen fairly quickly and should be done in a minute or two. Here's what you should see during an upgrade:
After the upgrade finishes load the buildtest example and run it again. Confirm that everything works as expected with the connection to your wireless network and ping of adafruit.com. Congratulations you've upgraded the firmware on the CC3000!
Note: The version number displayed during the firmware upgrade and from sketches like buildtest includes the major, minor, and patch numbers so it doesn't exactly match the version number from TI. Here's a handy conversion between reported version number and CC3000 firmware version:
- Buildtest reports version 1.32 = CC3000 firmware v1.14
- Buildtest reports version 1.28 = CC3000 firmware v1.13
- Buildtest reports version 1.26 = CC3000 firmware v1.12
- Buildtest reports version 1.24 = CC3000 firmware v1.11