Skip to content

Commit

Permalink
Merge branch 'edit'
Browse files Browse the repository at this point in the history
  • Loading branch information
antirez committed Jan 21, 2023
2 parents b651d54 + 4fc3a4e commit c750f33
Showing 1 changed file with 38 additions and 12 deletions.
50 changes: 38 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
ProtoView is a digital signal detection and visualization tool for the
ProtoView is a digital signal detection, visualization and reply tool for the
[Flipper Zero](https://flipperzero.one/). The Flipper is able to identify
a great deal of RF protocols, however when the exact protocol is not
implemented (and there are many proprietary ones, such as the ones of
the car keys), 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 Volkswagen key in 2FSK):
implemented (and there are many proprietary 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 Volkswagen key in 2FSK):

![ProtoView screenshot raw signal](/images/protoview_1.jpg)

This is often enough to make an initial idea about the encoding used
and if the selected modulation is correct.

## Decoding capabilities

Other than that, ProtoView is able to decode a few interesting protocols:

* TPMS sensors: Renault, Toyota, Schrader, Citroen, Ford.
Expand All @@ -25,6 +28,16 @@ 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.

## Reply capabilities

Once ProtoView decoded 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 RX capabilities. The captured signal can be sent
to different frequencies and modulations than the ones it was captured
from.

## Aiming at a well-documented app for the Flipper

The secondary goal of ProtoView is to provide a somewhat-documented application
for the Flipper (even if ProtoView is a pretty atypical application: doesn't make use of the standard widgets and other abstractions provded by the framework).
Many apps dealing with the *subghz subsystem* (the Flipper
Expand All @@ -38,7 +51,7 @@ However, the Flipper firmware source code is well written even if it
lacks comments and documentation, so it is possible to make some ideas of
how things work just grepping inside.

# Detection algorithm
## Detection algorithm

In order to show unknown signals, the application attempts to understand if
the samples obtained by the Flipper API (a series of pulses that are high
Expand All @@ -57,13 +70,13 @@ 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 we classify them separately for robustness.

# Usage
## Usage

The application shows the longest coherent signal detected so far.
In the main screen, the application shows the longest coherent signal detected so far.

* The OK button resets the current signal.
* The UP and DOWN buttons change the scale. Default is 100us per pixel.
* The LEFT and RIGHT buttons switch to settings.
* 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* to LEFT and RIGHT will pan the signal, to see what was transmitted before/after. 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
Expand All @@ -81,12 +94,25 @@ 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

Using the LEFT and RIGHT buttons, the user can switch to the other application modes: if a signal was detected, the information view will show the details about the signal. In this mode, it is possible to use DOWN to go to a screen with an oscilloscope-alike view of the signal, and the ability to save (long press to OK) and resend (short press to OK) 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.

## What settings to use for common stuff

Things to investigate:

* 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 TPMS modulation (FSK optimized for these signals).
* For TPMS try 433.92 in TPMS modulation (FSK and OOK custom modulations optimized for these signals, that have a relatively high data rate).

# Installing the app from source

Expand Down

0 comments on commit c750f33

Please sign in to comment.