Photonicat 2 固件 Changelog:修订间差异

来自Photonicat Wiki
跳转到导航 跳转到搜索
C2h2留言 | 贡献
Note that the battery charge limit requires PCB revision A3; link to Chinese version
C2h2留言 | 贡献
Add 2026-08-11 r7897 release notes
第90行: 第90行:
* '''Raise-to-wake improved''' — Rebuilt as proper gesture detection, like a phone's. It no longer wakes by itself when the device is stood upright and left alone, and responds faster when you do pick it up.
* '''Raise-to-wake improved''' — Rebuilt as proper gesture detection, like a phone's. It no longer wakes by itself when the device is stood upright and left alone, and responds faster when you do pick it up.
* '''Stability and power-on speed''' — Fixed the random freeze after extended running and the rarer permanent lockup that could only be cleared by removing the battery. Power-on is quicker: the main board powers as soon as the button has been held 200 ms, overlapping the long-press window. Beeper timing is corrected, including the charger-plugged beep that could arrive 40–50 s late, and reset and update operations now play a short confirmation melody.
* '''Stability and power-on speed''' — Fixed the random freeze after extended running and the rarer permanent lockup that could only be cleared by removing the battery. Power-on is quicker: the main board powers as soon as the button has been held 200 ms, overlapping the long-press window. Beeper timing is corrected, including the charger-plugged beep that could arrive 40–50 s late, and reset and update operations now play a short confirmation melody.
== 2026-08-11 r7897 ==
=== GPS ===
* '''New GPS page''' — a full GNSS receiver page at <code>/gps</code>: live position on a map, fix quality and accuracy, speed and heading, and a per-satellite signal chart across constellations. Hidden by default; turn it on in General Settings, where the option appears only on GNSS-capable modems (EM05, RM500Q, EM520).
* '''Maps work without an internet connection''' — a world map pack ships with the firmware, you can download higher-detail regions for offline use, and anything still missing is fetched through the router and kept for next time.
* '''Choose which satellite systems to use''' — GPS is always tracked; GLONASS, BeiDou and Galileo can be added. Previously the module tracked those systems but never reported them, so the sky looked emptier than it was.
* '''Position logger with track viewer and replay''' — records your track at fixed intervals or smart profiles that log on movement and turns, stores it on internal storage or an SD/NVMe card with a size cap, and rotates and compresses old files automatically.
=== Cellular ===
* '''A 5G connection that stops working now fixes itself''' — the signal could look fine and show as connected while nothing actually got through, and it stayed that way until you rebooted or reset the modem by hand. The box now notices, reconnects on its own, and returns to 5G once service is back.
* '''A connection that never carries traffic is dropped quickly''' instead of being trusted indefinitely, so recovery starts sooner and takes one less power cycle.
* '''Cellular no longer overrides your routing priority''' — the modem forced a fixed route priority on every connection, which could quietly put cellular ahead of or behind WAN regardless of how you had configured it. It now respects your setting.
* '''Fixed a startup race that could leave cellular dead''' — the dialer could start before the manager that configures it was ready. The manager now starts first, and a failed connection attempt now reports the failure and restarts cleanly instead of silently sitting there as a dead link.
* '''Devices without a modem no longer pretend to have one''' — the header showed "No Service" and the modem page waited forever on units with no module fitted. Stored SMS messages remain readable either way.
=== Network ===
* '''Failover now actually works on the default setting''' — a migration only ever ran on boxes that had used the retired Smart WAN mode, so most devices, sitting on the default, never moved onto the current routing system at all: no failover, no health checking, and stale route priorities. Every device now migrates, and no traffic changes path in the process.
* '''The dashboard tells your own hotspot apart from the one you connect to''' — both Wi-Fi rows carried the same icon; the upstream connection now has its own badge and icon.
=== Wi-Fi ===
* '''Your network name and password no longer disappear''' — using the upstream Wi-Fi relay and rebooting could make the onboard radio vanish from every screen and come back as a factory "OpenWrt" network with no password.
* '''Turning off upstream Wi-Fi restores your own network name''' instead of leaving the hotspot advertising the factory default.
* '''Add-on Wi-Fi cards work straight after a flash''' — a PCIe card was left switched off, needing two reboots and a manual click before it would go on air.
* '''Fixed access point names gaining a second "-5g"''' on some units.
=== Phone (in development) ===
* '''Early support for making and taking calls from the web interface''', with in-call audio, a dialer, contacts and voicemail. Off by default — turn it on in Settings. Still in active development.
=== Battery and MCU ===
* '''Battery time-remaining estimates no longer show nonsense''' right after you plug or unplug power — the reading now settles first, showing "-" for a few seconds instead of "10 minutes left" on a nearly full battery.
* '''Battery health is hidden until the reading is trustworthy''' — it appeared after a single discharge, when the figure still swings widely, and looked like a broken gauge when it jumped.
* '''See how long you have been running on battery''' for the current discharge, surviving a reboot mid-run.
* '''Battery history no longer grows without limit''' — the 30-day cleanup had never actually deleted anything, so the database grew forever on device storage.
* '''Your battery charge limit is remembered''' — it survives an MCU restart, and is re-checked whenever it is read, so the value shown always matches the one in effect.
* '''LED and beeper schedules keep running while the device sleeps''' on newer MCU firmware, which now owns the daily timer itself.
* '''Battery internal resistance is now reported''', split into total and cell-only.
* '''MCU uptime and time-since-last-sleep are now available.'''
* '''Battery gauge diagnostics can be pulled off the MCU''' for troubleshooting, via <code>soc-log-get</code>.
* '''New factory-reset command''' for the MCU: <code>pcat-pmu-updater --wipe-nvs</code>.
* '''MCU board revision is now readable''' via <code>pmu-hw-version-get</code>, so support can identify hardware variants without opening the case.
=== Web interface ===
* '''The management interface is much faster''' — pages and files now serve several times quicker under load, and the worst-case wait on a static file dropped from seconds to hundredths of a second.
* '''Fixed the interface freezing for 18-24 seconds about every 25 seconds''' — each open browser tab permanently occupied one of the device's four request slots.
* '''Language is now a property of the device, not the browser''' — two browsers showed two different languages, and a choice made on one machine reverted for everyone else.
* '''Light/dark appearance is device-wide too''', with a reset-to-default button.
* '''Colour picker for display themes''' — choose exact colours per element with a live preview, or roll a random palette and fine-tune it by hand.
* '''The reboot screen gives a real time estimate and reloads itself''' when the device is back, instead of a bare counter you had to watch and refresh manually.
* '''Containers work on a freshly flashed device''' without visiting a setup tab or rebooting.
* '''Browser tab titles per page''', and the site icon follows your display theme.
=== Mini display ===
* '''New GPS page''' — speed, heading, altitude, accuracy, fix type and satellite count. It only appears when a GPS-capable modem is fitted, so other units do not get an empty screen.
* '''Storage page rebuilt''' — separate bars for eMMC, NVMe and SD, a CPU chip icon in place of the vertical CPU text, memory labelled inside its bar, and a clearer chart layout.
* '''The display refreshes where it matters''' — the first page and the clock update twice a second, ping once a second while you are watching it, and slower pages stay slow. Data is kept warm in the background, so the clock and battery are no longer stale when the screen wakes.
* '''New wake-up animation''' — the cat dissolves into the first page, replacing the old boot bar. It plays on slow boots too.
* '''Colour themes''' — background, icon tinting and bar colours are read from a theme file, so the panel can be recoloured without rebuilding firmware.
* '''Public IP is tracked live''', with a fast re-probe when the link comes back, so it no longer shows a stale address after a WAN change.
* '''Wi-Fi shows one SSID row per radio''', and goes to standby when the upstream is not associated.
* '''Sharper, smoother text''' — antialiased rendering, smoother scrolling, and the clock shows <code>--:--</code> until the timezone is actually known rather than guessing.
* '''Faster startup and smoother updates''' — every collector starts before the panel comes up, a slow ping or speed test no longer stalls the refresh, and unchanged parts of the screen are not redrawn.
* '''Cellular signal icon now shows on RM500Q modems''', where it had been blank.
=== Storage and sharing ===
* '''Per-client traffic statistics fixed on AIC8800 Wi-Fi''' — connected-device byte and packet counters read wrong or zero, so per-device traffic was not trustworthy.
* '''You can now mount an SMB share''' from a Windows PC or a NAS. The box could already share its own files over SMB but could not connect to someone else's.
* '''The NFS server can actually export a share now''' — it was built into the system but the tools needed to export anything were missing, so it could never be used. Linux and macOS clients now have a faster alternative to SMB.
* '''Fixed partitioning failures on eMMC''' — creating a partition could fail partway through because a required tool was missing. Reused partitions no longer carry a leftover filesystem signature. NTFS drives also mount correctly now.
* '''Traffic statistics are visible in the web UI''' — the data was already being collected but could only be seen from a shell.
* '''A failed checksum now stops a firmware flash''' instead of letting it proceed.

