ESP Miners

Flash an ESP32-family or ESP8266 board, give it your Wi-Fi (and on firmware 0.4.x, your FEM- key), register it on the dashboard, and check that it shows Active.

This release
Firmware v0.4.1 for ESP32 and ESP32-C3, and the Fry app v0.4.1. ESP32-S3 and ESP8266 boards stay on firmware 0.3.3 for now (why). If you have an older Fry app, uninstall it once before you install 0.4.1. After that the app updates itself (Install the app).
  1. Get a key. An ESP32 or ESP32-C3 on 0.4.x needs a FEM- key you own. An ESP32-S3 or ESP8266 on 0.3.3 makes its own. How
  2. Flash the board from your browser. How
  3. Set it up in the Fry app for Android, over Bluetooth. An ESP8266 uses its own Wi-Fi setup page instead. App · ESP8266 setup
  4. Register the key on the dashboard. How
  5. Check it's Active. How
What you need
You needDetails
A boardAn ESP32 (for example ESP32-DevKitC or an ESP-WROOM-32 board) or an ESP32-C3. These get firmware 0.4.1 in this release. ESP32-S3 and ESP8266 boards also work, but they stay on firmware 0.3.3; see the two notes below.
A USB data cableCharge-only cables don't work. The board has to show up as a serial port on your computer.
2.4 GHz Wi-FiA 2.4 GHz network that uses a WPA2 password. These chips can't see 5 GHz networks.
A FEM- miner keyFor an ESP32 or ESP32-C3 on 0.4.x, a key you own. An ESP32-S3 or ESP8266 on 0.3.3 makes its own. There's no licence or subscription. See Get a key.
An Algorand walletThe wallet you sign in to the dashboard with (Pera, Defly, Lute or Kibisis).
A computer with Chrome or EdgeYou need it to flash the board. Firefox and Safari don't support Web Serial, so they can't flash.
An Android phoneESP32 and ESP32-C3 boards are set up in the Fry app 0.4.1 or newer, over Bluetooth. An ESP8266 is set up through its own Wi-Fi setup page instead (ESP8266 setup).
ESP32-S3: stays on firmware 0.3.3 in this release

Firmware 0.4.x isn't released for the ESP32-S3 yet, because no real ESP32-S3 board has passed our checks. S3 boards stay on the 0.3.3 firmware from the web flasher, so there's no automatic update and no 0.4.x download for the S3. On 0.3.3, an S3 makes its own FEM- key the first time it starts, and you register that key (Get a key). Is your S3 still on the old GitHub firmware v0.3.1? Then re-flash it once over USB.

ESP8266: stays on firmware 0.3.3 in this release

Firmware 0.4.x isn't released for the ESP8266 yet, because no working ESP8266 has passed our checks. ESP8266 boards stay on the 0.3.3 firmware from the web flasher, with no automatic update and no 0.4.x download. On 0.3.3, an ESP8266 makes its own FEM- key the first time it starts. It has no Bluetooth, so you set it up through its own Wi-Fi setup network FRY-SETUP-XXXXXX (how). Is your ESP8266 still on v0.3.1? Then re-flash it once over USB.

Get a key

ESP32 and ESP32-C3 on firmware 0.4.x run on a FEM- miner key that you own. The firmware doesn't make one, and the app never does. You have two options:

  1. Generate one. Sign in at dashboard.frynetworks.com, open Devices and click Generate Free FEM Key. Each wallet gets one free key. If you click again, you see the same key.
  2. Use a key you already have. Any FEM- key you own works, as long as it isn't running on another device.

ESP32-S3 and ESP8266 on firmware 0.3.3, and any board first set up on 0.3.2 or 0.3.3, made their own FEM- key and keep it through updates. Register that key. You can find it in three places: the app shows it; in the web flasher, Visit Device opens the dashboard with the key filled in; and the serial log's boot line shows it (FRY boot … minerkey=FEM-…).

