WillyJL 9e3a9079ee Merge pull request #270 from Next-Flip/js-backport-of-backport
* Xero initial commit

* Xero initial commit

* Update README.md with feature goals

* Add MFKey to firmware

* Update ReadMe.md

* remove serial check ui in gangqi [ci skip]

* Furi: A Lot of Fixes (#3942)

- BT Service: cleanup code
- Dialog: correct release order in file browser
- Rpc: rollback to pre #3881 state
- Kernel: fix inverted behavior in furi_kernel_is_running
- Log: properly take mutex when kernel is not running
- Thread: rework tread control block scrubbing procedure, ensure that we don't do stupid things in idle task, add new priority for init task
- Timer: add control queue flush method, force flush on stop
- Furi: system init task now performs thread scrubbing
- BleGlue: add some extra checks
- FreeRTOSConfig: fix bunch of issues that were preventing configuration from being properly applied and cleanup

* Wi-Fi Devboard documentation rework (#3944)

* New step-by-step documentation structure for Wi-Fi Devboard
* Added a description of working under Windows
* Added a description of switching Devboard operation mode (Black Magic, DAPLink)
* The images for the documentation are uploaded to the CDN
* The text in the sidebar, near the dolphin logo, changed from blue to black/white

Co-authored-by: knrn64 <25254561+knrn64@users.noreply.github.com>
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>

* Fixes Mouse Clicker Should have a "0" value setting for "as fast as possible" #3876 (#3894)

* fixes mouse clicking rate
* Hid: limit max clicks to 100/s, rewrite code to make it more robust

Co-authored-by: あく <alleteam@gmail.com>

* [FL-3909] CLI improvements, part I (#3928)

* fix: cli top blinking
* feat: clear prompt on down key
* feat: proper-er ansi escape sequence handling
* ci: fix compact build error
* Make PVS happy
* style: remove magic numbers
* style: review suggestions

Co-authored-by: あく <alleteam@gmail.com>

* Rename #2

* Api adjustements

* NFC: iso14443_4a improvements. Canvas: extended icon draw. (#3918)

* Now 4a listener invokes upper level callback on Halt and FieldOff
* Added new method for drawing mirrored XBM bitmaps
* iso14443_4a poller logic enhanced
* Function renamed accroding to review suggestions
* Rename #2
* Api adjustements
* Correct API bump

Co-authored-by: あく <alleteam@gmail.com>

* heap: increased size (#3924)

* reduced reserved memory size for system stack; added temporary markup to monitor usage
* fbt: relink elf file on linker script change; removed debug memory fill
* Make PVS Happy
* Make doxygen happy

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>

* [FL-3893] JS modules (#3841)

* feat: backport js_gpio from unleashed
* feat: backport js_keyboard, TextInputModel::minimum_length from unleashed
* fix: api version inconsistency
* style: js_gpio
* build: fix submodule ._ .
* refactor: js_gpio
* docs: type declarations for gpio
* feat: gpio interrupts
* fix: js_gpio freeing, resetting and minor stylistic changes
* style: js_gpio
* style: mlib array, fixme's
* feat: js_gpio adc
* feat: js_event_loop
* docs: js_event_loop
* feat: js_event_loop subscription cancellation
* feat: js_event_loop + js_gpio integration
* fix: js_event_loop memory leak
* feat: stop event loop on back button
* test: js: basic, math, event_loop
* feat: js_event_loop queue
* feat: js linkage to previously loaded plugins
* build: fix ci errors
* feat: js module ordered teardown
* feat: js_gui_defer_free
* feat: basic hourglass view
* style: JS ASS (Argument Schema for Scripts)
* fix: js_event_loop mem leaks and lifetime problems
* fix: crashing test and pvs false positives
* feat: mjs custom obj destructors, gui submenu view
* refactor: yank js_gui_defer_free (yuck)
* refactor: maybe_unsubscribe
* empty_screen, docs, typing fix-ups
* docs: navigation event & demo
* feat: submenu setHeader
* feat: text_input
* feat: text_box
* docs: text_box availability
* ci: silence irrelevant pvs low priority warning
* style: use furistring
* style: _get_at -> _safe_get
* fix: built-in module name assignment
* feat: js_dialog; refactor, optimize: js_gui
* docs: js_gui
* ci: silence pvs warning: Memory allocation is infallible
* style: fix storage spelling
* feat: foreign pointer signature checks
* feat: js_storage
* docs: js_storage
* fix: my unit test was breaking other tests ;_;
* ci: fix ci?
* Make doxygen happy
* docs: flipper, math, notification, global
* style: review suggestions
* style: review fixups
* fix: badusb demo script
* docs: badusb
* ci: add nofl
* ci: make linter happy
* Bump api version

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>

* NFC: H World Hotel Chain Room Key Parser (#3946)

* quick and easy implementation
* delete debug artifacts
* log level correction (warning -> info)

* Merge remote-tracking branch 'OFW/dev' into dev

* after merge fix p1

* merge p2

* merge p3

* Small JS fixes (#3950)

* [FL-3914] BackUSB (#3951)

* Revert "[FL-3896] Split BadUSB into BadUSB and BadBLE (#3931)"
  This reverts commit 0eaad8bf64.
* Better USB-BLE switch UX
* Format sources
* Format images

Co-authored-by: あく <alleteam@gmail.com>

* New Static Keys for Mifare Classic Dictionary (#3947)

Co-authored-by: あく <alleteam@gmail.com>

* [BadUSB] Improve ChromeOS and GNOME demo scripts (#3948)

* [BadUSB] Gnome Demo: Support most terminals and force sh shell when not using Bash as default
* [BadUSB] ChromeOS Demo: Minor improvements, such as exit overview, select omnibox and add a page title

Signed-off-by: Kowalski Dragon (kowalski7cc) <5065094+kowalski7cc@users.noreply.github.com>
Co-authored-by: Kowalski Dragon (kowalski7cc) <5065094+kowalski7cc@users.noreply.github.com>
Co-authored-by: あく <alleteam@gmail.com>

* Remove out of date screenshot

* implement byte input, add missing args in text input

TODO: add missing filebrowser dialog

* move examples

* badusb js paritally fix

* add new nfc key [ci skip]

* Read Ultralight block by block

* JS: Merge fixes

* JS: camelCase changes

* Update changelog, JS changes still missing

* JS: Docs and types for additions on top of OFW modules

* JS: Port byte input example (WIP, has some bugs in C code, JS is fine)

* fix zero issues in princeton

* merge missing js backports of backports by Willy-JL

p1

* JS: Update storage example

* JS: Disclaimer about documentation

* JS: Types for chr(), .indexOf(), .slice()

* JS: More fixes

* merge examples fixes [ci skip]

by Willy-JL
p2

* more js stuff

https://github.com/Next-Flip/Momentum-Firmware/commits/js-backport-of-backport/

* JS: Fix load.js example path

* JS: Byte/Text Input fixes, gui example improvements

* JS: Expose currentView in gui.viewDispatcher

* JS: Update interactive.js REPL example

* JS: Add byte input example image for docs

* JS: Fix toString() with negative numbers

* Small fixes in the wifi devboard docs (#3953)

* Small fixes in the wifi devboard docs

- Several broken numbered lists fixed
- Added a skipped link to the uFBT
- The Devboard naming fixed

* JS: Silence plugin functions warning

* merge js upds 1

* merge js 2

* [FL-3916] Require PIN on boot (#3952)

Co-authored-by: hedger <hedger@users.noreply.github.com>

* upd changelog

* NFC Parser for Tianjin Railway Transit (#3954)

* fix cli breaking web flipper lab, remove color tags

* upd changelog

* JS: Backport virtualMount storage API

* JS: Backport file picker as new module

* Workflows: Upload more build artifacts

* Fixed bug with UL reading

* upd changelog

* Add warning about stealth mode in vibro CLI (#3957)

* JS: Add way to check if view has prop

* JS: Add numpad keys to badusb typedefs

* Revert "[FL-3909] CLI improvements, part I (#3928)" (#3955)

This reverts commit 0f831412fa.

Co-authored-by: あく <alleteam@gmail.com>

* JS: Improve REPL script

* JS: Custom scope param in load() typedef

* Update API versions for OFW RC

* JS: Sync small differences from OFW PR

* Fix multiple crashes and state machine logic

* Update changelog (not final)

* JS: C define to move JS runner to flash (still external for now)

* JS: First batch of OFW PR review changes

* Update apps

- Seader: Show error for timeout, fix wrong LRC logging (by bettse)

* Fix inconsistent assignment of known key and known key type/sector

* Revert api bump

* Backdoor known key logic still needs the current key

* JS: Second batch of OFW PR changes

* IR: Basic script to remove dupes

had this lying around from last week PRs and could come useful again,
code is meh but works

* Fix changelog

---------

Signed-off-by: Kowalski Dragon (kowalski7cc) <5065094+kowalski7cc@users.noreply.github.com>
Co-authored-by: noproto <noproto@zeroday.engineering>
Co-authored-by: Nathan N <noproto@users.noreply.github.com>
Co-authored-by: MX <10697207+xMasterX@users.noreply.github.com>
Co-authored-by: あく <alleteam@gmail.com>
Co-authored-by: Ruslan Nadyrshin <110516632+rnadyrshin@users.noreply.github.com>
Co-authored-by: knrn64 <25254561+knrn64@users.noreply.github.com>
Co-authored-by: SUMUKH <130692934+sumukhj1219@users.noreply.github.com>
Co-authored-by: porta <portasynthinca3@gmail.com>
Co-authored-by: RebornedBrain <RebornedBrain@gmail.com>
Co-authored-by: RebornedBrain <138568282+RebornedBrain@users.noreply.github.com>
Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: Zinong Li <131403964+zinongli@users.noreply.github.com>
Co-authored-by: Astra <93453568+Astrrra@users.noreply.github.com>
Co-authored-by: Kowalski Dragon <kowalski7cc@users.noreply.github.com>
Co-authored-by: Kowalski Dragon (kowalski7cc) <5065094+kowalski7cc@users.noreply.github.com>
Co-authored-by: Mykhailo Shevchuk <myte@ukr.net>
Co-authored-by: Ivan Barsukov <ivan.barsukow@gmail.com>
2024-10-19 01:55:03 +01:00
2024-10-19 01:17:22 +01:00
2024-10-19 01:43:45 +01:00
2024-07-05 17:44:55 +02:00
2024-07-02 13:09:50 +01:00
2024-08-04 10:54:02 +01:00
2024-07-30 11:30:25 +09:00
2024-10-19 01:43:45 +01:00
2024-06-17 01:57:34 +02:00
2021-08-13 21:19:42 +03:00
2024-08-02 22:12:03 +02:00

Momentum Firmware

for Flipper Zero

Install | Features | Discord | Donate

This custom firmware is based on the Official Firmware, and includes most of the awesome features from Unleashed. It is a direct continuation of the Xtreme firmware, built by the same (and only) developers who made that project special.



Modus Operandi:

The goal of this firmware is to constantly push the bounds of what is possible with Flipper Zero, driving the innovation of many new groundbreaking features, while maintaining the easiest and most customizable user experience of any firmware. Fixing bugs promptly and ensuring a stable and compatible system is also of our utmost importance.

  • Feature-rich: We include all third-party features and apps as long as they fulfill a useful purpose and they work correctly, aswell as implement ourselves many new exciting functionalities.

  • Stable: We ensure the most stable experience possible by having an actual understanding of what's going on, and proactively making all tweaks and additions backwards-, and inter-, compatible.

  • Customizable: You can tweak just about everything you see: add/remove apps from the menu, change the animations, replace icon graphics, change your Flipper's name, change how the main menu looks, setup different keybinds like never before, and so much more. All on-device, with no complicated configuration.



Note that mentioned below are only a few of our staple additions to the firmware. For a full list check down here.



Momentum Settings:

We offer a powerful and easy-to-use application tailor-made for our firmware, that lets you configure everything you could dream of, and more:

  • Interface: Tweak every part of your Flipper, from the desktop animations, to the main menu, lockscreen behavior, file browser, etc.

  • Protocols: Configure SubGhz settings, add/remove custom frequencies, and setup which GPIO pins are used by different external modules.

  • Misc: Everything else that doesn't fit the previous categories. Change your Flipper's name, XP level, screen options, and configure the RGB backlight.




Animations / Asset Packs:

We created our own improved Animation / Asset system that lets you create and cycle through your own Asset Packs with only a few button presses, allowing you to easily load custom Animations, Icons and Fonts like never before. Think of it as a Theme system that's never been easier.

You can easily create your own pack, or find some community-made ones on our website or on Discord. Check here for a tutorial on creating your own. Essentially, each Asset Pack can configure its own Anims, Icons & Fonts.

Once you have some asset packs, upload them to your Flipper in SD/asset_packs (if you did this right you should see SD/asset_packs/PackName/Anims and/or SD/asset_packs/PackName/Icons). Alternatively, install directly using the website.

After installing the packs to Flipper, hit the Arrow Up button on the main menu and go to Momentum Settings > Interface > Graphics. Here choose which asset pack you want and tweak the other settings how you prefer, then exit the app to reboot and enjoy your fully customized Flipper!


Bad Keyboard:

BadUSB is a great app, but it lacks Bluetooth connectivity. Bad-KB allows you to toggle between USB and Bluetooth mode for your attacks.

In Bluetooth mode it allows you to spoof the display name and MAC address of the device to whatever you want. Showing up as a portable speaker or a wireless keyboard is easily doable, allowing you to get the attention of your target without needing a cable at hand.

In USB mode it also enables additional functionality to spoof the manufacturer and product names, as well as vendor and product IDs (VID/PID).



List of changes:

There are too many to name them all, this is a non-comprehensive list of the most notable from an end-user perspective. For a more detailed list, you can read through the changelogs and commits/code. Also, you can find a feature comparison with other firmwares on our website.

Note that this repo is always updated with the great work from our friends at Unleashed and the latest changes from OFW. Below are mentioned only our changes that we can actually be credited for, so make sure to check their fantastic additions aswell. And a huge thank you to both teams!

[Added]

- Momentum App (Easy configuration of features and behavior of the firmware)
- Asset Packs (Unparalleled theming and customization)
- More UI customization, redesigns and optimizations
- Bad-Keyboard App
- BLE Spam App
- FindMy Flipper App
- NFC Maker App
- Wardriver App
- File Search across SD Card
- Additional NFC parsers and protocols
- Subdriving (saving GPS coordinates for Sub-GHz)
- Easy spoofing (Name, MAC address, Serial number)
- Video Game Module color configuration right from Flipper
- Enhanced RGB Backlight modes (Full customization & Rainbow mode)
- File management on device (Cut, Copy, Paste, Show, New Dir, etc.)
- Remember Infrared GPIO settings and add IR Blaster support in apps
- Advanced Security measures (Lock on Boot, reset on false pins, etc.)
- Disk Image management (Mount and view image contents, open in Mass Storage)
- Extended JavaScript API (Support for UsbDisk/Mass Storage, File operations)
[Updated]

- Enhanced WiFi support for easiest setup ever
- Extended keyboard with cursor movement and symbols
- File Browser with Sorting, More supported File Types
- Advanced and optimized Level System (Up to 30 levels)
- Desktop Keybind system for full key and press/hold remapping
- Storage backend with instant rename and virtual mounting for disk images
- Weather Station, POCSAG, TPMS protocols and more integrated into Sub-GHz
- Expanded Sub-GHz App (Duplicate detection & Ignore, Autosave, History improvements)
- Improved Error Messages (Showing source file paths)
[Removed]

- Unused Dummy Mode
- Broken or Superfluous apps


Install:


There are 4 methods to install Momentum, we recommend you use the Web Updater, but choose whichever one you prefer:


Web Updater (Chrome)
  • Make sure qFlipper is closed
  • Open the Web Updater
  • Click Connect and select your Flipper from the list
  • Click Flash and wait for the update to complete
Flipper Lab/App (chrome/mobile)
  • (Desktop) Make sure qFlipper is closed
  • (Mobile) Make sure you have the Flipper Mobile App installed and paired
  • Open the latest release page
  • Click the ☁️ Flipper Lab/App (chrome/mobile) link
  • (Desktop) Click Connect and select your Flipper from the list
  • (Desktop) Click Install and wait for the update to complete
  • (Mobile) Accept the prompt to open the link in the Flipper Mobile App
  • (Mobile) Confirm to proceed with the install and wait for the update to complete
qFlipper Package (.tgz)
  • Download the qFlipper package (.tgz) from the latest release page
  • Make sure the WebUpdater and lab.flipper.net are closed
  • Open qFlipper and connect your Flipper
  • Click Install from file
  • Select the .tgz you downloaded and wait for the update to complete
Zipped Archive (.zip)
  • Download the zipped archive (.zip) from the latest release page
  • Extract the archive. This is now your new Firmware folder
  • Open qFlipper, head to SD/update and simply move the firmware folder there
  • On the Flipper, hit the Arrow Down button, this will get you to the file menu. In there simply search for your updates folder
  • Inside that folder, select the Firmware you just moved onto it, and run the file thats simply called Update



Build it yourself:

To download the repository:
$ git clone --recursive --jobs 8 https://github.com/Next-Flip/Momentum-Firmware.git
$ cd Momentum-Firmware/

To flash directly to the Flipper (Needs to be connected via USB, qFlipper closed)
$ ./fbt flash_usb_full

To compile a TGZ package
$ ./fbt updater_package

To build and launch a single app:
$ ./fbt launch APPSRC=your_appid

Stargazers over time

Stargazers over time

❤️ Support

If you enjoy the firmware please spread the word! And if you really love it, maybe consider donating to the team? :D

Ko-fi: One-off or Recurring, No signup required

PayPal: One-off, Signup required

BTC: 1EnCi1HF8Jw6m2dWSUwHLbCRbVBCQSyDKm

Thank you <3

Languages
C 98.5%
Python 1.2%
JavaScript 0.1%