2026年8月11日 (二) 19:29的版本

中文版见 Photonicat 2 固件更新日志.

2025-08-22

  • initial release

2025-09-19 r7612

  • Simplified multi-WAN routing, disabled mwan3.
  • Built-in Docker packages by default.
  • Bumped kernel version to 6.12.45.
  • Applied PCIe patches from upstream.
  • Added USB hub reset timing and watchdog.
  • Status LED and beeper can be disabled by the user.
  • Improved mini display performance.
  • Added LED, beeper, and fan control with over-temperature protection algorithm.
  • Simplified network WAN interface selection: auto, eth_only, cell_only, all_off.
  • Added /update management interface.
  • MCU: Optimized coulomb counting algorithm.
  • MCU: Fixed occasional issue where charging indicator light did not display.

2025-12-12 r7618

  • Improved bootup speed by removing unnecessary network resets.
  • Updated OpenWrt netifd to improve NFA765 wifi module compatibility.
  • Improved fan control strategy and overall thermal behavior.
  • Improved intelligent fan speed adjustment logic. smart_quiet, smart_cool, manual.
  • Fixed UI crash when network mode was set to Cellular Only.
  • Fixed an issue where 4G/5G band information was not displayed in the UI.
  • Fixed missing information in the with some 5G module information page.
  • Fixed 5G Signal not displaying error.
  • Fixed the Remember Me login option not working after a system restart.