Key rules
Keys are case-sensitive. A key is FEM- followed by 32 letters and digits. Copy and paste it exactly, and never retype it in lowercase.
IOT- keys are now FEM- keys: use FEM- with the same 32 characters. A board that still holds an IOT- key converts it by itself the first time it starts on firmware 0.3.2 or newer.
One key per running device. Putting a key on a second device doesn't double your earnings. Only one device can hold the key's lease at a time, so while one device holds it, the other can't. If the key already runs on a PC, the PC install keeps working, but the board's reports land on the same record and can make the key's status confusing. Give every device its own key. The app warns you when a key is active on another device.

Each wallet gets one free key. If you run more boards than you have FEM- keys, ask on Discord. We're still working out how owners with several boards get more keys.

Flash the firmware
  1. On a computer, open fry-networks.github.io/fry-firmware/flash/ in Chrome or Edge.
  2. Plug the board in with a data cable, click Connect & Flash and choose the board's serial port.
  3. Choose the action from the table below. The flasher picks the right firmware for your chip: 0.4.1 for ESP32 and ESP32-C3, and 0.3.3 for ESP32-S3 and ESP8266.
  4. Wait for the flasher to finish. A board with no Wi-Fi yet restarts in setup mode, ready for the app (an ESP8266 opens its Wi-Fi setup page).
The flasher offersWhat it meansWhat to do
Install Fry FirmwareA new board, or a board whose firmware (0.3.x or older) doesn't talk to the flasher.Choose it. When it asks about erasing, leave Erase device unchecked to keep the key and Wi-Fi already on the board. Tick it only if you want to wipe the board completely.
Update Fry FirmwareThe board runs an older version than the flasher offers.Choose it. Updating keeps the key and Wi-Fi.
Only Change Wi-Fi, Logs & Console and a red Erase User Data, with no UpdateThe board already runs the version on offer, so it's up to date.Nothing to flash. Don't press Erase User Data: it wipes the miner key and Wi-Fi from the board. To move the board to another network, use Change Wi-Fi, which works over USB on firmware 0.4.0.

If no serial port appears, the cable may be charge-only or the USB driver may be missing. Most boards use CP210x or CH340/CH9102 chips, and the ESP32-S3 and ESP32-C3 have built-in USB. Install the matching driver and plug the board in again.

ESP32-S3 or ESP8266 still on v0.3.1? Re-flash it once over USB

ESP32-S3 and ESP8266 boards running the old GitHub firmware v0.3.1 still hold an IOT- key. Fry no longer accepts IOT- keys, so these boards can't register or show Active, and they won't update by themselves. ESP32 and ESP32-C3 boards on v0.3.1 that are online update to 0.4.1 on their own and convert their key. To fix an S3 or ESP8266:

  1. On a computer, open the web flasher in Chrome or Edge, and plug the board in with a data cable.
  2. Click Connect & Flash, choose the board's port, then choose Install Fry Firmware.
  3. When it asks about erasing, leave Erase device unchecked, so the board keeps its key and Wi-Fi.
  4. When the board restarts, it converts its IOT- key to FEM- with the same 32 characters and registers with Fry.
  5. Register the FEM- key on the dashboard. If you type the IOT- key, click Use FEM-…. Then check that it shows Active about 10 minutes later.
Flashing by hand from GitHub: which file?

The firmware 0.4.1 files are at github.com/Fry-Networks/fry-firmware/releases/latest, for ESP32 and ESP32-C3 only. In the file names below, <chip> is esp32 or esp32c3.

FileWrite it atUse it forYour key and Wi-Fi
firmware-<chip>.bin0x10000Updating a board that already runs Fry firmwareKept
firmware-<chip>-factory.bin0x0A blank board, or a full wipeErased: both Wi-Fi and the key

For example, with esptool: esptool.py --chip esp32 write_flash 0x10000 firmware-esp32.bin

ESP32-S3 and ESP8266: use the web flasher
There are no 0.4.x files for these chips. Don't flash the old v0.3.1 GitHub files: that firmware creates IOT- keys, which Fry refuses. Use the web flasher, which installs 0.3.3.
A factory image erases the key
Writing a -factory.bin, ticking Erase device or pressing Erase User Data removes the board's key. If you already registered that key on the dashboard, enter the same key again when you set up a 0.4.x board. A board on 0.3.x makes a new key instead, which you then register.
Updates after that

