Firmware 1.0 Released

Meet the first major release of Flipper Zero firmware — version 1.0. In this release, we have completed work on many features that have been in development for 3 years and are now stable. In this post, we’ll show you what’s new in Firmware 1.0 and the challenges we faced during development.

What’s new in Firmware 1.0

— Mom, look! We can draw just like Apple®!
  • 3rd-party apps: We’ve introduced dynamic app loading support. Now you can install hundreds of community-developed apps from the Apps Catalog, and the number of apps continues to grow.
  • New NFC subsystem: Completely rewritten from scratch, resulting in a significant increase in card reading speed. New NFC card types support and a new plugin system for user card parsers.
  • JavaScript support: You can now develop apps for Flipper Zero using JavaScript.
  • General system improvements: Battery life reaches 1 month in standby. Bluetooth data transfer speed with Android devices increased by up to 2x. Firmware updates now upload via Bluetooth 40% faster.

Apps on Flipper Zero

Initially, all features in Flipper Zero were implemented as part of the firmware. Every new feature or fix required a full firmware update. It was a pain on both ends: we had to compile and make a new release, and users then had to install it. One more problem was the system flash memory limit, which we had reached a long time ago. At some point, we could no longer add new features to our Flipper Zero firmware.

Dynamic app loading subsystem

To continue adding new features, we developed something unusual for embedded hardware: dynamic application loading. Thanks to it, Flipper Zero is now able to run applications right from FAP files on the microSD card (FAP stands for Flipper Application Package, our special format of compiled application files). A new firmware component named app loader handles loading and launching FAPs. This way, we could finally continue adding new features and store them outside the firmware, saving space on system flash memory.

Developers loved this idea and have created hundreds of applications! However, these were scattered across different communities and forums, making it difficult for users to find them. That’s why we created the Apps Catalog, where apps made by the community are available in one place. We are especially proud that all apps in our catalog are open source, and we’re grateful to our community’s enthusiasts for developing and maintaining them. Learn how to submit your app to the Apps Catalog.

How to install Apps on Flipper Zero

You can install apps on your Flipper Zero from the Apps Catalog, which is available via Flipper Mobile App and Flipper Lab. Installing apps on Flipper Zero is now as easy as on your phone:

0:00
/0:21

[Video] Community apps can be installed on Flipper Zero from the Apps Catalog

For convenience, apps in the Apps Catalog are grouped into categories based on their features: Sub-GHz, NFC, RFID, Games, Media, Tools, and others.

JavaScript on Flipper Zero

We’ve added a scripting engine to the firmware, allowing you to run apps written in JavaScript, one of the most common programming languages. This also makes development much easier compared to using C/C++, as you don’t need to set up a development environment on your computer and learn the Flipper Zero firmware SDK.

Add JS files to Flipper Zero via qFlipper or Flipper Lab

To run a script on your Flipper Zero, add the JS file to the SD Card/apps/Scripts folder (via qFlipper or Flipper Lab) and run it from the Apps → Scripts menu. There is no need to compile JS scripts on a PC.

We included example scripts in the firmware for you to start learning JavaScript on Flipper Zero. These examples are located at SD Card/apps/Scripts. They will help you learn the language syntax and understand how to use JavaScript modules. For more information on the scripting engine’s capabilities and limitations, please refer to our documentation.

JavaScript support is based on the mJS scripting engine. Originally designed for microcontrollers, mJS utilizes system resources efficiently and operates relatively quickly. It requires less than 50k of flash space and 2k of RAM.

New NFC subsystem

NFC is one of the largest subsystems in Flipper Zero’s firmware and hardware. Previously, to work with NFC, we used the RFAL library by STMicroelectronics, the manufacturer of the NFC chip inside Flipper Zero. However, this library was poorly optimized for RTOS, consumed a lot of memory, and slowed down our NFC subsystem.

To address this, we’ve completely redesigned our NFC subsystem from scratch, significantly improving its speed and making it easier to support new NFC card protocols.

