This problem seems to occur when your board has the partitioning structure set incorrectly. This typically occurs when the board has had a firmware other than Meshtastic on it previously. In this situation, the file upload page on the device typically shows a free space of around 48,000 bytes, rather than the ~300,000 bytes that it should have free.
There are a number of methods that essentially involve erasing the flash and then re-uploading the Meshtastic firmware.
The most reliable way to fix this problem is to use the install script that is included in the meshtastic firmware zip. If that doesn’t work, these other methods may work:
pio run --target erase --environment tbeam
Then re-install the firmware ie using ESPHome Flasher
Requires: Python, Pio, command to be run in the root directory of the meshtastic-device project once you’ve cloned it (this last requirement is an assumption based on pio not knowing what a tbeam is, may also require Visual Studio Code and PlatformIO as these were installed during use).
@1984 posted another method using the python based esptool.py to erase and re-flash the firmware:
esptool.py --baud 921600 erase_flashesptool.py --baud 921600 write_flash 0x1000 system-info.binesptool.py --baud 921600 write_flash 0x00390000 spiffs-*.binesptool.py --baud 921600 write_flash 0x10000 firmware-tbeam-EU865-1.1.42.bin
There is also the method of using the Visual Studio IDE. This requires having Visual Studio and PlatformIO installed, along with having cloned the meshtastic-device code as per the build instructions. After loading the project in Visual Studio, select the PlatformIO alien icon, then find the appropriate device, and then click the Erase Flash command.
Once it has been successfully erased and re-flashed, visiting https://192.168.42.1/static should leave you with free space on the order of 300,000 bytes, rather than the ~48,000 bytes you currently have. You can then upload the files from the meshtastic-web release.
Occasionally this may glitch when uploading the larger app.js.gz file, but a further erase and flash typically solves this.