From 4ed19b518bd5d70fb1c2aeeaae9e0b080a3a148e Mon Sep 17 00:00:00 2001 From: DerSkythe Date: Wed, 24 Jul 2024 18:39:47 +0400 Subject: [PATCH] fix: remove not printable symbols and update FAQ and BadUSB documentation links for clarity This commit improves the documentation by converting raw URLs into descriptive text links in the FAQ and BadUSB documentation. This enhances readability and navigation for users looking for specific information. Additionally, minor formatting adjustments were made for better consistency and clarity. --- documentation/AppManifests.md | 31 +-- documentation/BarcodeGenerator.md | 15 +- documentation/FAQ.md | 238 ++++++++++-------- documentation/FuriHalBus.md | 135 +++++----- documentation/HowToBuild.md | 19 +- .../Firmware update on Developer Board.md | 51 ++-- .../Get started with the Dev Board.md | 94 +++---- .../Reading logs via the Dev Board.md | 76 +++--- documentation/fbt.md | 2 +- .../file_formats/BadUsbScriptFormat.md | 237 +++++++++-------- 10 files changed, 464 insertions(+), 434 deletions(-) diff --git a/documentation/AppManifests.md b/documentation/AppManifests.md index 98a38ffd8..493c9253b 100644 --- a/documentation/AppManifests.md +++ b/documentation/AppManifests.md @@ -16,18 +16,18 @@ Only two parameters are mandatory: **appid** and **apptype**. Others are optiona - **apptype**: member of FlipperAppType.\* enumeration. Valid values are: -| Enum member | Firmware component type | -| ----------- | ------------------------------------------------------------------------------------------- | -| SERVICE | System service, created at early startup | -| SYSTEM | Application is not being shown in any menus. It can be started by other apps or from CLI | -| APP | Regular application for the main menu | -| PLUGIN | Application to be built as a part of the firmware and to be placed in the Plugins menu | -| DEBUG | Application only visible in Debug menu with debug mode enabled | -| ARCHIVE | One and only Archive app | -| SETTINGS | Application to be placed in the system settings menu | -| STARTUP | Callback function to run at system startup. Does not define a separate app | -| EXTERNAL | Application to be built as `.fap` plugin | -| METAPACKAGE | Does not define any code to be run, used for declaring dependencies and application bundles | +| Enum member | Firmware component type | +|:----------------|--------------------------------------------------------------------------------------------------| +| SERVICE | System service, created at early startup | +| SYSTEM | Application is not being shown in any menus. It can be started by other apps or from CLI | +| APP | Regular application for the main menu | +| PLUGIN | Application to be built as a part of the firmware and to be placed in the Plugins menu | +| DEBUG | Application only visible in Debug menu with debug mode enabled | +| ARCHIVE | One and only Archive app | +| SETTINGS | Application to be placed in the system settings menu | +| STARTUP | Callback function to run at system startup. Does not define a separate app | +| EXTERNAL | Application to be built as `.fap` plugin | +| METAPACKAGE | Does not define any code to be run, used for declaring dependencies and application bundles | - **name**: name displayed in menus. - **entry_point**: C function to be used as the application's entry point. Note that C++ function names are mangled, so you need to wrap them in `extern "C"` to use them as entry points. @@ -43,7 +43,7 @@ Only two parameters are mandatory: **appid** and **apptype**. Others are optiona - **targets**: list of strings and target names with which this application is compatible. If not specified, the application is built for all targets. The default value is `["all"]`. - **resources**: name of a folder within the application's source folder to be used for packacking SD card resources for this application. They will only be used if application is included in build configuration. The default value is `""`, meaning no resources are packaged. -#### Parameters for external applications +### Parameters for external applications The following parameters are used only for [FAPs](./AppsOnSDCard.md): @@ -59,7 +59,10 @@ The following parameters are used only for [FAPs](./AppsOnSDCard.md): - **fap_extbuild**: provides support for parts of application sources to be built by external tools. Contains a list of `ExtFile(path="file name", command="shell command")` definitions. `fbt` will run the specified command for each file in the list. - **fal_embedded**: boolean, default `False`. Applies only to PLUGIN type. If `True`, the plugin will be embedded into host application's .fap file as a resource and extracted to `apps_assets/APPID` folder on its start. This allows plugins to be distributed as a part of the host application. -Note that commands are executed at the firmware root folder, and all intermediate files must be placed in an application's temporary build folder. For that, you can use pattern expansion by `fbt`: `${FAP_WORK_DIR}` will be replaced with the path to the application's temporary build folder, and `${FAP_SRC_DIR}` will be replaced with the path to the application's source folder. You can also use other variables defined internally by `fbt`. +> [!NOTE] +> These commands are executed at the firmware root folder, and all intermediate files must be placed in an application's temporary build folder. +> For that, you can use pattern expansion by `fbt`: `${FAP_WORK_DIR}` will be replaced with the path to the application's temporary build folder, +> and `${FAP_SRC_DIR}` will be replaced with the path to the application's source folder. You can also use other variables defined internally by `fbt`. Example for building an app from Rust sources: diff --git a/documentation/BarcodeGenerator.md b/documentation/BarcodeGenerator.md index f2b5b2213..0f429fda1 100644 --- a/documentation/BarcodeGenerator.md +++ b/documentation/BarcodeGenerator.md @@ -1,15 +1,16 @@ # This is a UPC-A Barcode Generator for the Flipper Zero hardware. -## Author: [McAzzaMan](https://github.com/McAzzaMan/flipperzero-firmware/tree/UPC-A_Barcode_Generator/applications/barcode_generator) +> Author: [McAzzaMan](https://github.com/McAzzaMan/flipperzero-firmware/tree/UPC-A_Barcode_Generator/applications/barcode_generator) - + It will eventually be expanded into other barcode types. It currently only generates UPC-A type barcodes. - + - -Controls-
-Hitting the centre button on the Flipper toggles edit mode. -When in edit mode, left and right will change the digit to be changed, and up and down will adjust the digit value. +## Controls - +Hitting the `centre` button on the Flipper toggles edit mode. +When in edit mode, `Left` and `Right` will change the digit to be changed, and up and down will adjust the digit value. + + diff --git a/documentation/FAQ.md b/documentation/FAQ.md index 8f912c517..96b11aca5 100644 --- a/documentation/FAQ.md +++ b/documentation/FAQ.md @@ -1,41 +1,47 @@ # FAQ ## I bought Flipper Zero and I don't know what I can do with it, pls help -- Start with reading official main page: https://flipperzero.one/ -- Then check out official docs where you can find answers to most questions: https://docs.flipper.net/ + +- Start with reading [official main page](https://flipperzero.one/) +- Then check out official docs where you can find answers to [most questions](https://docs.flipper.net/) ## How do I install Unleashed firmware? -https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToInstall.md -### What version I should install? What do letters `e`, `r`, `c`... mean? -Follow this link for details:
-https://github.com/DarkFlippers/unleashed-firmware/blob/dev/CHANGELOG.md#recommended-update-option---web-updater +See [this](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToInstall.md) -**INSTALLED UNLEASHED AND NOW BACKLIGHT DOESNT WORK?**
-You’ve installed a version made for custom RGB modded flippers. The version ending in `“r”` is specifically for “RGB” modded flippers.
-Please do not use that version if your flipper isn’t modded! +## What version I should install? What do letters `e`, `r`, `c`... mean? + +Follow this link for [details](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/CHANGELOG.md#recommended-update-option---web-updater). + +## INSTALLED UNLEASHED AND NOW BACKLIGHT DOESNT WORK? + +You’ve installed a version made for custom RGB modded flippers. The version ending in `“r”` is specifically for “RGB” modded flippers.
+ +Please, do not use that version if your flipper isn’t modded! ## What apps (plugins) are included with Unleashed FW? -See default pack and extra pack (for `e` build) list here:
-https://github.com/xMasterX/all-the-plugins/tree/dev + +See default pack and extra pack (for `e` build) list [here](https://github.com/xMasterX/all-the-plugins/tree/dev). + ## Where I can find differences between original (official) firmware and Unleashed firmware? -Right here:
-https://github.com/DarkFlippers/unleashed-firmware#whats-changed + +[Right here](https://github.com/DarkFlippers/unleashed-firmware#whats-changed) ## How to use SubGHz Remote app? + 1. Open app, press Back button, select New map file 2. Configure signal files and their names for every button (also you can add only one signal and make other buttons empty - just don't select any files for them in config) 3. Save new map file 4. Open map file and select your previously created file 5. Use buttons to send subghz signal files that you selected in map config at step 2 - ## How to build (compile) firmware? -Follow this link:
-https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToBuild.md#how-to-build-by-yourself + +Follow this [link](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToBuild.md#how-to-build-by-yourself). ## I installed Unleashed firmware and now my mobile app doesn't connect to flipper ( OR I changed flipper device name and my mobile app now doesn't connect to flipper ) + 1. Click Forget flipper in mobile app 2. Open your phone settings - bluetooth, find flipper - if it present here - open its options and click forget device 3. On flipper itself open Settings -> Bluetooth -> Forget all devices -> and confirm @@ -43,173 +49,185 @@ https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToB 5. Done ## My desktop (pin, favourites, etc..) (or other) settings was reset to default after update, what to do? + Just configure that settings again, all is fine, and make sure you seen changelogs for the releases that came out after your previous version, when settings struct is changed, settings file are reset after update, this happens only when struct changes is required, so don't assume that settings will be reset in every release, this will happen only in specific ones -## Why is flipper not connecting to chrome? -The most common cause of the flipper not connecting to google chrome is having qFlipper open while trying to connect your flipper. Or having second flipper lab page open at same time.
+## Why is flipper not connecting to Chrome? + +The most common cause of the flipper not connecting to google chrome is having qFlipper open while trying to connect your flipper.
+ +Or having second flipper lab page open at same time.
You must close qFlipper (or other flipper lab web pages) before attempting to connect your flipper to chrome. ## Flipper doesn't work! How to restore firmware??? -Follow this guide:
-https://docs.flipper.net/basics/firmware-update/firmware-recovery +Follow this [guide](https://docs.flipper.net/basics/firmware-update/firmware-recovery) ## Useful links and files -Flipper Awesome - place where you can find almost all links that you might need:
-https://github.com/djsime1/awesome-flipperzero - -Dict files for iButton Fuzzer and RFID Fuzzer:
-https://t.me/flipperzero_unofficial_ru/37058
+ +Flipper Awesome - place where you can find almost all links that you might need:
+* [Awesome-FlipperZero](https://github.com/djsime1/awesome-flipperzero) +* Dict files for iButton Fuzzer and RFID Fuzzer:
+https://t.me/flipperzero_unofficial_ru/37058
https://t.me/flipperzero_unofficial_ru/37072 - -UL Releases in Telegram:
-https://t.me/unleashed_fw
-UL Dev Builds in Telegram:
-https://t.me/kotnehleb
- -Our Discord:
-https://discord.unleashedflip.com +* UL Releases in [Telegram](https://t.me/unleashed_fw) +* UL Dev Builds in [Telegram](https://t.me/kotnehleb) +* Our [Discord](https://discord.unleashedflip.com) ## How to change flipper name? + All is simple: -1. Open Settings -> Desktop -> Change Flipper Name +1. Open `Settings -> Desktop -> Change Flipper Name` 2. Enter new name and click Save 3. Exit from settings - Flipper will automatically reboot 4. Done, you have custom name which will stay until you reset it to default or replace with new one -How to reset name to default: -1. Open Settings -> Desktop -> Change Flipper Name +## How to reset name to default? + +1. Open `Settings -> Desktop -> Change Flipper Name` 2. Do not enter anything, just click Save 3. Exit from settings - Flipper will automatically reboot 4. Done, name is reset to original one. -## How do I copy files from Github to my Flipper Zero? -Follow this detailed guide:
-https://github.com/wrenchathome/flipperfiles/blob/main/_Guides/How2Flipper.pdf +## How do I copy files from GitHub to my Flipper Zero? +Follow this detailed [guide](https://github.com/wrenchathome/flipperfiles/blob/main/_Guides/How2Flipper.pdf). ## Where can I find “This file” or “That file” for my flipper? -These 2 repos will cover most(99.9%) of your needs:
-https://github.com/UberGuidoZ/Flipper/tree/main -
-https://github.com/UberGuidoZ/Flipper-IRDB/tree/main +These 2 repos will cover most (99.9%) of your needs:
+* https://github.com/UberGuidoZ/Flipper/tree/main +* https://github.com/UberGuidoZ/Flipper-IRDB/tree/main ## How can I support Unleashed firmware project? -https://github.com/DarkFlippers/unleashed-firmware#please-support-development-of-the-project + +Please follow this [link](https://github.com/DarkFlippers/unleashed-firmware#please-support-development-of-the-project). ## What are the dev builds? Where I can get latest build for dev branch? -This is an automatic assembly of the latest commits from the repository that have not yet been released, the previous build is deleted when a new one is uploaded and old remains only as file in the telegram channel
-Be aware that this is not release ready builds! They may have bugs and issues, if you are using dev build and found issue, report it! In github issues -
-Dev builds is available in Discord, ⁠in channel - `unleashed-development`
-Builds also can be found here - https://t.me/kotnehleb
-And here - https://dev.unleashedflip.com/
+This is an automatic assembly of the latest commits from the repository that have not yet been released, the previous build is deleted when a new one is uploaded and old remains only as file in the telegram channel

+Be aware that this is not release ready builds! They may have bugs and issues, if you are using dev build and found issue, report it! In GitHub issues +
+ +Dev builds is available in Discord, Win channel - `unleashed-development`
+Builds also can be found [here](https://t.me/kotnehleb).
+And [here](https://dev.unleashedflip.com/)
## What is the update server? -We have our own update server https://up.unleashedflip.com/directory.json
-It is identical to the official one, it is impossible to change it in applications without rebuilding the application, it is hardcoded there
-If you want to use it, you need to patch or build your own build of the application you are interested in
-Also you can use it with uFBT to build apps for UL SDK, uFBT will accept that link as one of args
+We have our own update server https://up.unleashedflip.com/directory.json

+It is identical to the official one, it is impossible to change it in applications without rebuilding the application, it is hardcoded there

+If you want to use it, you need to patch or build your own build of the application you are interested in
+ +Also you can use it with uFBT to build apps for UL SDK, uFBT will accept that link as one of args
The server will remain active and will be automatically updated ## External Radio: How to connect CC1101 module -https://github.com/quen0n/flipperzero-ext-cc1101 + +[Guide](https://github.com/quen0n/flipperzero-ext-cc1101) ## How to add extra Sub-GHz frequencies -https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzSettings.md + +[Guide](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzSettings.md) ## How to use Flipper as new remote (Nice FlorS, BFT Mitto, Somfy Telis, Aprimatic, AN-Motors, etc..) -https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzRemoteProg.md + +[Guide](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzRemoteProg.md) ## How Can I Unlock/Remove SubGHz restriction? + If you are using Unleashed firmware - **all region locks are removed by default**! -Also there is a way to go outside of frequencies stated in CC1101 datasheet, but transmission on those frequencies may cause chip damage, make sure you know what you are doing! Do not edit this settings to bypass region lock since there is no region locks in unleashed, all chip supported frequencies will work without any extra steps.
-But, if you know that you need to bypass subghz chip safety restriction you can unlock the safety restriction which will allow you to go outside the chips supported frequency.
-This covers how to do it and information regarding the risks of damage to the flipper by doing so
-https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/DangerousSettings.md +Also, there is a way to go outside of frequencies stated in CC1101 datasheet, but transmission on those frequencies may cause chip damage, make sure you know what you are doing! Do not edit this settings to bypass region lock since there is no region locks in unleashed, all chip supported frequencies will work without any extra steps.

+But, if you know that you need to bypass subghz chip safety restriction you can unlock the safety restriction which will allow you to go outside the chips supported frequency.

+This covers how to do it and information regarding the risks of damage to the flipper by doing so. Please read [this](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/DangerousSettings.md) before. ## Can I clone a car key fob for my own car to use flipper as a key? + No, and trying to do so with Read RAW will lead to key desync or unpair with blacklist which means re-pair is very hard and requires service tools ## Will Unleashed FW support car keyfobs decoding, cloning, emulating? + No, never ## Where can I find jamming files? + Nowhere, this is illegal in almost every country in the world -## I saw something on tiktok and want to ask how to do it, I just wanna be like real hacker -And you might be banned for that in our communities, since 99% of that content is fake, or showing illegal actions, and we don't like tiktok related questions +## I saw something on TikTok and want to ask how to do it, I just wanna be like real hacker + +And you might be banned for that in our communities, since 99% of that content is fake, or showing illegal actions, and we don't like TikTok related questions. + +## I was banned in Unleashed Discord/Telegram/etc.. How to remove ban? I created GitHub issue and it was removed too! -## I was banned in Unleashed Discord/Telegram/etc.. How to remove ban? I created github issue and it was removed too! Not possible, rules is rules, read them before sending messages in our communities ## How to clean .DS_Store and other dot files left from macOS + `sudo dot_clean -mn /Volumes/Flipper\ SD` -> `Flipper\ SD` may be named differently for you, replace with your microSD card name -## How to sort files on flipper microSD on macOS/Linux -`will make sorting faster, and will work for OFW` -1. `brew install fatsort` -> Install fatsort using brew.sh (only on macOS) +## How to sort files on flipper microSD on macOS/Linux? + +Will make sorting faster, and will work for OFW +1. `brew install fatsort` -> Install fatsort using `brew.sh` (only on macOS) 2. `diskutil list` -> Find your disk name for flipper microSD 3. `diskutil unmount /Volumes/Flipper\ SD` 4. `sudo fatsort -n /dev/disk4s1` -> Replace `disk4s1` with your microSD id found on step 2 - ## Your Flipper feels slow and unresponsive? -1. Make sure you using good microSD card from known brand, flipper works with microSD via SPI that means not any microSD will work good even if it works ok with other devices -2. Go into **Settings -> System** and make sure that you have -`Log Level = None` -`Debug = OFF` -`Heap Trace = None` -If some of that settings is set to something different - change it to `None` / `OFF` -3. Make sure your battery is charged, that can affect performance too -## Flipper crashed, stuck, frozen ? +1. Make sure you using good microSD card from known brand, flipper works with microSD via SPI that means not any microSD will work good even if it works ok with other devices. +2. Go into **Settings -> System** and make sure that you have + ```text + Log Level = None + Debug = OFF + Heap Trace = None + ``` +3. If some of that settings is set to something different - change it to `None` / `OFF` +4. Make sure your battery is charged, that can affect performance too + +## Flipper crashed, stuck, frozen? + Reboot it by holding Left + Back buttons ![how to reboot flipper gif, shows how to hold left and back button](https://media.tenor.com/eUbBDDEzmwMAAAAC/flipper-zero-flipper-zero-reboot.gif) - ## How to reset forgotten Flipper pin code? **Disconnect USB Cable if it was connected** 1. Turn off the device - hold back button -> Turn Off **If you can't turn it off, try next step but hold buttons for 30-40 seconds)** -2. Hold Up + Back for ~5 sec -> You will see reset screen -> Hold Right to reset (and down arrow to exit if you don't want to reset pin code) +2. Hold `Up` + `Back` for `~5 sec` -> You will see reset screen -> Hold `Right` to reset (and `Down` arrow to exit if you don't want to reset pin code) 3. Done, internal memory (dolphin level, settings, pin code, is erased to default settings) ## What are the differences between x, y and z firmware? -If you just got your flipper and not sure what will work better for you, start with original official firmware, if you think you need more features or want to remove subghz region locks then
-Try installing Unleashed firmware, which is fork of official firmware with many new features and preinstalled plugins (check out `e` build)
-In other case If you want to experiment more with UI and other things look for existing forks of Unleashed firmware
-Or create your own fork with your own customisations
-Also before reporting any found issue make sure you are in correct repo, if you are using not Unleashed but different fork or original firmware, do not report issue in Unleashed firmware repo or UL communities (telegram, discord, etc..) +If you just got your flipper and not sure what will work better for you, start with original official firmware, if you think you need more features or want to remove subghz region locks then:
+* Try installing **Unleashed firmware**, which is fork of official firmware with many new features and preinstalled plugins (check out `e` build).
+* In other case, If you want to experiment more with UI and other things look for existing forks of Unleashed firmware.
+* Or, create your own fork with your own customisations
+* Also, before reporting any found issue make sure you are in correct repo, if you are using not **Unleashed**, but different fork or original firmware, do not report issue in **Unleashed firmware** repo or UL communities (Telegram, Discord, etc..) ## Is there a correct way to capturing Infrared signals? There is indeed especially with AC units, a new documentation has been released with some notes and steps on capturing infrared signals correctly along with some example data so you are able to understand the difference visually between the two. -https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/InfraredCaptures.md +[More info](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/InfraredCaptures.md) +## NFC / RFID FAQ -# NFC/RFID FAQ -From our good friend `@Equip` and `@np0`
-**------------------------------------------------------** +From our good friend `@Equip` and `@np0`
### MIFARE Ultralight -- Scan the card, hold the Flipper Zero up to the reader to get the password to unlock the rest of the sectors, then scan the card again. +Scan the card, hold the Flipper Zero up to the reader to get the password to unlock the rest of the sectors, then scan the card again. -### MIFARE DESFire/MIFARE Ultralight C +### MIFARE DESFire / MIFARE Ultralight C -- The Flipper Zero has no available attacks for this card currently. +The Flipper Zero has no available attacks for this card currently. ### Bank cards @@ -224,17 +242,17 @@ From our good friend `@Equip` and `@np0`
### HID/iClass -- Picopass iClass can be read using the Picopass reader plugin +- `Picopass` iClass can be read using the `Picopass` reader plugin - 26bit Picopass can be downgraded to H10301 RFID credentials (note, it is not guaranteed to work if the reader is not configured to read low frequency) - Readers will need to be configured and have an LF RFID antenna in order to be read. Certain iClass readers are HF only, and do not have the ability to have LF configured -- **Emulation for Picopass** was added on July 26th, and the updated version can be found in latest releases of Unleashed firmware with apps preinstalled, or in official Apps Hub via Flipper Mobile app +- **Emulation for Picopass** was added on July 26th, and the updated version can be found in latest releases of **Unleashed** firmware with apps preinstalled, or in official Apps Hub via Flipper Mobile app - Write support for personalization mode cards is doable with app -- The Seader app and a SAM expansion board < https://www.redteamtools.com/nard-sam-expansion-board-for-flipper-zero-with-hid-seos-iclass-sam/ > will allow reading more secure HID cards, which may be helpful in downgrade attacks +- The Seader app and a [SAM expansion board](https://www.redteamtools.com/nard-sam-expansion-board-for-flipper-zero-with-hid-seos-iclass-sam/) will allow reading more secure HID cards, which may be helpful in downgrade attacks ### LF-RFID -If you're wanting to make clones of low frequency RFID chips you need to write to T5577's. "Blanks" do not exist. All of the chips the Flipper Zero can interact with are read-only and cannot be overwritten or purchased blank. -T5577s are multiemulator chips that the Flipper Zero can program to be other tags +If you're wanting to make clones of low frequency RFID chips you need to write to T5577's. `Blanks` do not exist. All of the chips the Flipper Zero can interact with are read-only and cannot be overwritten or purchased blank. +T5577s are multi-emulator chips that the Flipper Zero can program to be other tags ### Unknown Card/Fob @@ -244,11 +262,11 @@ If you have exhausted all options of scanning via NFC/RFID/PICOPASS then take a - The reader you use with the credential - If your credential is a card, hold it up to a very bright light source e.g. a lightbulb and take a photo of the exposed antenna. This is useful for identification, post it for us to identify! -**------------------------------------------------------** - ## How do I access the CLI/Logs? + +To access the Serial CLI, click one of the following based on your platform. +
- To access the Serial CLI, click one of the following based on your platform.
Desktop web browser* *Chromium browsers only, such as: Google Chrome, Microsoft Edge, Opera/Opera GX, Brave, and Vivaldi. @@ -262,6 +280,8 @@ If you have exhausted all options of scanning via NFC/RFID/PICOPASS then take a
  • Done!
  • +
    +
    Windows
      @@ -280,6 +300,8 @@ If you have exhausted all options of scanning via NFC/RFID/PICOPASS then take a
    • If you get an "Access Denied" error, make sure qFlipper isn't running!
    +
    +
    MacOS/Linux Note: I'm a filthy Windows user without any way to verify this procedure. Let me know if it's wrong! @@ -295,6 +317,8 @@ If you have exhausted all options of scanning via NFC/RFID/PICOPASS then take a
  • Done!
  • +
    +
    Android
      @@ -308,16 +332,20 @@ If you have exhausted all options of scanning via NFC/RFID/PICOPASS then take a
    • Note: To exit log mode, you'll have to disconnect and reconnect using the icon.
    +
    +
    iPhone - Unfortunately, iOS is incapable of accessing a serial terminal over USB; try one of the other methods. -
    - On the Flipper, open the settings, go to System, and set Log Level to Debug. (You can keep Debug set to off unless someone asks you to turn it on) - Once you have the CLI open, type log and press enter to start watching logs. Press Ctrl-C or Cmd-C to exit log mode. + Unfortunately, iOS is incapable of accessing a serial terminal over USB; try one of the other methods
    + +
    -
    -
    +
    +
    -**CLI FAQ Source + Check out this FAQ for more info:** +**CLI FAQ Source + Check out this FAQ for more info:**

    https://github.com/djsime1/awesome-flipperzero/blob/main/FAQ.md diff --git a/documentation/FuriHalBus.md b/documentation/FuriHalBus.md index 12c5a70ec..248699d77 100644 --- a/documentation/FuriHalBus.md +++ b/documentation/FuriHalBus.md @@ -3,15 +3,19 @@ ## Basic info On system startup, most of the peripheral devices are under reset and not clocked by default. This is done to reduce power consumption and to guarantee that the device will always be in the same state before use. + Some crucial peripherals are enabled right away by the system, others must be explicitly enabled by the user code. -**NOTE:** Here and afterwards the word *"system"* refers to any code belonging to the operating system, hardware drivers or built-in applications. +> [!NOTE] Here and afterwards the word `system` refers to any code belonging to the operating system, +> hardware drivers or built-in applications. -To **ENABLE** a peripheral, call `furi_hal_bus_enable()`. At the time of the call, the peripheral in question MUST be disabled, otherwise a crash will occur to indicate improper use. This means that any given peripheral cannot be enabled twice or more without disabling it first. +To **ENABLE** a peripheral, call `furi_hal_bus_enable()`. At the time of the call, the peripheral in question **MUST** be disabled; +otherwise a crash will occur to indicate improper use. This means that any given peripheral cannot be enabled twice or more without disabling it first. -To **DISABLE** a peripheral, call `furi_hal_bus_disable()`. Likewise, the peripheral in question MUST be enabled, otherwise a crash will occur. +To **DISABLE** a peripheral, call `furi_hal_bus_disable()`. Likewise, the peripheral in question **MUST** be enabled, otherwise a crash will occur. -To **RESET** a peripheral, call `furi_hal_bus_reset()`. The peripheral in question MUST be enabled, otherwise a crash will occur. This method is used whenever it is necessary to reset all the peripheral's registers to their initial states without disabling it. +To **RESET** a peripheral, call `furi_hal_bus_reset()`. The peripheral in question MUST be enabled, otherwise a crash will occur. +This method is used whenever it is necessary to reset all the peripheral's registers to their initial states without disabling it. ## Peripherals @@ -22,26 +26,28 @@ Built-in peripherals are divided into three categories: ### Always-on peripherals -Below is the list of peripherals that are enabled by the system. The user code must NEVER attempt to disable them. If a corresponding API is provided, the user code must employ it in order to access the peripheral. +Below is the list of peripherals that are enabled by the system. The user code must **NEVER** attempt to disable them. + +If a corresponding API is provided, the user code must employ it in order to access the peripheral. *Table 1* - Peripherals enabled by the system -| Peripheral | Enabled at | -| :-----------: | :-----------------------: | -| DMA1 | `furi_hal_dma.c` | -| DMA2 | -- | -| DMAMUX | -- | -| GPIOA | `furi_hal_resources.c` | -| GPIOB | -- | -| GPIOC | -- | -| GPIOD | -- | -| GPIOE | -- | -| GPIOH | -- | -| PKA | `furi_hal_bt.c` | -| AES2 | -- | -| HSEM | -- | -| IPCC | -- | -| FLASH | enabled by hardware | +| Peripheral | Enabled at | +|:-------------:|:---------------------------:| +| DMA1 | `furi_hal_dma.c` | +| DMA2 | -- | +| DMAMUX | -- | +| GPIOA | `furi_hal_resources.c` | +| GPIOB | -- | +| GPIOC | -- | +| GPIOD | -- | +| GPIOE | -- | +| GPIOH | -- | +| PKA | `furi_hal_bt.c` | +| AES2 | -- | +| HSEM | -- | +| IPCC | -- | +| FLASH | enabled by hardware | ### On-demand system peripherals @@ -51,63 +57,64 @@ When not using the API, these peripherals MUST be enabled by the user code and t *Table 2* - Peripherals enabled and disabled by the system -| Peripheral | API header file | -| :-----------: | :-------------------: | -| RNG | `furi_hal_random.h` | -| SPI1 | `furi_hal_spi.h` | -| SPI2 | -- | -| I2C1 | `furi_hal_i2c.h` | -| I2C3 | -- | -| USART1 | `furi_hal_serial.h` | -| LPUART1 | -- | -| USB | `furi_hal_usb.h` | +| Peripheral | API header file | +|:--------------:|:------------------------:| +| RNG | `furi_hal_random.h` | +| SPI1 | `furi_hal_spi.h` | +| SPI2 | -- | +| I2C1 | `furi_hal_i2c.h` | +| I2C3 | -- | +| USART1 | `furi_hal_serial.h` | +| LPUART1 | -- | +| USB | `furi_hal_usb.h` | ### On-demand shared peripherals -Below is the list of peripherals that are not enabled by default and MUST be enabled by the user code each time it accesses them. +Below is the list of peripherals that are not enabled by default and **MUST** be enabled by the user code each time it accesses them. Note that some of these peripherals may also be used by the system to implement its certain features. + The system will take over any given peripheral only when the respective feature is in use. *Table 3* - Peripherals enabled and disabled by user -| Peripheral | System | Purpose | -| :-----------: | :-------: | ------------------------------------- | -| CRC | | | -| TSC | | | -| ADC | | | -| QUADSPI | | | -| TIM1 | yes | subghz, lfrfid, nfc, infrared, etc... | -| TIM2 | yes | subghz, infrared, etc... | -| TIM16 | yes | speaker | -| TIM17 | yes | cc1101_ext | -| LPTIM1 | yes | tickless idle timer | -| LPTIM2 | yes | pwm | -| SAI1 | | | -| LCD | | | - +| Peripheral | System | Purpose | +|:----------:|:------:|:----------------------------------------| +| CRC | | | +| TSC | | | +| ADC | | | +| QUADSPI | | | +| TIM1 | yes | subghz, lfrfid, nfc, infrared, etc... | +| TIM2 | yes | subghz, infrared, etc... | +| TIM16 | yes | speaker | +| TIM17 | yes | cc1101_ext | +| LPTIM1 | yes | tickless idle timer | +| LPTIM2 | yes | pwm | +| SAI1 | | | +| LCD | | | ## DMA -The DMA1,2 peripherals are a special case in that they have multiple independent channels. Some of the channels may be in use by the system. +The `DMA1`, `DMA2` peripherals are a special case in that they have multiple independent channels. +Some channels may be in use by the system. Below is the list of DMA channels and their usage by the system. *Table 4* - DMA channels -| DMA | Channel | System | Purpose | -| :---: | :-------: | :-------: | ------------------------- | -| DMA1 | 1 | yes | digital signal | -| -- | 2 | yes | -- | -| -- | 3 | | | -| -- | 4 | yes | pulse reader | -| -- | 5 | | | -| -- | 6 | yes | USART_Rx | -| -- | 7 | yes | LPUART_Rx | -| DMA2 | 1 | yes | infrared, lfrfid, subghz, | -| -- | 2 | yes | -- | -| -- | 3 | yes | cc1101_ext | -| -- | 4 | yes | cc1101_ext | -| -- | 5 | yes | cc1101_ext | -| -- | 6 | yes | SPI | -| -- | 7 | yes | SPI | +| DMA | Channel | System | Purpose | +|:------:|:-------:|:------:|:-----------------------------| +| DMA1 | 1 | yes | digital signal | +| -- | 2 | yes | -- | +| -- | 3 | | | +| -- | 4 | yes | pulse reader | +| -- | 5 | | | +| -- | 6 | yes | USART_Rx | +| -- | 7 | yes | LPUART_Rx | +| DMA2 | 1 | yes | infrared, lfrfid, subghz, | +| -- | 2 | yes | -- | +| -- | 3 | yes | cc1101_ext | +| -- | 4 | yes | cc1101_ext | +| -- | 5 | yes | cc1101_ext | +| -- | 6 | yes | SPI | +| -- | 7 | yes | SPI | diff --git a/documentation/HowToBuild.md b/documentation/HowToBuild.md index ddf759f1b..eec2e632a 100644 --- a/documentation/HowToBuild.md +++ b/documentation/HowToBuild.md @@ -1,4 +1,3 @@ - # How to Build by yourself: ## Install required software @@ -15,9 +14,10 @@ You should clone with ```shell $ git clone --recursive https://github.com/DarkFlippers/unleashed-firmware.git ``` + ## VSCode integration -`fbt` includes basic development environment configuration for VS Code. Run `./fbt vscode_dist` to deploy it. That will copy the initial environment configuration to the `.vscode` folder. After that, you can use that configuration by starting VS Code and choosing the firmware root folder in the "File > Open Folder" menu. +`fbt` includes basic development environment configuration for VSCode. Run `./fbt vscode_dist` to deploy it. That will copy the initial environment configuration to the `.vscode` folder. After that, you can use that configuration by starting VSCode and choosing the firmware root folder in the `File > Open Folder` menu. # Build on Linux/macOS @@ -31,7 +31,6 @@ Check out `documentation/fbt.md` for details on building and flashing firmware. ### Compile everything for development - ```sh ./fbt updater_package ``` @@ -44,8 +43,7 @@ Check out `documentation/fbt.md` for details on building and flashing firmware. Check `dist/` for build outputs. -Use **`flipper-z-{target}-update-{suffix}.tgz`** to flash your device. - +Use `flipper-z-{target}-update-{suffix}.tgz` to flash your device. # Build on Windows @@ -53,23 +51,20 @@ Check out `documentation/fbt.md` for details on building and flashing firmware. ### Compile everything for development - -```sh +```powershell ./fbt.cmd updater_package ``` ### Compile everything for release + get updater package to update from microSD card -```sh +```powershell ./fbt.cmd COMPACT=1 DEBUG=0 updater_package ``` -**You may need to change** `/` **to** `\` **in front of fbt command (Only for Windows)!** +**You may need to change `/` to `\` in front of fbt command (Only for Windows)!** Check `dist/` for build outputs. -Use **`flipper-z-{target}-update-{suffix}.tgz`** to flash your device. - - +Use `flipper-z-{target}-update-{suffix}.tgz` to flash your device. If compilation fails, make sure all submodules are all initialized. Either clone with `--recursive` or use `git submodule update --init --recursive`. diff --git a/documentation/devboard/Firmware update on Developer Board.md b/documentation/devboard/Firmware update on Developer Board.md index f6a81d97b..1cd205023 100644 --- a/documentation/devboard/Firmware update on Developer Board.md +++ b/documentation/devboard/Firmware update on Developer Board.md @@ -1,10 +1,13 @@ # Firmware update on Developer Board {#dev_board_fw_update} -It's important to regularly update your Developer Board to ensure that you have access to the latest features and bug fixes. This tutorial will guide you through the necessary steps to update the firmware of your Developer Board. +> [!IMPORTANT] +> +> It's important to regularly update your Developer Board to ensure that you have access to the latest features and bug fixes. +> This tutorial will guide you through the necessary steps to update the firmware of your Developer Board. -This tutorial assumes that you're familiar with the basics of the command line. If you’re not, please refer to the [Windows](https://www.digitalcitizen.life/command-prompt-how-use-basic-commands/) or [MacOS/Linux](https://ubuntu.com/tutorials/command-line-for-beginners#1-overview) command line tutorials. +This tutorial assumes that you're familiar with the basics of the command line. -*** +If you’re not, please refer to the [Windows](https://www.digitalcitizen.life/command-prompt-how-use-basic-commands/) or [MacOS / Linux](https://ubuntu.com/tutorials/command-line-for-beginners#1-overview) command line tutorials. ## Installing the micro Flipper Build Tool @@ -14,20 +17,18 @@ Install uFBT on your computer by running the following command in the Terminal: **For Linux & macOS:** -```text +```bash python3 -m pip install --upgrade ufbt ``` **For Windows:** -```text -py -m pip install --upgrade ufbt +```powershell +python -m pip install --upgrade ufbt ``` If you want to learn more about uFBT, visit [the project's page](https://pypi.org/project/ufbt/). -*** - ## Connecting the Developer Board to your computer 1. List all of the serial devices on your computer. @@ -38,49 +39,38 @@ If you want to learn more about uFBT, visit [the project's page](https://pypi.or **macOS** - On macOS, you can run the following command in the Terminal: - - ```text + On macOS, you can run the following command in the Terminal: + ```bash ls /dev/cu.* ``` **Linux** - On Linux, you can run the following command in the Terminal: - + On Linux, you can run the following command in the Terminal: ```text ls /dev/tty* ``` - View the devices in the list. - 2. Connect the Developer Board to your computer using a USB-C cable. ![The Developer Board in Wired mode](https://archbee-image-uploads.s3.amazonaws.com/3StCFqarJkJQZV-7N79yY/Aq7gfMI-m_5H6sGGjwb4I_monosnap-miro-2023-07-19-19-47-39.jpg) - 3. Switch your Developer Board to Bootloader mode: - 3.1. Press and hold the **BOOT** button. - 3.2. Press the **RESET** button while holding the **BOOT** button. - - 3.3. Release the **BOOT** button.\ + 3.3. Release the **BOOT** button. ![You can easily switch the Dev Board to Bootloader mode](https://archbee-image-uploads.s3.amazonaws.com/3StCFqarJkJQZV-7N79yY/KynP9iT6sJ3mXLaLyI82__image.png) - 4. Repeat Step 1 and view the name of your Developer Board that appeared in the list. For example, on macOS: - ```text + ```shell /dev/cu.usbmodem01 ``` -*** - ## Flashing the firmware To flash the firmware onto your Developer Board, run the following command in the terminal: -```text +```shell python3 -m ufbt devboard_flash ``` @@ -90,33 +80,26 @@ You should see the following message: `WiFi board flashed successfully`. If you get an error message during the flashing process, such as this: -```text +```shell A fatal error occurred: Serial data stream stopped: Possible serial noise or corruption. ``` Or this: -```text +```shell FileNotFoundError: [Errno 2] No such file or directory: '/dev/cu.usbmodem01' ``` Try doing the following: - * Disconnect the Developer Board from your computer, then reconnect it. - * Use a different USB port on your computer. - * Use a different USB-C cable. -*** - ## Finishing the installation After flashing the firmware: - 1. Reboot the Developer Board by pressing the **RESET** button. ![Reset the Developer Board](https://archbee-image-uploads.s3.amazonaws.com/3StCFqarJkJQZV-7N79yY/rcQeKARgrVwa51tLoo-qY_monosnap-miro-2023-07-20-18-29-33.jpg) - 2. Disconnect and reconnect the USB-C cable. The Developer Board should appear as a serial device on your computer. Now, you can use it with the Black Magic Debug client of your choice. diff --git a/documentation/devboard/Get started with the Dev Board.md b/documentation/devboard/Get started with the Dev Board.md index 04fa9d358..8747d126e 100644 --- a/documentation/devboard/Get started with the Dev Board.md +++ b/documentation/devboard/Get started with the Dev Board.md @@ -2,35 +2,33 @@ The Wi-Fi Developer Board serves as a tool to debug the Flipper Zero firmware. To debug the firmware, the initial step involves compiling the firmware from its source code. This process enables the debugging functionality within the firmware and generates all the necessary files required for debugging purposes. -> **NOTE:** Building and debugging the Flipper Zero firmware is fully supported on MacOS and Linux. Support for Windows is in beta test. - -*** +> [!IMPORTANT] +> Building and debugging the Flipper Zero firmware is fully supported on MacOS and Linux. +> Support for Windows is in beta test. ## Updating the firmware of your Developer Board Update the firmware of your Developer Board before using it. For more information, visit [Firmware update on Developer Board](https://docs.flipperzero.one/development/hardware/wifi-debugger-module/update). -*** - ## Installing Git You'll need Git installed on your computer to clone the firmware repository. If you don't have Git, install it by doing the following: -* **MacOS** +### MacOS - On MacOS, install the **Xcode Command Line Tools** package, which includes Git as one of the pre-installed command-line utilities, by running in the Terminal the following command: +On MacOS, install the **Xcode Command Line Tools** package, which includes Git as one of the pre-installed command-line utilities, by running in the Terminal the following command: - ```text - xcode-select --install - ``` +```bash +xcode-select --install +``` -* **Linux** +### Linux - On Linux, you can install Git using your package manager. For example, on Ubuntu, run in the Terminal the following command: +On Linux, you can install Git using your package manager. For example, on Ubuntu, run in the Terminal the following command: - ```text - sudo apt install git - ``` +```bash +sudo apt install git +``` For other distributions, refer to your package manager documentation. @@ -40,14 +38,14 @@ For other distributions, refer to your package manager documentation. First, clone the firmware repository: -```text +```bash git clone --recursive https://github.com/flipperdevices/flipperzero-firmware.git cd flipperzero-firmware ``` Then, run the **Flipper Build Tool** (FBT) to build the firmware: -```text +```bash ./fbt ``` @@ -57,9 +55,10 @@ Then, run the **Flipper Build Tool** (FBT) to build the firmware: The Developer Board can work in the **Wired** mode and two **Wireless** modes: **Wi-Fi access point (AP)** mode and **Wi-Fi client (STA)** mode. The Wired mode is the simplest to set up, but requires a USB Type-C cable. The Wireless modes are more complex to set up, but they allow you to debug your Flipper Zero wirelessly. - > **NOTE:** Use the following credentials when connecting to the Developer Board in **Wi-Fi access point** mode:\n - Name: **blackmagic**\n - Password: **iamwitcher** +> [!TIP] +> Use the following credentials when connecting to the Developer Board in **Wi-Fi access point** mode: +> Name: **blackmagic** +> Password: **iamwitcher** ## Wired @@ -71,27 +70,32 @@ To connect the Developer Board in **Wired** mode, do the following: 2. On your computer, open the **Terminal** and run the following: - * **MacOS** - - ```text - ls /dev/cu.* - ``` - - * **Linux** - - ```text - ls /dev/tty* - ``` - - Note the list of devices. + ### MacOS + + ```shell + ls /dev/cu.* + ``` + + ### Linux + + ```bash + ls /dev/tty* + ``` + + Note the list of devices. 3. Connect the Developer Board to your computer via a USB-C cable. 4. Rerun the command. Two new devices have to appear: this is the Developer Board. - > **NOTE:** If the Developer Board doesn't appear in the list of devices, try using a different cable, USB port, or computer. - > - > **NOTE:** Flipper Zero logs can only be viewed when the Developer Board is connected via USB. The option to view logs over Wi-Fi will be added in future updates. For more information, visit [Reading logs via the Dev Board](https://docs.flipperzero.one/development/hardware/wifi-debugger-module/reading-logs). +> [!NOTE] +> If the Developer Board doesn't appear in the list of devices, try using a different cable, USB port, or computer. + +
    + +> [!IMPORTANT] Flipper Zero logs can only be viewed when the Developer Board is connected via USB. +> The option to view logs over Wi-Fi will be added in future updates. +> For more information, visit [Reading logs via the Dev Board](https://docs.flipperzero.one/development/hardware/wifi-debugger-module/reading-logs). ## Wireless @@ -111,9 +115,8 @@ To connect the Developer Board in **Wi-Fi access point** mode, do the following: 3. Connect to the network: - * Name: **blackmagic** - - * Password: **iamwitcher** + * Name: `blackmagic` + * Password: `iamwitcher` 4. To configure the Developer Board, open a browser and go to `http://192.168.4.1`. @@ -135,9 +138,9 @@ To connect the Developer Board in **Wi-Fi client** mode, you need to configure i ![In the Wi-Fi tab, you can set the Developer Board mode](https://archbee-image-uploads.s3.amazonaws.com/3StCFqarJkJQZV-7N79yY/klbLVj8lz2bEvm7j4wRaj_monosnap-miro-2023-06-23-13-06-32.jpg) -After rebooting, the Developer Board connects to your Wi-Fi network. You can connect to the device using the mDNS name **blackmagic.local** or the IP address it got from your router (you'll have to figure this out yourself, every router is different). +After rebooting, the Developer Board connects to your Wi-Fi network. You can connect to the device using the mDNS name `blackmagic.local` or the IP address it got from your router (you'll have to figure this out yourself, every router is different). -After connecting to your debugger via , you can find its IP address in the **SYS** tab. You can also change the debugger's mode to **AP** or **STA** there. +After connecting to your debugger via [http://blackmagic.local](http://blackmagic.local), you can find its IP address in the **SYS** tab. You can also change the debugger's mode to **AP** or **STA** there. ![In the SYS tab, you can view the IP address of your Developer Board](https://archbee-image-uploads.s3.amazonaws.com/3StCFqarJkJQZV-7N79yY/5XbUptlfqzlV0p6hRUqiG_monosnap-miro-2023-06-22-18-11-30.jpg) @@ -145,9 +148,9 @@ After connecting to your debugger via , you can find it ## Debugging the firmware -Open the **Terminal** in the **flipperzero-firmware** directory that you cloned earlier and run the following command: +Open the **Terminal** in the `flipperzero-firmware` directory that you cloned earlier and run the following command: -```text +```bash ./fbt flash ``` @@ -155,11 +158,10 @@ This will upload the firmware you've just built to your Flipper Zero via the Dev To debug in **VSCode**, do the following: -1. In VSCode, open the **flipperzero-firmware** directory. +1. In VSCode, open the `flipperzero-firmware` directory. 2. You should see a notification about recommended extensions. Install them. - - If there were no notifications, open the **Extensions** tab, enter `@recommended` in the search bar, and install the workspace recommendations. + > [!TIP] If there were no notifications, open the `Extensions` tab, enter `@recommended` in the search bar, and install the workspace recommendations. 3. In the **Terminal**, run the `./fbt vscode_dist` command. This will generate the VSCode configuration files needed for debugging. diff --git a/documentation/devboard/Reading logs via the Dev Board.md b/documentation/devboard/Reading logs via the Dev Board.md index e9fc0e2ca..5cf35d99e 100644 --- a/documentation/devboard/Reading logs via the Dev Board.md +++ b/documentation/devboard/Reading logs via the Dev Board.md @@ -2,13 +2,15 @@ The Developer Board allows you to read Flipper Zero logs via UART. Unlike reading logs via the command-line interface (CLI), the Developer Board enables you to collect logs from the device directly to a serial console independently from the operating system of Flipper Zero. It allows you to see the device's logs when it's loading, updating, or crashing. It's useful for debugging and troubleshooting during software development. -> **NOTE:** Flipper Zero logs can only be viewed when the developer board is connected via USB. The option to view logs over Wi-Fi will be added in future updates. +> [!NOTE] +> +> Flipper Zero logs can only be viewed when the developer board is connected via USB. The option to view logs over Wi-Fi will be added in future updates. *** ## Setting the log level -Depending on your needs, you can set the log level by going to **Main Menu -> Settings -> Log Level**. To learn more about logging levels, visit [Settings](https://docs.flipperzero.one/basics/settings#d5TAt). +Depending on your needs, you can set the log level by going to `Main Menu -> Settings -> Log Level`. To learn more about logging levels, visit [Settings](https://docs.flipperzero.one/basics/settings#d5TAt). ![You can manually set the preferred log level](https://archbee-image-uploads.s3.amazonaws.com/3StCFqarJkJQZV-7N79yY/INzQMw8QUsG9PXi30WFS0_monosnap-miro-2023-07-11-13-29-47.jpg) @@ -20,80 +22,74 @@ Depending on your operating system, you need to install an additional applicatio ### MacOS -On MacOS, you need to install the **minicom** communication program by doing the following: +On MacOS, you need to install the `minicom` communication program by doing the following: 1. [Install Homebrew](https://brew.sh/) by running the following command in the Terminal: - - ```text - /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - ``` - -2. After installation of Homebrew, run the following command to install minicom: - - ```text + ```bash + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + ``` +2. After installation of Homebrew, run the following command to install `minicom`: + ```bash brew install minicom ``` -After installation of minicom on your macOS computer, you can connect to the Developer Board to read Flipper Zero logs by doing the following: +After installation of `minicom` on your macOS computer, you can connect to the Developer Board to read Flipper Zero logs by doing the following: 1. Cold-plug the Developer Board into your Flipper Zero by turning off the Flipper Zero, connecting the developer board, and then turning it back on. - 2. On your computer, open the Terminal and run the following command: - ```text + ```bash ls /dev/cu.* ``` - Note the list of devices. + > [!NOTE] The list of devices. 3. Connect the developer board to your computer using a USB Type-C cable. ![Connect the developer board with a USB-C cable](https://archbee-image-uploads.s3.amazonaws.com/3StCFqarJkJQZV-7N79yY/iPpsMt2-is4aIjiVeFu5t_hjxs2i1oovrnps74v5jgsimage.png) 4. Rerun the command. Two new devices have to appear: this is the Developer Board. - ```text + ```bash /dev/cu.usbmodemblackmagic1 ``` - ```text + ```bash /dev/cu.usbmodemblackmagic3 ``` - - Your Developer Board might have different names. + > [!NOTE] Your Developer Board might have different names. 5. Run the following command: - ```text - minicom -D /dev/ -b 230400 - ``` - + ```bash + minicom -D /dev/ -b 230400 + ``` Where `` is the name of your device with a bigger number. Example: - ```text + ```bash minicom -D /dev/cu.usbmodemblackmagic3 -b 230400 ``` 6. View logs of your Flipper Zero in the Terminal. -7. To quit, close the minicom window or quit via the minicom menu. +7. To quit, close the `minicom` window or quit via the `minicom` menu. ### Linux -On Linux, you need to install the **minicom** communication program. For example, on Ubuntu, run in the Terminal the following command: +On Linux, you need to install the `minicom` communication program. For example, on Ubuntu, run in the Terminal the following command: -```text +```bash sudo apt install minicom - ``` +``` -After installation of minicom on your Linux computer, you can connect to the Developer Board to read Flipper Zero logs by doing the following: +After installation of `minicom` on your Linux computer, you can connect to the Developer Board to read Flipper Zero logs by doing the following: 1. Cold-plug the Developer Board into your Flipper Zero by turning off the Flipper Zero, connecting the developer board, and then turning it back on. 2. On your computer, open the Terminal and run the following command: - ```text + ```bash ls /dev/tty* ``` @@ -104,19 +100,19 @@ After installation of minicom on your Linux computer, you can connect to the Dev 4. Rerun the command. Two new devices have to appear: this is the Developer Board. - ```text + ```bash /dev/ttyACM0 ``` - ```text + ```bash /dev/ttyACM1 ``` - Your Developer Board might have different names. + > [!NOTE] Your Developer Board might have different names. 5. Run the following command: - ```text + ```bash minicom -D /dev/ -b 230400 ``` @@ -124,13 +120,13 @@ After installation of minicom on your Linux computer, you can connect to the Dev Example: - ```text + ```bash minicom -D /dev/cu.usbmodemblackmagic3 -b 230400 ``` 6. View logs of your Flipper Zero in the Terminal. - **NOTE:** If no logs are shown in the Terminal, try running the command from Step 5 with another device name. + > [!NOTE] If no logs are shown in the Terminal, try running the command from Step 5 with another device name. 7. To quit, close the minicom window or quit via the minicom menu. @@ -145,14 +141,14 @@ On Windows, do the following: 3. Connect the developer board to your computer using a USB Type-C cable. ![Connect the developer board with a USB-C cable](https://archbee-image-uploads.s3.amazonaws.com/3StCFqarJkJQZV-7N79yY/iPpsMt2-is4aIjiVeFu5t_hjxs2i1oovrnps74v5jgsimage.png) -4. Find the serial port that the developer board is connected to by going to **Device Manager -> Ports (COM & LPT)** and looking for a new port that appears when you connect the Wi-Fi developer board. +4. Find the serial port that the developer board is connected to by going to `Device Manager -> Ports (COM & LPT)` and looking for a new port that appears when you connect the Wi-Fi developer board. ![Find the serial port in your Device Manager](https://archbee-image-uploads.s3.amazonaws.com/3StCFqarJkJQZV-7N79yY/KKLQJK1lvqmI5iab3d__C_image.png) -5. Run the PuTTY application and select **Serial** as the connection type. +5. Run the `PuTTY` application and select `Serial` as the connection type. -6. Enter the port number you found in the previous step into the **Serial line** field. +6. Enter the port number you found in the previous step into the `Serial line` field. -7. Set the **Speed** parameter to **230400** and click **Open**. +7. Set the `Speed` parameter to `230400` and click `Open`. ![Set speed to 230400](https://archbee-image-uploads.s3.amazonaws.com/3StCFqarJkJQZV-7N79yY/ROBSJyfQ_CXiy4GUZcPbs_monosnap-miro-2023-07-12-13-56-47.jpg) 8. View logs of your Flipper Zero in the PuTTY terminal window. diff --git a/documentation/fbt.md b/documentation/fbt.md index 8e083349f..2538f23dc 100644 --- a/documentation/fbt.md +++ b/documentation/fbt.md @@ -44,7 +44,7 @@ To run cleanup (think of `make clean`) for specified targets, add the `-c` optio ## VSCode integration -`fbt` includes basic development environment configuration for VS Code. Run `./fbt vscode_dist` to deploy it. That will copy the initial environment configuration to the `.vscode` folder. After that, you can use that configuration by starting VS Code and choosing the firmware root folder in the "File > Open Folder" menu. +`fbt` includes basic development environment configuration for VSCode. Run `./fbt vscode_dist` to deploy it. That will copy the initial environment configuration to the `.vscode` folder. After that, you can use that configuration by starting VSCode and choosing the firmware root folder in the "File > Open Folder" menu. To use language servers other than the default VS Code C/C++ language server, use `./fbt vscode_dist LANG_SERVER=` instead. Currently `fbt` supports the default language server (`cpptools`) and `clangd`. diff --git a/documentation/file_formats/BadUsbScriptFormat.md b/documentation/file_formats/BadUsbScriptFormat.md index 1bac3c4aa..8b0a44902 100644 --- a/documentation/file_formats/BadUsbScriptFormat.md +++ b/documentation/file_formats/BadUsbScriptFormat.md @@ -2,7 +2,10 @@ ## Command syntax -BadUsb app uses extended Duckyscript syntax. It is compatible with classic USB Rubber Ducky 1.0 scripts but provides some additional commands and features, such as custom USB ID, ALT+Numpad input method, SYSRQ command, and more functional keys. +BadUsb app uses extended DuckyScript syntax. + +It is compatible with classic USB Rubber Ducky 1.0 scripts but provides some additional commands and features, +such as custom USB ID, `ALT` + `Numpad` input method, `SYSRQ` command, and more functional keys. ## Script file format @@ -12,168 +15,180 @@ BadUsb app can execute only text scripts from `.txt` files, no compilation is re ### Comment line -Just a single comment line. The interpreter will ignore all text after the REM command. -| Command | Parameters | Notes | -| ------- | ------------ | ----- | -| REM | Comment text | | +Just a single comment line. The interpreter will ignore all text after the `REM` command. + +| Command | Parameters | Notes | +|:---------|:--------------|:--------| +| REM | Comment text | | ### Delay Pause script execution by a defined time. -| Command | Parameters | Notes | -| ------------- | ----------------- | ----------------------------------- | -| DELAY | Delay value in ms | Single delay | -| DEFAULT_DELAY | Delay value in ms | Add delay before every next command | -| DEFAULTDELAY | Delay value in ms | Same as DEFAULT_DELAY | + +| Command | Parameters | Notes | +|:--------------|:--------------------------|:--------------------------------------| +| DELAY | Delay value in ms | Single delay | +| DEFAULT_DELAY | Delay value in ms | Add delay before every next command | +| DEFAULTDELAY | Delay value in ms | Same as DEFAULT_DELAY | ### Special keys -| Command | Notes | -| ------------------ | ---------------- | -| DOWNARROW / DOWN | | -| LEFTARROW / LEFT | | -| RIGHTARROW / RIGHT | | -| UPARROW / UP | | -| ENTER | | -| DELETE | | -| BACKSPACE | | -| END | | -| HOME | | -| ESCAPE / ESC | | -| INSERT | | -| PAGEUP | | -| PAGEDOWN | | -| CAPSLOCK | | -| NUMLOCK | | -| SCROLLLOCK | | -| PRINTSCREEN | | -| BREAK | Pause/Break key | -| PAUSE | Pause/Break key | -| SPACE | | -| TAB | | -| MENU | Context menu key | -| APP | Same as MENU | -| Fx | F1-F12 keys | +| Command | Notes | +|:--------------------|:------------------| +| DOWNARROW / DOWN | | +| LEFTARROW / LEFT | | +| RIGHTARROW / RIGHT | | +| UPARROW / UP | | +| ENTER | | +| DELETE | | +| BACKSPACE | | +| END | | +| HOME | | +| ESCAPE / ESC | | +| INSERT | | +| PAGEUP | | +| PAGEDOWN | | +| CAPSLOCK | | +| NUMLOCK | | +| SCROLLLOCK | | +| PRINTSCREEN | | +| BREAK | Pause/Break key | +| PAUSE | Pause/Break key | +| SPACE | | +| TAB | | +| MENU | Context menu key | +| APP | Same as MENU | +| Fx | F1-F12 keys | ### Modifier keys Can be combined with a special key command or a single character. -| Command | Notes | -| -------------- | ---------- | -| CONTROL / CTRL | | -| SHIFT | | -| ALT | | -| WINDOWS / GUI | | -| CTRL-ALT | CTRL+ALT | -| CTRL-SHIFT | CTRL+SHIFT | -| ALT-SHIFT | ALT+SHIFT | -| ALT-GUI | ALT+WIN | -| GUI-SHIFT | WIN+SHIFT | -| GUI-CTRL | WIN+CTRL | + +| Command | Notes | +|:----------------|:-------------| +| CONTROL / CTRL | | +| SHIFT | | +| ALT | | +| WINDOWS / GUI | | +| CTRL-ALT | CTRL+ALT | +| CTRL-SHIFT | CTRL+SHIFT | +| ALT-SHIFT | ALT+SHIFT | +| ALT-GUI | ALT+WIN | +| GUI-SHIFT | WIN+SHIFT | +| GUI-CTRL | WIN+CTRL | ## Key hold and release Up to 5 keys can be hold simultaneously. -| Command | Parameters | Notes | -| ------- | ------------------------------- | ---------------------------------------- | -| HOLD | Special key or single character | Press and hold key until RELEASE command | -| RELEASE | Special key or single character | Release key | + +| Command | Parameters | Notes | +|:---------|:---------------------------------|:------------------------------------------| +| HOLD | Special key or single character | Press and hold key until RELEASE command | +| RELEASE | Special key or single character | Release key | ## String -| Command | Parameters | Notes | -| ------- | ----------- | ----------------- | -| STRING | Text string | Print text string | -| STRINGLN | Text string | Print text string and press enter after it | +| Command | Parameters | Notes | +|:----------|:-------------|:--------------------------------------------| +| STRING | Text string | Print text string | +| STRINGLN | Text string | Print text string and press enter after it | ## String delay -Delay between keypresses. -| Command | Parameters | Notes | -| -------------------- | ----------------- | --------------------------------------------- | -| STRING_DELAY | Delay value in ms | Applied once to next appearing STRING command | -| STRINGDELAY | Delay value in ms | Same as STRING_DELAY | -| DEFAULT_STRING_DELAY | Delay value in ms | Apply to every appearing STRING command | -| DEFAULTSTRINGDELAY | Delay value in ms | Same as DEFAULT_STRING_DELAY | +Delay between key presses. + +| Command | Parameters | Notes | +|:----------------------|:-------------------|:-----------------------------------------------| +| STRING_DELAY | Delay value in ms | Applied once to next appearing STRING command | +| STRINGDELAY | Delay value in ms | Same as STRING_DELAY | +| DEFAULT_STRING_DELAY | Delay value in ms | Apply to every appearing STRING command | +| DEFAULTSTRINGDELAY | Delay value in ms | Same as DEFAULT_STRING_DELAY | ### Repeat -| Command | Parameters | Notes | -| ------- | ---------------------------- | ----------------------- | -| REPEAT | Number of additional repeats | Repeat previous command | +| Command | Parameters | Notes | +|:---------|:------------------------------|:-------------------------| +| REPEAT | Number of additional repeats | Repeat previous command | ### ALT+Numpad input On Windows and some Linux systems, you can print characters by holding `ALT` key and entering its code on Numpad. | Command | Parameters | Notes | -| --------- | -------------- | --------------------------------------------------------------- | +| :---------- | :--------------- | :--------------------------------------------------------------- | | ALTCHAR | Character code | Print single character | | ALTSTRING | Text string | Print text string using ALT+Numpad method | -| ALTCODE | Text string | Same as ALTSTRING, presents in some Duckyscript implementations | +| ALTCODE | Text string | Same as ALTSTRING, presents in some DuckyScript implementations | ### SysRq Send [SysRq command](https://en.wikipedia.org/wiki/Magic_SysRq_key) -| Command | Parameters | Notes | -| ------- | ---------------- | ----- | -| SYSRQ | Single character | | + +| Command | Parameters | Notes | +|:---------|:------------------|:-------| +| SYSRQ | Single character | | ## Media keys -Some Media/Consumer Control keys can be pressed with "MEDIA" command +Some Media/Consumer Control keys can be pressed with `MEDIA` command -| Command | Parameters | Notes | -| ------- | ------------------------- | ----- | -| MEDIA | Media key, see list below | | +| Command | Parameters | Notes | +|:---------|:---------------------------|:------| +| MEDIA | Media key, see list below | | -| Key name | Notes | -| ----------------- | ----------------------------- | -| POWER | | -| REBOOT | | -| SLEEP | | -| LOGOFF | | -| EXIT | | -| HOME | | -| BACK | | -| FORWARD | | -| REFRESH | | -| SNAPSHOT | Take photo in a camera app | -| PLAY | | -| PAUSE | | -| PLAY_PAUSE | | -| NEXT_TRACK | | -| PREV_TRACK | | -| STOP | | -| EJECT | | -| MUTE | | -| VOLUME_UP | | -| VOLUME_DOWN | | -| FN | Fn/Globe key on Mac keyboard | -| BRIGHT_UP | Increase display brightness | -| BRIGHT_DOWN | Decrease display brightness | + +| Key name | Notes | +|:-------------------|:-------------------------------| +| POWER | | +| REBOOT | | +| SLEEP | | +| LOGOFF | | +| EXIT | | +| HOME | | +| BACK | | +| FORWARD | | +| REFRESH | | +| SNAPSHOT | Take photo in a camera app | +| PLAY | | +| PAUSE | | +| PLAY_PAUSE | | +| NEXT_TRACK | | +| PREV_TRACK | | +| STOP | | +| EJECT | | +| MUTE | | +| VOLUME_UP | | +| VOLUME_DOWN | | +| FN | Fn/Globe key on Mac keyboard | +| BRIGHT_UP | Increase display brightness | +| BRIGHT_DOWN | Decrease display brightness | ## Fn/Globe key commands (Mac/iPad) -| Command | Parameters | Notes | -| ------- | ------------------------------- | ----- | -| GLOBE | Special key or single character | | +| Command | Parameters | Notes | +|:---------|:---------------------------------|:-------| +| GLOBE | Special key or single character | | ## Wait for button press Will wait indefinitely for a button to be pressed -| Command | Parameters | Notes | -| --------------------- | ------------ | --------------------------------------------------------------------- | -| WAIT_FOR_BUTTON_PRESS | None | Will wait for the user to press a button to continue script execution | + +| Command | Parameters | Notes | +|:----------------------|:-----------|:------------------------------------------------------------------------------| +| WAIT_FOR_BUTTON_PRESS | None | Will wait for the user to press a button to continue script execution | ## USB device ID You can set the custom ID of the Flipper USB HID device. ID command should be in the **first line** of script, it is executed before script run. -| Command | Parameters | Notes | -| ------- | ---------------------------- | ----- | -| ID | VID:PID Manufacturer:Product | | +| Command | Parameters | Notes | +|:---------|:------------------------------|:-------| +| ID | VID:PID Manufacturer:Product | | Example: -`ID 1234:abcd Flipper Devices:Flipper Zero` +```text +ID 1234:abcd Flipper Devices:Flipper Zero +``` -VID and PID are hex codes and are mandatory. Manufacturer and Product are text strings and are optional. +> [!ATTENTION] +> VID and PID are hex codes and are mandatory. +> Manufacturer and Product are text strings and are optional.