The CEENBoT Bootloader

About the Bootloader

The CEENBoT Bootloader Software Package is an experimental feature which allows users to store up to 8 custom programs that can be uploaded to the CEENBoT with an off-the-shelf USB-to-Serial cable (instead of the traditional AVR-ISP programmer, which has been in use to date), in addition to giving users the ability to immediately call up the 'factory firmware' and TI calculator firmwares without having to go through the arduous 'firmware restoration' procedures, representing an overall improvement of the CEENBoT experience for the '324 v2.2x platform.

This so-called 'pacakge' is distributed as a ZIP file, and it mainly consists of the following two key components:

  • A custom firmware which runs on the CEENBoT, called a Program Loader, and...
  • A stand-alone application that you install and run on your PC called The CEENBoT Utility Tool, sometimes called CUT, or CBTool.

The Program Loader is a firmware (provided as a HEX file) that runs on the CEENBoT. It's job is to present you with a menu so you can select one of your 8 custom programs, reload the factory firmware (so you can charge your battery), or TI calculator firmware command interpreter. This is illustrated in the below figure.

CEENBoT Running the Program Loader.
Fig. 1 -- CEENBoT running the Program Loader. The meain screen prompts the user to load the factory firmware, load the TI interpreter, or load a custom program. The user interacts with the Program Loader by way of the three push-buttons labeled "S3", "S4", and "S5".

You populate the 8 custom programs you want to have immediate access to by using a program called The CEENBoT Utility Tool to upload your custom programs onto the CEENBoT, which runs on your PC. With this program you simply select a HEX file (say, from an CEENBoT-API program you created with Atmel Studio), select an upload baud rate (speed), and give it short name, and upload it to your CEENBoT using a common off-the-shelf USB-to-serial cable.

CEENBoT Running the Program Loader.
Fig. 2 -- The CEENBoT Utility Tool running on the PC. You use this to select a previously created HEX file (representing your CEENBoT-API program) and upload it to the CEENBoT.

The USB-to-Serial cable looks similar to the one shown below:

USB-to-Serial Cable
Fig. 3 -- Example of a generic USB-to-Serial cable.

The cable connects with the CEENBoT via its UART conenctor on the side. This also requires what is called either a gender changer that is inserted between the cable and the UART connector on the CEENBoT as shown below:

Cable with Gender Changer Attached to CEENBoT.
Fig. 4 -- A gender changer is required to connect the USB-to-Serial cable with the UART connector on the CEENBoT.

Here's a photo of the gender changer up close:

Gender Changer Adapter.
Fig. 5 -- The gender changer adapter.


If you want to take advantage of the bootloader package, you need to meet the following requirements:

  • You need a CEENBoT: Must be platform 324 v2.2x, and it must have an ATmega324 (or ATmega324P). The ATmega1284/P is NOT supported! (IT WILL NOT WORK!)
  • You must have downloaded and previously installed Atmel Studio 6. You'll use this to upload the initial firmware to 'convert' or 'migrate' the CEENBoT to use the Program Loader (with boot code) and configure the ATmega324's fuses to use the boot region with appropriate size.
  • You need to have an AVR-ISP (In-System Programming) cable, like the one pictured below:
  • AVR-ISP Cable.
    Fig. 6 -- You need an AVR-ISP cable to upload the initial Program Loader with boot code.

    Unfortunately, we cannot avoid this chicken-and-egg scenario. We need an AVR-ISP cable to migrate the CEENBoT to use the new paradigm to upload the Program Loader that contains the boot code. Once this is done and the CEENBoT is migrated, you then use the USB-to-Serial cable from that point on. However, to get to this point, we need the AVR-ISP cable first.

  • You need a generic USB-to-Serial cable as shown in Fig. 3 above, and you also need a gender changer as shown in Fig. 5 above. Once your CEENBoT is 'converted', you use this cable from that point on to upload your CEENBoT-API programs with the CEENBoT Utility Tool.
  • While any 'generic' USB-to-Serial cable will do, you are HIGHLY recommended that you buy a cable that is based on the "FTDI chip", as these have been tested to perform very well (across Windows, and especially in OS X), and have high-quality drivers available for them. If you buy generic (e.g., 'cheap') cable, you might not be able to transfer your HEX files at higher speeds.

Aside from the above requirements, you also need:

  • You need to be technically saavy, and comfortable flashing firmware (HEX files) to your CEENBoT with the AVR-ISP. Theoretically you shouldn't be trying this unles you're already familiar with the CEENBoT and the procedures for flashing firmware to it using Atmel Studio 6, which you should've done if you read over the CEENBoT-API: Getting Started Guide in the CEENBoT-API section of CEENBoT Portal. If you haven't yet interacted with the CEENBoT in the 'usual' way, you're not going to appreciate the need for the Bootloader Package, or how you can benefit from it.
  • You need to be prepared to restore your CEENBoT with factory settings (and 'factory firmware') should the CEENBoT be 'bricked' by using the CEENBoT Bootloader Package. This is done by disabling the boot fuse settings of the ATmega324 using the AVR-ISP cable, which means you should always keep your AVR-ISP handy when you need to configure the ATmega324 microcontroller directly. The microcontroller CANNOT be configured with the generic USB-to-Serial cable. Information about the factory firmware is also discussed in the CEENBoT-API section of the CEENBoT Portal, where you are informed about the importance of the factory firmware and where you go to fetch it.


Below are the links for downloading the 'package' for both Windows and OS X. The documentation for performing the 'migration procedures' (e.g., converting your CEENBoT from ordinary usage to use the Program Loader/CEENBoT Utility Tool paradigm) is contained in the package as an HTML file. Please read the documentation once before attempting to perform the migration procedures. The documentation unfortunately is not finished (it does not include information about how to 'go back' to ordinary usage if something goes wrong), but I hope to complete that soon, but it does contain all the information needed to perform the conversion.

CEENBoT Bootloader Package
File/Desc. File Type Revision Size Posted Download
CEENBoT Bootloader Package (WIN32) ZIP v0.11.037b 8.7MB 7/27/2015 Download
CEENBoT Bootloader Package (OSX) DMG v0.11.037b 10.7MB 7/27/2015 Download

While an OS X version is available, note that this was primarily created to support CEENBoT Commander (a product of CEENBoT, Inc), which also runs in OS X. You can use this, buy you would also need a way to write CEENBoT-API programs under OS X as well as being able to use your AVR-ISP cable to configure the ATmega324 also under OS X, and Atmel Studio 6 is only available for Windows.