Introduce the ProtoPirate automotive key‑fob decoder and integrate it end‑to‑end across firmware and mobile app. Changes include: new binary message IDs for ProtoPirate (MSG_PP_*), config enable flag and firmware patch bump to 1.1.2, and a new ProtoPirateCommands BLE/serial handler that implements start/stop, history, file browsing (FATFS), emulate (TX) and save/list captures. Firmware updates: added ProtoPirate module headers/implementation, history support, FileCommands improvements (path handling, file streaming size guard, create /DATA/PROTOPIRATE directory), and safer ConfigManager aggregate initialization compatible with older GCC. Mobile app updates: new ProtoPirate UI screen, model (ProtoPirateResult), BLE provider wiring (reset state, imports) and localization strings (EN/RU) and generated localization stubs. Misc: increased BLE chunk timeouts and less aggressive chunk buffer cleanup, plus a helper script tools/generate_test_sub.py.
Multiple fixes and refactors to improve SD robustness and file path handling across the app:
- .gitignore: Ignore SDR build/dist/upx/spec artifacts.
- include/FileCommands.h: Improve SD format phase by verifying directory creation, logging failures, and marking overall format result when mkdir fails.
- include/config.h: Bump firmware version to 1.1.0 (minor/patch updated).
- mobile_app/lib/providers/ble_provider.dart: Refactor readFileContent to accept pathType (int) instead of basePath, centralize relative/absolute path extraction logic, and propagate effectivePathType in binary commands (breaking API change — callers updated).
- mobile_app/lib/screens/file_viewer_screen.dart: Updated to call readFileContent with pathType and let provider normalize paths.
- mobile_app/lib/screens/settings_screen.dart: Improve SD format progress dialog handling by tracking whether any progress response was received, adding a timeout to avoid indefinite blocking, and showing a timeout snackbar on no response.
- mobile_app/lib/services/update_service.dart: Change fetchChangelog to search release assets for changelog.json (newer approach) and fall back to the legacy raw URL if not found.
- mobile_app/pubspec.yaml: Bump mobile app version to 1.0.9+24.
Notes: The main breaking change is the BLE provider API signature change (basePath -> pathType); UI callers have been updated in this changeset. These changes improve reliability of SD formatting and make changelog fetching more robust.
Report SD format progress over BLE and improve filesystem handling.
- FileCommands: send in-progress progress notifications (errorCode 0xFF) during SD format, report per-item delete/create messages, track deleted count and send final result.
- mobile app: add sdFormatProgress field, parse progress messages in BinaryFileActionResult JSON, update BLE provider to handle progress vs final result, and show progress text in settings UI dialog.
- binary_message_parser: include isProgress and progressMessage fields for in-progress messages.
- src/main.cpp: gracefully handle missing SD card (fallback to LittleFS-only), record sdCardMounted state, and ensure default DATA directories exist when SD is present.
- CC1101_Worker: add LittleFS support for pathType 4 (and root handling for pathType 5), choose fs object dynamically, and return an error for transmit attempts from LittleFS (unsupported).
- Bump mobile app version to 1.0.7+21.
These changes enable live feedback to the mobile app during long SD operations and improve robustness when the SD card is absent, while introducing limited LittleFS path support in the transmitter.
Several features and fixes across firmware and mobile app:
- FileCommands.h: make recursive directory/file removal more robust — copy child.path() into a local buffer before close, log failures, continue deleting other entries instead of aborting, yield (vTaskDelay) to avoid watchdog timeouts, and return aggregate success.
- Binary parser: add 'format-sd' action code.
- BleProvider: add isFormattingSD/sdFormatSuccess flags, set/reset them when sending/receiving format commands and notify listeners.
- SettingsScreen: improved scanner settings UI (moved into Consumer), added non-dismissible SD format progress dialog that auto-closes on firmware result, and handle command send failures.
- FlipperSubDbService: add pause/resume support for cloning — cache downloaded ZIP, persist per-file progress, APIs to save/load progress and cached ZIP, extractFromBytes for resuming, and related helper functions; tweak extraction path handling.
- SubGhz clone dialog: implement resume/start-fresh flow, pause/resume controls, progress persistence, caching usage, and related UI/logic changes.
- QuickConnectWidget: fallback to show all scan results when no supported devices found and new localization message for that case.
- Localization: add new string noSupportedDevicesShowAll in en/ru ARB and generated localization classes.
- SignalScanner & RecordScreen: remove WaterfallWidget usage and refactor view mode/animation handling; delete waterfall_widget.dart.
These changes improve reliability for long-running SD operations (format and large SubGHz clone), add user-facing progress/resume behavior, and update UI/localization accordingly.
Implements SD card formatting and per-protocol De Bruijn support and adds a realtime waterfall display. Firmware: new MSG_FORMAT_SD (0x18) and handler to recursively delete/recreate SD directories; added removeDirectoryRecursive helper and integrated into remove handling. App: firmware protocol factories for format and custom DeBruijn (sub-cmd 0xFD), BleProvider methods to send format and custom DeBruijn commands, and BruteScreen/BruterProtocol extended with te/ratio fields and logic to send per-protocol De Bruijn parameters. UI: Settings screen gets a guarded "Format SD Card" control with confirmation dialog; Record screen integrates a new WaterfallWidget and syncs detected signals; new widget mobile_app/lib/widgets/waterfall_widget.dart implements the spectrogram painter. Other fixes: avoid double-slash when composing upload paths for LittleFS/SD in BleAdapter, and increase SendNotifications task stack to 4KB in main.cpp.
Add recursive directory creation and SD root handling: implement non-recursive mkdir walk in include/FileCommands.h and src/core/ble/BleAdapter.cpp, create base dir if needed, and support pathType 5 (SD root) for uploads. Ensure single-chunk upload handling always returns to avoid falling through to command handler.
CC1101 radio fixes: use stored MHz[] instead of getFrequency() in setPA() and Calibrate() to avoid band-edge truncation; on jamming resume apply full OOK preset via setTxWithPreset(), re-calibrate, re-apply PA mapping and reset pin/fifo init flags to restore RF output.
Bruter fixes: reset cached current_mhz in setupCC1101(), and ensure frequency changes write FREQ regs from IDLE then trigger PLL calibration (setSidle, setMHZ, SetTx, delay). Re-initialize CC1101 before each attack to guarantee TX configuration.
Mobile app changes: remove createDirectory BLE helper, keep screen awake during cloning with wakelock_plus (enable/disable), bump app version to 1.0.2+15, and display temperature with 0 decimals in status bar.
Also bump firmware patch to 1.0.3. These changes address failed mkdirs/uploads on SD/LittleFS, incorrect PA/band handling, PLL/calibration race conditions, and improve UX during cloning.
Introduce CPU telemetry and configurable CPU temperature offset, add hardware-button replay support and SD root pathType, and update app/firmware plumbing.
Key changes:
- Added schematics PDFs to docs.
- Protocol/firmware: BinaryStatus extended with cpuTempDeciC, core0Mhz, core1Mhz; settings payload and sync now include cpuTempOffsetDeciC. HwButton config command supports an extended payload for replay file (pathType + path).
- ConfigManager: persist button replay path/type and cpuTempOffsetDeciC, clamp/range checks, build/save logic and default values updated.
- ButtonCommands: executeAction now receives buttonId; handleButtonConfig accepts optional replay file info; ReplayLast implemented to queue CC1101 transmissions using configured path/type.
- FileCommands: support pathType 5 (SD root) and treat root-based storages appropriately; only create SD directories for dedicated SD folders.
- StateCommands: sendSettingsSync updated to 10-byte payload and include cpu temp offset in logs.
- Mobile app (Flutter): localization for CPU temp offset; BLE provider persists and exposes cpuTempOffsetDeciC and device telemetry (cpuTempC, coreMHz); supports pathType 5 (SD root) and loads temp offset preference; settings provider persists button replay paths/types and exposes setters; firmware protocol helper builds extended hw button command; FilesScreen supports pickMode, SD root selection and enforces allowed extensions when picking; Debug screen adds slider/card to adjust CPU temp offset; NrfScreen uses nrfNotify() for targeted UI updates and visual tweaks; spectrum painter maxLevel adjusted to 100.
These changes enable local replay-from-file via hardware buttons, expose CPU temperature telemetry and offset tuning to the mobile app, and add SD root handling across firmware and app.