# Changelog

All notable changes to the Alpine 5G Router project are documented here.

## [Unreleased]

### Added

- **Config file** – `/etc/5g-router.conf` (and `etc/5g-router.conf.example`) for APN, interfaces, failover, watchdog, signal logging.
- **Configurable APN and interfaces** – `configure_fm350_5g.sh` and `connect-5g.sh` read from config; defaults remain CYTA/eth1/eth0.100.
- **USB mode check on boot** – Scripts detect Mode 41 (7127), warn and attempt switch to Mode 40 (with modem reset).
- **Signal strength logging** – Optional `LOG_SIGNAL=yes` and `WEAK_SIGNAL_CSQ` in config; logged to `/var/log/5g-router.log`.
- **Fallback to eth0** – Optional `FAILOVER_ENABLED=yes` and `FAILOVER_IF=eth0` so default route uses ethernet when 5G is down.
- **Watchdog** – Optional `WATCHDOG_INTERVAL` in config to re-run connection periodically.
- **Firewall rules in repo** – `etc/iptables/rules.v4` for repeatable NAT/forward rules.
- **connect-5g.sh in repo** – `scripts/connect-5g.sh` (installed to `/usr/local/bin/connect-5g.sh`).
- **OpenRC service in repo** – `etc/init.d/5g-router` for Alpine.
- **Install script** – `scripts/install.sh` deploys scripts, service, firewall, and config example to the device.
- **DNS documentation** – `docs/DNS.md` for resolv.conf and dnsmasq.
- **Status script** – `scripts/status-5g.sh` (modem, interface, default route, last speedtest); supports `--json`.
- **Health check script** – `scripts/healthcheck-5g.sh` for Nagios/Uptime Kuma (exit 0/1).
- **Log rotation** – `scripts/rotate-5g-log.sh` for `/var/log/5g-router.log` (cron-friendly; Alpine has no logrotate by default).
- **Optional speedtest cron** – `scripts/speedtest-5g.sh` appends to `/var/log/speedtest-5g.log`; document cron in README.
- **Quick start** – `docs/QUICKSTART.md` (clone → install → config → start).
- **Deploy / SSH doc** – `docs/DEPLOY.md` for first-time SSH and key-based login.
- **Example config** – `etc/5g-router.conf.example` for different carriers/interfaces.

### Changed

- **configure_fm350_5g.sh** – Sources `/etc/5g-router.conf` if present; USB Mode 41 handling (warn + try switch); signal logging and weak-signal alert when enabled in config.

### Notes

- **Persist default route** – Handled by running `connect-5g.sh` at boot via 5g-router service; failover adds eth0 default when 5G fails.
- **Dual-WAN / failover** – Basic failover (use eth0 when 5G down) is implemented; full dual-WAN policy routing is not.
- **IPv6** – Not implemented; carrier and kernel support required; can be added later.
- **Web GUI** – Implemented with login (admin/support), per-page templates, and SQLite backend.
- **SQLite database** – `web/data/alpine5g.db` for users, iptables_rules, and static_routes. Users migrated from `users.json` on first run; firewall rules seeded from `/etc/iptables/rules.v4` when DB is empty. Firewall and Routes GUI: list/add/edit/delete from DB; **Apply** writes iptables and runs `iptables-restore`, or runs `ip route add` for routes.
