Ext apps cleanup
60
applications/external/airmouse/README.md
vendored
@@ -1,60 +0,0 @@
|
||||
# Flipper Air Mouse
|
||||
|
||||
## Brief
|
||||
|
||||
> "You can turn anything into an air mouse if you're brave enough"
|
||||
|
||||
— Piper, a.k.a. Pez
|
||||
|
||||
Naturally, the quote above applies to [Flipper](https://flipperzero.one/) as well.
|
||||
|
||||
## What?
|
||||
|
||||
The app allows you to turn your Flipper into a USB or Bluetooth air mouse (you do need an extra module, see the Hardware section below)...
|
||||
|
||||
Using it is really simple:
|
||||
* Connect the Flipper via a USB cable and pick `USB`, or pick `Bluetooth` and pair it with your PC;
|
||||
* Hold the Flipper in your hand with the buttons pointing towards the screen;
|
||||
* Wave your Flipper like you don't care to move the cursor;
|
||||
* Up button for Left mouse click;
|
||||
* Down button for Right mouse click;
|
||||
* Center button for Middle mouse click;
|
||||
* Left and Right buttons for scrolling;
|
||||
* Use calibration menu option if you notice significant drift (place your Flipper onto a level surface, make sure it doesn't move, run this option, wait 2 seconds, done).
|
||||
|
||||
See early prototype [in action](https://www.youtube.com/watch?v=DdxAmmsYfMA).
|
||||
|
||||
## Hardware
|
||||
|
||||
The custom module is using Bosch BMI160 accelerometer/gyroscope chip connected via I2C.
|
||||
|
||||
Take a look into the [schematic](https://github.com/ginkage/FlippAirMouse/tree/main/schematic) folder for Gerber, BOM and CPL files, so you can order directly from JLCPCB.
|
||||
|
||||
Original idea:
|
||||
|
||||

|
||||
|
||||
Expectation:
|
||||
|
||||

|
||||
|
||||
Reality:
|
||||
|
||||

|
||||
|
||||
## Software
|
||||
|
||||
The code is based on the original Bosch [driver](https://github.com/BoschSensortec/BMI160_driver/) and an orientation tracking implementation from the Google [Cardboard](https://github.com/googlevr/cardboard/tree/master/sdk/sensors) project
|
||||
|
||||
If you're familiar with Flipper applications, start in the [firmware](https://github.com/flipperdevices/flipperzero-firmware) checkout folder and do the following:
|
||||
```
|
||||
cd applications/plugins
|
||||
git clone https://github.com/ginkage/FlippAirMouse
|
||||
cd ../..
|
||||
./fbt fap_air_mouse
|
||||
```
|
||||
If you're not familiar with those, just grab a `fap` file from Releases.
|
||||
|
||||
## License
|
||||
|
||||
TL;DR: Use the code however you want, give credit where it's due, no warranty of any kind is provided.
|
||||
14
applications/external/bpmtapper/README.md
vendored
@@ -1,14 +0,0 @@
|
||||
# BPM Tapper
|
||||
|
||||
A BPM Tapper for the Flipper Zero.
|
||||
|
||||

|
||||
|
||||
Hit any button other than back repeatedly. Calculates based on the average of the last 8 inputs.
|
||||
|
||||
## Compiling
|
||||
|
||||
```
|
||||
./fbt firmware_bpm_tapper
|
||||
```
|
||||
|
||||
|
Before Width: | Height: | Size: 1.4 KiB |
17
applications/external/caesarcipher/README.md
vendored
@@ -1,17 +0,0 @@
|
||||
# Caesar Cipher
|
||||
|
||||
A [caesar cipher](https://en.wikipedia.org/wiki/Caesar_cipher) encoder for the Flipper Zero device.
|
||||
|
||||

|
||||

|
||||
|
||||
## Usage
|
||||
|
||||
Start app, painfully input your ciphertext with the onscreen keyboard. Replace spaces with underscores. Hit "Save", scroll output.
|
||||
|
||||
## Compiling
|
||||
|
||||
```
|
||||
./fbt firmware_caesar_cipher
|
||||
```
|
||||
|
||||
BIN
applications/external/caesarcipher/img/1.png
vendored
|
Before Width: | Height: | Size: 2.1 KiB |
BIN
applications/external/caesarcipher/img/2.png
vendored
|
Before Width: | Height: | Size: 2.0 KiB |
BIN
applications/external/calculator/calc.png
vendored
|
Before Width: | Height: | Size: 1.2 KiB |
1
applications/external/cli_bridge/.gitignore
vendored
@@ -1 +0,0 @@
|
||||
.vscode
|
||||
24
applications/external/cli_bridge/README.md
vendored
@@ -1,24 +0,0 @@
|
||||
# flipperzero-cli-bridge
|
||||
Allows CLI control from GUI, giving untethered access to sub-ghz chat, system diagnostics, and more.
|
||||
# Installation
|
||||
## Easy way - get a .fap file from the releases page
|
||||
Swing by the [releases](https://github.com/ranchordo/flipperzero-cli-bridge/releases) page, and download a pre-built .fap file for the latest flipperzero firmware. Use [qFlipper](https://flipperzero.one/update) to copy the .fap file into SD Card/apps/Tools/. MAKE SURE TO UPGRADE FLIPPERZERO FIRMWARE TO NEWEST VERSION BEFORE INSTALLING.
|
||||
## Hard way - building from source
|
||||
The following commands will (probably) not work on Windows. If you run Windows, use wsl or a linux vm or something.
|
||||
```sh
|
||||
git clone https://github.com/flipperdevices/flipperzero-firmware
|
||||
cd ./flipperzero-firmware
|
||||
git clone https://github.com/ranchordo/flipperzero-cli-bridge ./applications_user/flipperzero-cli-bridge/
|
||||
./fbt fap_dist APPSRC=applications_user/flipperzero-cli-bridge
|
||||
# If everything went well, the built .fap file can be found in ./dist/f7-D/apps/apps/Tools/cli_gui.fap
|
||||
```
|
||||
# Usage
|
||||
On the flipperzero, you should be able to find a new application (CLI-GUI Bridge) under Applications->Tools. Opening it will result in a text prompt - the prompt for the command line. Enter a suitable command (quickly pressing the back button or holding `_` on the keyboard will input a space) such as `subghz chat [freq in hz, e.g. 310000000]`, etc, then navigate to and press the SAVE key. You should then see the command window. Use Up and Down to scroll, and use Left or Center to get back to the text input prompt. A quick tap of the back key while viewing the console output sends a Ctrl-C to the console, and a long press of the left or right keys during text input will navigate back to the console output without executing.
|
||||
## Exiting the app
|
||||
Holding and then releasing the back key for at least a second or so (long press) will exit the app normally, meaning that the inner terminal will send Ctrl-C and close. Any sessions will be disconnected.
|
||||
|
||||
|
||||
Holding and then releasing the OK key while focusing on the console output for at least a second or so (long press) will exit the app while keeping the terminal open. Terminal output will be cleared the next time you launch the app, but whatever command or session was running previously will be resumed. This is especially handy with subghz chat - exiting the app while keeping the terminal open will not disconnect you from the chat, and the flipper will still vibrate briefly whenever a new message comes in (even if the app is closed).
|
||||
|
||||
|
||||
NOTE: USB functionality (qFlipper, normal USB CLI) may not work after running the app (especially after exiting without closing the terminal), simply restart your flipper and all USB functionality will return to normal.
|
||||
11
applications/external/cntdown_timer/README.md
vendored
@@ -1,11 +0,0 @@
|
||||
## Simple count down timer application for flipper zero
|
||||
|
||||
### How to use
|
||||
`up/down`: set second/minute/hour value.
|
||||
|
||||
`ok`: start/stop counting.
|
||||
|
||||
`long press on ok`: stop counting and reset counter.
|
||||
|
||||
`left/right`: select second/minute/hour value.
|
||||
|
||||
8
applications/external/counter/README.md
vendored
@@ -1,8 +0,0 @@
|
||||
# Dolphin counter
|
||||
This is a simple plugin for the [Flipper Zero](https://www.flipperzero.one).
|
||||
It gives you access to a counter which you can increment and decrement using the up and down buttons respectively.
|
||||
|
||||

|
||||
|
||||
# How to install this?
|
||||
I'd recommend using [flipperzero-ufbt](https://github.com/flipperdevices/flipperzero-ufbt), which is a lightweight tool for quickly testing Flipper Zero applications. The app will stay present on your device so it is not necessary to flash the entire firmware.
|
||||
105
applications/external/dap_link/README.md
vendored
@@ -1,105 +0,0 @@
|
||||
# Flipper Zero as CMSIS DAP/DAP Link
|
||||
Flipper Zero as a [Free-DAP](https://github.com/ataradov/free-dap) based SWD\JTAG debugger. Free-DAP is a free and open source firmware implementation of the [CMSIS-DAP](https://www.keil.com/pack/doc/CMSIS_Dev/DAP/html/index.html) debugger.
|
||||
|
||||
## Protocols
|
||||
SWD, JTAG , CMSIS-DAP v1 (18 KiB/s), CMSIS-DAP v2 (46 KiB/s), VCP (USB-UART).
|
||||
|
||||
WinUSB for driverless installation for Windows 8 and above.
|
||||
|
||||
## Usage
|
||||
|
||||
### VSCode + Cortex-Debug
|
||||
Set `"device": "cmsis-dap"`
|
||||
|
||||
<details>
|
||||
<summary>BluePill configuration example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "Attach (DAP)",
|
||||
"cwd": "${workspaceFolder}",
|
||||
"executable": "./build/firmware.elf",
|
||||
"request": "attach",
|
||||
"type": "cortex-debug",
|
||||
"servertype": "openocd",
|
||||
"device": "cmsis-dap",
|
||||
"configFiles": [
|
||||
"interface/cmsis-dap.cfg",
|
||||
"target/stm32f1x.cfg",
|
||||
],
|
||||
},
|
||||
```
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Flipper Zero configuration example</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "Attach (DAP)",
|
||||
"cwd": "${workspaceFolder}",
|
||||
"executable": "./build/latest/firmware.elf",
|
||||
"request": "attach",
|
||||
"type": "cortex-debug",
|
||||
"servertype": "openocd",
|
||||
"device": "cmsis-dap",
|
||||
"svdFile": "./debug/STM32WB55_CM4.svd",
|
||||
"rtos": "FreeRTOS",
|
||||
"configFiles": [
|
||||
"interface/cmsis-dap.cfg",
|
||||
"./debug/stm32wbx.cfg",
|
||||
],
|
||||
"postAttachCommands": [
|
||||
"source debug/flipperapps.py",
|
||||
],
|
||||
},
|
||||
```
|
||||
</details>
|
||||
|
||||
### OpenOCD
|
||||
Use `interface/cmsis-dap.cfg`. You will need OpenOCD v0.11.0.
|
||||
|
||||
Additional commands:
|
||||
* `cmsis_dap_backend hid` for CMSIS-DAP v1 protocol.
|
||||
* `cmsis_dap_backend usb_bulk` for CMSIS-DAP v2 protocol.
|
||||
* `cmsis_dap_serial DAP_Oyevoxo` use DAP-Link running on Flipper named `Oyevoxo`.
|
||||
* `cmsis-dap cmd 81` - reboot connected DAP-Link.
|
||||
|
||||
<details>
|
||||
<summary>Flash BluePill</summary>
|
||||
|
||||
```
|
||||
openocd -f interface/cmsis-dap.cfg -f target/stm32f1x.cfg -c init -c "program build/firmware.bin reset exit 0x8000000"
|
||||
```
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Flash Flipper Zero using DAP v2 protocol</summary>
|
||||
|
||||
```
|
||||
openocd -f interface/cmsis-dap.cfg -c "cmsis_dap_backend usb_bulk" -f debug/stm32wbx.cfg -c init -c "program build/latest/firmware.bin reset exit 0x8000000"
|
||||
```
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Reboot connected DAP-Link on Flipper named Oyevoxo</summary>
|
||||
|
||||
```
|
||||
openocd -f interface/cmsis-dap.cfg -c "cmsis_dap_serial DAP_Oyevoxo" -c "transport select swd" -c "adapter speed 4000000" -c init -c "cmsis-dap cmd 81" -c "exit"
|
||||
```
|
||||
</details>
|
||||
|
||||
### PlatformIO
|
||||
Use `debug_tool = cmsis-dap` and `upload_protocol = cmsis-dap`. [Documentation](https://docs.platformio.org/en/latest/plus/debug-tools/cmsis-dap.html#debugging-tool-cmsis-dap). Remember that Windows 8 and above do not require drivers.
|
||||
|
||||
<details>
|
||||
<summary>BluePill platformio.ini example</summary>
|
||||
|
||||
```
|
||||
[env:bluepill_f103c8]
|
||||
platform = ststm32
|
||||
board = bluepill_f103c8
|
||||
debug_tool = cmsis-dap
|
||||
upload_protocol = cmsis-dap
|
||||
```
|
||||
</details>
|
||||
68
applications/external/doom/README.md
vendored
@@ -1,68 +0,0 @@
|
||||
# Doom Flipper Zero edition
|
||||
|
||||
<div style="text-align:center"><img src="assets/logo_inv.png"/></div>
|
||||
|
||||
## Will it run Doom?
|
||||
As tradition goes, Doom is being ported to almost every possible embedded electronic device. Therefore I did an attempt to come up with something close to Doom and still compatible on the Flipper Zero's hardware.<br> This is not the actual Doom game but a port made from yet another Doom port to the Arduino Nano (https://github.com/daveruiz/doom-nano/). This port is basically a raycasting engine, using Doom sprites.<br>
|
||||
This version is very basic and might be improved over time.
|
||||
|
||||
## How to install on Flipper Zero
|
||||
During the porting process, minor changes were made to the workings (and build options) of the current firmware. These changes are documented here and are necessary in order to get a working firmware build that contains this Doom port.
|
||||
### Modifying the firmware & build options
|
||||
* In the `sites/cc.scons` add the following values to the `CCFLAGS` section:
|
||||
```
|
||||
...
|
||||
"-Wno-unused-parameter",
|
||||
"-Wno-type-limits",
|
||||
"-Wno-unused-variable",
|
||||
...
|
||||
```
|
||||
* In `applications/gui/canvas_i.h` comment out the following line:<br>
|
||||
`uint8_t* canvas_get_buffer(Canvas* canvas);` --> `//uint8_t* canvas_get_buffer(Canvas* canvas);`
|
||||
|
||||
* In `applications/gui/canvas.h` add the following lines:
|
||||
```
|
||||
uint8_t* canvas_get_buffer(Canvas* canvas);
|
||||
void canvas_draw_icon_bitmap(Canvas* canvas, uint8_t x, uint8_t y, int16_t w, int16_t h, const Icon* icon);
|
||||
```
|
||||
* In `applications/gui/canvas.c` add the following function:
|
||||
```
|
||||
void canvas_draw_icon_bitmap(Canvas* canvas, uint8_t x, uint8_t y, int16_t w, int16_t h, const Icon* icon){
|
||||
furi_assert(canvas);
|
||||
furi_assert(icon);
|
||||
|
||||
x += canvas->offset_x;
|
||||
y += canvas->offset_y;
|
||||
uint8_t* icon_data = NULL;
|
||||
furi_hal_compress_icon_decode(icon_get_data(icon), &icon_data);
|
||||
u8g2_DrawXBM(&canvas->fb, x, y, w, h, icon_data);
|
||||
}
|
||||
```
|
||||
|
||||
### Installing the plugin in the firmware
|
||||
* Make a folder called Doom in the applications folder. Add all the source files (also the compiled folder and it's files) in the Doom folder.
|
||||
* Make the `applications/meta/application.fam` look like the following:
|
||||
```
|
||||
App(
|
||||
appid="basic_plugins",
|
||||
name="Basic applications for plug-in menu",
|
||||
apptype=FlipperAppType.METAPACKAGE,
|
||||
provides=[
|
||||
...
|
||||
"doom_game",
|
||||
...
|
||||
|
||||
],
|
||||
)
|
||||
```
|
||||
|
||||
If all went well the only thing left to do is building the firmware and installing it to the Flipper.
|
||||
|
||||
## Screenshots
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
18
applications/external/dtmf_dolphin/README.md
vendored
@@ -1,18 +0,0 @@
|
||||

|
||||
|
||||
[Original Link](https://github.com/litui/dtmf_dolphin)
|
||||
|
||||
## DTMF Dolphin
|
||||
|
||||
DTMF (Dual-Tone Multi-Frequency) dialer, Bluebox, and Redbox.
|
||||
|
||||
Now in a release-ready state for both Dialer, Bluebox, and Redbox (US/UK) functionality!
|
||||
|
||||
Please note that using the current tone output method, the 2600 tone is scaled about 33 Hz higher than it should be. This is a limitation of the current sample rate.
|
||||
|
||||
### Educational Links:
|
||||
|
||||
* http://www.phrack.org/issues/25/7.html#article
|
||||
* https://en.wikipedia.org/wiki/Dual-tone_multi-frequency_signaling
|
||||
* https://en.wikipedia.org/wiki/Blue_box
|
||||
* https://en.wikipedia.org/wiki/Red_box_(phreaking)
|
||||
BIN
applications/external/dtmf_dolphin/pics/dialer.jpg
vendored
|
Before Width: | Height: | Size: 1.9 MiB |
7
applications/external/flashlight/README.md
vendored
@@ -1,7 +0,0 @@
|
||||
# Flashlight Plugin for Flipper Zero
|
||||
|
||||
Simple Flashlight special for @Svaarich by @xMasterX
|
||||
|
||||
Enables 3.3v on pin 7/C3 and leaves it on when you exit app
|
||||
|
||||
**Connect LED to (+ -> 7/C3) | (GND -> GND)**
|
||||
35
applications/external/flipfrid/README.md
vendored
@@ -1,35 +0,0 @@
|
||||
# Flipfrid
|
||||
|
||||
Basic EM4100 and HIDProx Fuzzer.
|
||||
|
||||
## Why
|
||||
|
||||
Flipfrid is a simple Rfid fuzzer using EM4100 protocol (125khz).
|
||||
Objective is to provide a simple to use fuzzer to test readers by emulating various cards.
|
||||
|
||||
- EM4100 cards use a 1 byte customer id and 4 bytes card id.
|
||||
- HIDProx cards use a 2 byte customer id and 3 byte card id.
|
||||
|
||||
## How
|
||||
|
||||
1) Select the Protocol with the left and right arrows
|
||||
2) Select the Mode with the up and down arrows
|
||||
|
||||
### Info
|
||||
|
||||
There are 2 Protocols:
|
||||
- EM4100
|
||||
- HIDProx
|
||||
|
||||
There are 4 modes:
|
||||
- Default Values: Try factory/default keys and emulate one after the other.
|
||||
- BF customer id: An iteration from 0X00 to 0XFF on the first byte.
|
||||
- Load Dump file: Load an existing dump (.rfid) generated by Flipperzero, select an index and bruteforce from 0X00 to 0XFF;
|
||||
- Uids list: Iterate over an input text file (one uid per line) and emulate one after the other.
|
||||
|
||||
|
||||
|
||||
|
||||
TODO :
|
||||
- blank screen on back press
|
||||
- Add second byte test to `BF customer id`
|
||||
44
applications/external/flipper_i2ctools/README.md
vendored
@@ -1,44 +0,0 @@
|
||||
# flipperzero-i2ctools
|
||||
|
||||
[Original link](https://github.com/NaejEL/flipperzero-i2ctools)
|
||||
Set of i2c tools for Flipper Zero
|
||||
|
||||

|
||||
|
||||
## Wiring
|
||||
|
||||
C0 -> SCL
|
||||
|
||||
C1 -> SDA
|
||||
|
||||
GND -> GND
|
||||
|
||||
>/!\ Target must use 3v3 logic levels. If you not sure use an i2c isolator like ISO1541
|
||||
|
||||
## Tools
|
||||
|
||||
### Scanner
|
||||
|
||||
Look for i2c peripherals adresses
|
||||
|
||||
### Sniffer
|
||||
|
||||
Spy i2c traffic
|
||||
|
||||
### Sender
|
||||
|
||||
Send command to i2c peripherals and read result
|
||||
|
||||
## TODO
|
||||
|
||||
- [ ] Read more than 2 bytes in sender mode
|
||||
- [ ] Add 10-bits adresses support
|
||||
- [ ] Test with rate > 100khz
|
||||
- [ ] Save records
|
||||
- [ ] Play from files
|
||||
- [ ] Kicad module
|
||||
- [ ] Improve UI
|
||||
- [ ] Refactor Event Management Code
|
||||
- [ ] Add Documentation
|
||||
- [ ] Remove max data size
|
||||
- [ ] Remove max frames read size
|
||||
BIN
applications/external/flipper_i2ctools/i2ctools.gif
vendored
|
Before Width: | Height: | Size: 2.5 MiB |
13
applications/external/game15/README.md
vendored
@@ -1,13 +0,0 @@
|
||||
|
||||
# Game "15" for Flipper Zero
|
||||
|
||||
[Original link](https://github.com/x27/flipperzero-game15)
|
||||
|
||||
Logic game [Wikipedia](https://en.wikipedia.org/wiki/15_puzzle)
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
17
applications/external/game_2048/README.md
vendored
@@ -1,17 +0,0 @@
|
||||
# "2048" game for Flipper Zero
|
||||
- play up to 65K
|
||||
- progress is saved on exit
|
||||
|
||||

|
||||

|
||||
|
||||
#### TODO:
|
||||
- add animations
|
||||
|
||||
#### Thanks to:
|
||||
- [DroomOne's FlappyBird](https://github.com/DroomOne/flipperzero-firmware/tree/dev/applications/flappy_bird)
|
||||
- [x27's "15" Game](https://github.com/x27/flipperzero-game15)
|
||||
|
||||
#### License
|
||||
[MIT](LICENSE)
|
||||
Copyright 2022 Eugene Kirzhanov
|
||||
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
@@ -1,3 +0,0 @@
|
||||
# flipperzero_GPIO_read
|
||||
|
||||
Plugin to read the GPIOs on the Flipper Zero.
|
||||
16
applications/external/gpio_reader_b/README.md
vendored
@@ -1,16 +0,0 @@
|
||||
# flipperzero-gpioreader
|
||||
|
||||

|
||||
|
||||
This is a fork of the `gpio` app built into the flipper, with added functionality to read GPIO inputs.
|
||||
|
||||
Supports pulling high or low.
|
||||
|
||||
Does not (yet) support analog reads.
|
||||
|
||||
Installation instructions (Linux):
|
||||
|
||||
- Clone the following repo: https://github.com/flipperdevices/flipperzero-firmware
|
||||
- Clone this repo into flipperzero-firmware/applications_user
|
||||
- Plug in your FlipperZero
|
||||
- Run `./fbt launch_app APPSRC=flipperzero-gpioreader` from within the flipperzero-firmware folder
|
||||
BIN
applications/external/gpio_reader_b/gpioreader.png
vendored
|
Before Width: | Height: | Size: 1.9 KiB |
34
applications/external/gps_nmea_uart/README.md
vendored
@@ -1,34 +0,0 @@
|
||||
# GPS for Flipper Zero
|
||||
|
||||
[Original link](https://github.com/ezod/flipperzero-gps)
|
||||
|
||||
[Adafruit Ultimate GPS Breakout].
|
||||
|
||||

|
||||
|
||||
Heavy lifting (NMEA parsing) provided by [minmea], which is included in this
|
||||
repository.
|
||||
|
||||
## Hardware Setup
|
||||
|
||||
Connect the GPS module to power and the USART using GPIO pins 9 (3.3V), 11
|
||||
(GND), 13 (TX), and 14 (RX), as appropriate.
|
||||
|
||||

|
||||
|
||||
|
||||
## Contributing
|
||||
|
||||
This project was a learning exercise and is more or less "complete" from my
|
||||
perspective, but I will happily accept pull requests that improve and enhance
|
||||
the functionality for others.
|
||||
|
||||
Currently, the app only parses RMC and GGA sentences, and displays a subset of
|
||||
the data that fits on the screen. The UART is also hard-coded to 9600 baud.
|
||||
These limitations are largely driven by the GPS module I have to work with. A
|
||||
more elaborate UI with scrolling or multiple screens, as well as a configurable
|
||||
baud rate, may be useful for other GPS modules.
|
||||
|
||||
[Adafruit Ultimate GPS Breakout]: https://www.adafruit.com/product/746
|
||||
[minmea]: https://github.com/kosma/minmea
|
||||
[flipperzero-firmware]: https://github.com/flipperdevices/flipperzero-firmware
|
||||
BIN
applications/external/gps_nmea_uart/ui.png
vendored
|
Before Width: | Height: | Size: 82 KiB |
BIN
applications/external/gps_nmea_uart/wiring.png
vendored
|
Before Width: | Height: | Size: 80 KiB |
21
applications/external/lightmeter/README.md
vendored
@@ -1,21 +0,0 @@
|
||||
# flipperzero-lightmeter
|
||||
|
||||
[Original link](https://github.com/oleksiikutuzov/flipperzero-lightmeter)
|
||||
|
||||
|
||||
<img src="images/framed_gui_main.png" width="500px">
|
||||
|
||||
## Wiring
|
||||
|
||||
```
|
||||
VCC -> 3.3V
|
||||
GND -> GND
|
||||
SCL -> C0
|
||||
SDA -> C1
|
||||
```
|
||||
|
||||
## TODO
|
||||
- [ ] Save settings to sd card
|
||||
|
||||
## References
|
||||
App inspired by [lightmeter](https://github.com/vpominchuk/lightmeter) project for Arduino by [vpominchuk](https://github.com/vpominchuk).
|
||||
@@ -1,2 +0,0 @@
|
||||
# flipperzero-BH1750
|
||||
BH1750 light sensor library for Flipper Zero
|
||||
23
applications/external/metronome/README.md
vendored
@@ -1,23 +0,0 @@
|
||||
# Metronome
|
||||
|
||||
[Original link](https://github.com/panki27/Metronome)
|
||||
|
||||
A metronome for the [Flipper Zero](https://flipperzero.one/) device. Goes along perfectly with my [BPM tapper](https://github.com/panki27/bpm-tapper).
|
||||
|
||||

|
||||
|
||||
## Features
|
||||
|
||||
- BPM adjustable, fine and coarse (hold pressed)
|
||||
- Selectable amount of beats per bar
|
||||
- Selectable note length
|
||||
- First beat is pronounced
|
||||
- Progress indicator
|
||||
- LED flashes accordingly
|
||||
- 3 different settings: Beep, Vibrate, Silent (push Down to change)
|
||||
|
||||
## Compiling
|
||||
|
||||
```
|
||||
./fbt firmware_metronome
|
||||
```
|
||||
20
applications/external/minesweeper/README.md
vendored
@@ -1,20 +0,0 @@
|
||||
# Minesweeper
|
||||
|
||||
[Original Link](https://github.com/panki27/minesweeper)
|
||||
|
||||
This is a Minesweeper implementation for the Flipper Zero device.
|
||||
|
||||

|
||||
|
||||
## Controls
|
||||
|
||||
- Arrow buttons to move
|
||||
- Push center button to open field
|
||||
- Hold center button to toggle flag
|
||||
- Push center button on an already open field that has the correct amount of flags surrounding it to auto-open the remaining ones (thanks @gelin!)
|
||||
|
||||
## Compiling
|
||||
|
||||
```
|
||||
./fbt firmware_minesweeper
|
||||
```
|
||||
@@ -1,19 +0,0 @@
|
||||
name: Build dev
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
build_dev:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Build
|
||||
uses: oleksiikutuzov/flipperzero-ufbt-action@v1
|
||||
with:
|
||||
channel: dev
|
||||
4
applications/external/musictracker/README.md
vendored
@@ -1,4 +0,0 @@
|
||||
# Flipper Zero music tracker
|
||||
-=-=- MVP Stage: minimum viable player -=-=-
|
||||
|
||||
[>Get latest build<](https://nightly.link/DrZlo13/flipper-zero-music-tracker/workflows/build_dev/master/zero_tracker.fap.zip)
|
||||
125
applications/external/nrf24scan/README.md
vendored
@@ -1,125 +0,0 @@
|
||||
# NRF24 scanner with logging and resend ability for Flipper Zero
|
||||
|
||||
An [NRF24](https://www.sparkfun.com/datasheets/Components/SMD/nRF24L01Pluss_Preliminary_Product_Specification_v1_0.pdf) driver for the [Flipper Zero](https://flipperzero.one/) device. The NRF24 is a popular line of 2.4GHz radio transceivers from Nordic Semiconductors.<br>
|
||||
NRF24L01+ Enhanced ShockBurst packet decoder example using Python: [nrf24_packet_decoder.py](https://raw.githubusercontent.com/vad7/nrf24scan/master/nrf24_packet_decoder.py)<br>
|
||||
<br>
|
||||
Flipper Zero FAP file: [Nrf24_Scanner.fap](https://raw.githubusercontent.com/vad7/nrf24scan/master/Nrf24_Scanner.fap)
|
||||
<br><br>
|
||||
___________________________________________________________________________
|
||||
<br>
|
||||
<b>Приложение для Flipper Zero, читающее эфир на радиомодулях nRF24L01.</b><br>
|
||||
Выбор пукта меню - стрелки вверх/вниз, стрелки влево/вправо либо изменют настройки либо управляют видом списка, кнопка ОК либо выбирает режим (короткое нажатие), либо выполняет дополнительное действие (длительное нажатие).<br><br>
|
||||
<img src="https://raw.githubusercontent.com/vad7/nrf24scan/master/Screenshot-1.png"><br>
|
||||
По умолчанию при запуске включается режим поиска (sniff) - ищутся все валидные пакеты с корректным заголовком и CRC.<br>
|
||||
Размер CRC и тип пакета (Enhanced ShockBurst или нет) задается. CRC может быть или 1 или 2 байта.<br>
|
||||
Так как пакеты читаются в RAW формате, то длина полезной нагрузки не может быть больше 23 байт, пакеты с большей длинной не будут пойманы.<br>
|
||||
В настройках задается минимальный размер нагрузки (payload)<br>
|
||||
После принятия, пакет сдвигается побитно и валидируется. Побитный сдвиг сильно увеличивает вероятность отлова пакета, но так же увеличивается количество мусорных пакетов.<br>
|
||||
Количество уникальных адресов запоминается (просмотр - стрелка вниз в режиме просмотра адресов)<br>
|
||||
После поиска можно переключиться в режим сканирования по найденным адресам или сканировать адрес конкретного пакета или группы адресов с различным LSB в адресе<br>
|
||||
<br>
|
||||
<img src="https://raw.githubusercontent.com/vad7/nrf24scan/master/Screenshot-6.png">
|
||||
<br>
|
||||
Адреса, которые попались дважды и более раз отображаются списком:<br>
|
||||
<img src="https://raw.githubusercontent.com/vad7/nrf24scan/master/Screenshot-7.png">
|
||||
<br><br>
|
||||
Изменение режима sniff/scan - стрелками на пункте Scan.<br><br>
|
||||
Режим сканирования (scan) - просто чтение пакетов по заданным в настройках мак адресам и виду пакета - ESB/DPL.<br>
|
||||
На начальном экране в режиме чтения можно загрузить файл настроек (по умолчанию загружается settings.txt из папки nrf24_scanner на SD карте).<br>
|
||||
В файле настройке задаются адреса (максимум 6) в шестнадцатеричном виде (старший байт - первый), длина адреса вычисляется по P0.<br>
|
||||
Остальные настройки можно поменять интерактивно<br>
|
||||
Настройки сохраняются длительным нажатием на ОК.<br><br>
|
||||
<b>Описание настроек:</b><br>
|
||||
Ch - номер канала.<br>
|
||||
Rate - скорость передачи данных<br>
|
||||
Next Ch time - через сколько секунд будет увеличен номер канала<br>
|
||||
Log - выбор режима авто сохраннения в файлы log-xx.txt. Yes - сохранять в новый файл при заполнении буфера в 99 записей, Append - добавлять в последний файл, Clear - только очистка буфера<br><br>
|
||||
В пунктах Ch, Rate, Next при нажатии OK меняются параметры связи:<br>
|
||||
ESB - Enhanced ShockBurst (включена автоотправка подтверждения получения пакета, работающий приемник тоже попытается это сделать, возможны коллизии)<br>
|
||||
DPL - Динамический пакет<br>
|
||||
CRC1/2 - Размер CRC в байтах<br>
|
||||
Payload - размер пакета в байтах<br>
|
||||
<br>
|
||||
<b>Просмотр принятых пакетов</b><br><br>
|
||||
<img src="https://raw.githubusercontent.com/vad7/nrf24scan/master/Screenshot-2.png">
|
||||
<br>
|
||||
В пункте "Start scan/sniff" можно выбрать стрелками сканировать и смотреть или просто смотреть (view).<br>
|
||||
Если в файле настройки было несколько адресов, то первая цифра - номер канала (pipe) от 0 до 5.<br>
|
||||
Стрелки - перемещение по списку и горизонтальное скролирование<br>
|
||||
Долгий OK - отправка пакета<br>
|
||||
OK - вход в режим просмотра адресов и включения декодирования заголовка ESB пакета и CRC.<br>
|
||||
При декодировании заголовка (PCF) - первые 2 цифры - длина пакета в hex или 33, если длина пакета фиксирована<br>
|
||||
3-я цифра - PID (2bit) << 1 + флаг NO_ACK<br>
|
||||
Если включен режим декодирования CRC, то по всему пакету ищется подходящая CRC и подчеркивается в списке, а так же вместо ":" выводится "=" после номера записи в буфере<br>
|
||||
<br>
|
||||
<img src="https://raw.githubusercontent.com/vad7/nrf24scan/master/Screenshot-3.png">
|
||||
<br>
|
||||
<img src="https://raw.githubusercontent.com/vad7/nrf24scan/master/Screenshot-4.png">
|
||||
<br>
|
||||
<img src="https://raw.githubusercontent.com/vad7/nrf24scan/master/Screenshot-5.png">
|
||||
<br>
|
||||
<br>
|
||||
Схема подключения модуля nRF24l01:<br>
|
||||
Big board:<br>
|
||||
<img src="https://raw.githubusercontent.com/vad7/nrf24scan/master/scheme.png">
|
||||
Gerber for full board (https://raw.githubusercontent.com/vad7/nrf24scan/master/Gerber_PCB_Flipper%20Zero%20nRF24%20board_v1_0.zip)<br>
|
||||
Easyeda source (https://oshwlab.com/vad7/flipper-zero-nrf24-board).
|
||||
<br><br>
|
||||
Mini board:<br>
|
||||
<img src="https://raw.githubusercontent.com/vad7/nRF24-Batch/main/Pics/NRF24_mini_3D.png">
|
||||
<br>
|
||||
<img src="https://raw.githubusercontent.com/vad7/nrf24scan/master/scheme2.png">
|
||||
<br>
|
||||
Gerber for mini board with 5V - 3.3V converter LM1117-3.3 (https://raw.githubusercontent.com/vad7/nrf24scan/master/Gerber_PCB_Flipper%20Zero%20nRF24%20board%20mini_v1_0.zip)<br>
|
||||
Easyeda source (https://oshwlab.com/vad7/flipper-zero-nrf24-board_copy).
|
||||
<br>
|
||||
<br>
|
||||
_________________________________________________________________________________
|
||||
<br>
|
||||
<br>
|
||||
Settings file (default addr.txt) format:<br>
|
||||
|
||||
Rate: 0/1/2 - rate in Mbps (=0.25/1/2)<br>
|
||||
Ch: 0..125 - default channel <br>
|
||||
ESB: 0/1 (1 - Enhanced ShockBurst) <br>
|
||||
DPL: 0/1 (1 - Dynamic Payload Length) <br>
|
||||
CRC: 0/1/2 (CRC length)<br>
|
||||
Payload: 1..32 (bytes) <br>
|
||||
P0: address pipe #0 in hex (max 5 bytes, LSB last)<br>
|
||||
P1: address pipe #1 in hex (max 5 bytes, LSB last)<br>
|
||||
P2: address pipe #2, LSB in hex (1 byte) <br>
|
||||
P3: address pipe #3, LSB in hex (1 byte) <br>
|
||||
P4: address pipe #4, LSB in hex (1 byte) <br>
|
||||
P5: address pipe #5, LSB in hex (1 byte) <br>
|
||||
captured data in raw format, first byte = address # 0..5, Payload len if DPL<br>
|
||||
... up to MAX_LOG_RECORDS-1<br>
|
||||
<br>
|
||||
In the list of the received:<br>
|
||||
Press OK - send the packet,<br>
|
||||
Long press OK - view addresses.<br>
|
||||
<br>
|
||||
Decode the Packet Control Field and check CRC (long press OK in the list and then press '<' / '>').<br>
|
||||
ESB (Enhanced Shockburst) option must be turned off.
|
||||
Press '>' to decode CRC.<br>
|
||||
1 - pipe #<br>
|
||||
2 - Payload length (for valide packet must be 1..20 or 33 hex)<br>
|
||||
3 - PID (2 bit) + NO_ACK (1 bit)<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
## PinOut from from NoComp/Frog
|
||||
<img src="https://media.discordapp.net/attachments/937479784726949900/994495234618687509/unknown.png?width=567&height=634">
|
||||
|
||||
# NRF24 pinout by UberGuidoZ
|
||||
2/A7 on FZ goes to MOSI/6 on nrf24l01<br>
|
||||
3/A6 on FZ goes to MISO/7 on nrf24l01<br>
|
||||
4/A4 on FZ goes to CSN/4 on nrf24l01<br>
|
||||
5/B3 on FZ goes to SCK/5 on nrf24l01<br>
|
||||
6/B2 on FZ goes to CE/3 on nrf24l01<br>
|
||||
8/GND on FZ goes to GND/1 on nrf24l01<br>
|
||||
9/3V3 on FZ goes to VCC/2 on nrf24l01<br>
|
||||
IRQ/8 is left disconnected on nrf24l01
|
||||

|
||||
If the nRF module is acting a bit flakey, try adding a capacitor to the vcc/gnd lines! I've not tried the Plus model so it may have a bigger need for a cap. Otherwise, I haven't had any major issues. Anything from a 3.3 uF to 10 uF should do. (Watch your positive/negative placement! Negative to ground.) I learned if you wanna get fancy, include a 0.1 uF cap in parallel. The 3.3 uF to 10 uF will respond to slow freq changes while the 0.1 uF will respond to the high freq switching spikes that the larger one cannot. That said, a single 10 uF will likely suffice for the Mousejack attack. ¯\\\_(ツ)_/¯
|
||||

|
||||
|
||||
BIN
applications/external/nrf24scan/Screenshot-1.png
vendored
|
Before Width: | Height: | Size: 2.3 KiB |
BIN
applications/external/nrf24scan/Screenshot-2.png
vendored
|
Before Width: | Height: | Size: 3.2 KiB |
BIN
applications/external/nrf24scan/Screenshot-3.png
vendored
|
Before Width: | Height: | Size: 2.0 KiB |
BIN
applications/external/nrf24scan/Screenshot-4.png
vendored
|
Before Width: | Height: | Size: 1.6 KiB |
BIN
applications/external/nrf24scan/Screenshot-5.png
vendored
|
Before Width: | Height: | Size: 7.3 KiB |
BIN
applications/external/nrf24scan/Screenshot-6.png
vendored
|
Before Width: | Height: | Size: 3.2 KiB |
BIN
applications/external/nrf24scan/Screenshot-7.png
vendored
|
Before Width: | Height: | Size: 1.9 KiB |
4
applications/external/ocarina/README.md
vendored
@@ -1,4 +0,0 @@
|
||||
# flipperzero-ocarina
|
||||
A basic Ocarina (of Time) for the Flipper Zero.
|
||||
|
||||
Controls are the same as the N64 version of the Ocarina of Time, the Ok button takes the place of the A button
|
||||
4
applications/external/passgen/README.md
vendored
@@ -1,4 +0,0 @@
|
||||
# flipper_passgen
|
||||
This is a simple Password Generator plugin (**fap**) for the [Flipper Zero](https://www.flipperzero.one).
|
||||
|
||||

|
||||
289
applications/external/protoview/README.md
vendored
@@ -1,289 +0,0 @@
|
||||
ProtoView is a digital signal detection, visualization, editing and reply tool for the [Flipper Zero](https://flipperzero.one/). The Flipper default application, called Subghz, is able to identify certain RF protocols, but when the exact protocol is not implemented (and there are many undocumented and unimplemented ones, such as the ones in use in TPMS systems, car keys and many others), the curious person is left wondering what the device is sending at all. Using ProtoView she or he can visualize the high and low pulses like in the example image below (showing a TPMS signal produced by a Renault tire):
|
||||
|
||||

|
||||
|
||||
This is often enough to make an initial idea about the encoding used
|
||||
and if the selected modulation is correct. For example, in the signal above
|
||||
you can see a set of regular pulses and gaps used for synchronization, and then
|
||||
a sequence of bits encoded in [Manchester](https://en.wikipedia.org/wiki/Manchester_code) line code. If you study these things for five minutes, you'll find yourself able to decode the bits with naked eyes.
|
||||
|
||||
## Decoding capabilities
|
||||
|
||||
Other than showing the raw signal, ProtoView is able to decode a few interesting protocols:
|
||||
|
||||
* TPMS sensors: Renault, Toyota, Schrader, Citroen, Ford.
|
||||
* Microchip HSC200/300/301 Keeloq protocol.
|
||||
* Oregon thermometer protocol 2.
|
||||
* PT2262, SC5262 based remotes.
|
||||
* ... more will be implemented soon, hopefully. Send PRs :)
|
||||
|
||||

|
||||
|
||||
The app implements a framework that makes adding and experimenting with new
|
||||
protocols very simple. Check the `protocols` directory to see how the
|
||||
API works, or read the full documentation at the end of this `README` file.
|
||||
The gist of it is that the decoder receives the signal already converted into
|
||||
a bitmap, where each bit represents a short pulse duration. Then there are
|
||||
functions to seek specific sync/preamble sequences inside the bitmap, to decode
|
||||
from different line codes, to compute checksums and so forth.
|
||||
|
||||
## Signals transmission capabilities
|
||||
|
||||
Once ProtoView decodes a given message, it is able to *resample* it
|
||||
in pulses and gaps of the theoretical duration, and send the signal again
|
||||
via the Flipper TX capabilities. The captured signal can be sent
|
||||
to different frequencies and modulations than the ones it was captured
|
||||
from.
|
||||
|
||||
For selected protocols, that implement the message creation methods,
|
||||
ProtoView is also able to edit the message received, modify fields,
|
||||
and finally re-detect the new produced signal and resend it. Signals
|
||||
can also be produced from scratch, by setting all the fields to appropriate
|
||||
values.
|
||||
|
||||
## A well-documented app for the Flipper
|
||||
|
||||
The secondary goal of ProtoView is to provide a well-documented application for the Flipper (even if ProtoView is a pretty atypical application: it doesn't make use of the standard widgets and other abstractions provided by the framework).
|
||||
Most apps dealing with the *subghz subsystem* of the Flipper (the abstraction used to work with the [CC1101 chip](https://www.ti.com/product/CC1101)) tend to be complicated and completely undocumented.
|
||||
Unfortunately, this is also true for the firmware of the device.
|
||||
It's a shame, because especially in the case of code that talks with hardware peripherals there are tons of assumptions and hard-gained lessons that can [only be captured by comments and are in the code only implicitly](http://antirez.com/news/124).
|
||||
|
||||
However, the Flipper firmware source code is well written even if it
|
||||
lacks comments and documentation (and sometimes makes use of abstractions more convoluted than needed), so it is possible to make some ideas of how things work just grepping inside. In order to develop this application, I ended reading most parts of the firmware of the device.
|
||||
|
||||
## Detection algorithm
|
||||
|
||||
In order to detect and show unknown signals, the application attempts to understand if the samples obtained by the Flipper API (a series of pulses that are high
|
||||
or low, and with different duration in microseconds) look like belonging to
|
||||
a legitimate signal, and aren't just noise.
|
||||
|
||||
We can't make assumptions about
|
||||
the encoding and the data rate of the communication, so we use a simple
|
||||
but relatively effective algorithm. As we check the signal, we try to detect
|
||||
long parts of it that are composed of pulses roughly classifiable into
|
||||
a maximum of three different duration classes, plus or minus a given percentage.
|
||||
Most encodings are somewhat self-clocked, so they tend to have just two or
|
||||
three classes of pulse lengths.
|
||||
|
||||
However, often, pulses of the same theoretical
|
||||
length have slightly different lengths in the case of high and low level
|
||||
(RF on or off), so the detector classifies them separately for robustness.
|
||||
|
||||
Once the raw signal is detected, the registered protocol decoders are called
|
||||
against it, in the hope some of the decoders will make sense of the signal.
|
||||
|
||||
# Usage
|
||||
|
||||
In the main screen, the application shows the longest coherent signal detected so far. The user can switch to other views pressing the LEFT and RIGHT keys. The BACK key will return back to the main screen. Long pressing BACK will quit the application.
|
||||
|
||||
## Main raw signal screen
|
||||
|
||||
* A long press of the OK button resets the current signal, in order to capture a new one.
|
||||
* The UP and DOWN buttons change the scale. Default is 100us per pixel, but it will be adapted to the signal just captured.
|
||||
* A long press of the LEFT and RIGHT keys will pan the signal, to see what was transmitted before/after the current shown range.
|
||||
* A short press to OK will recenter the signal and set the scale back to the default for the specific pulse duration detected.
|
||||
|
||||
Under the detected sequence, you will see a small triangle marking a
|
||||
specific sample. This mark means that the sequence looked coherent up
|
||||
to that point, and starting from there it could be just noise. However the
|
||||
signal decoders will not get just up to this point, but will get more:
|
||||
sometimes the low level detector can't make sense of a signal that the
|
||||
protocol-specific decoder can understand fully.
|
||||
|
||||
If the protocol is decoded, the bottom-left corner of the screen
|
||||
will show the name of the protocol, and going in the next screen
|
||||
with the right arrow will show information about the decoded signal.
|
||||
|
||||
In the bottom-right corner the application displays an amount of time
|
||||
in microseconds. This is the average length of the shortest pulse length
|
||||
detected among the three classes. Usually the *data rate* of the protocol
|
||||
is something like `1000000/this-number*2`, but it depends on the encoding
|
||||
and could actually be `1000000/this-number*N` with `N > 2` (here 1000000
|
||||
is the number of microseconds in one second, and N is the number of clock
|
||||
cycles needed to represent a bit).
|
||||
|
||||
## Info screen
|
||||
|
||||
If a signal was detected, the info view will show the details about the signal. If the signal has more data that a single screen can fit, pressing OK will show the next fields. Pressing DOWN will go to a sub-view with an oscilloscope-alike representation of the signal, from there you can:
|
||||
|
||||
1. Resend the signal, by pressing OK.
|
||||
2. Save the signal as `.sub` file, by long pressing OK.
|
||||
|
||||
When resending, you can select a different frequency and modulation if you
|
||||
wish.
|
||||
|
||||
## Frequency and modulation screen
|
||||
|
||||
In this view you can just set the frequency and modulation you want to use.
|
||||
There are special modulations for TPMS signals: they need an higher data
|
||||
rate.
|
||||
|
||||
* Many cheap remotes (gate openers, remotes, ...) are on the 433.92Mhz or nearby and use OOK modulation.
|
||||
* Weather stations are often too in the 433.92Mhz OOK.
|
||||
* For car keys, try 433.92 OOK650 and 868.35 Mhz in OOK or 2FSK.
|
||||
* For TPMS try 433.92 in TPMS1 or TPMS2 modulations (FSK and OOK custom modulations optimized for these signals, that have a relatively high data rate).
|
||||
|
||||
## Signal creator
|
||||
|
||||
In this view, you can do two things:
|
||||
|
||||
1. Select one of the protocols supporting message creation, and create a signal from scratch.
|
||||
2. If there is already a detected signal, you can modify the signal.
|
||||
|
||||
This is how it works:
|
||||
|
||||
1. Select one of the protocols (the one of the currently detected signal will be already provided as default, if any, and if it supports message creation).
|
||||
2. Fill the fields. Use LEFT and RIGHT to change the values of integers, or just press OK and enter the new value with the Fliper keyboard widget.
|
||||
3. When you are done, long press OK to build the message. Then press BACK in order to see it.
|
||||
4. Go to the INFO view, and then DOWN to the signal sending/saving subview in order to send or save it.
|
||||
|
||||
## Direct sampling screen
|
||||
|
||||
This final screen shows in real time the high and low level that the Flipper
|
||||
RF chip, the CC1101, is receiving. This will makes very easy to understand
|
||||
if a given frequency is targeted by something other than noise. This mode is
|
||||
fun to watch, resembling an old CRT TV set.
|
||||
|
||||
# Installing the app from source
|
||||
|
||||
* Download the Flipper Zero dev kit and build it:
|
||||
```
|
||||
mkdir -p ~/flipperZero/official/
|
||||
cd ~/flipperZero/official/
|
||||
git clone --recursive https://github.com/flipperdevices/flipperzero-firmware.git ./
|
||||
./fbt
|
||||
```
|
||||
* Copy this application folder in `official/applications_user`.
|
||||
* Connect your Flipper via USB.
|
||||
* Build and install with: `./fbt launch_app APPSRC=protoview`.
|
||||
|
||||
# Installing the binary file (no build needed)
|
||||
|
||||
Drop the `protoview.fap` file you can find in the `binaries` folder into the
|
||||
following Flipper Zero location:
|
||||
|
||||
/ext/apps/Tools
|
||||
|
||||
The `ext` part means that we are in the SD card. So if you don't want
|
||||
to use the Android (or other) application to upload the file,
|
||||
you can just take out the SD card, insert it in your computer,
|
||||
copy the fine into `apps/Tools`, and that's it.
|
||||
|
||||
# Protocols decoders API
|
||||
|
||||
Writing a protocol decoder is not hard, and requires to write three
|
||||
different methods.
|
||||
|
||||
1. `decode()`. This is mandatory, and is used in order to turn a known signal into a set of fields containing certain informations. For instance for a thermometer sending data via RF, a raw message will be decoded into fields like temperature, humidity, station ID and so forth.
|
||||
2. `get_fields()`. Optional, only needed if the protocol supports creating and editing signals. This method just returns the fields names, types and defaults. The app will use this list in order to allow the user to set values. The populated fields will be passed to the `build_message()` method later.
|
||||
3. `build_message()`. This method gets a set of fields representing the parameters of the protocol, as set by the user, and will create a low level signal composed of pulses and gaps of specific durations.
|
||||
|
||||
## `decode()` method
|
||||
|
||||
bool decode(uint8_t *bits, uint32_t numbytes, uint32_t numbits, ProtoViewMsgInfo *info);
|
||||
|
||||
The method gets a bitmap `bits` long `numbytes` bytes but actually containing `bumbits` valid bits. Each bit represents a pulse of gap of the duration of the shortest time detected in the protocol (this is often called *te*, in the RF protocols jargon). So, for instance, if a signal is composed of pulses and gaps of around 500 and 1000 microseconds, each bit in the bitmap will represent 500 microseconds.
|
||||
|
||||
Continuing with the example above, if the received signal was composed of a 1000 microseconds gap, then a 500 microsecond pulse, then a 500 microsecond gap and finally a 1000 microseconds pulse, its bitmap representation will be:
|
||||
|
||||
001011
|
||||
|
||||
To access the bitmap, the decoder can use the following API:
|
||||
|
||||
bool bitmap_get(uint8_t *b, uint32_t blen, uint32_t bitpos);
|
||||
|
||||
The `blen` parameter will be set to what the decode method gets
|
||||
as `numbytes`, and is used to prevent overflows. This way if `bitpos`
|
||||
is out of range, nothing bad happens.
|
||||
|
||||
There are function to match and seek specific patterns inside the signal:
|
||||
|
||||
bool bitmap_match_bits(uint8_t *b, uint32_t blen, uint32_t bitpos, const char *bits);
|
||||
uint32_t bitmap_seek_bits(uint8_t *b, uint32_t blen, uint32_t startpos, uint32_t maxbits, const char *bits);
|
||||
|
||||
Finally, there are functions to convert from different line codes:
|
||||
|
||||
uint32_t convert_from_line_code(uint8_t *buf, uint64_t buflen, uint8_t *bits, uint32_t len, uint32_t offset, const char *zero_pattern, const char *one_pattern);
|
||||
uint32_t convert_from_diff_manchester(uint8_t *buf, uint64_t buflen, uint8_t *bits, uint32_t len, uint32_t off, bool previous);
|
||||
|
||||
This method can also access the short pulse duration by inspecting the
|
||||
`info->short_pulse_dur` field (in microseconds).
|
||||
|
||||
Please check the `b4b1.c` file for an easy to understand example of the decoder implementation.
|
||||
|
||||
If the decoder actually detected a message, it will return `true` and will return a set of fields, like thata:
|
||||
|
||||
fieldset_add_bytes(info->fieldset,"id",d,5);
|
||||
fieldset_add_uint(info->fieldset,"button",d[2]&0xf,4);
|
||||
|
||||
## `get_fields()` method.
|
||||
|
||||
static void get_fields(ProtoViewFieldSet *fieldset);
|
||||
|
||||
This method will be basically a copy of the final part of `decode()`, as
|
||||
it also needs to return the set of fields this protocol is composed of.
|
||||
However instead of returning the values of an actual decoded message, it
|
||||
will just provide their default values for the signal creator view.
|
||||
|
||||
Note that the `build_message()` method is guaranteed to receive the
|
||||
same exact fields in the same exact order.
|
||||
|
||||
## `build_message()` method.
|
||||
|
||||
void build_message(RawSamplesBuffer *samples, ProtoViewFieldSet *fs);
|
||||
|
||||
This method is responsible of creating a signal from scratch, by
|
||||
appending gaps and pulses of the specific duration into `samples`
|
||||
using the following API:
|
||||
|
||||
raw_samples_add(RawSamplesBuffer *samples, bool level, uint32_t duration);
|
||||
|
||||
Level can be true (pules) or false (gap). Duration is in microseconds.
|
||||
The method receives a set of fields in `fs`. Each field is accessible
|
||||
directly accessing `fs->fields[... field index ...]`, where the field
|
||||
index is 0, 1, 2, ... in the same order as `get_fields()` returned the
|
||||
fields.
|
||||
|
||||
For now, you can access the fields in the raw way, by getting the
|
||||
values directly from the data structure representing each field:
|
||||
|
||||
```
|
||||
typedef struct {
|
||||
ProtoViewFieldType type;
|
||||
uint32_t len; // Depends on type:
|
||||
// Bits for integers (signed,unsigned,binary,hex).
|
||||
// Number of characters for strings.
|
||||
// Number of nibbles for bytes (1 for each 4 bits).
|
||||
// Number of digits after dot for floats.
|
||||
char *name; // Field name.
|
||||
union {
|
||||
char *str; // String type.
|
||||
int64_t value; // Signed integer type.
|
||||
uint64_t uvalue; // Unsigned integer type.
|
||||
uint8_t *bytes; // Raw bytes type.
|
||||
float fvalue; // Float type.
|
||||
};
|
||||
} ProtoViewField;
|
||||
|
||||
```
|
||||
|
||||
However later the app will likely provide a set of macros to do it
|
||||
in a more future-proof way.
|
||||
|
||||
# License
|
||||
|
||||
The code is released under the BSD license.
|
||||
|
||||
# Disclaimer
|
||||
|
||||
This application is only provided as an educational tool. The author is not liable in case the application is used to reverse engineer protocols protected by IP or for any other illegal purpose.
|
||||
|
||||
# Credits
|
||||
|
||||
A big thank you to the RTL433 author, [Benjamin Larsson](https://github.com/merbanan). I used the code and tools he developed in many ways:
|
||||
* To capture TPMS data with rtl433 and save to a file, to later play the IQ files and speedup the development.
|
||||
* As a sourve of documentation for protocols.
|
||||
* As an awesome way to visualize and understand protocols, via [these great web tools](https://triq.org/).
|
||||
* To have tons of fun with RTLSDR in general, now and in the past.
|
||||
|
||||
The application icon was designed by Stefano Liuzzo.
|
||||
|
Before Width: | Height: | Size: 84 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 63 KiB |
38
applications/external/rc2014_coleco/README.md
vendored
@@ -1,38 +0,0 @@
|
||||
# RC2014 ColecoVision Controller for Flipper Zero
|
||||
|
||||
A Flipper Zero application and [RC2014] module allowing the Flipper to be used as a controller for ColecoVision games on
|
||||
the [RC2014].
|
||||
|
||||

|
||||
|
||||
## Running ColecoVision Games on the RC2014
|
||||
|
||||
A full tutorial is out of scope here, but briefly, you will need a [RC2014] with J. B. Langston's [TMS9918A Video Card]
|
||||
and [SN76489 Sound Card], as well as some way to launch ColecoVision ROMs.
|
||||
|
||||
Note that if you're using the standard pageable ROM module (e.g. if you're using the stock Pro kit), you will need to
|
||||
[modify it](https://github.com/jblang/TMS9918A/issues/12) in order for the TMS9918A module to work on the ColecoVision
|
||||
port addresses.
|
||||
|
||||
## Hardware Setup
|
||||
|
||||
The [interface](interface) directory contains Eagle schematics for a RC2014 module that handles the controller port
|
||||
addressing for two players, breaking out the 8 data line inputs as well as the mode select line. This can actually be
|
||||
used for different controller implementations and is slightly more flexible than the actual [ColecoVision] spec.
|
||||
|
||||
To use this with the Flipper Zero and this application, a GPIO board is needed to provide hardware multiplexing for the
|
||||
data lines. A schematic for the GPIO board will be added to this repository soon.
|
||||
|
||||
## Building the FAP
|
||||
|
||||
1. Clone the [flipperzero-firmware] repository.
|
||||
2. Create a symbolic link in `applications_user` named `coleco`, pointing to this repository.
|
||||
3. Compile with `./fbt fap_coleco`.
|
||||
4. Copy `build/f7-firmware-D/.extapps/coleco.fap` to `apps/Misc` on the SD card (directly or using [qFlipper]).
|
||||
|
||||
[RC2014]: https://rc2014.co.uk/
|
||||
[TMS9918A Video Card]: https://github.com/jblang/TMS9918A
|
||||
[SN76489 Sound Card]: https://github.com/jblang/SN76489
|
||||
[ColecoVision]: http://www.atarihq.com/danb/files/CV-Tech.txt
|
||||
[flipperzero-firmware]: https://github.com/flipperdevices/flipperzero-firmware
|
||||
[qFlipper]: https://flipperzero.one/update
|
||||
BIN
applications/external/rc2014_coleco/ui.png
vendored
|
Before Width: | Height: | Size: 90 KiB |
@@ -1,13 +0,0 @@
|
||||
# Rubik's Cube Scrambler FAP
|
||||
|
||||
## Where to start?
|
||||
Install the .fap file and put it in your apps folder
|
||||
|
||||
## What does what?
|
||||
The On/Off button toggles the vibration notification on and off. The "New" button generates a new scramble. The scramble letters correspond with the following moves: R = Right, L = Left, U = Up, D = Down, F = Front, B = Back. The number after the letter indicates how many times to turn that face. For example, R2 means to turn the right face twice. The ' symbol indicates a counter-clockwise turn. For example, R' means to turn the right face counter-clockwise once.
|
||||
|
||||
<img src="assets/1.png">
|
||||
|
||||
# A special thanks to Tanish for their c scrambler example 🙏
|
||||
https://github.com/TanishBhongade/RubiksCubeScrambler-C/
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
This utility can convert nofeletru's UsbAsp-flash's chiplist.xml to C array
|
||||
|
||||
Usage:
|
||||
```bash
|
||||
./chiplist_convert.py chiplist/chiplist.xml
|
||||
mv spi_mem_chip_arr.c ../lib/spi/spi_mem_chip_arr.c
|
||||
```
|
||||
52
applications/external/swd_probe/.gitignore
vendored
@@ -1,52 +0,0 @@
|
||||
# Prerequisites
|
||||
*.d
|
||||
|
||||
# Object files
|
||||
*.o
|
||||
*.ko
|
||||
*.obj
|
||||
*.elf
|
||||
|
||||
# Linker output
|
||||
*.ilk
|
||||
*.map
|
||||
*.exp
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Libraries
|
||||
*.lib
|
||||
*.a
|
||||
*.la
|
||||
*.lo
|
||||
|
||||
# Shared objects (inc. Windows DLLs)
|
||||
*.dll
|
||||
*.so
|
||||
*.so.*
|
||||
*.dylib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
*.i*86
|
||||
*.x86_64
|
||||
*.hex
|
||||
|
||||
# Debug files
|
||||
*.dSYM/
|
||||
*.su
|
||||
*.idb
|
||||
*.pdb
|
||||
|
||||
# Kernel Module Compile Results
|
||||
*.mod*
|
||||
*.cmd
|
||||
.tmp_versions/
|
||||
modules.order
|
||||
Module.symvers
|
||||
Mkfile.old
|
||||
dkms.conf
|
||||
17
applications/external/swd_probe/README.md
vendored
@@ -1,17 +0,0 @@
|
||||
# ARM SWD (Single Wire Debug) Probe
|
||||
|
||||
Modern microcontrollers have support for the two wire debug interface SWD, which makes wiring a lot simpler.
|
||||
When reverse engineering, finding these two pins is a los easier than with JTAG, where you had to wire up twice or more pins. However, finding the two pins is still a bit of work, which gets simplified even more with this application.
|
||||
|
||||
This application tries to detect a valid SWD response on the wires you have picked and beeps when you have found the correct pins, showing the detected ID register and, more important, the SWD pinout. It doesn't matter which two pins you choose, just pick any two from the GPIOs on the breakout header.
|
||||
|
||||
To achieve this, the application sends packets and scans the response on all pins and elaborates the pins within a few retries. Using some kind of bisect pattern reduces this number to a hand full of tries, yielding in a seemingly instant detection.
|
||||
|
||||
For the user it is as simple as a continuity tester - wire up your two test needles (or accupuncture needles), connect the obvious GND pin and probe all test pads.
|
||||
Now it depends on your bisect capabilities finding all pad combinations, how long it will take this time.
|
||||
|
||||
https://cdn.discordapp.com/attachments/954430078882816021/1071603366741938176/20230205_022641.mp4
|
||||
|
||||
https://cdn.discordapp.com/attachments/1071712925171056690/1072306469057347594/qFlipper_2023-02-07_01-01-24.mp4
|
||||
|
||||
Discussion thread: https://discord.com/channels/740930220399525928/1071712925171056690
|
||||
64
applications/external/tama_p1/tamalib/README.md
vendored
@@ -1,64 +0,0 @@
|
||||
# TamaLIB - A hardware agnostic Tamagotchi P1 emulation library
|
||||
|
||||
|
||||
## Synopsis
|
||||
|
||||
TamaLib is a hardware agnostic Tamagotchi P1 emulation library built from scratch. It is self-contained and aims at running on any platform powerful enough, from microcontrollers (MCUs) to desktop computers, thus spreading virtual life across the digital world.
|
||||
|
||||
So far, it has been successfully implemented on different platforms:
|
||||
- Desktop computers (check out [TamaTool](https://github.com/jcrona/tamatool/) for more information)
|
||||
- STM32F072 MCU based board (check out [MCUGotchi](https://github.com/jcrona/mcugotchi/) for more information).
|
||||
- OpenTama which is an STM32L072 MCU based board (check out [OpenTama](https://github.com/Sparkr-tech/opentama) and [MCUGotchi](https://github.com/jcrona/mcugotchi/) for more information).
|
||||
- Arduino UNO (check out [ArduinoGotchi](https://github.com/GaryZ88/ArduinoGotchi/) for more information).
|
||||
|
||||
## Importing TamaLIB
|
||||
|
||||
TamaLIB cannot be used as is. In order to create life on a specific target, you need to import all TamaLIB related __.c__ and __.h__ files in your project (for instance in a __lib__ subfolder), to create a __hal_types.h__ file using the template provided and to implement the __hal_t__ structure, that will act as an abstraction layer between TamaLIB and your OS or SDK (detailed information can be found in __hal.h__). This abstraction layer basically connects TamaLIB to your target's buttons, clock, audio and screen, while also defining the C types that TamaLIB should use to represent 4-bit, 5-bit, 8-bit, 12-bit, 13-bit and 32-bit variables. Once done, you will be able to call the TamaLIB API from your project.
|
||||
|
||||
|
||||
## Using the TamaLIB API
|
||||
|
||||
Basically:
|
||||
```
|
||||
/* ... */
|
||||
|
||||
/* Register the HAL */
|
||||
tamalib_register_hal(&my_hal);
|
||||
|
||||
/* ... */
|
||||
|
||||
/* Initialize TamaLIB */
|
||||
tamalib_init(my_program, my_breakpoints, 1000000); // my_breakpoints can be NULL, 1000000 means that timestamps will be expressed in us
|
||||
|
||||
/* ... */
|
||||
|
||||
/* Enter TamaLIB's loop */
|
||||
tamalib_mainloop();
|
||||
|
||||
/* ... */
|
||||
|
||||
/* Release TamaLIB */
|
||||
tamalib_release();
|
||||
|
||||
/* ... */
|
||||
```
|
||||
Your main project should then forward any button input to TamaLIB using the `tamalib_set_button()` function.
|
||||
|
||||
As an alternative to `tamalib_mainloop()`, you can call `tamalib_step()` directly if your execution flow requires something more complex than a simple mainloop. In that case, TamaLIB will neither call the HAL `handler()` function, nor the HAL `update_screen()` function by itslef.
|
||||
|
||||
|
||||
## License
|
||||
|
||||
TamaLIB is distributed under the GPLv2 license. See the LICENSE file for more information.
|
||||
|
||||
|
||||
## Hardware information
|
||||
|
||||
The Tamagotchi P1 is based on an
|
||||
[E0C6S46 Epson MCU](https://download.epson-europe.com/pub/electronics-de/asmic/4bit/62family/technicalmanual/tm_6s46.pdf),
|
||||
and runs at 32,768 kHz. Its LCD is 32x16 B/W pixels, with 8 icons.
|
||||
To my knowledge, the ROM available online has been extracted from a high-res picture of a die. The ROM mask was clear enough to be optically read. The pictures can be seen [there](https://siliconpr0n.org/map/bandai/tamagotchi-v1/) (thx asterick for the link !).
|
||||
I would love to see the same work done on a P2 and add support for it in TamaLIB/TamaTool !
|
||||
|
||||
__
|
||||
Copyright (C) 2021 Jean-Christophe Rona
|
||||
9
applications/external/text_viewer/README.md
vendored
@@ -1,9 +0,0 @@
|
||||
# flipper-zero-text-viewer
|
||||
|
||||
Text Viewer application for Flipper Zero!
|
||||
|
||||
A fork with a few changes from [QTRoS' hex viewer](https://github.com/QtRoS/flipper-zero-hex-viewer) to just display text without any hex byte representation
|
||||
|
||||

|
||||
|
||||
[Link to FAP](https://github.com/kyhwana/latest_flipper_zero_apps/raw/main/text_viewer.fap)
|
||||
|
Before Width: | Height: | Size: 12 KiB |
78
applications/external/timelapse/README.md
vendored
@@ -1,78 +0,0 @@
|
||||
|
||||
# zeitraffer
|
||||
|
||||
[](https://github.com/theageoflove/flipperzero-zeitraffer/actions/workflows/build.yml)
|
||||
|
||||
english version [below](#eng)
|
||||
|
||||
|
||||
Blog: [theageoflove.ru](https://theageoflove.ru)
|
||||
|
||||
TG: [t.me/scuko_bled](https://t.me/scuko_bled)
|
||||
|
||||
|
||||

|
||||
Видео работы: https://youtu.be/VPSpRLJXYAc
|
||||
|
||||
Готовый фап под последнюю релизную прошивку [можно скачать здесь](https://nightly.link/theageoflove/flipperzero-zeitraffer/workflows/build/main/zeitraffer.fap.zip).
|
||||
|
||||
Я ненастоящий сварщик, не обессудьте. Делал для своей Sony DSLR A100, подходит для любых камер, поддерживающих проводной пульт с тремя контактами.
|
||||
|
||||
Основано на хелловорлде https://github.com/zmactep/flipperzero-hello-world
|
||||
|
||||
### Управление:
|
||||
|
||||
- **вверх-вниз** - время.
|
||||
- **влево-вправо** - количество кадров
|
||||
|
||||
0 кадров - бесконечный режим, -1 кадров - BULB
|
||||
- **зажатие стрелок** - ±10 кадров/секунд
|
||||
- **ОК** - пуск/пауза
|
||||
- Длинное нажатие **ОК** - включить/выключить подсветку
|
||||
- **назад** - сброс
|
||||
- длинное нажатие **назад** - выход
|
||||
|
||||
При работающем таймере блокируются все кнопки кроме ОК.
|
||||
|
||||
При запуске даётся три секунды на отскочить.
|
||||
|
||||
## Чо надо
|
||||
- две оптопары типа EL817C
|
||||
- кусок гребёнки на три пина
|
||||
- немного провода
|
||||
- термоусадка
|
||||
- разъём пульта от камеры. Где взять или из чего сделать - думайте
|
||||
|
||||
## Как собрать
|
||||
Берём оптопары, соединяем по схеме.
|
||||

|
||||
Где какой пин у камеры, можно узнать например тут: https://www.doc-diy.net/photo/remote_pinout/
|
||||
|
||||
# <a name="eng"></a>English
|
||||
Simple timelapse app for Flipper Zero.
|
||||
|
||||
[Get latest release](https://nightly.link/theageoflove/flipperzero-zeitraffer/workflows/build/main/zeitraffer.fap.zip)
|
||||
|
||||
based on https://github.com/zmactep/flipperzero-hello-world
|
||||
|
||||
### Control:
|
||||
- Up and down - time.
|
||||
- Left and right - number of frames
|
||||
- Long press arrows - ±10 frames/seconds
|
||||
- OK - start/pause
|
||||
- Long press OK - turn on/off the backlight
|
||||
- Back - reset
|
||||
- Long press back - exit
|
||||
|
||||
When the timer is running, all buttons are blocked except OK.
|
||||
|
||||
## What you need:
|
||||
- two EL817C optocouplers
|
||||
- pin header connector 1x3 2,54mm male
|
||||
- some wire
|
||||
- heat shrink
|
||||
- camera remote connector
|
||||
## How to assemble
|
||||
Take optocouplers, connect according to the scheme.
|
||||

|
||||
Camera pinout can be found here: https://www.doc-diy.net/photo/remote_pinout/
|
||||
30
applications/external/tuning_fork/README.md
vendored
@@ -1,30 +0,0 @@
|
||||
# Tuning Fork
|
||||
|
||||
Inspired by [Metronome](https://github.com/panki27/Metronome)
|
||||
|
||||
A tuning fork for the [Flipper Zero](https://flipperzero.one/) device.
|
||||
Allows to play different notes in different pitches.
|
||||
|
||||

|
||||
|
||||
## Features
|
||||
- Tuning forks (440Hz, 432Hz, etc.)
|
||||
- Scientific pitch (..., 256Hz, 512Hz, 1024Hz, ...)
|
||||
- Guitar Standard (6 strings)
|
||||
- Guitar Drop D (6 strings)
|
||||
- Guitar D (6 strings)
|
||||
- Guitar Drop C (6 strings)
|
||||
- Guitar Standard (7 strings)
|
||||
- Bass Standard (4 strings)
|
||||
- Bass Standard Tenor (4 strings)
|
||||
- Bass Standard (5 strings)
|
||||
- Bass Standard Tenor (5 strings)
|
||||
- Bass Drop D (4 strings)
|
||||
- Bass D (4 strings)
|
||||
- Bass Drop A (5 strings)
|
||||
|
||||
## Compiling
|
||||
|
||||
```
|
||||
./fbt firmware_tuning_fork
|
||||
```
|
||||
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 89 KiB |
45
applications/external/uart_terminal/README.md
vendored
@@ -1,45 +0,0 @@
|
||||
# UART Terminal for Flipper Zero
|
||||
[Flipper Zero](https://flipperzero.one/) app to control various devices via UART interface.
|
||||
|
||||
## Capabilities
|
||||
- Read log and command output by uart
|
||||
- Send commands by uart
|
||||
- Set baud rate
|
||||
- Fast commands
|
||||
|
||||
## Connecting
|
||||
| Flipper Zero pin | UART interface |
|
||||
| ---------------- | --------------- |
|
||||
| 13 TX | RX |
|
||||
| 14 RX | TX |
|
||||
|8, 18 GND | GND |
|
||||
|
||||
Info: If possible, do not power your devices from 3V3 (pin 9) Flipper Zero. It does not support hot plugging.
|
||||
|
||||
## Keyboard
|
||||
UART_terminal uses its own special keyboard for work, which has all the symbols necessary for working in the console.
|
||||
|
||||
To accommodate more characters on a small display, some characters are called up by holding.
|
||||
|
||||

|
||||
|
||||
|
||||
## How to install
|
||||
Copy the contents of the repository to the applications_user/uart_terminal folder Flipper Zero firmware and build app with the command ./fbt fap_uart_terminal.
|
||||
|
||||
Or use the tool [uFBT](https://github.com/flipperdevices/flipperzero-ufbt) for building applications for Flipper Zero.
|
||||
|
||||
## How it works
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
## INFO:
|
||||
|
||||
~70% of the source code is taken from the [Wifi Marauder](https://github.com/0xchocolate/flipperzero-firmware-with-wifi-marauder-companion) project. Many thanks to the developers of the Wifi Marauder project.
|
||||
24
applications/external/unitemp/README.md
vendored
@@ -1,24 +0,0 @@
|
||||

|
||||
# Unitemp - Universal temperature sensor reader
|
||||
[](https://github.com/quen0n/unitemp-flipperzero/releases/)
|
||||
[](https://github.com/quen0n/unitemp-flipperzero/blob/dev/LICENSE.md)
|
||||
[](https://github.com/quen0n/unitemp-flipperzero/actions/workflows/build_dev.yml)
|
||||
[Flipper Zero](https://flipperzero.one/) application for reading temperature, humidity and pressure sensors like a DHT11/22, DS18B20, BMP280, HTU21 and more.
|
||||
## List of supported sensors
|
||||

|
||||
|
||||
## Installation
|
||||
1) Download [latest version](https://cloud.quenon.ru/index.php/s/h98rT9UnaOL4wxR/download?path=%2F&files=unitemp-latest.fap)
|
||||
2) Copy `unitemp-latest.fap` to `SD card/apps/GPIO` with qFlipper or mobile application
|
||||
3) Open application on your Flipper: `Applications->GPIO->Temp sensors reader`
|
||||
Note: If you get the message "API version mismatch" after updating the firmware, download and install Unitemp again
|
||||
## Need help? Discussions?
|
||||
Join the discussion, ask a question or just send a photo of the flipper with sensors to [Discord](https://discord.com/channels/740930220399525928/1056727938747351060). [Invite link](https://discord.com/invite/flipper)
|
||||
## Gratitudes
|
||||
Thanks to [@Svaarich](https://github.com/Svaarich) for the UI design and to the Unleashed firmware community for sensors testing and feedbacks.
|
||||
|
||||
## Some community photos
|
||||

|
||||

|
||||

|
||||

|
||||
@@ -1,3 +0,0 @@
|
||||
# Unitemp assets
|
||||
|
||||
Created by [@Svaarich](https://github.com/Svaarich)
|
||||
@@ -1 +0,0 @@
|
||||
*~
|
||||
32
applications/external/usb_hid_autofire/README.md
vendored
@@ -1,32 +0,0 @@
|
||||
# USB HID Autofire
|
||||
|
||||
[GitHub](https://github.com/pbek/usb_hid_autofire) |
|
||||
[Latest release](https://github.com/pbek/usb_hid_autofire/releases/latest) |
|
||||
[Changelog](CHANGELOG.md) |
|
||||
[License](LICENSE.md)
|
||||
|
||||
[](https://github.com/pbek/usb_hid_autofire/actions/workflows/build-test.yml)
|
||||
|
||||
This is a simple Flipper Zero application to send left-clicks as a USB HID device.
|
||||
|
||||

|
||||
|
||||
## Installation
|
||||
|
||||
Download the [latest release](https://github.com/pbek/usb_hid_autofire/releases/latest)
|
||||
of the *fap* file and put it into the `apps` folder on your SD card of your Flipper Zero.
|
||||
|
||||
## Building
|
||||
|
||||
```shell
|
||||
cd applications_user
|
||||
git clone https://github.com/pbek/usb_hid_autofire.git
|
||||
|
||||
cd ..
|
||||
|
||||
# Build the application
|
||||
./fbt fap_usb_hid_autofire
|
||||
|
||||
# Build and launch the application
|
||||
./fbt launch_app APPSRC=usb_hid_autofire
|
||||
```
|
||||
|
Before Width: | Height: | Size: 2.1 KiB |
6
applications/external/wav_player/README.md
vendored
@@ -1,6 +0,0 @@
|
||||
# WAV player
|
||||
A Flipper Zero application for playing wav files. My fork adds support for correct playback speed (for files with different sample rates) and for mono files (original wav player only plays stereo). ~~You still need to convert your file to unsigned 8-bit PCM format for it to played correctly on flipper~~. Now supports 16-bit (ordinary) wav files too, both mono and stereo!
|
||||
|
||||
Original app by https://github.com/DrZlo13.
|
||||
|
||||
Also outputs audio on `PA6` - `3(A6)` pin
|
||||
50
applications/external/wifi_deauther/README.md
vendored
@@ -1,50 +0,0 @@
|
||||
# flipperzero_esp8266_deautherv2
|
||||
Flipper Zero esp8266 deauther app.
|
||||
|
||||
|
||||
Based off the WiFi Marauder App from 0xchocolate.
|
||||
|
||||
https://github.com/0xchocolate/flipperzero-firmware-with-wifi-marauder-companion
|
||||
|
||||
https://github.com/RogueMaster/flipperzero-firmware-wPlugins/tree/unleashed/applications/wifi_marauder_companion
|
||||
|
||||
uses the Version 2 of the ESP8266 Deauther code.
|
||||
https://github.com/SpacehuhnTech/esp8266_deauther/tree/v2/esp8266_deauther
|
||||
|
||||
This is done so you can use the original deauther v2 firmware on the esp8266.
|
||||
you can just flash the latest binary.
|
||||
|
||||
also a shout out to https://github.com/SequoiaSan/FlipperZero-Wifi-ESP8266-Deauther-Module
|
||||
This is already in the Roguemaster firmware and just needs to be enabled and compiled. unfortunatly I could not get this past the menu when I compiled his deauther source for the nodemcu. Nice menu though.
|
||||
|
||||
I used a nodeMCU board. Wiring is simple. follow the wiring guide on https://github.com/SequoiaSan/FlipperZero-WiFi-Scanner_Module
|
||||
On mine I connected one G to ground, VIN to 5V, RX to U_TX, TX to U_RX.
|
||||
|
||||
NodeMCU---FlipperZero
|
||||
|
||||
G---------GND
|
||||
|
||||
VIN-------5V
|
||||
|
||||
RX--------U_TX
|
||||
|
||||
TX--------U_RX
|
||||
|
||||
|
||||
|
||||
Video in action.
|
||||
https://youtu.be/_RFzZyPkeR0
|
||||
|
||||
If you want to disable the built in WiFi access and web interface (only use flipper to serial send commands) then select "set webinterface false", "save settings" and "reboot". When it starts back up you wont see the pwned AP any more.
|
||||
|
||||
I installed this into Roguemaster to test.
|
||||
|
||||
git clone --recursive https://github.com/RogueMaster/flipperzero-firmware-wPlugins.git
|
||||
cd flipperzero-firmware-wPlugins/
|
||||
|
||||
copy folder into applications.
|
||||
add "APPS_wifi_deauther", to the meta/application.fam file.
|
||||
|
||||
compile
|
||||
./fbt resources icons
|
||||
./fbt updater_package
|
||||
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 5.0 KiB |
BIN
applications/external/wii_ec_anal/_images/DEBUG.png
vendored
|
Before Width: | Height: | Size: 3.8 KiB |
BIN
applications/external/wii_ec_anal/_images/DUMP.png
vendored
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 312 KiB |
BIN
applications/external/wii_ec_anal/_images/RIP.png
vendored
|
Before Width: | Height: | Size: 4.9 KiB |
BIN
applications/external/wii_ec_anal/_images/SPLASH.png
vendored
|
Before Width: | Height: | Size: 5.1 KiB |
BIN
applications/external/wii_ec_anal/_images/WAIT.png
vendored
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 99 KiB |
BIN
applications/external/wii_ec_anal/_images/Wiring.png
vendored
|
Before Width: | Height: | Size: 339 KiB |
BIN
applications/external/wii_ec_anal/_images/plug.png
vendored
|
Before Width: | Height: | Size: 74 KiB |
BIN
applications/external/wii_ec_anal/_images/social.png
vendored
|
Before Width: | Height: | Size: 702 KiB |
48
applications/external/yatzee/README.md
vendored
@@ -1,48 +0,0 @@
|
||||
# flipperzero-yatzee
|
||||
Yahtzee game for flipperzero
|
||||
|
||||
Its not beautiful, but it works and now I can play Yahtzee on my flipper while I shit at work.
|
||||
|
||||
<b>Installation: </b>
|
||||
|
||||
Download fap from releases. Copy fap to flipper sd at <b>ext > apps > Games</b>
|
||||
|
||||
|
||||
<b>Controls: </b>
|
||||
|
||||
- Up to Roll
|
||||
- Left/Right to move cursor
|
||||
- OK to Hold a die
|
||||
- Moving cursor past the dice will move the cursor up to the scorecard. Moving the scores cursor will show you the potential score you would get.
|
||||
|
||||
|
||||
<b>Rules & Scoring:</b>
|
||||
|
||||
- Between rolls, move the cursor and use the OK button to select which dice you will hold for the next roll
|
||||
- 3 rolls per round and then you are forced to select a score.
|
||||
- To score, move cursor with Left/Right up to the scorecard, when desired score to count is underlined, press the Down button to confirm.
|
||||
|
||||
- 1-6 add up the corresponding dice of that number in your roll.
|
||||
- 3 of a Kind (3k) = total of dice when 3 of a kind is rolled
|
||||
- 4 of a Kind (4k) = total of dice when 4 of a kind is rolled
|
||||
- Full House (Fh) = 25
|
||||
- Small Straight (Sm) = 30
|
||||
- Large Straight (Lg) = 40
|
||||
- Chance (Ch) = total of all dice in roll
|
||||
- Yatzee (Yz) = 50 for the first yatzee. Successive Yatzees do not show in the score card, but add 100 each to the total score
|
||||
- Game ends when every scoring value has been selected once.
|
||||
- If sub score is at least 63, 35 points are added to the total score.
|
||||
|
||||
<b>Todo</b>
|
||||
- Redo the scorecard now that I understand a little better how this works
|
||||
- Would like to make it a grid with 4 rows, and 4 columns
|
||||
- Rows 0 and 2 will have the scores 'names'
|
||||
- Rows 1 and 3 will be empty until filled by a score.
|
||||
- Column 3 will span all rows and show each bonus yatzee as an icon like a star or something.
|
||||
- Once grided score card is implemented, identify a better mechanism to show that a score has already been counted- instead of the '.' that shows up now.
|
||||
- Maybe invert the grid color to show which score is being selected by the cursor.
|
||||
- If upper score >= 63, add a pop-up message at the end game to give a visual indication that a bonus for the top row is being.
|
||||
- Redo button mapping so that
|
||||
- the middle button can be used to both hold on dice or confirm score. Leaves the down arrow open for something else.
|
||||
- Would be nice if up/down could be used to move through the scorecard and left/right move through the dice, but then theres not enough buttons for ROLL so idk yet.
|
||||
- Learn more about C so that I can move stuff to a header file like everyone else does.
|
||||