What’s new in the NFC subsystem

  • FreeRTOS friendly: The old RFAL library required polling to get events from the NFC subsystem. The new library uses an event-driven approach, which is efficient when using RTOS. This simplified the code and eliminated unnecessary delays in the NFC subsystem. See the code on GitHub.
  • Improved architecture: In the RFAL library, several protocols can be implemented within one huge file of thousands of lines, and a single protocol can be scattered throughout the library. This made it difficult to add and support NFC protocols. To address this issue, we restructured the library and strictly divided the protocols based on stack layers. See the protocols on GitHub.
  • Parsers are now dynamic: Initially, card data parsers were integrated into the NFC app and loaded into RAM along with it, which occasionally caused a lack of RAM. Now, parsers are FALs (Flipper App Library) that can be loaded one by one. Community members can add support for their card types by creating parsers by implementing a simple interface. See the code on GitHub.
  • New NFC card protocols: We added support for ICODE® SLIX and FeliCa™ Lite-S cards. Read more: docs.flipper.net/nfc/read

NFC speed up

By completely reworking the NFC library, we managed to speed up its performance in Flipper Zero. For example, the dictionary key matching function is now 2.7 times faster!

0:00
/0:18

[Video] The new NFC subsystem speeds up card reading

Editing NFC dumps in Flipper Mobile App

When a Flipper Zero reads NFC cards, it saves their data (dumps) to the microSD card. Previously, you had to use an external program to edit contents of the dumps. Now, dumps from MIFARE Classic® cards can be viewed and edited in Flipper Mobile App. You can edit data of sectors, keys, and access bits.

View and edit MIFARE Classic dumps right on your phone

General system improvements

  • The new low-power mode increased Flipper Zero’s battery life from 1 week to 1 month in standby. Check out this blog post for more info.
  • Faster Bluetooth connection with Android devices: We optimized the BLE (Bluetooth Low Energy) connection settings. Now users have an average of a 2x speed increase. However, results may vary between Android-based operating systems. We are also exploring ways to enhance the BLE connection speed for iOS devices.
  • Firmware update package uploads 40% faster: Previously, we were unable to properly compress update packages, but now the Flipper Zero updater supports the heatshrink compression algorithm. Now, the firmware update package is transferred to Flipper Zero in a compressed form, speeding up the update’s longest stage by 40%.

Sub-GHz improvements

  • 89 radio protocols are supported by the Sub-GHz app and can be decoded by Flipper Zero. Find the full list in Flipper Docs.
  • External Sub-GHz hardware module support: You now have the option to connect an external module with the CC1101 chip to use a more sensitive external antenna instead of the built-in one. In the Flipper Sub-GHz app, you can switch between the built-in and external radio modules.
  • Listen to analog walkie-talkie: Now you can use your Flipper Zero to listen to voice communications through analog walkie-talkies. The sound quality isn’t perfect, but if speaking loudly enough into the walkie-talkie, you can hear the voice through the Flipper Zero piezo speaker.
  • The new BinRAW file format allows you to store more signals and share them faster. BinRAW is a format for recording repetitive signals, and it is more compact than the RAW format. BinRAW contains only useful signal data without noise.

Infrared improvements

  • Universal IR remotes: We added new universal IR remotes to control TVs, ACs, audio systems, and projectors and made simple and intuitive UIs for them.
  • External Infrared hardware module support: The Flipper Infrared app now supports connecting an external Infrared module with more powerful LEDs to increase the range of the IR transmitter.

How to update firmware

To access all of the newest features, update firmware on your Flipper Zero. You can do so via Bluetooth using Flipper Mobile App or via USB using the qFlipper app on your PC. Download the apps: flipperzero.one/downloads

If you’re updating from a firmware version 0.63 or earlier, you’ll need to switch your Flipper Zero to DFU mode and then update the device via qFlipper as described in Flipper Docs.

MIFARE, MIFARE Classic, and ICODE are registered trademarks of NXP B.V.
FeliCa is a trademark of Sony Corporation.