Photonicat 2 固件 Changelog

来自Photonicat Wiki
C2h2留言 | 贡献2026年8月11日 (二) 19:42的版本 (Note improved upstream Wi-Fi stability)
跳转到导航 跳转到搜索

中文版见 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 — position on a map, accuracy, speed, heading and per-satellite signal. Off by default; enable in General Settings.
  • Offline maps and track logging — a world map pack ships built in, regions can be downloaded, and routes can be recorded and replayed.
  • GLONASS, BeiDou and Galileo can now be added to GPS.

Cellular

  • A 5G connection that stops passing traffic now recovers on its own, instead of looking connected until you reboot.
  • Fixed a startup race that could leave cellular dead, and cellular no longer overrides your routing priority.
  • Devices with no modem fitted no longer show "No Service".

Network and Wi-Fi

  • Failover now works on the default setting — most devices had never migrated to the current routing system.
  • Improved upstream Wi-Fi — more stable — your own network name and password are kept across a reboot and restored when you turn the relay off.
  • Add-on PCIe Wi-Fi cards work straight after a flash, with no extra reboots or manual enabling.
  • Fixed per-client traffic statistics on AIC8800 Wi-Fi, now also visible in the web UI.

Phone (in development)

  • Early support for calls from the web interface, with audio, dialer, contacts and voicemail. Off by default. ONLY support RM500U and RM500Q. EM05 pending.

Battery and MCU

  • Improved battery percentage and health estimates — both now settle before they are shown, instead of jumping after you plug in or after a single discharge.
  • The charge limit survives an MCU restart, and LED and beeper schedules keep running while the device sleeps.
  • New readings — internal resistance, MCU uptime and board revision.

Web interface

  • Switched from the werkzeug development server to granian, which parses HTTP in Rust — pages and files load several times faster, and static files are served without entering Python at all.
  • Language and light/dark are now device-wide, not per browser, with a reset button.
  • Colour picker for display themes, and the reboot screen now reloads itself when the device is back.

Mini display

  • New GPS page, shown only on GPS-capable modems.
  • Storage page rebuilt — separate eMMC, NVMe and SD bars and a clearer layout.
  • Smarter refresh, colour themes and live public IP — the clock and battery are no longer stale on wake.

NAS and sharing

  • You can now mount an SMB share, and the NFS server can actually export one.
  • Fixed eMMC partitioning failures, and NTFS drives now mount correctly.