ESP32 and ESP32-C3 boards check for new firmware shortly after they start and then about every 6 hours, and they update themselves. If a new version never manages to check in with Fry, the board goes back to the version it had before. ESP32-S3 and ESP8266 boards stay on 0.3.3 in this release, with no automatic updates (S3, ESP8266). From app 0.4.0, the app shows "Update available" only when a newer firmware version really exists.

Install the app
  1. One time only: uninstall any Fry app older than 0.4.0. Older versions were signed with a different key, so Android won't install the new app over them. Your devices, keys and rewards aren't stored in the app, so you don't lose anything. You just sign in again afterwards.
  2. On your phone, open github.com/Fry-Networks/fry-app-android/releases/latest, download fryapp-<version>.apk (0.4.1 or newer) and open it. Don't use the older Fry app files on GitHub (0.3.x and before): they are signed with the old key and cannot update themselves. When Android asks, allow Install unknown apps for your browser or file manager.
  3. Open the app and sign in with your wallet.
  4. After that, the app updates itself. It checks when you open it (at most every 6 hours) and once a day, downloads the new version, checks the download, and installs it. Android usually asks you to tap Install. Google Play Protect may also say App blocked to protect your device because it hasn't seen apps from Fry Networks before; the update is only installed if you choose More details and then Install anyway. If Android asks whether the Fry app may Install unknown apps, allow it, because that's how the app installs its own updates. You won't need GitHub again.

Still on app 0.3.x? If it's already installed, it still sets up boards that already have a key, including boards that updated to 0.4.x from 0.3.x. It can't give a new 0.4.x board its key, though, so we recommend app 0.4.1.

Why the app asks for these permissions
PermissionWhy
Nearby devicesLets the app find your board and connect to it over Bluetooth. On Android 13 and newer it also lets the app find an ESP8266's Wi-Fi setup network.
LocationAndroid requires this permission before the app can scan for Bluetooth and Wi-Fi devices. The app never uses your position. Keep your phone's Location switch on while you scan, because with it off the scan finds nothing.
Set up with the app
  1. Put the board in setup mode. A freshly flashed board without Wi-Fi is already in setup mode. A board that's already on Wi-Fi doesn't show up in a scan. Hold its BOOT button for 10 seconds to reset its setup. The board keeps its key.
  2. In the app, open Scan and start a scan. ESP32 boards appear as FRY-ESP32-XXXXXX, FRY-ESP32-C3-XXXXXX or FRY-ESP32-S3-XXXXXX.
  3. Tap your board. On firmware 0.4.x, enter your FEM- key. The app checks the key with Fry and warns you if it's active on another device. Android then asks to pair with the board: tap Pair, so the key travels over an encrypted link. A board still on firmware 0.4.0 can't take its key over Bluetooth: the app says so. Update it to 0.4.1 in the web flasher first. If the board already has a key (every board on 0.3.x, including all S3 boards in this release), the app shows that key and the board keeps it. Note it down for registration.
  4. Enter your 2.4 GHz Wi-Fi name and password.
  5. Enter your Algorand wallet address and confirm. Keep the phone near the board until the app shows Connected.
Set up is not registered
Setting up the board doesn't add it to your dashboard. Registering the key is what ties the device to your wallet.

On most boards BOOT is labelled BOOT or FLASH. While you hold it, the serial log counts up ([reset] hold 3s/10s) and then confirms [reset] factory reset - clearing wifi + wallet, identity preserved.