2026-03-06 r7660

  • Kernel & system updates — Updated kernel to 6.12.74, mac80211 to 6.12.61, python3 to 3.13.9 with related packages (PAM-based auth replacing deprecated spwd), and system version to 26.04, fixed several CVEs.
  • Fibocom FM350-GL 5G modem support — Full support including signal strength, temperature monitoring, IMEI, carrier/operator display, serving cell info, roaming preference, 4G/5G network mode and band selection, WWAN power off toggle via rfkill, network stats tracking, and hex-encoded operator name decoding.
  • SMS reliability — Switched to PDU mode for all modems, fixed FM350-GL serial port handling, prompt detection, and response timeouts.
  • Web terminal — Added web-based terminal (/terminal) with persistent PTY sessions, fullscreen toggle, disconnect/reconnect, JetBrains Mono font, and mobile viewport optimization.
  • Direct Power Mode & TCP BBR v3 — Added power-on mode options for battery-free and quick-response applications (auto power-on when adapter connected, no battery required). Added TCP BBR v3 support with congestion control configuration in General Settings.
  • Battery history & power event logging — Battery history chart with SQLite storage, fixed voltage scale, area fill, watt display, and power on/off event timeline. Persistent power event logging with voltage, current, SOC data, and DC plug/unplug tracking.
  • Idle & low battery shutdown — Live idle shutdown countdown timer, low battery shutdown support, WiFi client idle monitoring (OR mode), battery-only auto-shutdown option, and 2% SOC tolerance for SOC estimation jumps.
  • General Settings & timer page redesign — New General Settings page with language, timezone, hostname, and LuCI sync. Redesigned timer page with modern split-panel layout, compact full-width panes, and clarified Car/UPS mode descriptions.
  • Dashboard & header improvements — Active WAN shown first, public IPv6 detection, modem temperature display, 5G/4G indicator in network icon row, status-aware rendering, gateway underline, and optimized mobile header layout.
  • Performance & UI/UX polish — Native Python ubus/uci wrappers, non-blocking IO caching, CPU powersave disabling big cores (A72), 3-month static asset caching, temperature and wattage charts, tab state preserved across refresh, single-language notifications, improved icons, Wiki and Community footer buttons, smart phone formatting, and verbose firmware upgrade progress.

