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
- 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.
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:
For convenience, apps in the Apps Catalog are grouped into categories based on their features: Sub-GHz, NFC, RFID, Games, Media, Tools, and others.
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.
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
.
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.
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!
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.
- 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%.
- 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.
- 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.
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
MIFARE, MIFARE Classic, and ICODE are registered trademarks of NXP B.V.
FeliCa is a trademark of Sony Corporation.