What's in a BLEShark Nano Firmware Update? How to Check What's New
The BLEShark Nano supports OTA firmware updates over WiFi. New releases come out periodically with bug fixes, new features, expanded protocol support, and security improvements. This article covers the practical side: how to find out what version you're running, where to read changelogs, what typically changes between releases, and how to trigger an update.
sequenceDiagram
participant USER as User
participant NANO as BLEShark Nano
(ESP32-C3)
participant AP as WiFi Access Point
participant SRV as OTA Update Server
USER->>NANO: Navigate to OTA menu
NANO->>NANO: Check saved WiFi credentials
NANO->>AP: Connect to WiFi network
AP-->>NANO: IP address assigned (DHCP)
rect rgb(30, 30, 30)
Note over NANO,SRV: Version Check Phase
NANO->>SRV: GET /version (current: v1.x.x)
SRV-->>NANO: Latest version: v1.y.y
NANO->>NANO: Compare versions
end
alt New version available
rect rgb(40, 30, 30)
Note over NANO,SRV: Download Phase
NANO->>SRV: GET /firmware.bin
SRV-->>NANO: Firmware binary (chunked)
NANO->>NANO: Write to OTA partition
NANO->>NANO: Verify SHA-256 hash
end
alt Hash valid
NANO->>NANO: Set OTA partition as boot
NANO->>NANO: Reboot into new firmware
NANO-->>USER: Display new version
else Hash mismatch
NANO->>NANO: Discard download
NANO-->>USER: Update failed - retry
end
else Already up to date
NANO-->>USER: No update available
end
BLEShark Nano OTA update sequence - the device verifies firmware integrity via SHA-256 hash before flashing to the OTA partition
Table of Contents
- How to Check Your Current Firmware Version
- Where to Find Changelogs
- How to Read a Changelog
- What Typically Changes Between Releases
- How to Trigger an OTA Update
- Setting Up Multi-Network OTA
- What to Do After Updating
- What Happens If an Update Fails
graph TD
subgraph "ESP32-C3 Flash Memory Layout"
BOOT["Bootloader
(0x0000 - 0x8000)"]
PTABLE["Partition Table
(0x8000 - 0x9000)"]
NVS["NVS Storage
(WiFi creds, settings,
saved configs)"]
OTA_DATA["OTA Data
(tracks which partition
is active)"]
APP0["App Partition 0
(Running Firmware)"]
APP1["App Partition 1
(OTA Download Target)"]
SPIFFS["SPIFFS/LittleFS
(Web UI, portal pages,
DuckyScript files)"]
end
BOOT --> PTABLE
PTABLE --> NVS
PTABLE --> OTA_DATA
PTABLE --> APP0
PTABLE --> APP1
PTABLE --> SPIFFS
OTA_DATA -.->|"Points to
active app"| APP0
OTA_DATA -.->|"After OTA
switch to"| APP1
subgraph "OTA Swap Process"
DL["Download to
inactive partition"]
VERIFY["Verify hash"]
SWAP["Update OTA data
pointer"]
REBOOT["Reboot into
new partition"]
end
DL --> VERIFY --> SWAP --> REBOOT
ESP32-C3 dual-partition OTA layout - firmware downloads to the inactive partition while the current version keeps running
How to Check Your Current Firmware Version
The BLEShark Nano displays the current firmware version in the Settings menu. Navigate from the main menu:
- Press the menu button to reach the main menu
- Scroll to Settings
- Select Info
- The OLED displays the firmware version as a semantic version string (e.g., 1.2.4)
The version number follows standard semantic versioning: MAJOR.MINOR.PATCH. A change in the MAJOR number indicates a significant breaking change or major new capability. MINOR increments indicate new features added in a backwards-compatible way. PATCH increments are bug fixes and small improvements.
Where to Find Changelogs
BLEShark Nano firmware changelogs are published here. Each release has:
- Version tag and release date
- Summary of major changes
- Full list of changes categorized by type (new features, bug fixes, security updates, deprecations)
- Known issues and workarounds if any
- Notes on changes to behavior that might affect existing workflows
Releases are also announced on the InfiShark Discord server with a summary of what's new and a link to the release notes. If you want to be notified when new firmware drops, join the Discord or subscribe to our newsletter.
For EU-region devices, release notes specify which features apply to your region. The active deauth transmission is disabled in EU firmware per Radio Equipment Directive (RED) regulations - the release notes call out if any new features have regional restrictions.
How to Trigger an OTA Update
The OTA update process on the BLEShark is straightforward:
- Navigate to Settings in the main menu
- Select Update
- The device checks for available updates
- If a newer version is available, the OLED shows the version number proceeds with update
- The device tries saved networks automatically
- Confirm to start the download
- The OLED shows a download progress indicator as the firmware binary is retrieved
- After download completes, the device verifies the SHA256 hash and begins writing to flash
- The device reboots automatically after the write completes
- On the next boot, the new firmware runs and confirms itself valid
Total time for an OTA update depends on WiFi signal strength and server load, but typically takes 1-2 minutes from triggering to completed reboot. The device cannot be used for other functions during the download and write phase - the display shows update status throughout.
If you have multiple devices, update the mesh nodes. You can do this by running "Execute -> Manage -> Update". This will go through the update for all devices. Note that mismatched firmware versions in a mesh can cause compatibility issues, particularly after releases that modify the ESP-NOW protocol format. Update each node individually using the same OTA process.
If the Nano shows "Up to date" when you check for updates, you're already running the latest release. There's no advantage to forcing a re-flash of the same version - the version check prevents unnecessary downloads.
Setting Up Multi-Network OTA
The BLEShark supports saving multiple WiFi networks for OTA updates. This is useful if you use the device in different locations with different WiFi access.
To add OTA WiFi networks:
- Go to the BLEShark Nano Settings Menu
- Navigate to the WiFi networks section (Wi-Fi -> Wi-Fi Nets)
- Add network credentials (SSID and password) for each network you want to use for OTA
- Save the list
When OTA is triggered, the device tries each saved network in order until one connects. Once connected, the update proceeds normally. Networks that fail to connect (wrong password, out of range) are tried and skipped without aborting the update attempt.
The WiFi network list is stored in the SPIFFS filesystem partition, which is separate from the firmware partitions. This means your saved network list survives firmware updates - you don't need to re-add networks after every update.
Keep the network list to networks you actually have access to. An outdated list with networks that no longer exist slows down the OTA process as the device times out trying to connect to each one.
What to Do After Updating
After a firmware update, the device reboots and you're running the new version. A few things worth doing:
Verify the version. Go to Settings > About and confirm the version number matches the release you intended to install. This is a quick sanity check that the update completed successfully.
Check your settings. If the changelog mentioned changes to default settings or settings that were moved, verify your preferences are still configured correctly. The on-device settings and saved files in SPIFFS persist across updates, but default values for new settings may have changed.
Test your saved scripts and files. If you have DuckyScript payloads or custom captive portal HTML files stored in the file portal, run a quick test to confirm they work correctly with the new firmware. Format changes between major versions are called out in the changelog.
What Happens If an Update Fails
OTA failures are uncommon but happen. Common causes: WiFi drops during download, server unreachable, hash mismatch (corrupted download). In all cases, the BLEShark Nano handles failure gracefully:
Download interrupted: The partial download is discarded. The inactive flash partition is left in ABORTED state. The current firmware continues running. You can retry the update.
Hash mismatch: The downloaded binary's SHA256 hash didn't match the expected value. This indicates either a corrupted download or a server-side issue. The update is aborted, the current firmware is unchanged. Retry after confirming network stability.
New firmware fails to boot: If the new firmware has a critical bug that prevents it from completing startup, the bootloader detects that the new partition never confirmed itself valid and rolls back to the previous firmware on the next reboot. Your device comes back up on the previous firmware version, working normally.
If you have any issues apart from this, please reach out to us at support@infishark.com, and we will help you right away.
The dual-partition rollback design means an OTA update failure, in any of its forms, cannot brick the device. The worst case is that you're still running the previous firmware version and need to try the update again.