2026-06-15 r7714

  • Kernel & system updates — Updated kernel to 6.12.91, fixed some recent critical security problems. Updated mac80211 to 6.18.26. fixed several CVEs.
  • OpenWRT base system - Updated base system and LuCI to 25.12. Added IEEE80211.BE support (Allow to enable 6GHz channels on QCNCM865 and MT7925).
  • Smart WAN (WiFi-as-WAN) — New Smart WAN mode turns the onboard radio into an upstream WiFi client with automatic Ethernet → WiFi → Cellular failover. Phone-like auto-reconnect to known upstream WiFi, robust scan-device resolution, and a confirmation dialog before switching. The disabled STA radio is shown correctly with a dedicated "WAN (WiFi)" status.
  • WiFi 7 (802.11be) & WPA3 — Added WiFi 7 (BE) and WPA3-SAE support for PCIe cards, with correct htmode/channel handling for 5GHz BE and 6GHz BE, PCIe card-name detection, and normalized encryption values in the UI.
  • Dashboard & header improvements — Active egress is now highlighted live (only the active WAN row lights up); exposes WiFisignal, active egress, and network mode; status-aware network icons with gateway underline, accurate WAN underline, red-cross for disabled links, and tooltips. Added public IPv6 / public-IP aliases.
  • Battery & charge control — Added a battery charge-limit slider (80–100%) on the Device Control page, made charge-limit the single source of truth, fixed the battery icon to show the true charge percentage, and robustly default to 100% when never set.
    • Hardware requirement: the battery charge limit is only supported on PCB revision A3 boards. Earlier board revisions do not support it.
  • Screen visual editor — New Figma-style visual layout editor for the device display, merged with the JSON view into a single Editor tab. Add/remove pages, per-element position reset, center & snap tools, reset-layout, live JSON diff, label/data-key canvas toggle, and a coordinate fix mapping editor coords to the device content region. Fixed the graph element type rendering on device.
  • Screen custom data sources — Added custom metrics (command / uci / env / json_file / HTTPS) in the editor with on-device examples, one-click Save & Restart, live value preview on Refresh, duplicate-key warnings, clearer data_key guidance, Gold/AAPL examples via the official Photonicat market API, and flicker-free live preview.
  • Device Control & network modes — Reordered network modes with composite WAN icons; consolidated the charge-limit setting onto the Device Control page.
  • FM350-GL roaming — Enabled automatic roaming via AT+COPS=0 and hid the unenforceable "no roaming" option; fixed band selection being overwritten by polling refresh; removed the USB 3.12 10Gbps option that caused LAN/WAN failures.
  • Security hardening — Added a socketio_auth_required decorator for WebSocket endpoints, added auth to /switch_locale and low-battery-shutdown routes, and removed unused/over-permissioned API endpoints.
  • Performance — Reduced idle CPU usage (file-only logging by default, fewer select wakeups and uci forks), cached data_stats.json and aligned dashboard caching to the display poll, dropped a no-op screen thread, and read WWAN rfkill state directly from sysfs.
  • Mini-display performance — Major CPU reduction on the display loop (static-page CPU ~3.2% → ~1.4%, roughly 55% less): skip re-render/SPI blit on unchanged frames via a data-epoch gate, byte-compare before transferring pixels, and halve polling cadences. Fonts (incl. the ~37MB CJK collection) are now parsed once and cached/preloaded, and network lookups (wireless SSID, iwinfo client enumeration, public IP) are cached to cut process forks (~3.8/s → ~1.7/s).

2026-06-16 r7715

  • Mini-display SPI clock reliability — Lowered the display SPI clock from 120 MHz to 50 MHz to eliminate visual glitches or display problems at the higher rate; the conservative timing trades a negligible refresh-latency increase for a stable, artifact-free image.
  • Serial-number validation fix — Valid device serials were incorrectly shown as (invalid) on-device because the signature check depended on the cryptography module, which is not installed on the target OpenWrt image.

2026-06-23 r7720

  • OpenWRT base system — Updated routing and telephony packages to OpenWRT 25.12 branch. Switch default firewall to fw4.