No Android?
Your boardUseWhere
ESP32 or ESP32-C3 on firmware 0.4.xThe Fry app for Android, over Bluetooth. There is no browser or USB setup: the dashboard's web setup page has been retired.An Android phone. Without one, an ESP32 or ESP32-C3 can't be set up at the moment.
ESP8266 on firmware 0.3.3The board's own Wi-Fi setup page (steps below)Any phone or computer with Wi-Fi
ESP32-S3 on firmware 0.3.3The Fry app for Android, over Bluetooth. The app shows the key the board made for itself.An Android phone
ESP8266 Wi-Fi setup page (0.3.3)
  1. Put the board in setup mode: a freshly flashed board already is, and otherwise hold BOOT for 10 seconds. When it has no working Wi-Fi settings, it opens its own open Wi-Fi network named FRY-SETUP-XXXXXX.
  2. Join that network from a phone or computer. If the setup page doesn't open by itself, open http://192.168.4.1.
  3. Enter your 2.4 GHz Wi-Fi name and password and your 58-character Algorand wallet address. The page also shows the FEM- miner key the board made for itself: note it down.
  4. Register that key on the dashboard.
Register on the dashboard

Registering ties the key to your wallet. Until you register it, the device doesn't appear in your device list, even if the app says it's connected. First wait until the board is online: the app shows Connected.

  1. Sign in at dashboard.frynetworks.com with your wallet.
  2. Go to Devices → New Registration, paste the key and click Start Registration. You can also use the Onboard a Miner or Node card: click Start onboarding.
  3. Follow the prompts. The device then appears under Devices.
MessageWhat it meansWhat to do
Miner key not found
"We couldn't find FEM-AB…. A device's key shows up here after the device first connects to the internet. Check it for typos: keys are case-sensitive."
Fry hasn't heard from the board yet, or the key has a typo.Check the board is online (Monitor), wait a few minutes, and paste the key exactly as shown.
Registered to another walletThe key belongs to a different wallet.Sign in with that wallet, or use a key from your own wallet.
Already in your walletYou've already registered this key.Look for it in your device list.
IOT- keys are now FEM- keys
"IOT- keys are now FEM- keys: use FEM- with the same 32 characters."
You entered an old IOT- key.Click Use FEM-… to switch to the FEM- form of the same key.
Check the capital lettersThe key was typed in the wrong case.Paste the key exactly as shown. It starts with FEM- in capitals.
Miner key invalidThis isn't the shape of a key.A key is FEM- followed by 32 letters and digits.
Something went wrongThe dashboard couldn't check the key this time.Try again. If it keeps happening, report it.
Monitor your device

Active means Fry received a heartbeat from the device in the last 15 minutes. The dashboard and the Fry app (0.4.0 and newer) use the same rule, so they agree. Older app versions based "Active" on registration, not on whether the device was actually online.

A board sends its first heartbeat about 10 minutes after it starts, and then one every 10 minutes. So a newly set up board shows Inactive for its first 10 minutes or so, and that's normal.

Serial log

Connect the board over USB at 115200 baud to watch its log. These lines are the ones worth knowing:

LineMeaning
FRY boot v… chip=… mac=… minerkey=FEM-…The boot line, with the firmware version and the board's key. Don't post the full key (Privacy).
api: registered install=…The board registered with Fry.
poc: slot=… put=202 lease=…Fry accepted a heartbeat. lease=false is normal on ESP boards.
wifi connect failed reason=201 …The board can't find the network: the name is wrong, the network is out of range, or it's 5 GHz only.
wifi connect failed reason=202 …The Wi-Fi password is wrong.
ota: manifest check cur=… latest=… action=noneThe firmware is up to date.
[prov] refused: no miner key - set it with the web setup page (USB) or app>=0.4A 0.4.x board needs your FEM- key. See Get a key, then set the board up in the Fry app. (The log still mentions the web setup page, which has been retired.)
"Verified" and "Unverified"

These labels refer to the verification stake, not to whether the device works. The app's "Verified: Yes" and the dashboard's "Unverified" badge both mean the same thing: whether a verification stake is recorded for the device.

Not earning?

The dashboard's device list and the app's device screen now say "Not earning:" followed by the first check the device fails, in words. The dashboard's Reward eligible field now shows the result of all the reward checks, not just the proof-of-connectivity check, so it can say No with a reason even while the device is Active. Older app versions show the same reason as a short code, for example "Rewards blocked: integration_required". Here is what each reason means:

