Firmware updates
The CrossPad holds two firmwares at once and can keep more on its SD card. An update is installed next to the firmware that runs, checked for a signature first, and tried before the CrossPad keeps it. The steps for players are in Updates; this page explains what happens underneath.
Two slots
Section titled “Two slots”- The CrossPad has two firmware slots, A and B, of 3.5 MB each. A firmware is always installed into the slot that is not running, so the running firmware is never touched.
- Switching to the other slot is a restart. The first start of a new firmware is a trial: once it has run for 10 s, it confirms itself and stays.
- A firmware that does not confirm itself is not kept. At the next start the CrossPad goes back to the other slot, and the Library shows the new one as rolled back, with Try this slot again and Reinstall. A firmware that stops responding during its trial is restarted by a watchdog within 30 s, so the way back never needs you.
- Every way of updating ends in the same trial: over WiFi, from the browser, from the SD card and over USB.
Packages on the SD card
Section titled “Packages on the SD card”The Library is the folder crosspad/firmware/ on the card. Each firmware package is a folder:
| File | What it is |
|---|---|
CrossPad.bin | the firmware image (required) |
manifest.json | name, edition, version, board revision, and the SHA-256 of every file |
assets.bin | the assets partition built with this firmware (icons, fonts, the pad controller firmware) |
settings.json | this firmware’s own settings, saved at the last switch |
icon.bin | the edition’s icon in the Library |
.pinned | keeps the package: the card cleanup never removes it |
A .bin file copied straight into the folder is moved into a package folder of its own the next time the Library
looks. Every image also carries a short description of itself (board revision, edition, the pad controller protocol
it needs, its assets), and the CrossPad trusts that over the manifest. A package built for another board revision is
not installed.
Signed updates
Section titled “Signed updates”- crosspad.app lists the published firmware for each board revision. Every package’s manifest is signed, and the manifest holds the SHA-256 of every file.
- The CrossPad checks the signature against keys built into its firmware, then checks every file it downloads. A package that does not pass is not installed, and nothing is written for it.
- A download that stops resumes where it stopped.
- Each firmware edition has two channels, Stable and Beta; a version with a pre-release part (such as
-rc1) is Beta. The Beta channel sees Stable releases too.
When it checks
Section titled “When it checks”- At startup, when Check at startup is on, once the MODE map shows.
- Once a day: when the last check is 24 hours old and the MODE map has been on screen for 2 minutes with no pad pressed.
- These checks run in the background. They show a result only when they find an update, and they stop as soon as you press a pad or open an app. After an update they wait for the new firmware to confirm itself first.
- Downloading and installing happen only when you ask.
Space on the card
Section titled “Space on the card”The Library may use up to 512 MB, and the CrossPad keeps at least 10 % of the card free. To make room it removes the oldest versions first. It never removes the packages in slots A and B, a pinned package or a download in progress.
Settings across firmwares
Section titled “Settings across firmwares”- Each firmware keeps its own settings. At a switch, the running firmware’s settings are saved into its package’s
settings.json, and the arriving firmware reads its own back. - Some settings belong to the CrossPad, not to a firmware, and stay the same in both slots: the pad controller’s settings (power, charging and pad calibration), the screen brightness, USB audio, Ask before USB serial, Bluetooth MIDI on or off, and the audio sample rate. The saved WiFi networks are shared too.
Assets and the pad controller
Section titled “Assets and the pad controller”- Both slots share one assets partition. At startup the CrossPad compares it with the running firmware, and when they differ it rewrites the partition from the firmware’s package on the card, in about 4 s. With that package missing from the card, it leaves the partition as it is and asks you to insert the card that holds the package.
- A switch to an older firmware never takes the pad controller back to an older version. See Pad controller updates.