# New firmware for old core?

**URL:** <https://community.particle.io/t/new-firmware-for-old-core/11519>\
**Category:** Firmware\
**Created:** [April 30, 2015, 3:58am UTC](https://community.particle.io/t/new-firmware-for-old-core/11519 "2015-04-30T03:58:57Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![HalC](https://avatars.discourse-cdn.com/v4/letter/h/f05b48/32.png) [@HalC](https://community.particle.io/u/HalC)\
**Post date:** [April 30, 2015, 3:58am UTC](https://community.particle.io/t/new-firmware-for-old-core/11519/1 "2015-04-30T03:58:57Z")

</div>

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?)

Thanks.

---

<div class="post-metadata">

**Author:** ![kennethlimcp](https://avatars.discourse-cdn.com/v4/letter/k/c0e974/32.png) [@kennethlimcp](https://community.particle.io/u/kennethlimcp)\
**Post date:** [April 30, 2015, 9:42am UTC](https://community.particle.io/t/new-firmware-for-old-core/11519/2 "2015-04-30T09:42:46Z")

</div>

@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 😉

---

<div class="post-metadata">

**Author:** ![HalC](https://avatars.discourse-cdn.com/v4/letter/h/f05b48/32.png) [@HalC](https://community.particle.io/u/HalC)\
**Post date:** [April 30, 2015, 4:28pm UTC](https://community.particle.io/t/new-firmware-for-old-core/11519/3 "2015-04-30T16:28:37Z")

</div>

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?)

---

<div class="post-metadata">

**Author:** ![harrisonhjones](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/harrisonhjones/32/4132_2.png) [@harrisonhjones](https://community.particle.io/u/harrisonhjones)\
**Post date:** [April 30, 2015, 4:58pm UTC](https://community.particle.io/t/new-firmware-for-old-core/11519/4 "2015-04-30T16:58:49Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![HalC](https://avatars.discourse-cdn.com/v4/letter/h/f05b48/32.png) [@HalC](https://community.particle.io/u/HalC)\
**Post date:** [May 1, 2015, 5:07am UTC](https://community.particle.io/t/new-firmware-for-old-core/11519/5 "2015-05-01T05:07:21Z")

</div>

@kennethlimcp  
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

> **[particle-iot/firmware](https://github.com/particle-iot/firmware/tree/bootloader-patch-update/build)**
>
> firmware - Device OS (Firmware) for Particle Devices

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

Thanks!

---

<div class="post-metadata">

**Author:** ![kennethlimcp](https://avatars.discourse-cdn.com/v4/letter/k/c0e974/32.png) [@kennethlimcp](https://community.particle.io/u/kennethlimcp)\
**Post date:** [May 1, 2015, 6:04am UTC](https://community.particle.io/t/new-firmware-for-old-core/11519/6 "2015-05-01T06:04:58Z")

</div>

The bootloader update binary is here: [https://github.com/spark/firmware/blob/bootloader-patch-update/build/core-firmware.bin](https://github.com/spark/firmware/blob/bootloader-patch-update/build/core-firmware.bin)

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`

---

<div class="post-metadata">

**Author:** ![szsoftware](https://avatars.discourse-cdn.com/v4/letter/s/b9bd4f/32.png) [@szsoftware](https://community.particle.io/u/szsoftware)\
**Post date:** [September 21, 2018, 9:52pm UTC](https://community.particle.io/t/new-firmware-for-old-core/11519/7 "2018-09-21T21:52:07Z")

</div>

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 [console.particle.io](http://console.particle.io) and the hint “Update Device OS version to 0.8.0 or higher for device vitals” and because of:  
[https://www.particle.io/products/software/device-os/](https://www.particle.io/products/software/device-os/)

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

Thank you for clarification!

---

<div class="post-metadata">

**Author:** ![ScruffR](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/scruffr/32/6952_2.png) [@ScruffR](https://community.particle.io/u/ScruffR)\
**Post date:** [September 22, 2018, 7:39am UTC](https://community.particle.io/t/new-firmware-for-old-core/11519/8 "2018-09-22T07:39:15Z")

</div>

> [@szsoftware](#):
>
> do not really know if the 0.8.0 - respectively recent - firmwares are applicable for this device.

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`).

> [@szsoftware](#):
>
> Is “Device OS” newer Firmware logic or just synonym for “firmware”?

"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.

---

<div class="post-metadata">

**Author:** ![szsoftware](https://avatars.discourse-cdn.com/v4/letter/s/b9bd4f/32.png) [@szsoftware](https://community.particle.io/u/szsoftware)\
**Post date:** [September 22, 2018, 9:16am UTC](https://community.particle.io/t/new-firmware-for-old-core/11519/9 "2018-09-22T09:16:00Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![szsoftware](https://avatars.discourse-cdn.com/v4/letter/s/b9bd4f/32.png) [@szsoftware](https://community.particle.io/u/szsoftware)\
**Post date:** [September 22, 2018, 9:18am UTC](https://community.particle.io/t/new-firmware-for-old-core/11519/10 "2018-09-22T09:18:52Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![ScruffR](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/scruffr/32/6952_2.png) [@ScruffR](https://community.particle.io/u/ScruffR)\
**Post date:** [September 22, 2018, 9:51am UTC](https://community.particle.io/t/new-firmware-for-old-core/11519/11 "2018-09-22T09:51:01Z")

</div>

> [@szsoftware](#):
>
> Does “particle doctor” flash all the related firmware parts, including cc3000, bootloader, whatelse?

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.

---

<div class="post-metadata">

**Author:** ![szsoftware](https://avatars.discourse-cdn.com/v4/letter/s/b9bd4f/32.png) [@szsoftware](https://community.particle.io/u/szsoftware)\
**Post date:** [September 22, 2018, 9:57am UTC](https://community.particle.io/t/new-firmware-for-old-core/11519/12 "2018-09-22T09:57:43Z")

</div>

Hi,

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.

---

<div class="post-metadata">

**Author:** ![ScruffR](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/scruffr/32/6952_2.png) [@ScruffR](https://community.particle.io/u/ScruffR)\
**Post date:** [September 22, 2018, 11:30am UTC](https://community.particle.io/t/new-firmware-for-old-core/11519/13 "2018-09-22T11:30:42Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![stevenM](https://avatars.discourse-cdn.com/v4/letter/s/d6d6ee/32.png) [@stevenM](https://community.particle.io/u/stevenM)\
**Post date:** [August 7, 2019, 3:01pm UTC](https://community.particle.io/t/new-firmware-for-old-core/11519/14 "2019-08-07T15:01:52Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![ScruffR](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/scruffr/32/6952_2.png) [@ScruffR](https://community.particle.io/u/ScruffR)\
**Post date:** [August 7, 2019, 3:20pm UTC](https://community.particle.io/t/new-firmware-for-old-core/11519/15 "2019-08-07T15:20:16Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![stevenM](https://avatars.discourse-cdn.com/v4/letter/s/d6d6ee/32.png) [@stevenM](https://community.particle.io/u/stevenM)\
**Post date:** [August 8, 2019, 6:52am UTC](https://community.particle.io/t/new-firmware-for-old-core/11519/16 "2019-08-08T06:52:17Z")

</div>

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