You see "Not earning: …"What to do
"this device is not registered to a wallet yet."Register the key.
"no reward wallet is set for this device."Set a reward wallet for the device on the dashboard.
"the server has no proof-of-connectivity report from this device yet."Power the board on and connect it to Wi-Fi. The first heartbeat arrives about 10 minutes after it starts.
"no proof-of-connectivity heartbeat reached the server in the last 24 hours."The board has been offline. Check its power and Wi-Fi (serial log).
"the device does not report its software version, …"Older ESP firmware doesn't send this report. See the note below.
"rewards are not enabled for … devices yet."Rewards aren't enabled for this kind of device yet. See the note below.
"rewards are paid per valid 10-minute proof slot, and … firmware does not submit slot proofs yet."ESP firmware doesn't send these proofs. See the note below.
"Fry Edge Miner rewards also need an active integration (FryVPN or Olostep), and … miners do not run one."ESP boards can't run an integration. See the note below.
ESP devices today
Right now ESP devices report liveness only: a heartbeat every 10 minutes. They don't send the per-slot proofs, and they don't run the integration the reward calculation needs. So an ESP device can show Active and still earn nothing today. Whether and how ESP devices earn is a reward-policy decision that hasn't been made yet, and we'll announce it when it is. Until then, the dashboard shows what a device earns in its current state rather than a rate it can't reach. A verification stake doesn't change any of this.
Troubleshooting
Setup errors (Fry app 0.4.0)

Each error is named in bold. App 0.4.0 shows a sentence, and the start of each one is quoted below.