2026-07-31 r7853

  • Boot time cut by 59% — 17.4 s → 7.2 s — A full reboot cycle is now 16.6 s instead of 28.0 s. The biggest single cause was a phantom fstab entry that made every unit wait each boot for a disk that was never fitted. Also: root filesystem recompressed from xz to zstd, squashfs re-tuned to 256 KiB blocks with direct reads, U-Boot no longer scans USB and the network for boot media, the boot logo is painted in one SPI transfer instead of 110,080 one-byte ones, and the failsafe window is 300 ms instead of 1 s.
  • Optional services now ship idle — Docker, Samba, collectd, aria2, nlbwmon, watchcat, frp, filebrowser, rclone, adbyby, OpenAppFilter, Tailscale and ZeroTier are still installed but no longer autostart (73 → 59 running services); enable any of them with one click in System → Startup. vnstat and the web terminal are deliberately left running.
  • WAN priority table replaces Smart WAN mode — The Smart WAN switch from r7714 is now a single metric-based priority table listing every enabled uplink — Ethernet, upstream WiFi, PPPoE and Cellular — in a fixed slot order, falling back down the list. It replaces mwan3 entirely. Wired WAN now fails over immediately on carrier loss instead of waiting for a probe to time out, and PPPoE is correctly reported as the active egress.
  • Upstream WiFi (WiFi-as-WAN) — Joins the stronger band automatically when one SSID is broadcast on both 2.4 and 5 GHz; roams to a saved network that comes back into range while still associated; rejoins known networks faster after roaming away; reports live association and standby state with per-radio icons; and scans less aggressively when no saved network is nearby.
  • New /dev diagnostics page — A live 3D model of the device driven by the built-in G-sensor, with guided orientation calibration; a 2S2P 18650 pack diagram showing per-stage voltages; the MCU fuel-gauge log; and a modem dial log viewer. Tone tests and MIDI playback for the internal beeper.
  • Fibocom FM350-GL 5G modem — The dialer is rewritten from Python to native C for reliability. It now honours the network-mode preference set in the web UI, locks to 4G when asked and climbs back to 5G when available, falls back to LTE if a 5G dial fails, and watches the data plane to catch a connection that is up but not passing traffic. Fixed a 4G-only SIM causing an endless modem power-cycle, and automatic mode being reported as 5G when it was not. Modem firmware version is now shown, with a firmware-update dialog.
  • Modem dial log — The last 16 MB of dialling activity is kept in memory and viewable from the web UI, so an intermittent connection problem can be diagnosed after the fact.
  • Battery charge limit — 1% resolution slider, synchronised to the MCU with debounced saves and re-read live so the UI always reflects what the hardware is enforcing. The limit now survives an MCU restart.
    • Hardware requirement: the battery charge limit is only supported on PCB revision A3 boards. Earlier board revisions do not support it.
  • Firmware and MCU update flow — Version dropdowns with per-version changelogs and downgrade support; MCU and firmware updates can no longer run at the same time; no update is offered when the installed MCU is newer than the server's; and OTA now defaults to sysupgrade -c -p, with the individual flags exposed as tick boxes.
  • PhotonDNS — A new high-performance DNS forwarder written in Rust: sharded LRU cache, serve-stale, prefetching, cache persistence, UDP/TCP/DoT/DoH upstreams and hedged-racing failover with per-upstream health tracking, plus China-list and ad-list helpers. Ships with its own LuCI page but disabled by default.
  • Security hardening — CSRF is now enforced, the LuCI password is no longer leaked to the page, all API routes require authentication, state changes are POST-only, developer endpoints are gated, an open-redirect was closed, and Remember Me now uses proper SQLite-backed tokens.
  • Captive portal — One-tap accept, portal URLs that work without DNS, branded error pages, serialised enable/disable so rapid toggling cannot leave it half-configured, and failures are surfaced instead of silently ignored.
  • Lower idle CPU and less flash wear — Heavy modem AT queries only run when the modem page is open, usage statistics are batched to flash with retention and indexing, PMU settings poll every 60 s instead of continuously, public-IP probes back off, and hidden browser tabs stop polling altogether.
  • Mini display — New cat wake-up boot animation. Per-page refresh rates (2 Hz on the clock and CPU pages, 1 Hz while pinging) instead of one fixed rate. Per-core CPU bars, a memory bar with the value inside, per-disk usage bars and a scrolling SSID ticker. iStat-style bars with supersampled anti-aliasing and softer text. Battery remaining-time slot, WAN mode line, configurable public-IP lookup, true physical-zero backlight at brightness 0, and standby when the upstream link is not associated.
  • WiFi fixes — Fixed the intermittent failure where the access point came up but did not broadcast its SSID after boot, and WLAN-enabled detection under the new OpenWrt, where a radio only works if both the interface and the device are enabled. Added a reset WiFi to defaults button to recover from a bad configuration.
  • eMMC compatibility — Internal storage is now pinned to HS200 at 52 MHz in both the bootloader and the kernel, eliminating a class of intermittent storage errors.
  • Assorted fixes — CPU powersave setting now persists across reboot; manual fan speed survives a page refresh; the battery correctly shows as discharging while powering an external device over USB Type-C; PPPoE keepalive relaxed to 5 5 to stop spurious drops; irqbalance removed in favour of static Ethernet IRQ pinning after it was found parking both NIC interrupts on one core; missing English strings added; Alpine.js updated to 3.15.12.

