SparkFun WiFi Breakout - CC3000

This is a breakout board for the CC3000 WiFi Module. The CC3000 from TI (Texas Instruments) is a self-contained wireless network processor that makes incorporating internet connectivity into your project simple. Instead of the more standard UART communication method, the CC3000 module utilizes an SPI interface allowing you, the user, to control the flow of data as you please. What makes the CC3000 unique is its ability to associate to a WiFi access point using a cell phone app in the Texas Instruments process called SmartConfig.

This breakout even provides an optional feature that allows you to attach an external antenna, just in case you need a little extra power. This is a handy feature if you want to route an antenna to the outside of an enclosure or to increase your WiFi gain. We've broken out the GND, Vcc, 3.3V, MOSI, MISO, CS, INT, SCK, and EN pins from the CC3000 module to give you easy access to making a great WiFi enabled project.

  • Supply Voltage: 3.3V - 12V
  • Host Interface: SPI @ 16MHZ
  • Throughput (TCP): ~4Mbps
  • IEEE 802.11 b/g Compliant
  • WEP, WPA/WPA2 (AES and TKIP - Personal) Security Modes
  • FCC, IC, CE, and TELEC Certified
  • Onboard WIMAX Antenna
  • Optional External Antenna Connection
  • 1.83 x 1.03 x 0.14 in (46.4 x 26.2 x 3.6 mm)

SparkFun WiFi Breakout - CC3000 Product Help and Resources

Core Skill: Soldering

This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.

1 Soldering

Skill Level: Noob - Some basic soldering is required, but it is limited to a just a few pins, basic through-hole soldering, and couple (if any) polarized components. A basic soldering iron is all you should need.
See all skill levels

Core Skill: Programming

If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.

3 Programming

Skill Level: Competent - The toolchain for programming is a bit more complex and will examples may not be explicitly provided for you. You will be required to have a fundamental knowledge of programming and be required to provide your own code. You may need to modify existing libraries or code to work with your specific hardware. Sensor and hardware interfaces will be SPI or I2C.
See all skill levels

Core Skill: Electrical Prototyping

If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.

2 Electrical Prototyping

Skill Level: Rookie - You may be required to know a bit more about the component, such as orientation, or how to hook it up, in addition to power requirements. You will need to understand polarized components.
See all skill levels


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • Pete Marchetto / about 10 years ago / 2

    Just so everyone knows, here's what I have for pins on the SainSmart (yeah, yeah, boo, hiss, I know) Arduino Mega 2560: MISO: 50 MOSI: 51 SCK: 52 All other pins are as normal.

  • WadeB / about 10 years ago / 2

    I’ve built a replacement driver for the CC3000, It’s roughly half the size.

    It doesn’t offer the C++ interface of the SFE library, instead it’s at the socket level. But if someone wanted to, the SFE library could be ported to sit on top of it.

  • Member #548280 / about 10 years ago / 2

    Hello! I hope everyone out there is having a great day!

    1.) Here is how the CC3000 wants to be wired up to the Arduino MEGA 2560 board.

    • GND → GND • VCC → 5V • MOSI → 11 (ATmega 2560 PB5 / pin 24) • MISO → 12 (ATmega 2560 PB6 / pin 25) • CS → 10 (ATmega 2560 PB4 / pin 23) • INT → 2 (ATmega 2560 PE4 / pin 6) • SCK → 13 (ATmega 2560 PB7 / pin 26) • EN → 7 (ATmega 2560 PH4 / pin 16)

    If I want to change the pins for INT, SCK and EN how will I be able to do this with the CC3000 library? To work on our custom board we want to make the following changes shown below. Last three lines for INT, SCK and EN. Will the changes below be possible?

    • GND → GND • VCC → 5V • MOSI → 11 (ATmega 2560 PB5 / pin 24) • MISO → 12 (ATmega 2560 PB6 / pin 25) • CS → 10 (ATmega 2560 PB4 / pin 23) • INT → 2 (ATmega 2560 PE4 / pin 6) changed to D14. • SCK → 13 (ATmega 2560 PB7 / pin 26) changed to D42 • EN → 7 (ATmega 2560 PH4 / pin 16) changed to D15.

    2.) Any tips on integrating this into an existing sketch that has been ported to a purely C/C++ project?

  • Member #24952 / about 10 years ago / 2

    Can any of the WiFi modules available from Sparkfun connect to a HTTPS host? All the TCP/IP stacks mention HTTP support, but it's not clear if they support SSL/TLS.

    • Supposedly, the CC3000 can support SSL/TLS, but it's not something I've tested with the library yet.

      • George Hawkins / about 10 years ago * / 1

        The CC3000 does not directly support either HTTP or HTTPS. It works at a lower level - it provides a sockets based API. Higher level protocols like HTTP or HTTPS have to be implemented on top of this API in MCU code. Plain HTTP requests are trivial - you open a socket connection to the relevant host, write a "GET ..." request and then just read the result. HTTPS however is completely different. Your MCU will almost certainly have neither the memory nor processing power for the necessary TLS support. A cheap MCU, like the ATmega328 in an Arduino, could handle e.g. the AES encryption often used once a secure HTTPS session is established but it won't be able to handle the initial steps involving X.509 certificates and in particular the asymmetric cryptography required to exchange the relevant symmetric key. So TLS support is technically possible, if you have a high end MCU, but in practice something like a Pi (with a cheap wifi-dongle) makes more sense for HTTPS.

        • Member #24952 / about 10 years ago / 1

          I'm using an ARM micro, the STM32F4. It looks like ST has an application note on using the PolarSSL library with this micro. I'll post back if I successfully get it working.

          • Member #578956 / about 10 years ago / 1

            Hi, did you have any luck implementing SSL/TLS security using ARM with CC3000.

  • Chiel / about 10 years ago / 2

    So now we have the Xbee wifi, E-Imp, WiFly and the CC3000 to pick from. You guys really know how to spoil us with choices. altough this one seems more suitable in projects where one prefers their controller of choice to do its job rather then having to configure the module itself. To me this one seems good for those looking to migrate from wired solutions such as the Wiznet network modules.

    I especially like the SPI interface. Fast and efficient which is a plus for network modules of any kind.

  • Member #694563 / about 9 years ago / 1

    Has anyone had any issues when trying to connect to a host on the local network via its IP address?

    I am using an Arduino Mega with the breakout CC3000. I have no issues when I connect to an external website via hostname. However when I try to connect to a Beaglebone Black via it's IP address it fails. The BeagleBone Black can ping the CC300 and get replies back. When the CC3000 initiates a TCP connection it hangs. Doing a TCP dump on the beaglebone, shows that a syn is never sent from the CC3000.

    I can run the "Test Ping" example and ping, when I change the url to the internal address of the beaglebone it fails. It shows 0 packets sent.

  • MimoBot / about 9 years ago / 1

    I am looking at this WiFi module as my application is not supported by the ESP8266, can this module connect directly to a URL? Not just an IP address? In my project it must be able to connect to a URL

  • Member #394763 / about 9 years ago * / 1


  • Member #534393 / about 9 years ago * / 1

    I am having an issue getting the code to function on my Arduino Mega board. Without anything connected to the board, when I upload and run the BoardTest code, the serial monitor only reports these lines.

    SparkFun CC3000 - Board Test

    Shouldn't it atleast fail to initialize and report that back in the serial monitor? When the breakboard is hooked up, there is no change, still does not report back a failed or success on the init. What version of Arduino Software should be used with the CC3000 library?

    • The gotcha with the Mega is that SPI is not on pins 10-13, like on the UNO. You'll need to populate the 2x3 ISCP header, which has SPI.

      • Member #534393 / about 9 years ago / 1

        I thought pins 50, 51, and 52 had the SPI broken out to them on the Mega.

        • Oops! I thought this was the shield. You are correct. Those pins should also work.

          I tested the library with Arduino v1.0.5, if that helps.

  • Member #662679 / about 9 years ago / 1

    Hi, Will you release any breakout board for the CC3100 any time soon?

  • Member #635597 / about 9 years ago * / 1

    hi i need your help, i connect cc3000 wifi breakout on ARDUINO UNO i follow your guides and i run the code webclient but in serial monitor i read only this result: SparkFun CC3000 - WebClient what wrong?

  • Member #650295 / about 9 years ago / 1

    How do I connect to the internet in raspberry pi with this board.

    • You would need to connect it to the SPI pins on the Raspberry Pi and write a device driver in Linux tha communicates to the CC3000 over SPI.

  • Member #650295 / about 9 years ago / 1

    How do I connect to the internet in raspberry pi with this board.

  • Member #635750 / about 9 years ago * / 1

    Hello, I'm having a bit of trouble getting the examples to work. The board and scan test work just fine, but when I try to use the Web Client example I run into issues. For an unsecured network the example works as expected, but when I try to use my normal WiFi (a NAT router with WEP) the chip cannot connect to the AP. I changed the ssid, the security setting, and double checked the password, but it is still no good. Do you have any suggestions as to how to proceed? Thank you.

    Edit: I was able to use my phone as a hotspot (WPA2) and the cc3000 could connect through that

  • afaque / about 9 years ago / 1

    can CC3000 WiFi Breakout Board be interfaced with Phillips P89V51RD2 micro-controller which has an SPI interfacing ability

  • JasonJ82 / about 9 years ago / 1

    Hi, I was just wondering if Sparkfun is working on a breakout for TI's CC3100/CC3200. the 3100 has a lot of advantages including SSL/TLS support. I've heard other companies similar to Sparkfun are working on this and I would love to purchase it from Sparkfun.

    Thanks for all you do guys!! Hiva Javaher

  • Member #617962 / about 10 years ago / 1

    I did the tutorial fine, now I'm trying to post data to a different server. How do I post the timestamp at the time a request is sent? Is there anyway to do it without Time.h (from Arduino) or even better is there a way to do it WITH Time.h , cause currently the SFE_CC3000 library is not compatible with Time.h .

  • Member #607893 / about 10 years ago / 1

    Has anyone gotten this to work with the mbed microcontroller? debugging doesnt work for me so I dont know why the module isnt connecting to the Access Point. Im pretty sure my pins are right and I have an external 5v power source supplying power to the module.

    • I have gotten the CC3000 to work with mbed. My problem was making sure it was getting enough power (it kept resetting if I tried to use the LPC1768's onboard supply). It sounds like you've already tackled that with the external supply, though.

      • Member #607893 / about 10 years ago * / 1

        This is really odd. Can you confirm my pins? Connection-wise how I am connecting the sparkfun cc3000 to the LPC1768:

        MOSI - > mbed p5

        MISO -> mbed p6

        SCK -> mbed p7

        CS -> mbed p8

        INT -> mbed p9

        EN -> mbed p10

        cc3000 wifi(p9, p10, p8, SPI(p5, p6, p7), "ssid", "password", WPA2, false);

        Power Supply-wise: I have a usb powering the mbed and providing serial output. I have a SEPARATE USB female breakout that ONLY provides power to the cc3000 module at 5v 1A. This should be more than enough power for the module. I have switched out my wires multiple times to make sure it isn't my wires that are causing the disconnect. Since I am getting serial readout, I doubt it's a connection issue, the problem is though when I turn on debugging only this appears:

        cc3000 Hello World demo. [CC3000 : HCI TX] Command Sent : 0x4000

        and it stops. Has this happened to you before? This is so weird because it works perfectly on an arduino uno

        • Pinout looks correct. Which library are you using? I used Martin Kojtal's library. Also, do you have a common ground running between the mbed and the CC3000? This has bitten me before.

          • Member #607893 / about 10 years ago / 2

            sir...thank you so much. I didn't realize it needed a common ground!!! why is this may I ask? I've spend two days looking into this!

            • While you might have the same neutral line running between your power supplied (the things plugged into the wall), the common (or "ground") between the mbed and the CC3000 is not the same. If you look at a basic AC to DC circuit, you'll see that they use a rectifier (4 diodes) to convert AC to DC. The common (white down arrow in the circuit) is unique to only that part of the DC circuit. Now imagine two separate AC/DC converters, one for the mbed and another for the CC3000. There is nothing to guarantee that the two commons are the same voltage. As a result, all your other voltages (VCC, IO lines, etc.) will be referenced to their local common. If your mbed is transmitting what it thinks is 3.3V over SPI, it might be 0.2V on the CC3000 because the common is at a completely different voltage! The way to fix that is to run a physical wire between the commons. Hope that helps :)

              • Member #607893 / about 10 years ago / 1

                Yup this was so helpful :) thank you so much xD. I think I might write a comprehensive guide for those trying to do the same thing I did.

  • csnicholsii / about 10 years ago / 1

    I'd like to use this, replacing a Bluetooth Mate Gold, to transmit data from a wearable wireless motion sensor. What's the broadcast range of the CC3000?

    • It depends a lot on the antenna you are using. With the onboard chip antenna, I had no problems connecting to an access point a few rooms away. It had issues if I tried across our building (about 10 rooms away). We're also talking about multi-path propagation. I have not tried it outside, so I can't comment on its line-of-sight range, but I imagine it's decent (probably a little less than something like a laptop).

      Now, if you put on a directional antenna (like a Yagi-Uda), you could probably get a few hundred yards.

  • Member #602879 / about 10 years ago / 1

    Hello. I am using Arduino Mega, Sparkfun's CC3000 with Adafruit library. Can someone tell me what changes i need to make in adafruit library and connections of Mega with CC3000? Any help? Thank you !

  • Member #157085 / about 10 years ago / 1

    Is this board fcc certified? Or is it just inheriting the certification from the cc3000 module?

  • Member #580480 / about 10 years ago / 1

    I've been having trouble using this as a web server. I've been trying to integrate some devices into OpenRemote and it will poll devices for status with REST requests every 5 to 10 seconds. I've confirmed that my sketches aren't leaking memory or overrunning buffers, but after running for a relatively short period the device drops off the wifi network. I'm using the Adafruit library to implement a web server, and while I can ping the radio on its static IP address, the port 80 server stops responding to connection requests after a while.

    I'm wondering if anyone else has successfully used this to implement a reliable web server that runs for weeks?

  • Member #464109 / about 10 years ago / 1

    Will this work with an Arduino Pro Mini 328 (5v - 16mhz)?


  • Member #19544 / about 10 years ago / 1


    There is a bug somewhere in the library.

    If you use a 64 byte password with WPA2 it does not connect. If you use 63 bytes or smaller then it works fine.

    It seems that for a 64 byte password one of the characters is lost somewhere in the library.



  • Qtechknow / about 10 years ago / 1


    I'm really interested in this product, does anyone know if the library / board works with the Arduino Leonardo / ATmega32u4? I asked about the Adafruit library, but they said that they only had support for the UNO / MEGA, not the Leonardo or Due. They said it had something to do with the SPI pins - but I'm not sure. Has anyone tested this board + library with the Arduino Leonardo?

    Thanks, Quin

  • Member #569507 / about 10 years ago * / 1

    What antennas would you recommend for this board?

    Also, what other components are required to mount an antenna to this board?

    • Anything that is tuned for 2.4GHz and can be connected through a u.FL connector. It really depends on what your application is.

      • Not so great in almost all directions with smallest size, stick with the chip antenna already on the board.
      • Decent in almost all directions, use one of the rubber duck antennas (like the one we sell:
      • Good in a hemisphere above the antenna, use a patch antenna
      • High gain but directional, look into a cantenna or a Yagi-Uda

      To mount the antenna like in the hookup guide, you'll need 2x angle brackets, 2x #4-40 screws and nuts along with a piece of plastic/wood with 3 holes drilled in it.

  • Member #469376 / about 10 years ago / 1

    Hi, everyone

    Has anyone used the CC3000 as a web server? The library supports this feature?

    Best regards

  • Member #530279 / about 10 years ago / 1

    how to use your library to connect to local host? client.connect(server,80,TCP). what should i put in the place of server? I cannot find tutorials regarding this board. All i found is adafruit. I want to control led from my localhost webserver. Please help !!!

    • Here is the getting started tutorial with our library and board

      What do you mean by localhost? I don't think the CC3000 has a way to connect to itself (loopback) like most computers have. If you're trying to connect to another computer, you need to have both the CC3000 and computer on a WiFi network. You will need to have the computer hosting a webpage and then connect the CC3000/microcontroller to the webpage via TCP. Hope that helps!

      • Member #530279 / about 10 years ago / 1

        Sorry about local host. yah, you are right, i will run a webserver on my laptop . And then , i want to control led or sensors from the webserver using CC3000. But i don't know how to connect to the webpage via TCP. That's exactly what i'm asking for. client.connect(server,80,TCP) as in the webclient.ino is to connect to specific webpage. How should i put IP address in the place of server so that it will connect to my laptop IP address which will then connect to web server running on my laptop?

        Here is the tutorial that i'm following. sparfun and adafruit hv different libraries. So, i'm having a hard time trying to follow this tutorial which is meant for adafruit wifi breakout board.

        • If you're following the Adafruit tutorial, you'll probably have to use their library (as the function calls are different between SparkFun's and Adafruit's libraries). Their library should still work with our board.

          You need to figure out the IP address of your laptop. This can be done by opening a command prompt and typing "ipconfig" for Windows or "ifconfig" for Linux/Mac.

          • Member #530279 / about 10 years ago / 1

            If i'm using your library, how can i connect to certain IP address, let's say to my laptop which is running a webserver?

            thank you.

            • Check out the "WebClient" example in the SFE_CC3000_Library. You can replace "server" in client.connect(server, 80, TCP) with an IP address (such as the IP address of your laptop). The IP address needs to be in the form of an "IPAddr" struct (the definition for the struct is found in SFE_CC3000.h), which is just 4 unsigned char (each char represents the 0-255 number for the IP address).

              For example, if you want to use the WebClient example and connect to (whose IP address is using just the IP address, replace the section under "// Make a TCP connection to remote host" with:

                // Make a TCP connection to remote host
                IPAddr ip_addr;
                ip_addr.address[0] = 93;
                ip_addr.address[1] = 184;
                ip_addr.address[2] = 216;
                ip_addr.address[3] = 119;
                if ( !client.connect(ip_addr, 80, TCP) ) {
                    Serial.println("Error: Could not make a TCP connection");

              Give that a shot. Make sure that the IP address and port number (port 80 in the above example) match the address of your laptop and port number of your listening web server.

  • Member #548280 / about 10 years ago / 1


    Have you been able to test this breakout board with the Ardurino Mega 2560?

    The comment below about the wiring of the CC3000 to the Arduino MEGA 2560 board was more of a statement (untested) to transition to the topic of having custom pins. I wasn't saying that it works but I can see how it was unclear. :)

    We have been unsuccessful on having the Sparkfun CC3000 work with the Ardurino Mega 2560.

    Things look to fail right from the start:

    SparkFun CC3000 - Ping Test

    Something went wrong during CC3000 init! Connecting to: bluedog Error: Could not connect to AP Error: Could not obtain connection details Looking up IP address of: Error: Could not lookup host by name Pinging 3 times... Error: no ping response Error: Could not disconnect from network Finished ping test

    The webclient and Smartconfig also fail.

    There may be some issues with the SPI pin definitions between the UNO and the Mega. Would it be possible for you to try the MEGA 2560 on your end and let us know?

    Thank you so much!

    • Member #19544 / about 10 years ago / 1


      I have it working on an Arduino Mega 2560, works like a charm.

      Of course you have to use different pins on the mega board for the SPI pins (SCLK, MOSI, MISO), they are in pins 50 to 52.



    • Member #19544 / about 10 years ago / 1


    • I recently updated the library to support the Mega. Try again and let me know if you have any issues!

  • Member #530279 / about 10 years ago / 1

    I followed the hookup guide exactly the same, i tried both iphone and sumsung tablet. But why the breakout board didn't connect to smartconfig app. why? it never connect. Help me!!! FYI . Security = WPA2-personal Encryption type = AES Is it because of the aes?

    • Please try the following, in order, and let me know of the outcome:

      1) Connect the CC3000 to an Arduino and run the "BoardTest" example from the SFE_CC3000_Library 2) If that works, run the "ScanTest" example sketch 3) Run the "WebClient" example sketch

      Don't forget to change the pin numbers, SSID, and AP password in the sketches.

      WPA2 AES encryption should work, so long as you provide the correct password in the SmartConfig app. Do not use the "Key" function in the app, as it is currently not supported in the library.

      • Member #530279 / about 10 years ago / 1

        Hey shawn,

        I've tried step 1,2 and 3. All worked fine. But smartconfig sketch didn't work. The iphone app never connects to the wifi module. if ( !wifi.startSmartConfig(timeout) ) { Serial.println("Error: Could not connect with SmartConfig");

        Starting from this step. Here is the outcome from the serial monitor.

        SparkFun CC3000 - SmartConfig

        CC3000 initialization complete Starting SmartConfig Send connection details from app now! Waiting to connect... Error: Could not connect with SmartConfig Error: Could not obtain connection details Looking up IP address of: Error: Could not lookup host by name Pinging 3 times... Error: no ping response Error: Could not disconnect from network Finished SmartConfig test

        I pressed the START button in the app as soon as i saw Waiting to connect in serial monitor

        • Member #578903 / about 10 years ago / 1

          I have tried exactly the same as above. And I cannot seem to connect to any network? Did you ever find a solution for this problem?

          I can do scantest which is just fine, it just that smartConfig that does not work. Using the app from an iPhone 5S if that matters. Hope somebody can help.

        • Blazer / about 10 years ago / 1

          Not sure why but when I used some LEDs to check the connectivity of the module, tx and rx to gnd on the debug pins, everything worked fine after that.

        • Hmm.....weird. Is your phone connected to the same WiFi network that you're trying to connect the CC3000 to?

          • Member #530279 / about 10 years ago / 1

            thx...bro, help me. i bought this board because i like this special phone network configuration feature that allows me not to make changes inside my program.

          • Member #530279 / about 10 years ago / 1

            Yes,exactly. There is only one wifi network that i can connect.

  • Member #40086 / about 10 years ago / 1

    I have downloaded smartconfig and run it on my smartphone, but I am anable to connect to the cc3000 wifi breakout. Can I have some input on how to connect it? Read read several time the hookup guide with no luck. Is my intention to use the cc3000 for a TCP/IP connection using a pic 18F2620 @ 40 MHz.

    More info: I tryed to connect cc3000 with smartconfig with cc3000 only connected to +5 volts and ground. Do I need to ENABLE something for the connection?

    Thank you in advance for any help given .


    • Unfortunately, the CC3000 does not default to SmartConfig on power up. You need to send special SPI commands to the CC3000 to tell it to enter the SmartConfig state. If you are using looking at TI's MSP430 example library for the CC3000, you'll see that wlan_smart_config_start() is called to enable the SmartConfig process in the CC3000.

      If you are trying to control the CC3000 from a PIC, you'll have to port TI's CC3000 library (written for the MSP430). Information on that can be found here: On the other hand, SparkFun's CC3000 library was written for the Arduino (i.e. Atmel ATmega processor).

      Hope that helps!

      • Member #40086 / about 10 years ago / 1

        Thank you for the reply. Yes your answer did help a lot, at least now I know that cc3000 must be enabled via SPI. Got to study the communication protocol and see if I am able to port it.

        Thank you again.



  • Paul4 / about 10 years ago / 1

    Is it a WIMAX or WiFi antenna?

  • dbc / about 10 years ago / 1

    Is the C3000 capable of operating in host mode? For robots I like to have the WiFi and DHCP served from the robot, so that any device that wants to talk to it doesn't need to rely on external WiFi infrastructure. Of course, you'd also need to run a DHPC server on whatever is talking to the C3000 module to make it all work.

  • How does this compare to the Adafruit shield? It looks exactly the same to me!

  • also has a good product using the same CC3000 chip.

  • ClintonKeith / about 10 years ago / 1

    I really hope this board fixes the CC3000 SPI MISO bug, which prevents us from using the CC3000 from sharing the SPI with other devices (see the conversation at

    This sounds easy to fix. I'd like to use the CC3000 with an SPI based display. Can't do it with Adafruit's implementation.

    • pt / about 10 years ago / 1

      hi clinton - the SPI MISO bug is fixed in the current adafruit versions of the CC3000 breakout!

    • Negative, sadly. The Shield has an IC that tri-states the MISO line to prevent those issues, but not the Breakout. You would have to use something like the 74AHC125 or a MUX to fix that issue.

      • ClintonKeith / about 10 years ago / 2

        Darn it. Seems like a low cost/footprint thing to fix. I'd encourage doing that.

        Thanks for letting me know.

Customer Reviews

No reviews yet.