WiPhone firmware 0.8.23 (application image)
===========================================

WHAT THIS IS
------------
WiPhone firmware 0.8.23, the oldest application image still on the vendor's
firmware server. Changelog: modified Hardware.h to reduce popping noises in
the speaker; moved the LED_BOARD configuration so it works again. It predates
the over-the-air updater.

Licence: WiPhone Public License v1.0 (HackEDA, Inc.). Section 1.0 grants a
world-wide, royalty-free, non-exclusive licence to use, reproduce, make
available, modify and distribute the Covered Software, which it defines as
"any and all software, firmware and data released" under the licence;
section 3.0.2 requires that recipients be given a copy of the licence. The
full text is the file WiPhone_Public_License_v1.0.txt inside the firmware
source archives in this store (wiphone-firmware-source-0-8-27 and
wiphone-firmware-source-0-8-30); the licence URL cited in the source headers,
https://wiphone.io/WiPhone_Public_License_v1.0.txt, returned 404 on
2026-09-18. The changelog records that the licence was added in 0.8.26.

APPLIES TO
----------
The WiPhone open-hardware ESP32 SIP/VoIP phone from HackEDA, Inc. (WiPhone.io,
Hong Kong; the source licence names MZJ Technology / HackEDA). The WiPhone
Arduino core defines two boards, "WiPhone N0C311" and "WiPhone Pro N0C311P";
the vendor's update server offers a single image, and whether any build is
specific to one board could not be confirmed. Not for any other ESP32 device.

BEFORE STARTING
---------------
- A computer with a micro-USB data cable. The vendor's programming
  instructions (v0.4rc1 documentation, 2021) specify a microUSB cable.
- The Silicon Labs CP210x USB-to-UART driver, which the vendor's downloads
  page links
  (https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers),
  so the phone appears as a serial port.
- A flashing tool: Espressif's Flash Download Tool
  (https://www.espressif.com/en/support/download/other-tools), which the
  vendor documents, or esptool.py (shipped inside the WiPhone Arduino core,
  entry wiphone-arduino-core-0-1-2).
- A charged battery.
- A record of the SIP accounts, phonebook and Wi-Fi settings. They live in the
  SPIFFS partition; writing only the application image leaves SPIFFS alone,
  but the vendor warns that loading a SPIFFS image or changing the partition
  scheme overwrites them.

CONTENTS OF THIS ZIP
--------------------
The zip published on fubsypoly.com wraps the vendor file(s)
byte-for-byte, unmodified.

WiPhone.ino-0.8.23.bin
    1,754,544 bytes
    SHA-256 736b778b9788a8e6716024a3e0b49206ee0cb8b9de744719a048beafcb4c2858
    ESP32 application image (starts with the 0xE9 ESP image magic), exactly as
    served by the vendor's update server. It is the WiPhone.ino.bin of the
    vendor's five-file set and is written at 0x10000.
README.txt
    This file.
SHA256SUMS
    SHA-256 checksums of the files above.

INSTALLATION
------------
Over USB (works from any firmware version):
 1. Connect the WiPhone to the computer with the micro-USB cable and note the
    serial (COM) port it is given.
 2. Start the Espressif Flash Download Tool and choose the ESP32 download
    tool. The vendor's settings are: SPI mode DIO, SPI speed 40 MHz, flash
    size 128Mbit, the phone's COM port, and a baud rate (the vendor suggests
    1152000 to speed the transfer). The vendor page also lists "CrystalFrq:
    80MHz".
 3. Tick one row: this .bin file at address 0x10000 (the vendor's address for
    WiPhone.ino.bin, the application image). The other four files of the
    vendor's five-file set (bootloader at 0x1000, partition table at 0x8000,
    boot_app0.bin at 0xe000, SPIFFS image at 0xc90000) are already on a
    working phone and are not part of this entry.
 4. Recommended but not stated by the vendor for an application-only write:
    also tick boot_app0.bin at 0xe000 (it is in wiphone-firmware-0-8-9a-beta
    and in the Arduino core at tools/partitions/boot_app0.bin; both copies
    have SHA-256 f94c5d78...a17f0). A phone that has taken an over-the-air
    update may be booting from the second application slot (app1 at 0x650000);
    boot_app0.bin resets the OTA selector so the bootloader starts the image
    just written to app0.
 5. Press START. The tool shows FINISH when the write completes.
 6. Unplug the phone, hold the power button for 10 seconds to force a
    shutdown, then press it again to boot the new firmware (vendor procedure).

Equivalent esptool.py command (standard esptool syntax; the vendor documents
only the Flash Download Tool, so this form is not from WiPhone documentation):
    esptool.py --chip esp32 --port <PORT> --baud 921600 write_flash \
        0xe000 boot_app0.bin 0x10000 <this file>.bin

This build predates the over-the-air updater (added in 0.8.24), so USB is the
only way to install it, and a phone running it must be updated again over USB.

VERIFYING
---------
Open Menu > Settings > Firmware settings. "Device version" is the installed
firmware version (vendor user manual, Firmware Updates page). The image itself
carries the string "Ver. 0.8.23".

IF SOMETHING GOES WRONG
-----------------------
- Serial flashing is done by the ESP32's ROM bootloader, which cannot be
  overwritten by a bad application image, so a failed or interrupted write is
  recovered by writing the image again.
- If the phone will not switch off, hold the power button for 10 seconds
  (vendor procedure).
- Failed over-the-air updates: "the phone will not automatically try to update
  again until the firmware version available on the server is incremented";
  the Status field shows the error, and the Reset button in Firmware settings
  clears the failed-version flag (vendor user manual and Custom Firmware
  Server page).
- If the phone boots the old version after a serial write, the OTA selector is
  pointing at app1: write boot_app0.bin at 0xe000 as described above.
- No port appears: install the CP210x driver and use a data (not charge-only)
  cable.

DOWNGRADING
-----------
Over-the-air: no, the phone only installs a newer server version. Serial
flashing: any image in this archive can be written at 0x10000; the vendor
documents no downgrade lock, but it also does not document whether older
builds read settings written by newer ones. Record the SIP accounts and
phonebook first. Images before 0.8.24 contain no OTA code, so a phone taken
back to them can only be updated again over USB.

PROVENANCE
----------
- File: WiPhone.ino-0.8.23.bin
- Retrieved from:
  https://wiphone.io/static/releases/firmware/WiPhone.ino-0.8.23.bin
- Wayback copy: none found (the file was never captured)
- Date retrieved: 2026-09-18
- Official page: https://wiphone.io/docs/WiPhone/latest/user_manual/OTA.html
- Status: verified (downloaded from the vendor's own firmware server, the location its phones update from)

Found on the vendor's firmware server by requesting the file names of the two
naming patterns the vendor itself used (WiPhone.ino-<v>.bin in its Custom
Firmware Server example, WiPhone-phone-<v>.ino.bin in its WiPhone-phone.ini).
The directory is not listable (HTTP 403) and no page links these files.

MORE INFORMATION
----------------
- https://radios.fubsypoly.com/wiphone/
- https://radios.fubsypoly.com/wiphone/vol-3/ (Configuration & Firmware)
- Firmware Updates (OTA): https://wiphone.io/docs/WiPhone/latest/user_manual/OTA.html
- Firmware Download Tool Instructions: https://wiphone.io/docs/WiPhone/latest/technical_manual/software/download_tool_instructions.html
- Programming Instructions (Arduino): https://wiphone.io/docs/WiPhone/latest/technical_manual/software/programming_manual.html
- Custom Firmware Server example: https://wiphone.io/docs/Examples/latest/FirmwareServer.html