MCU Changes

  • Less standby power — Standby current drops from about 2.6 mA to 1.1 mA, so a charged pack holds its charge for weeks rather than days when the device is off. The current monitor, accelerometer and flash now power down properly, and the fan actually stops when the main board is off.
  • A more accurate battery percentage — The fuel gauge has been reworked end to end with temperature compensation, self-learned internal resistance and periodic re-anchoring. The reading no longer jumps (for example 40% to 80% after a firmware update), survives reboots and firmware updates, and reports true learned capacity and cycle count. Behaviour is now much closer to a phone's.
  • New LED behaviour — MacBook-style indicator: the colour tells you the charge state and the motion tells you what the device is doing, with smooth gamma-corrected breathing while charging and a continuous red flash when the battery is low. Several false pure-red flashes at power-on and when the pack was full have been fixed.
  • Raise-to-wake improved — Rebuilt as proper gesture detection, like a phone's. It no longer wakes by itself when the device is stood upright and left alone, and responds faster when you do pick it up.
  • Stability and power-on speed — Fixed the random freeze after extended running and the rarer permanent lockup that could only be cleared by removing the battery. Power-on is quicker: the main board powers as soon as the button has been held 200 ms, overlapping the long-press window. Beeper timing is corrected, including the charger-plugged beep that could arrive 40–50 s late, and reset and update operations now play a short confirmation melody.

2026-08-11 r7897

GPS

  • New GPS page — a full GNSS receiver page at /gps: live position on a map, fix quality and accuracy, speed and heading, and a per-satellite signal chart across constellations. Hidden by default; turn it on in General Settings, where the option appears only on GNSS-capable modems (EM05, RM500Q, EM520).
  • Maps work without an internet connection — a world map pack ships with the firmware, you can download higher-detail regions for offline use, and anything still missing is fetched through the router and kept for next time.
  • Choose which satellite systems to use — GPS is always tracked; GLONASS, BeiDou and Galileo can be added. Previously the module tracked those systems but never reported them, so the sky looked emptier than it was.
  • Position logger with track viewer and replay — records your track at fixed intervals or smart profiles that log on movement and turns, stores it on internal storage or an SD/NVMe card with a size cap, and rotates and compresses old files automatically.

Cellular

  • A 5G connection that stops working now fixes itself — the signal could look fine and show as connected while nothing actually got through, and it stayed that way until you rebooted or reset the modem by hand. The box now notices, reconnects on its own, and returns to 5G once service is back.
  • A connection that never carries traffic is dropped quickly instead of being trusted indefinitely, so recovery starts sooner and takes one less power cycle.
  • Cellular no longer overrides your routing priority — the modem forced a fixed route priority on every connection, which could quietly put cellular ahead of or behind WAN regardless of how you had configured it. It now respects your setting.
  • Fixed a startup race that could leave cellular dead — the dialer could start before the manager that configures it was ready. The manager now starts first, and a failed connection attempt now reports the failure and restarts cleanly instead of silently sitting there as a dead link.
  • Devices without a modem no longer pretend to have one — the header showed "No Service" and the modem page waited forever on units with no module fitted. Stored SMS messages remain readable either way.

Network

  • Failover now actually works on the default setting — a migration only ever ran on boxes that had used the retired Smart WAN mode, so most devices, sitting on the default, never moved onto the current routing system at all: no failover, no health checking, and stale route priorities. Every device now migrates, and no traffic changes path in the process.
  • The dashboard tells your own hotspot apart from the one you connect to — both Wi-Fi rows carried the same icon; the upstream connection now has its own badge and icon.

Wi-Fi

  • Your network name and password no longer disappear — using the upstream Wi-Fi relay and rebooting could make the onboard radio vanish from every screen and come back as a factory "OpenWrt" network with no password.
  • Turning off upstream Wi-Fi restores your own network name instead of leaving the hotspot advertising the factory default.
  • Add-on Wi-Fi cards work straight after a flash — a PCIe card was left switched off, needing two reboots and a manual click before it would go on air.
  • Fixed access point names gaining a second "-5g" on some units.

