Use f0 to store QR-codes, barcodes, notes, etc

Hi all,

i thought it would be awfully helpful (and probably not too difficult) to come up with some additional features that help you in everyday life.

I was thinking about saving barcodes and QR-codes on your flipper. This way one could carry a lot of information with you that can easily be read by others.

Also, storing (and creating/editing) simple .txt files would be nice.
Side note: i miss the special characters on the current keyboard layout.


There is already a basic UPC Barcode Plugin available.
As far as I can see without storage: flipperzero-firmware/applications/barcode_generator at UPC-A_Barcode_Generator · McAzzaMan/flipperzero-firmware · GitHub
Works good for me.

It would be interesting if the screen is fine enough for QR Code (okay, it will be. But for how much information).


The Flipper Display is 128x64px (source: The standard QR Code needs to be squared, so it can be maximum 64x64.

The size of a QR Code is given in ‘Version’. Version 11 is 61x61, Version 12 is 64x65. So the maximum size would be a Version 11 QR Code (61x61px).

Depending on the Correction level (ECC), a different Amount of data can be stored:

Source: Information capacity and versions of QR Code | | DENSO WAVE

One line is called ‘Module’. It should be checked if a Module with the size of 1px on the flipper zero is enough to be scanned. Else it would need 2px per Module, which cut the space in half and limits the available characters even more.

This looks like a promising start point:

The viewable area at the Flipper Zero display is ca. 1,8 cm in height.

A code can be generated via QR Code generator library

Text String:

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit ame

Error correction: low
Output format: Vector
Border: 0 modules (I assume the not usable area is enough border)
Colors: Light = #FFFFFF, dark = #000000
Version range: Minimum 1, maximum 11
Mask pattern: -1
Boost ECC: Checked

Statistics: QR Code version = 11, mask pattern = 6, character count = 321,
encoding mode = byte, error correction = level L, data bits = 2588.

I resized my browser (Image viewer) to 1,8 cm → it works. My Motorola G8 plus needs a while, but after 3 seconds the QR Code is recognized by the Android standard camera app.
Than I wanted to go one step further, I’ve changed the background to orange (#FF8800) and no way, the camera doesn’t see the code, anymore.

PS: There are 322 characters encoded in the example .svg Unfortunately I can’t upload .svg.

Not working example.

Working example.

That’s a lot of research!

I am a bit concerned about the orange background.
E.g. version 10 might do the job. Maybe improved cameras/algorithms will allow v11 in the future.

Cant wait to work on a plugin for this but currently free time is rare :confused:

When scanning both codes, I get the Lorem Ipsum. iPhone 13 Pro (Max), so something is working correctly

1 Like

The iPhone 13 Pro camera is better than the Motorola 8G Plus budget phone? I’m shocked! No, really, maybe I need a new phone, as well :wink:
Thanks a lot for testing! (but keep in mind, it (orange and size) is still an approximation)

I’ll try to use the github/ricmoo approach. But not within the next 16 days. I know the theory, but my C is too bad as I could do it as a side project.

Version 10 is 57 lines. It will be a bit smaller, still not 2 lines per Module.
→ 64/2 = 32 … Version 3 (29x29) will be the next.

Because of the error correction I even would try Version 4 (33x33). As well as Version 12 … But after the first success. If we’ve had a working POC, we can test the limits.

I want this feature as well. I love QR Codes nearly as much as NFC :slight_smile: