2026-03-14 05:32:29 +07:00
2026-03-14 05:32:29 +07:00
2026-03-14 05:32:29 +07:00
2026-03-14 05:32:29 +07:00
2026-03-14 05:32:29 +07:00
2026-03-14 05:32:29 +07:00
2026-03-14 05:32:29 +07:00
2026-03-14 05:32:29 +07:00
2026-03-14 05:32:29 +07:00

Bootloader Update Manager

A C-based web application for updating kernel, device-tree, and U-Boot environment files on Orange Pi Zero 2W.

Features

  • Web Interface: Modern, responsive UI for easy file management
  • Kernel Update: Upload Image.gz to boot partition
  • Device-Tree Update: Upload sun50i-h618-orangepi-zero2w.dtb
  • U-Boot Environment: Upload uboot.env
  • extlinux.conf Editor: View and edit boot configuration
  • Progress Bar: Real-time upload progress tracking
  • Auto-mount: Automatically mounts /dev/mmcblk1p1 to /media
  • Large File Support: Upload files up to 200MB

Requirements

  • GCC compiler
  • Mongoose - Embedded web server
  • cJSON - JSON parser
  • Root privileges (for mounting devices)

Installing Dependencies

Ubuntu/Debian:

# Install mongoose (or build from source)
sudo apt-get install libmongoose-dev

# Install cJSON
sudo apt-get install libcjson-dev

Build from source:

# Mongoose
git clone https://github.com/cesanta/mongoose.git
cd mongoose && make && sudo make install

# cJSON
git clone https://github.com/DaveGamble/cJSON.git
cd cJSON && mkdir build && cd build && cmake .. && make && sudo make install

Building

make

Running

sudo make run
# or
sudo ./up

The server will start on http://localhost:8080

API Endpoints

Endpoint Method Description
/api/upload POST Upload files (kernel, dtb, uboot)
/api/extlinux GET Read extlinux.conf
/api/extlinux POST Write extlinux.conf
/api/progress GET Get upload progress
/api/mount GET Get mount status

Upload Parameters

For /api/upload:

  • type: File type (kernel, dtb, or uboot)
  • file: The file to upload

File Locations

Type Destination File
Kernel /media/Image.gz
Device-Tree /media/sun50i-h618-orangepi-zero2w.dtb
U-Boot Env /media/uboot.env
Extlinux /media/extlinux.conf

Project Structure

.
├── main.c          # Main application (C server)
├── index.html      # Web interface HTML
├── style.css       # Web interface styles
├── app.js          # Frontend JavaScript
├── Makefile        # Build configuration
└── README.md       # This file

Screenshots

The web interface includes:

  • System status panel showing mount state
  • Tabbed upload interface for different file types
  • Real-time progress bar during uploads
  • Full-featured text editor for extlinux.conf

Security Notes

⚠️ Warning: This application requires root privileges to mount devices. Use with caution and ensure proper access controls in production environments.

License

MIT License

S
Description
No description provided
Readme
411 KiB
Languages
C 86.6%
C++ 10.8%
JavaScript 1.1%
CSS 0.7%
HTML 0.7%