Repository navigation
Sonar is a firmware for the Flipper Zero that a blind person can use without sight. It is built on
Momentum, and its screen reader speaks every screen through the device's own speaker, from a
recorded voice on the SD card. Claude wrote almost all of Sonar's code, working under the direction
of Robin Kipp, a blind developer, who tested every change on the device.
This is the release sonar-0.1.0. The README at this release says how to install it, how to use it, how
to go back to other firmware, and what Sonar changes against Momentum:
https://github.com/robin24/flipper-access/blob/sonar-0.1.0/README.md
What is new
The changes in this release are in the changelog, under its version:
https://github.com/robin24/flipper-access/blob/sonar-0.1.0/CHANGELOG.md
The files
For the install:
flipper-z-f7-update-sonar-0.1.0.tgz: the firmware's update package.voice-heart-sonar-0.1.0.tar: the voice, heart, made with Kokoro's voice af_heart. Its licence is
LICENSE.txtinside it.install-sonar-0.1.0.zip: the install scriptinstall.py, withflipper_cli.py,
flipper_storage.py,card_prune.pyand the project's licence.release.json: the release's description, which the install script checks the installed
firmware against.
For checking, crash reports and developers:
SHA256SUMS: the SHA-256 checksum of every file here butrelease.jsonandSHA256SUMS
itself.release.jsonlists the same checksums of the other files.sonar-0.1.0-firmware.elfandsonar-0.1.0-firmware.map: the firmware's symbols, which turn the address
on a crash popup of this release into a line of code.flipper-z-f7-sdk-sonar-0.1.0.zip: the SDK, for building apps for this firmware.sonar-0.1.0-source.tar.gz: the source of every binary here, as described under The source.
Install
The install needs Python 3.10 or newer on the computer, and the first four files above in one
folder. Download them from a terminal, not with a browser: a browser such as Safari may unpack an
archive by itself after the download, and the install needs each file as it was published. In a
terminal in a new folder, download the four files and SHA256SUMS, one command each:
curl -f -L -O https://github.com/robin24/flipper-access/releases/download/sonar-0.1.0/flipper-z-f7-update-sonar-0.1.0.tgzcurl -f -L -O https://github.com/robin24/flipper-access/releases/download/sonar-0.1.0/voice-heart-sonar-0.1.0.tarcurl -f -L -O https://github.com/robin24/flipper-access/releases/download/sonar-0.1.0/install-sonar-0.1.0.zipcurl -f -L -O https://github.com/robin24/flipper-access/releases/download/sonar-0.1.0/release.jsoncurl -f -L -O https://github.com/robin24/flipper-access/releases/download/sonar-0.1.0/SHA256SUMSThe -f makes curl stop with an HTTP error when a tag or a file name is wrong, instead of saving
GitHub's Not Found page under the file's name. On Windows, the command is curl.exe where these
commands say curl, since curl in PowerShell is another command. SHA256SUMS holds the
checksums of the update package, the voice and the install zip, among others, and the README's
Install section says how to check them. Then unpack the install zip:
unzip install-sonar-0.1.0.zipMake a virtual environment there, once:
python3 -m venv .venvPut pyserial into it:
.venv/bin/pip install pyserialPlug the Flipper in, unlock it and close qFlipper. Start on the Flipper's home screen, with no
application open: on Sonar, press Back until it says "Home screen"; on other firmware, which says
nothing, press Back a few times. Then run the install:
.venv/bin/python install.py --package flipper-z-f7-update-sonar-0.1.0.tgz --voice voice-heart-sonar-0.1.0.tar --release release.jsonIt works from the official firmware, from Momentum and from an earlier Sonar. It backs up the
Flipper's internal storage to the card first, and asks whether the voice goes through a card
reader, the default, or over USB. The Flipper says nothing about the install: the script says each
step on the computer, to the end. Over USB the install takes a little over half an hour; through a
card reader it is faster. The README's Install section has the details, Windows included, and its
Going back section the way back.
Known issues
The main ones; the README's Known limits has them all.
- The Flipper has rebooted a few times while idle, with a "furi_check failed" popup, and the cause
is unknown. A bug report with the popup's address and the output ofsr statushelps. - During NFC-V emulation the reader is silent, from the first exchange with an NFC reader until
you leave the emulation with Back. - An external CC1101 radio module has not been tried with the reader on.
- When a menu opens over the file browser's list, the reader reads the menu's words mixed with the
file names behind it. - An app that uses the JavaScript engine's functions, which Sonar leaves out, fails to load with
the error "Missing Imports". An app built with Sonar's SDK that uses the reader's functions fails
to load on other firmware. - Without the SD card, or without a voice on it, the reader is silent.
Where it comes from
- The fork's commit: d74ea206a, tagged sonar-0.1.0 at
https://github.com/robin24/Momentum-Firmware/tree/sonar-0.1.0 - The Momentum commit it builds on: d3f89dfe2, at
Next-Flip/Momentum-Firmware@d3f89dfe2
The fork's submodules, nested ones included, each at the commit this release was built from:
- applications/external at 55a446b1b
- assets/protobuf at ea4f185f5
- documentation/doxygen/doxygen-awesome-css at df88fe4fd
- lib/FreeRTOS-Kernel at def7d2df2
- lib/FreeRTOS-Kernel/portable/ThirdParty/Community-Supported-Ports at 4273ca321
- lib/FreeRTOS-Kernel/portable/ThirdParty/Partner-Supported-Ports at 3f9c99a68
- lib/heatshrink at 7398ccc91
- lib/libusb_stm32 at 6ca285751
- lib/mbedtls at 107ea89da
- lib/mbedtls/framework at 94599c0e3
- lib/microtar at 1e921369b
- lib/mlib at 62c8ac3e5
- lib/nanopb at 6cfe48d6f
- lib/stm32wb_cmsis at d1b860584
- lib/stm32wb_copro at 133182d55
- lib/stm32wb_copro/scripts at 781464e62
- lib/stm32wb_hal at cfd0dd258
- lib/uzlib at 6d60d651a
Before it was published, this release's own files, downloaded from this page, were installed on a
Flipper with the install script and checked there.
The source
The firmware is licensed under the GPL-3.0, like Momentum and the official firmware, and so are the
install script and the other tools. The source of every binary in this release is the file
sonar-0.1.0-source.tar.gz among its assets: the fork at d74ea206a with every submodule, nested ones
included, each at the commit listed above, Momentum's apps among them, whose builds the update
package puts on the card. It is offered here, beside the binaries, for as long as they are offered.
The voice pack has its own terms, in its LICENSE.txt: Kokoro's model is under the Apache License
2.0, and what the Sonar project adds to the voice is released under CC0 1.0.
Supporting Sonar
Sonar will always remain free, but donations help to cover its development costs and are greatly
appreciated: you can support it on Robin's Patreon page or on
Robin's Ko-fi page.