This thread is for comments/questions about the firmware updates posted in the Particle Device OS Update Thread.
Thank you for the update!
This might be a silly question, but I just want to confirm. On the Photon, if I flash 4.4.rcX via the CLI using this command:
particle flash deviceid system-part1-photon.bin
particle flash deviceid system-part2-photon.bin
Then if I build my app via Particle Build (Web IDE), then the fixes in 4.4 still apply correct? Or does the WebIDE revert back to 4.1 until the WebIDE is updated to 4.4?
Hi @Carsten4207! That’s a great question!
The vast majority of the fixes are in the system firmware so updating your photon with the new system binaries will bring in those fixes. Examples of these are I2C stability, TCPClient stability.
There are a handful of fixes that are in the application firmware part and these require rolling out 0.4.4 to Particle Build. (Examples of these are floating point “%f” support in
WiFi.selectAntenna() and Wire.setClock(CLOCK_100KHZ`) All of these are compile-time issues (code using those features will presently not compile, but will compile once 0.4.4 is deployed to Build.)
The WebIDE will not revert your system firmware, so you’ll still have all the fixes in the system firmware even though your application code is compiled against 0.4.1. When 0.4.4 is released and you build an application against 0.4.4, the Cloud will upgrade your system firmware automatically over-the-air to 0.4.4 if it’s at an older version.
Wow! I’m not using i2c or tcp but nonetheless finding the new firmware vastly more robust on photon with publish/subscribe and waking from sleep to reconnect and publish (semi_automatic). Also now recovers cloud connection nicely after being cut off from wifi (isolated in a microwave for awhile). Am I just seeing things that aren’t there or were those aspects also upgraded? Nice work!
Does this mean that in the future the photons get automatic updates when we flash an application to it using the WebIDE? So no need to do the update using CLI “particle flash deviceid system-part1-photon.bin” and “particle flash deviceid system-part2-photon.bin” anymore? And will this also be available for the offline Particle dev?
I have a photon that runs fine for hours and then starts to blink white so I’m looking forward to try the new firmware!
Will this update fix the issues with using Spark.function, Spark.subscribe and attachInterrupt when used in a class? Or is that a future update?
Yup, that’s the idea
That IDE isn’t really ‘offline’. It still compiles your apps in the cloud, and OTA flashing is also done over the cloud. That said, any OTA update through the cloud should initiate this upgrade procedure if I’m not mistaken.
That sounds good
Was the fix to the micros() function to use the full 32 bits before rolling over incorporated into 4.4? It is here: https://github.com/spark/firmware/pull/493 It looks to me like the pull was accepted into the develop branch, but I’m not sure if that is the branch that the release is made from, so I’m asking.
If it was accepted into the release, there is part of the documentation that describes the pre-fix behavior. Since the rollout of the new firmware will be gradual, there will be lots of people still running old firmware. Will the documentation then have to describe both behaviors? Will there be different versions of the documentation?
I’ve made a PR to the docs that describes both pre and post 0.4.4 behaior. The release candidate rc.3 will be cut from develop later today.
Do the TCPClient fixes address some of the issues brought up in the long term connection stability thread? Or do those changes just affect direct usage of TCPClient?
Hi there! Just wanted to make sure I’m doing this update correctly for compiling locally on the photon – will the firmware updates work if I just:
- “git pull” from the most recent “develop” branch of spark/firmware
- “cd” to “firmware/modules”
- “make PLATFORM=photon clean all PARTICLE_DEVELOP=1 program-dfu”
Just wondering since I did the above and the photon I’m testing with still re-enters listening mode if it didn’t connect to wifi after given credentials
I just proposed a change to Particle for this, but they will need to review it. It will probably be available in the subsequent firmware release 0.4.5, not 0.4.4 due next week.
Wow, what a good contribution. Thanks for proposing the change for me.
You’re welcome @nrobinson2000! I want this for my own project too
How about 0.4.0 for the Particle Core??? I think there are more Cores in the world than Photons at the current time…
We are working so hard on this! Would be very helpful if anyone that can build locally with a Core tests the develop branch on their Core and reports any issues.
@mdma: 'Tis a little harder when Cores aren’t being sold anymore . Unfortunately, as I’ve mentioned elsewhere, I really can’t use the most recent DEVELOP, as the firmware is about 10K more in size…and I’m at redline with my software! I’d love to help with development testing, though.
At the moment, I have two issues with the (month-old) LATEST build. (Not sure if these issues have been fixed—I can’t use the most recent build.)
WiFi.ping()doesn’t work at all. But if I use the Particle Dev IDE,
WiFi.ping()works perfectly on exactly the same Core. I’m stymied by this one, as the firmware code wasn’t changed.
System.sleep(A5, RISING)doesn’t work either. It puts the system into sleep alright, but with the pin held at 0v (1.8K resistor), it immediately wakes right back up again. FWIW, I’m using manual system mode.
TCPServer.stop()seems that it might be working. Not 100% positive yet, though.
Thanks for these notes @WebDust21. We’ll certainly test these issues and endeavour to bring a fix!
@mdma: I spent a couple of hours hacking the latest DEVELOP into my build. I was able to merge EVERYTHING except for “module.mk” and “module-defaults.mk”, with minimal code size increase. Now I am technically running the most recent DEVELOP, and should be able to make up-to-date error reports on this thread. (I’m pretty much through with GitHub by now.)
Here’s my long-winded hack post…