Phone (in development)

  • Early support for making and taking calls from the web interface, with in-call audio, a dialer, contacts and voicemail. Off by default — turn it on in Settings. Still in active development.

Battery and MCU

  • Battery time-remaining estimates no longer show nonsense right after you plug or unplug power — the reading now settles first, showing "-" for a few seconds instead of "10 minutes left" on a nearly full battery.
  • Battery health is hidden until the reading is trustworthy — it appeared after a single discharge, when the figure still swings widely, and looked like a broken gauge when it jumped.
  • See how long you have been running on battery for the current discharge, surviving a reboot mid-run.
  • Battery history no longer grows without limit — the 30-day cleanup had never actually deleted anything, so the database grew forever on device storage.
  • Your battery charge limit is remembered — it survives an MCU restart, and is re-checked whenever it is read, so the value shown always matches the one in effect.
  • LED and beeper schedules keep running while the device sleeps on newer MCU firmware, which now owns the daily timer itself.
  • Battery internal resistance is now reported, split into total and cell-only.
  • MCU uptime and time-since-last-sleep are now available.
  • Battery gauge diagnostics can be pulled off the MCU for troubleshooting, via soc-log-get.
  • New factory-reset command for the MCU: pcat-pmu-updater --wipe-nvs.
  • MCU board revision is now readable via pmu-hw-version-get, so support can identify hardware variants without opening the case.

Web interface

  • The management interface is much faster — pages and files now serve several times quicker under load, and the worst-case wait on a static file dropped from seconds to hundredths of a second.
  • Fixed the interface freezing for 18-24 seconds about every 25 seconds — each open browser tab permanently occupied one of the device's four request slots.
  • Language is now a property of the device, not the browser — two browsers showed two different languages, and a choice made on one machine reverted for everyone else.
  • Light/dark appearance is device-wide too, with a reset-to-default button.
  • Colour picker for display themes — choose exact colours per element with a live preview, or roll a random palette and fine-tune it by hand.
  • The reboot screen gives a real time estimate and reloads itself when the device is back, instead of a bare counter you had to watch and refresh manually.
  • Containers work on a freshly flashed device without visiting a setup tab or rebooting.
  • Browser tab titles per page, and the site icon follows your display theme.

Mini display

  • New GPS page — speed, heading, altitude, accuracy, fix type and satellite count. It only appears when a GPS-capable modem is fitted, so other units do not get an empty screen.
  • Storage page rebuilt — separate bars for eMMC, NVMe and SD, a CPU chip icon in place of the vertical CPU text, memory labelled inside its bar, and a clearer chart layout.
  • The display refreshes where it matters — the first page and the clock update twice a second, ping once a second while you are watching it, and slower pages stay slow. Data is kept warm in the background, so the clock and battery are no longer stale when the screen wakes.
  • New wake-up animation — the cat dissolves into the first page, replacing the old boot bar. It plays on slow boots too.
  • Colour themes — background, icon tinting and bar colours are read from a theme file, so the panel can be recoloured without rebuilding firmware.
  • Public IP is tracked live, with a fast re-probe when the link comes back, so it no longer shows a stale address after a WAN change.
  • Wi-Fi shows one SSID row per radio, and goes to standby when the upstream is not associated.
  • Sharper, smoother text — antialiased rendering, smoother scrolling, and the clock shows --:-- until the timezone is actually known rather than guessing.
  • Faster startup and smoother updates — every collector starts before the panel comes up, a slow ping or speed test no longer stalls the refresh, and unchanged parts of the screen are not redrawn.
  • Cellular signal icon now shows on RM500Q modems, where it had been blank.

Storage and sharing

  • Per-client traffic statistics fixed on AIC8800 Wi-Fi — connected-device byte and packet counters read wrong or zero, so per-device traffic was not trustworthy.
  • You can now mount an SMB share from a Windows PC or a NAS. The box could already share its own files over SMB but could not connect to someone else's.
  • The NFS server can actually export a share now — it was built into the system but the tools needed to export anything were missing, so it could never be used. Linux and macOS clients now have a faster alternative to SMB.
  • Fixed partitioning failures on eMMC — creating a partition could fail partway through because a required tool was missing. Reused partitions no longer carry a leftover filesystem signature. NTFS drives also mount correctly now.
  • Traffic statistics are visible in the web UI — the data was already being collected but could only be seen from a shell.
  • A failed checksum now stops a firmware flash instead of letting it proceed.