What you seeWhat it meansWhat to do
Key required (error 6)
App: "This board needs your miner key…"
A 0.4.x board has no key, and it won't save Wi-Fi until it gets one.Enter your FEM- key in app 0.4.1. App 0.3.x can't send a key.
Bad key (error 7)
App: "The board rejected the miner key…"
The key isn't FEM- plus 32 letters and digits.Paste it again exactly, checking the capital letters.
Key locked (error 8)
App: "This board already has a confirmed miner key…"
The board already has a key that Fry has confirmed, and that key can't be replaced over Bluetooth or Wi-Fi.Erase the board in the web flasher with Erase User Data, or write its -factory.bin by hand, then set it up again in the Fry app with the new key.
Registration refused (HTTP 401, error 9)
App: "Fry does not recognise this miner key…"
Fry didn't accept the key for registration. The usual cause is an old IOT- key on firmware older than 0.3.2.Make sure the key starts with FEM-. A board still on v0.3.1 needs new firmware: an ESP32 or C3 updates by itself, and an S3 or ESP8266 needs a re-flash over USB.
Registration forbidden (HTTP 403, error 10)
App: "Fry refused this board's registration…"
Fry refused this key. It may be registered to another wallet.Check the key on the dashboard. If it still fails, report it with the first 6 characters of the key.
Key in use elsewhere (HTTP 409, error 11)
App: "This miner key is already active on another install…"
Fry reports a conflict with this key, such as another device already using it.Use a different key for this board, or stop the other device (one key per device).
Registration failed (other HTTP 4xx, error 12)
App: "Fry rejected the registration…"
Fry refused the registration for some other reason.Note the number shown and report it.
Can't reach Fry (error 13)
App: "The board is on Wi-Fi but cannot reach Fry right now…"
The board can't reach Fry's server: the internet is down, or the server is busy.Check that your router has internet and leave the board powered on. It keeps retrying by itself.
App: "The board could not find that Wi-Fi network…"The name is wrong, or the network isn't 2.4 GHz.Pick your 2.4 GHz network again. The name is case-sensitive.
App: "The Wi-Fi password was not accepted…"The Wi-Fi password is wrong.Enter it again. It's case-sensitive.
App: "The board joined Wi-Fi but the router gave it no IP address…"The router didn't give the board an address.Check your router's device limit or MAC filtering, then try again.
App: "The board rejected the wallet address…"The wallet address has a typo.Paste your full 58-character address.
App: "The board is on Wi-Fi but Fry did not accept its registration…"A board on firmware 0.3.x reports every registration problem this way.It keeps retrying by itself. Check the dashboard in a few minutes. If the board is on v0.3.1, see re-flash.
Web flasher
What you seeWhat to do
Only Erase User Data is offered, with no UpdateThe board is already up to date. Don't press Erase User Data: it wipes the miner key and Wi-Fi.
"Unknown error (4)" after Connect to Wi-Fi or Change Wi-Fi (firmware 0.3.x only)The board isn't in setup mode. Hold BOOT for 10 seconds, reconnect in the flasher, and try again. On firmware 0.4.x, Change Wi-Fi over USB works.
The app says a board on firmware 0.4.0 can't take its key over BluetoothOn an ESP32 or ESP32-C3, update with the web flasher first, then set it up in the Fry app. An ESP32-S3 stays on 0.3.3 and is set up in the Fry app as it is. An ESP8266 uses its Wi-Fi setup page.
No serial port appearsUse a data cable and install the USB driver. See Flash.
Older app versions (0.3.x)
What you seeWhat to do
"Device registration with hardwareapi failed"Older apps show this one message for every registration problem, including a missing key. Install app 0.4.1 to see the exact reason, then use the table above.
"Provisioning failed"The connection to the board was interrupted. Keep the phone close to the board and try again. App 0.4.0 and newer retry by themselves and wait longer.
"Wi-Fi authentication failed", "Invalid Wi-Fi network name", "Connected but never received an IP address", "Invalid Algorand wallet address"These are app 0.3.x's messages for a wrong Wi-Fi password, network name or wallet, or a router that gave no address. Check that detail and try again. On a 0.3.x board, unplug it for 5 seconds first: after an error it stays in that error until it restarts.
"Reward eligible: No" or "Rewards blocked: integration_required" (or another short code)This is the reason the device isn't earning. Not earning? explains each one. App 0.4.0 shows the reason in words.
Other problems
ProblemWhat to do
The scan shows nothingCheck these in order. (1) Your phone's Location switch is on. (2) The app has the Nearby devices and Location permissions (a message such as "Allow both Bluetooth and Location to scan…" means one is missing). (3) The board is in setup mode: a board already on Wi-Fi doesn't show up, so hold BOOT for 10 seconds to reset its setup (it keeps its key). (4) The board has power and is within a few metres of the phone.
The app shows the board, but the dashboard doesn'tThe key isn't registered to your wallet yet. See Register.
The dashboard says InactiveIf the board started less than 10 minutes ago, this is normal. Otherwise, check its power and Wi-Fi in the serial log. A board still on v0.3.1 has an IOT- key, which Fry refuses: an ESP32 or C3 updates by itself, and an S3 or ESP8266 needs a re-flash over USB.
An ESP32-S3 or ESP8266 never updatesThat's expected. These chips stay on 0.3.3 in this release (S3, ESP8266).
Privacy and safety

When you ask for help or post a screenshot, show only the first 6 characters of a miner key, like FEM-AB…, and do the same for wallet addresses in public channels. Treat your full key like a password. Never share your wallet's recovery phrase with anyone, because Fry will never ask for it.

During setup
While a board is in setup mode, anyone within Bluetooth range can read its miner key, just as with 0.3.x. We kept it this way so older apps keep working. Finish setup promptly, and register your key to your wallet as soon as the dashboard finds it.
A fake board nearby could pose as yours and receive the key and Wi-Fi details you enter. Set up only next to your own board, and pick the name that matches it.
ESP8266: on 0.3.3, the setup network is open, so anyone who joins it while the board is in setup mode can read the key. ESP8266 firmware 0.4.x, which is held back this release, protects that network with an 8-character code.
Get help
Ask on discord.frynetworks.com. Include your board type (ESP32, ESP32-C3, ESP32-S3 or ESP8266), your firmware and app versions, the exact message you see, and only the first 6 characters of your key.