New firmware for old core?

Hi, I have an original kickstarter core. I was thinking to bring it up to date with the latest firmware.

I’ve been reading the forums and I’m a tad bit confused. I’m seeing things for DFU, “Factory-Reset firmware”, etc.

is there just one binary that I can flash that does everything or do i need to do multiple updates for multiple subsystems?

I’m happy to read up on this myself if someone could flip me some forum links.

also, tried looking around on GitHub but that place make me really confused. Is there an easy way to tell what version is the latest for my core ( Or if I have to do multiple flashes for different subsystems what all the latest are?)


@HalC, sadly no but it we can make one to do that in future

Just 3 things that need to be upgraded for now:

1.) Factory tinker firmware (the one that gets restored when you perform factory reset)

2.) Bootloader (to support some newer features like deep sleep)

3.) CC300 patch

Do you have Spark-cli and Dfu-util installed? Fear not!

I will be able to guide you with a few simple steps :wink:

When i run dfu-util -l it reports “Found DFU: blah blah blah” twice. So I think I have DFU-util ready.

(after i update the firmware will I have to reset the key that is used to connect to the cloud?)

1 Like

no, unless you run into a key issue (flashing yellow red or blinking cyan) you do NOT need to do anything key related

Based on your post above I now know that I need to flash three parts: Bootloader, Tinker and cc3000.

I got the spark-cli going. I ran “npm update -g spark-cli” and from my limited understanding that pulled down the latest binaries. I ran “spark flash --usb cc3000” and “spark flash --usb tinker”

Both ended with a “Flashed!” so I guess I’m good there.

The next step is the Bootloader.

Is the Bootloader the same a the deep_update_2014_06.bin I see in …\npm\node_modules\spark-cli\binaries ?

Or is this what I need to do?

get core-firmware.bin from

and run
dfu-util -d 1d50:607f -a 0 -s 0x08005000:leave -D core-firmware.bin


1 Like

The bootloader update binary is here:

Command will be: spark flash -usb core-firmware.bin or dfu-util -d 1d50:607f -a 0 -s 0x08005000:leave -D core-firmware.bin

Cannot remember what the procedure is like but i think you simply reset the core and once the patch is done the core will behaving normally like in tinker firmware.

For factory update:

spark flash --factory tinker or dfu-util -d 1d50:607f -a 1 -s 0x40000:leave -D tinker.bin

Hi there!

I wanna refresh this thread. I still have two 1st gen Cores (Kickstarter Backing), and do not really know if the 0.8.0 - respectively recent - firmwares are applicable for this device.

Is “Device OS” newer Firmware logic or just synonym for “firmware”?
I came to this question during and the hint “Update Device OS version to 0.8.0 or higher for device vitals” and because of:

How do I find out the exact version of bootloader, firmware, os, whatever, already on my device(s)?

Thank you for clarification!

Yes, it should be, but if you haven’t used your device from back in the days, you may need to apply some upates to the WiFi module too (e.g. particle flash --usb cc3000).

“Device OS” is mainly a term used for the successor devices of the Core, since they are using a modular firmware scheme which separates the (multi module) “Device OS” firmware part from the user application firmware module.
On the Spark Core both (Device OS and application) are backed into one monolithic binary.

However even if you have a 0.8.0 monolithic Core firmware Device Vitals won’t be available since providing this data would pose too much impact on the limited resources of the Core.

Thank you for that pointed clarification.

However, when I want to build firmware by myself I get that hint:

sven:~$ cd Development/Mikrocontroller/Particle/firmware/modules/
sven:modules$ make clean all PLATFORM=core
makefile:20: *** “Platform ‘core’ does not support dynamic modules”. Schluss.

What do I need to adjust/configure to build the firmware?

Forget to ask:

Does “particle doctor” flash all the related firmware parts, including cc3000, bootloader, whatelse?

I did this two times, but wonder if there is a command showing me the flashed versions of things on the Core.

It should, but I usually prefer doing things step by step myself.
BTW, the bootloader needs to be flashed via particle flash --serial bootloader.bin since DFU Mode is performed by the bootloader which can’t replace itself while running.

I have no Cores left to test, but what does particle identify and particle serial inspect report?

If you want to build a non-modular (aka monolithic) firmware you can’t build from the modules subdirectory but need to do it from main.
To be sure, you can also add the build switch MODULAR=n to force a monolithic binary even for devices that would support modularity.

BTW, you can always build via Web IDE and download the binary from there.


sven:modules$ particle identify
Could not identify device: No serial port identified

sven:modules$ particle serial inspect
Could not get inspect device: No serial port identified

Device is in normal mode. But same with dfu mode.

Then you may need to provide the port via the --port switch.

Hi, found this thread describing my current problems. With port should you select or is just --port enough?

You should use the port your OS assigns to the device.

Is this information available through netstat? Or should I check elsewere?