Skip to content

Instantly share code, notes, and snippets.


Keybase proof

I hereby claim:

  • I am m-mcgowan on github.
  • I am mdma ( on keybase.
  • I have a public key whose fingerprint is 716B CFD0 EC60 85EB D2C6 D047 53BF 5C5A 27D8 B54A

To claim this, I am signing this object:


Do system firmware updates replace application firmware?

No. The system updates only change the system firmware. The application is not touched at all. This means the system firmware is upgraded without requiring the application to be reflashed.

Does Application Firmware Need to be updated as well? Is it ok to run newer system firmware with older application firmware?


m-mcgowan /
Created Jul 12, 2015
finding the breaking commit for WiFi no connection bug

Hunting the Wi-Fi no-connect on reset Bug

If you're reading this, then you are one of the lucky few who have been able to reproduce the issue where the device appears to forget wifi credentials on reset. (In practice the credentials are fine, but for some reason the device does not connect after reset.)

It would be a great help to know which code change causes the bug.

These are the steps I would use to try to find the commit where the bug was introduced:

  • check out 0.4.0 and perform a clean build and DFU to the device
View module

The binaries consumed in the Particle ecosystem should include "module info" descriptors that appear at fixed locations in the binary. There are 2 module info structures:

  • start info: appears at the start of the binary, this defines the platform, version, module type, module dependencies
  • end info: appears at the end of the binary. Defines product ID and version, as set in user code and provides storage for the SHA256 and CRC32 hashes that are added after the binary is built.

Compiling Module Info

The module info structures are defined in dynalib/inc/module_info.h. The structures are instantiated in dynalib/inc/ which defines the default values for all platforms.

The main project compiles the module info structure instances into a module_info.o object file - main/src/module_info.c simply includes from dynalib so the instance declarations become static data.

m-mcgowan / closed issues.txt
Last active Aug 29, 2015
closed issues Sprint 32
View closed issues.txt
68 - TCP Client fixes on photon
110 - trust TCP to make OTA faster
129 - Factory reset without clearing wifi credentials.
146 - Compiler getting confused by String
162 - USB HID, Mouse, Keyboard support
217 - RAM enhancement.
220 - Printing empty String object should be a no-op
235, 316 - contribute link
250 - YModem serial upgrade
253 - Support for WiFi channels >11

Keybase proof

I hereby claim:

  • I am m-mcgowan on github.
  • I am mdma ( on keybase.
  • I have a public key whose fingerprint is 4A3E CCF8 94E9 E2FF 260E 6F7B F401 D981 DA11 523A

To claim this, I am signing this object:

m-mcgowan / gist:3195ac229d672593e0eb
Created Aug 27, 2014
Spark UDP Write test harness
View gist:3195ac229d672593e0eb
#include "application.h"
UDP Udp;
unsigned char TxMsg[12] = { 1, 254, 1, 254, 1, 254, 43, 212, 71, 184, 3, 252 };
unsigned char recbuf[12];
IPAddress addr(192,168,1,199);
You can’t perform that action at this time.