Skip to content

Releases: dr-dolomite/QManager-RM520N

QManager RM520N BETA v0.1.17

Pre-release

Choose a tag to compare

@dr-dolomite dr-dolomite released this 12 Oct 07:19

🚀 QManager RM520N BETA v0.1.17

A rebuilt Monitoring section: a new Sites monitor and DNS lookup timing, one alert per internet drop, and compact redesigns of Watchdog, Alerts, Network Events, Latency Monitor and IP Passthrough. Every settings card now saves from a row along its own bottom edge.

One-click OTA from System Settings → Software Update if you're on v0.1.5 or newer.

✨ New Features

  • Sites monitor. A new Sites card at the bottom of Monitoring → Latency Monitor shows each site's logo, name and average response time over the last hour, day or week, with a Manage dialog to turn it on or off, change how often it checks, and add or remove up to 32 sites; saving runs a check straight away. It checks 13 popular sites (Google, YouTube, Discord and others) every 5 minutes by default and keeps up to 90 days of history. (New qmanager_sites service; the number is the TCP connect time, so DNS is not counted. A site without a built-in logo loads its icon from Google's favicon service and shows its first letter when offline.)
  • DNS lookup time is measured. QManager now times a name lookup against your carrier's DNS server once a minute and right after a drop, and shows it as the DNS lookup row on the dashboard's Connection Quality card. (connectivity.dns_lookup_ms in the status data; the row shows an empty bar while lookups fail.)

🛠️ Improvements

  • One outage, one alert. An internet drop now appears in Monitoring → Network Events as one "Internet Lost" / "Internet Restored" pair, without extra high packet loss rows, and SMS, email and Discord only hear about drops that last longer than your alert wait (5 minutes by default). (The wait you set on Monitoring → Alerts now applies to every channel; the down SMS is no longer held back while the Watchdog is mid-recovery.)
  • Connection Quality card on the dashboard. The Live Latency chart is replaced by a card in the middle of the dashboard's three-card row that shows your current internet and DNS response times, 30 minutes of reachability and jitter, and typical, worst and loss figures, with the speed test along its bottom. (The latency bars and the reachability strip turn amber and red at the latency and loss thresholds you set in Monitoring → Connection Quality.)
  • Watchdog and Connection Quality share one probe setting. Probe every on Monitoring → Watchdog now shows and changes the same probe interval Connection Quality uses, and the Watchdog decides a link is down by how long it has been failing rather than by counting probes.
  • "Unstable" follows your loss threshold. The dashboard's Internet chip now reads Unstable only when packet loss reaches the threshold you chose in Monitoring → Connection Quality (30% by default), instead of a fixed 10%.
  • Settings cards save from a bottom row on the card itself. Band, frequency and tower locking, IMEI, APN, MBN, Network Priority, SMS Forwarding, TTL, MTU, Custom DNS, IP Passthrough, System Settings, SSH password and Alerts now show status on the left and Discard then Save on the right, instead of a button mid-card or a bar under the cards. (21 SaveButton sites moved to CardFoot; Discard is always shown and greyed out until you change something.)
  • A compact, easier-to-scan Watchdog page. Monitoring → Watchdog now opens with one status card (current state, the key counts and a strip of recent probes), with the Recovery ladder and Detection side by side below it, each with its own Save, so saving one card never commits the other's edits. (Recovery steps are On/Off pills, the backup SIM is one Slot 1 / Slot 2 / Off choice, Detection shows roughly when each step would run, and Recovery activity lists the newest five events with a link to the full log.)
  • A clearer Network Events page. Monitoring → Network Events now opens with a Right now card (problems still ongoing, plus anything that kept repeating in the last hour) and an Activity chart of when events happened, labelled with the real time span it covers. In the log, four or more back-to-back events of the same kind fold into one row you can expand, the time sits at the start of each row, the list scrolls inside its card, and auto refresh is a Live / Paused choice. (Runs are 4+ same-type events no more than 10 minutes apart; band names show as LTE/NR tags.)
  • Connection Quality moved to Monitoring. In the sidebar, Monitoring → Connection Quality now holds Latency Monitor and Network Events below it, and Alerts has its own row; Connection Quality is no longer under System Settings. (Routes are now /monitoring/connection-quality and /monitoring/events; old links redirect.)
  • A simpler Latency Monitor page. Monitoring → Latency Monitor now shows a Right now card (current response time, the last 60 probes, jitter and loss) beside a History card with one average line over 1 hour, 6 hours or 24 hours and its typical, worst and loss figures; the Samples table and the 12-hour and Daily views are gone. (Every colour follows the latency and loss limits you set in Monitoring → Connection Quality, and one slow spike no longer squashes the chart's scale.)
  • A compact Alerts page. Monitoring → Alerts now shows a Coverage card with one row per event and a single verdict, a Channels card where each channel has its own On/Off, the events it sends for and its settings with one Save at the bottom, and Activity beside them. (The status tiles and the 3×3 routing grid are gone; Coverage shows what is saved, not unsaved edits; there is one Wait before alerting field instead of three; the Activity list scrolls inside its card.)
  • Alerts loads faster. Monitoring → Alerts opens and refreshes quicker, and the Refresh button at the top now reloads Activity too. (The settings read went from 14 jq calls to 8, about 330 ms to 260 ms on an RM520N-GL; the activity read went from 6 to 2.)
  • A tidier Connection Quality page. Monitoring → Connection Quality is now just two cards side by side: Probe Targets shows which probe answered (or that DNS isn't resolving) in its header, and Quality Thresholds shows, for latency and packet loss, when a slow link gets flagged and what the link reads right now. (The live status tiles at the top are gone; live readings are on Latency Monitor. Both cards toast on save.)
  • Cellular Settings saves from the Network card. On Cellular → Settings, the SIM and Network cards still share one Save, now in the Network card's footer, and Re-read from modem moved into that footer too.
  • Buttons beside Save are quieter. Restore all supported (band locking), Clear LTE/NR lock (frequency locking), Remove Lock (tower locking) and Add resolver (Custom DNS) are now plain tinted buttons with no outline or icon, so Save is the one button that stands out.
  • On/off settings are now a pill, not a bare switch. The enable toggles on the cards that moved to a bottom Save row (Custom DNS, TTL, MTU, tower locking, watchdog master, alerts channels, MBN auto-select, backup IMEI, SMS forwarding) now show an On / Off pill with a check on the active side. (SegmentedField, 11 Switch sites; per-row toggles and autosave toggles stay switches.)
  • Saving is confirmed by a toast, not a label that fades. The "Saved" text that blinked beside the Save button in Alerts, Watchdog, Scheduled Reboot and the Ethernet speed limit is gone, and Cellular → Settings now shows a toast when your changes apply (or names the settings that failed). (The five fading labels all ran on a 1.8 s timer; the toast already existed on four of them.)
  • "No automatic recovery" is now blue. On Cellular → Frequency Locking, the chip on the locked verdict is a filled info chip instead of a grey one, so it reads as a fact rather than a disabled state.
  • A clearer Frequency Calculator. On Cellular → Cell Scanner → Frequency Calculator, the controls sit on the left and the answer on the right, each possible band shows its downlink and uplink range with where your channel falls in it, and clicking a history entry runs it again. (The answer reads "EARFCN 1350 · downlink"; TDD and SDL bands show a note instead of an uplink column.)
  • Buttons and fields look the same everywhere. Every button is a rounded pill, main page actions share one 42px size (the Monitoring pages' buttons grew to match), and text boxes and dropdowns share one shape and fill on every page. (Button size="action"; Input, Select, Textarea and InputGroup share one field style with a host fill.)
  • Cell Scanner and Neighboring Cells have a new layout. Both pages start as a compact launch bar and show results as one summary card (the total, then a row per carrier with your SIM's first, or per neighbour type) above a table sorted strongest signal first, with Download CSV beside the filter. The sweep shows an estimated progress bar, and Lock to this cell is greyed out, with the reason, for cells on another carrier. (The bar is an estimate: the modem reports nothing until the sweep ends.)
  • Cards no longer show file paths. The "Read back from: /etc/qmanager/…" and "Saved to the modem" lines are gone from Ethernet, IP Passthrough, TTL & MTU and Custom DNS, so the pages read as a finished product instead of a debug build. (Six provenance keys removed from all five language packs.)
  • Animations are consistent across the app. The Animations setting in the sidebar account menu (Full / Reduced / System) now applies on every page, and transitions share one timing and style throughout.
  • A compact IP Passthrough page. The IP Passthrough page (Local Network → Settings) now opens with one Last applied card showing the saved mode, target device, NAT, USB connection, DNS proxy and whether the LAN gateway is served, above one sett...
Read more

QManager RM520N BETA v0.1.16

Pre-release

Choose a tag to compare

@dr-dolomite dr-dolomite released this 14 Sep 00:02

🚀 QManager RM520N BETA v0.1.16

Upstream resolvers can be switched back off again, and a visual pass: every page looks a little tighter this time — smaller, squarer corners throughout — and in dark mode, cards and every panel that opens over the page now catch a little light along their top edge.

One-click OTA from System Settings → Software Update if you're on v0.1.5 or newer.

🛠️ Improvements

  • Corners are tighter across the whole app, and dark mode cards now catch a little light. Cards, tiles, inputs and dialogs everywhere moved to a smaller corner radius, so a panel reads as a panel rather than a lozenge; in dark mode each card also picks up a faint highlight along its top edge that lifts it off the background. (One radius scale in the stylesheet — no page was re-laid-out.)
  • Confirmation prompts and slide-out panels no longer look flatter than the dialogs beside them. In dark mode the same top-edge highlight now reaches every panel that opens over the page, not just the main dialog, so a "are you sure?" prompt sits at the same depth as the window it came from.

🐛 Fixes

  • Turning off custom upstream resolvers no longer fails with "enabled must be true or false". In Local Network → Upstream resolvers, switching Use my own resolvers off and pressing Save and apply now clears the QManager block and hands DNS back to the carrier, instead of rejecting the save. (The endpoint read the flag with jq's // operator, which treats a literal false as a missing value — so every disable request arrived as an empty string.)

📥 Installation

Upgrading from v0.1.15

System Settings → Software Update → Download → Install. No SSH/ADB needed. All settings preserved.

Fresh Install

No SimpleAdmin required. QManager installs completely standalone — you do not need to install (or uninstall) SimpleAdmin or the RGMII toolkit first. The installer bootstraps everything itself (Entware, web server, users, services).

SSH or ADB into the modem and run:

curl -fsSL -o /tmp/qmanager-installer.sh \
  https://github.com/dr-dolomite/QManager-RM520N/raw/refs/heads/main/qmanager-installer.sh && \
  bash /tmp/qmanager-installer.sh

No curl? Use wget — the installer works either way:

wget -O /tmp/qmanager-installer.sh \
  https://github.com/dr-dolomite/QManager-RM520N/raw/refs/heads/main/qmanager-installer.sh && \
  bash /tmp/qmanager-installer.sh

💙 Thank You!

Bug reports and feature requests welcome on GitHub Issues.

Like what's new? QManager is built and maintained for free — if these updates have made your setup a little better, you can show your support via Wise or PayPal. Every bit helps keep this project alive. GitHub Sponsors works too.

License: MIT + Commons Clause — Happy connecting!

QManager RM520N BETA v0.1.15

Pre-release

Choose a tag to compare

@dr-dolomite dr-dolomite released this 10 Sep 11:04

🚀 QManager RM520N BETA v0.1.15

The important one: turning on Video Optimizer or Full Bypass can no longer take your whole network down with it. Also in here — SMS Center tells you the real reason a message failed to send instead of always blaming a busy modem, and Software Update drops its duplicate buttons and status pills.

One-click OTA from System Settings → Software Update if you're on v0.1.5 or newer.

✨ New Features

  • A GUI installer is now available. Prefer not to run SSH commands? Grab it from the Assets section of this release on GitHub instead of the curl/wget one-liner below.

🛠️ Improvements

  • Software Update now has one button, not three. System Settings → Software Update keeps a single Check again at the top and moves Download / Install down onto the version row inside the update card, where the package size and channel tags used to sit. The duplicate status pills — the one beside the card title and the one in the Update status row — are gone; the step list underneath already reports what is running.

🐛 Fixes

  • Turning on the Traffic Engine can no longer kill every device on your network — including your access to QManager itself. If the engine failed to start (or was never installed), Local Network → Traffic Engine still sent all LAN web traffic to it, so nothing loaded and the settings page you'd use to switch it back off was unreachable too. The redirect now goes up only once the engine is confirmed listening, and is removed the instant it stops or crashes.
  • Switching between Video Optimizer and Full Bypass now actually switches. Picking the other mode in Traffic Engine → Bypass mode used to save your choice while the engine quietly kept running the old one, so Full Bypass never applied. The engine is now restarted on the switch, and a start failure reports as an error instead of a false success.
  • The Traffic Engine no longer listens on every interface, including the carrier side. It now binds only your LAN address, closing a proxy port that was reachable from outside the modem. No action needed on your side — update and it's closed.
  • Full Bypass survives an update or reinstall. The installer only ever restarted the engine for Video Optimizer users, so a Full Bypass setup came back with the feature switched on in the UI and nothing running behind it.
  • The bypass test says what it measures. Renamed to Bypass benefit test and given a scope line, because it tests whether the technique helps on your connection using its own temporary proxy — it never checked the engine you have running, and a passing result was easy to read as "the engine is fine". Engine health is the live status row above it.
  • SMS Center no longer blames "modem busy" for a message that actually failed to send. A genuine send failure — a bad number, no SMS center configured, the modem not registered — was being reported as "Could not acquire AT lock" purely by coincidence: the two very different failures shared one internal status code. Send failures now show their real reason, and a true busy-modem retry still reports as busy.
  • The Cell Scanner results panel no longer resizes the page when you start your first sweep. It's mounted from the start now, showing its empty state up front instead of popping in and pushing the layout down.

📥 Installation

Upgrading from v0.1.14

System Settings → Software Update → Download → Install. No SSH/ADB needed. All settings preserved.

Fresh Install

No SimpleAdmin required. QManager installs completely standalone — you do not need to install (or uninstall) SimpleAdmin or the RGMII toolkit first. The installer bootstraps everything itself (Entware, web server, users, services).

SSH or ADB into the modem and run:

curl -fsSL -o /tmp/qmanager-installer.sh \
  https://github.com/dr-dolomite/QManager-RM520N/raw/refs/heads/main/qmanager-installer.sh && \
  bash /tmp/qmanager-installer.sh

No curl? Use wget — the installer works either way:

wget -O /tmp/qmanager-installer.sh \
  https://github.com/dr-dolomite/QManager-RM520N/raw/refs/heads/main/qmanager-installer.sh && \
  bash /tmp/qmanager-installer.sh

💙 Thank You!

Bug reports and feature requests welcome on GitHub Issues.

Like what's new? QManager is built and maintained for free — if these updates have made your setup a little better, you can show your support via Wise or PayPal. Every bit helps keep this project alive. GitHub Sponsors works too.

License: MIT + Commons Clause — Happy connecting!

QManager RM520N BETA v0.1.14

Pre-release

Choose a tag to compare

@dr-dolomite dr-dolomite released this 10 Sep 05:26

🚀 QManager RM520N BETA v0.1.14

The biggest QManager update yet: a brand-new Traffic Engine for beating carrier video throttling (ported by carp4), ground-up redesigns of System Settings, Watchdog, Alerts, Tailscale, Custom SIM Profiles, Speed Test, Cellular Radio Information, SMS Center and Cell Scanner, a fix for a reboot loop some modems hit with Scheduled Reboot on, and a sweep of file-permission security fixes across the device.

One-click OTA from System Settings → Software Update if you're on v0.1.5 or newer.

✨ New Features

  • Beat carrier video throttling with Traffic Engine. A new Local Network → Traffic Engine page adds Video Optimizer (garbles the handshake for sites on your list) and Full Bypass (garbles everything) — downloaded and checksum-verified on-device from the zapret project, no PC needed.
  • Test bypass in one click. A two-phase speed test compares your connection with and without the engine and shows the improvement factor, through its own private copy so your live connection is never interrupted. It also now samples speedtest.net (falling back to Cloudflare) as a reference, so a slow fast.com beside a healthy reference correctly reads as throttled rather than just slow.
  • Edit, back up and restore your protected sites list. Video Optimizer's hostlist is editable with instant apply, and gains Export, Import and Restore defaults (subdomains match automatically; bad or duplicate entries are skipped on import).
  • QUIC → Force TCP tile. A standalone tile on Traffic Engine blocks QUIC (UDP 443) so QUIC-first apps fall back to TCP where the engine can tune the stream — independent of the engine's own install and enable state. Automatic QUIC marking is removed; QUIC is now passthrough by default, blocked only when you switch this on.
  • "Traffic Masquerade" is now "Full Bypass." Your setting carries over on update.
  • See exactly how your bands stack up. The dashboard's Secondary Carriers card is now a full-width Carrier Aggregation strip — a proportional bandwidth bar plus a tile per carrier with role, PCI, ARFCN and signal. A dropped carrier stays visible, greyed with "Released Xm ago," before it fades out.
  • Ready-made profiles for your carrier. Insert a SIM and Custom SIM Profiles adds ready-made APN/TTL setups for T-Mobile, T-Mobile Home Internet, Verizon, AT&T, Smart, Globe, GOMO and DITO, marked Suggested. Prepaid/reseller SIMs (Mint, Google Fi, US Mobile, Visible, Cricket, Metro, etc.) are correctly excluded.
  • See every SIM QManager remembers. A new Tracked SIMs card in System Settings lists each SIM by carrier, number and first-seen date, flags the active one, and lets you re-arm its new-SIM alert.
  • QManager now flags a flapping connection. Recent Activities raises one amber "LTE band unstable" warning instead of a row per hop when the modem changes band or cell six or more times in five minutes.
  • The Speed Test has been rebuilt. A Latency → Download → Upload stepper shows live readouts as each stage lands, with a full result panel (jitter, packet loss, server). A run that fails partway keeps what it already measured, and a test started elsewhere (another tab or device) shows up live on the dashboard's Speed Test tile.
  • Every band, with its own readings — no clicking. Cellular and Radio Information shows one row per carrier with RSRP/RSRQ/SINR/RSSI and meters side by side, a Live/Stale chip, link uptime, address family and an estimated distance to site. A Copy diagnostics button puts a safe-to-share summary (no IMEI, ICCID, IP or cell IDs) on the clipboard.
  • Antenna Statistics has been rebuilt. Summary tiles for MIMO, serving mode and chain count sit above one card per radio with all four ports, each with its own RSRP/RSRQ/SINR and quality verdict — a dead or unplugged port stays visible instead of vanishing.
  • Antenna Alignment now gives you one number to aim by. A live Live Aim score out of 100 combines the readings behind it, alongside your best session score and how much it just moved.
  • Custom SIM Profiles and Connection Scenarios are now one page, opening with an "in force now" card (active profile, APN, TTL, bound scenario) and a 24-hour strip showing the day's scenario schedule.
  • Choose how much animation you want. A new sidebar Animations setting (System/Full/Reduced) applies before the page paints.
  • Your modem can now notice a SIM swap while running. A new SIM Hot-Swap Detection switch under Cellular Basic Settings detects insert/removal without a reboot, and reports whether a card is present.
  • See what's in your other SIM slot. Cellular Basic Settings now shows the inactive slot's card presence and last four digits, where firmware supports it.
  • See what your carrier actually granted. APN Settings opens with a card showing your live-attached APN, bearer state and IPv4/IPv6 addresses beside your saved setting.
  • "Reboot Later" on IMEI Settings now actually remembers, with a persistent reminder banner until you restart.

🛠️ Improvements

  • The welcome and sign-in screens have been redesigned to match the rest of QManager — Internet and Temperature lead, status tiles use an icon on a coloured disc instead of a colour-only fill, and sign-in names the device you're connecting to, with a new "Can't sign in?" recovery-help link.
  • Login lockout now backs off gradually — 30 seconds, then 2/5/15 minutes on repeated failures — and shows tries remaining; the countdown survives a refresh.
  • System Settings has been rebuilt, leading with the modem's real clock, next scheduled reboot and SIM count before any settings. Every control now states its consequence up front (a reboot drops your session ~90s), it no longer shows plausible defaults for config the modem didn't report, and the whole page is translated into all five languages.
  • The connectivity check tries real hostnames first (cloudflare.com, google.com, then 1.1.1.1/8.8.8.8), all four editable under System Settings → Connection Quality → Probe Targets.
  • Connection Quality profiles now actually change the fail window — previously all four profiles shared one stored value.
  • The Watchdog page has been rebuilt — four status tiles plus a single Recovery ladder card, replacing a layout that drew the same four steps twice. A stopped-but-enabled watchdog now says so instead of claiming it's still starting, turning it on warns about the unattended-reboot step it arms, and Recovery history now sorts correctly by time. Fully translated.
  • The Alerts page has been rebuilt, leading with a coverage grid answering "if this happens, where does it go?" SMS, Email and Discord are now three pills instead of four tabs, so Save can't commit hidden fields. History now reads as the same event rows as the dashboard. Fully translated (183 strings), and old /monitoring/sms-alerts / /monitoring/email-alerts bookmarks redirect instantly.
  • The Tailscale page has been rebuilt, opening with connection state, tailnet address, tailnet name and peer count. The peer table gets its full width and hidden OS/Last-seen columns back, offline peers no longer show a fake decades-old timestamp, and a failed peer load offers retry. Fully translated (137 strings); the install log now follows your theme instead of a hardcoded dark panel.
  • Internet badge finally works. It now reads Online, Unstable, Recovering, No Reply or Not Measured, replacing a field that was permanently blank.
  • Lost pings now show as gaps, not 0 ms, on Live Latency and Monitoring → Latency Monitoring, and the average latency ignores those gaps.
  • Jitter and packet loss read as unknown until there's enough data, instead of a false "0 ms / 0%" from two samples. Latency is now credited to whichever probe target actually replied, so a fallback switch shows as a gap, not a fake spike.
  • The dashboard finally has a page header (Radio/Internet/Stale chips) and consistent card sizing, with one shared geometry module so a card and its loading skeleton can no longer disagree.
  • Cards show "No reading" instead of a fake 0 or dash when the modem can't be reached; identifiers like IMEI keep their last known value.
  • LTE/5G signal cards refreshed — tinted rows, filled quality chips, radio-coloured badges (blue 5G / violet 4G) with bar-count for quality so it still reads in greyscale, plus a hidden screen-reader word alongside colour.
  • Smoother dashboard state changes. Readings ease between values instead of snapping, and only the values that actually changed dip in, in reading order, over ~700ms.
  • One rounded icon set across the dashboard and the entire Cellular section, replacing four mismatched sets.
  • Recent Activities redesigned — a header chip reads "All clear" or a count of open issues, rows fade after an hour unless still unresolved, band-change spam is debounced into one "settled on B28 (was B41)" line, and history now retains 300 events (was 50). Fully translated.
  • The Cell Scanner has been redesigned — a compact launch bar that grows into the progress view, one Sweep all bands button stating its 30s–3min cost, and a coloured signal dial per operator in the summary.
  • The Neighbour Scanner now shows RSRQ/RSSI/SINR and filters by channel; a cell that can't be locked says why. Frequency Calculator matches the new page style. All three pages fully translated.
  • Cellular Basic Settings has been redesigned — one list of settings rows each stating its consequence in plain English, tappable pill groups instead of dropdowns, changes staged behind a pending-changes bar with before/after per row, and a named progress stage during a ~35s slot change. Fully translated.
  • Applying a profile now shows real step detail — the APN that landed, "already set," or the exact modem error — with...
Read more

QManager RM520N BETA v0.1.13

Pre-release

Choose a tag to compare

@dr-dolomite dr-dolomite released this 22 Jul 01:03

🚀 QManager RM520N BETA v0.1.13

All your alerts finally live in one place. A new Monitoring → Alerts page unifies email, SMS, and Discord into a single routing grid — you pick which events reach which channel — and it can now tell you when and why the Connection Watchdog rebooted your modem. This release also lands a 5-language interface picker, a ground-up Watchdog rework with a tougher reboot-proof SIM-failover engine, daily Connection Scenario schedules for your SIM profiles, and fixes that finally make timezones and time-based schedules stick on this cron-less modem.

One-click OTA from System Settings → Software Update if you're on v0.1.5 or newer.

✨ New Features

  • All your alerts in one place. Email, SMS, and Discord notifications now live on a single Monitoring → Alerts page with a routing grid where you choose which events — connection lost, connection restored, or a device reboot — reach each channel. Alerts can now also tell you why your modem rebooted (a watchdog recovery, a reboot you asked for, or an unexpected one), so an unattended device is never silent about what happened. This replaces the separate Email Alerts, SMS Alerts, and Discord Bot pages — those links now redirect here (one unified alert engine replaces the three separate per-channel downtime timers; the grid greys out combinations that can't fire — only SMS can reach you while the internet is down, since email and Discord need the connection that's out — and reboot causes are read from the watchdog's crash-log ledger and coalesced if they repeat).

  • Pick your language. The interface now ships in five languages — English, Simplified Chinese (简体中文), Traditional Chinese (繁體中文), Italian (Italiano), and Indonesian (Bahasa Indonesia). Switch from the language menu in the sidebar, the picker on the login screen, or the new System Settings → Languages page; your choice is saved per device. The Dashboard and navigation are fully translated now, with the remaining screens following in upcoming releases (every language is bundled in the firmware — nothing to download).

  • Schedule your Connection Scenario by time of day. A SIM profile can now bind up to two daily time windows to a scenario — e.g. Gaming from 6pm to 11pm on weekdays, Balanced the rest of the time — set right from the profile's scenario picker under Cellular → Custom SIM Profiles (applied on-device by a systemd timer, since this modem has no cron daemon to run a traditional schedule).

  • New public Overview landing page. QManager's home page (/) is now an Overview splash that shows the device name plus live carrier, network, signal, and temperature before you log in — and logging out returns you here instead of a bare login form (three read-only public endpoints project an allowlisted slice of the poller cache; nothing sensitive is exposed).

  • Redesigned Watchdog page. Monitoring → Watchdog now leads with a live status hero — current state, failed-check counters, and a recovery-ladder view — beside a Recovery Activity log and a tabbed Detection / Recovery settings panel with a single save bar. See at a glance what the watchdog is doing and which SIM you're on.

  • See how many SIM cards QManager remembers, and clear the list. A new row in System Settings shows the count of known SIMs and lets you reset it, keeping the currently-inserted SIM known so it doesn't immediately re-trigger a "new SIM" notice.

  • Auto-forward incoming texts to another number. A new Cellular → SMS Center → SMS Forwarding page relays every SMS the modem receives to a phone number you choose — handy for a headless modem or a data-only SIM you can't otherwise check (a background daemon polls the inbox, seeds silently on first enable so it never blasts your existing messages, guards against relay loops, and logs delivery failures right on the page).

  • Translate QManager in your own language. A new community translation toolkit lets anyone add or complete a language without being a developer — bun run lang scaffold starts a new language, status/check show what's left and check your work with plain-English fixes, and one command packages a finished pack (zero-dependency Bun CLI sharing the app's i18n:check validation engine; partial translations are welcome and fall back to English). See docs/CONTRIBUTING-translations.md.

  • Install extra languages without a firmware update. Beyond the five built-in languages, System Settings → Languages now has an Available list of community translation packs you can download and install straight onto the modem, then switch to like any other language — no OTA, no reflash. Packs survive reboots and future updates, and untranslated bits fall back to English (each pack is fetched only from the project's own GitHub release and sha256-verified before it's ever loaded; installed packs live outside the web root and are re-linked on every update).

🛠️ Improvements

  • The Watchdog now owns connection timing. Probe interval and failure threshold moved from Connection Quality into the Watchdog's Detection tab, so one place decides how often your link is checked and when it counts as down — and the Connection Quality page is now a simpler "Probe Targets" card (detection reads the ping daemon's raw failure streak directly, fixing a double-count that made the "declares down after ~Ns" estimate drift).

  • APN Settings has a cleaner single-card layout. The page now shows one focused APN card instead of a 6-slot list. (Per-slot enable/disable and PAP/CHAP auth editing move off this page for now — the underlying 6-context support on the modem is unchanged.)

  • Connection Quality now checks the internet with a plain ICMP ping. The reachability probe switched from an HTTP request to a straightforward ping of a DNS server, so System Settings → Connection Quality now takes an IPv4 and an IPv6 DNS-server address (default 1.1.1.1 and Cloudflare's 2606:4700:4700::1111) instead of web URLs — it tries IPv4 first and falls back to IPv6. Existing setups are migrated automatically on update (a small shell daemon replaces the previous compiled probe for 1:1 parity with the RM551E build; the failure streak the Watchdog acts on is unchanged, so self-healing works exactly as before).

  • Band Locking follows your scheduled scenario. The Cellular → Band Locking page now respects whichever Connection Scenario your profile has in force right now — including an active scheduled window — instead of only the profile's default, so the band controls lock and unlock in step with your time-of-day scenario schedule.

  • The schedule save button now tells the truth. Saving a Scheduled Reboot or Tower Lock schedule now warns you if it couldn't be armed on your device, instead of always flashing a green "saved" — so a schedule that can't run never looks like it will.

  • SMS Center now shows texts stored on the SIM. Messages the carrier routed to SIM storage used to be silently missed; the inbox at Cellular → SMS Center now reads both modem and SIM memory and merges them, and adds Unread/Read tabs plus search, sort, and rows-per-page pagination for a busy inbox (dual CPMS ME+SM storage routing, self-healed at boot; read/unread tracked per-browser; and a cleaner bundled sms_tool).

  • SIM-to-profile matching is more forgiving. A SIM card's ID is now compared the same way everywhere internally, so a saved profile keeps matching its SIM even when different parts of QManager read the card slightly differently.

  • SIM failover now survives a reboot. If the watchdog switched you to your backup SIM, that state is kept across a restart, so the page still shows you're on the backup slot (and offers the revert) instead of losing track (failover state moved to persistent storage).

  • Backup SIM slot is now required to arm SIM failover. Turning on the "Switch to Backup SIM" step without picking a slot is blocked at save with a clear prompt, so failover can never be enabled in a state where it can't actually fail over.

  • Cleaner watchdog settings save. The watchdog settings form now validates every field before writing anything and points at the exact field that's out of range, so a bad value can't half-apply.

  • Translation pull requests are checked automatically. Every PR that touches a language now gets a bot comment with a per-language completeness table and inline notes, failing only on real structural mistakes — so contributors get instant, plain-English feedback (bun run lang check --all --ci on CI, ~20–30s, no install).

  • Installs and updates are tougher. A momentary system hiccup partway through an install no longer aborts the whole thing, an upgrade can't lose your custom TTL/HL setting, and files are flushed to flash before the filesystem is sealed — so an install or update is far less likely to leave the device half-finished (guarded systemctl daemon-reload, ordered TTL-state migration that keeps the old value on a failed write, and sync-before-remount discipline).

  • Automatic updates switch on the instant you toggle them. Flipping Automatic updates in System Settings → Software Update now arms (or disarms) the daily updater right away, instead of waiting until the next update to take effect. The old time field — which never actually controlled anything — is replaced by a short note explaining the updater runs a check once a day at a randomized time (a small root helper arms the systemd timer live; the crontab path it replaced was dead on this device, since nothing runs cron here).

  • Tightened the web backend's system permissions. QManager's web service can now start and stop only its own services rather than any service on the device — a defense-in-depth cleanup with zero change to what you can do in the UI (the www-data sudoers grant is scoped to t...

Read more

QManager RM520N BETA v0.1.12

Pre-release

Choose a tag to compare

@dr-dolomite dr-dolomite released this 24 May 05:47

🚀 QManager RM520N BETA v0.1.12

Another attempt to fix rx/tx orientation: if Data Used still shows upload/download swapped after v0.1.11, QManager now runs a per-device rx/tx probe at boot and applies the correct mapping so bytes are accounted in the right bucket despite firmware quirks. If you still see reversed totals, please open an issue with your device model and firmware — feedback welcome.

One-click OTA from System Settings → Software Update if you're on v0.1.5 or newer.

🛠️ Improvements

  • Storage row added to Device Metrics. The Dashboard now shows /usrdata usage alongside CPU and Memory — the partition where configs, profiles, logs, and Entware (/opt) live. Bar turns amber at 80%, red at 95%.

  • Data Used counter auto-detects rx/tx orientation. A quick 5 MB probe at boot figures out which field your firmware uses for upload vs. download (some Quectel builds swap them on the IPA fast-path), then maps correctly from there on. If the probe can't run, it retries on the next reattach. Any existing reversed totals are migrated automatically — no manual reset needed.

🐛 Fixes

  • Live Traffic widget removed. The per-second ↓/↑ readout on the Dashboard and Discord embed couldn't see LAN-to-WAN traffic — Quectel's IPA hardware offload bypasses the kernel for forwarded packets, so the widget read near-zero during real downloads. Cumulative Data Used totals are unaffected.

  • IP Passthrough "Apply & Reboot" now reboots. Saving USB Connection Mode applied the change but silently skipped the reboot (the web user couldn't talk to systemd). It now goes through the sudo helper and lands on the countdown page like every other reboot flow.

  • OTA no longer strands the reboot page on a blank screen. On slow connections the modem could reboot before the countdown page finished loading. All reboot flows (IPPT, Carrier Profile, System Reboot, Tailscale, OTA) now wait for the page to confirm it's ready first.

  • Version Management → Install actually installs. The button used to stop after download — the tarball staged but nothing ran. It now completes the full download → install → reboot in one click, same as the main Update flow. Works for upgrades, reinstalls, and rollbacks.

📥 Installation

Upgrading from v0.1.11

System Settings → Software Update → Download → Install. No SSH/ADB needed. All settings preserved.

Fresh Install

SSH or ADB into the modem and run:

curl -fsSL -o /tmp/qmanager-installer.sh \
  https://github.com/dr-dolomite/QManager-RM520N/raw/refs/heads/main/qmanager-installer.sh && \
  bash /tmp/qmanager-installer.sh

No curl? Use wget — the installer works either way:

wget -O /tmp/qmanager-installer.sh \
  https://github.com/dr-dolomite/QManager-RM520N/raw/refs/heads/main/qmanager-installer.sh && \
  bash /tmp/qmanager-installer.sh

💙 Thank You!

Bug reports and feature requests welcome on GitHub Issues.

Like what's new? QManager is built and maintained for free — if these updates have made your setup a little better, you can show your support via Wise or PayPal. Every bit helps keep this project alive. GitHub Sponsors works too.

License: MIT + Commons Clause — Happy connecting!

Language Packs

Choose a tag to compare

@dr-dolomite dr-dolomite released this 19 Jul 11:03

Community language packs for QManager RM520N. This is a persistent content bucket for the runtime language-pack downloader — NOT a firmware release, and deliberately kept out of the OTA update feed (--latest=false). The device fetches manifest.json from here to list downloadable translation packs. Publish packs with bun run lang publish <code>.

QManager RM520N BETA v0.1.11

Pre-release

Choose a tag to compare

@dr-dolomite dr-dolomite released this 22 May 21:50

🚀 QManager RM520N BETA v0.1.11

Data Used counter swapped or inaccurate on your modem? Fixed — QManager now reads traffic totals straight from the Linux kernel, so the numbers are always correct regardless of firmware version.

One-click OTA from System Settings → Software Update if you're on v0.1.5 or newer.

✨ New Features

  • SIM Profiles can now lock in a Connection Scenario. Pick Balanced, Gaming, Streaming, or one of your custom scenarios in the profile form — when the profile activates (on SIM switch, boot, watchdog recovery, or manual apply), it applies the scenario's network mode and band locks alongside APN, TTL/HL, and IMEI. New profiles default to Balanced, which leaves your modem's current settings untouched. When a non-Balanced scenario is bound, the Connection Scenarios and Band Locking pages become read-only while that profile is active.

  • "+ Create new custom scenario" shortcut in the profile form. The scenario picker now links directly to the Scenarios page and auto-opens the create dialog. If you have unsaved changes, you'll be asked before navigating away.

  • Custom DNS — override the upstream resolver for all LAN devices. Under Local Network → Custom DNS, set up to 4 upstream servers (IPv4 or IPv6) — Cloudflare, Google, your own resolver, etc. Changes apply instantly with no reboot and no DHCP lease disruption. An "Ignore carrier DNS" toggle prevents the carrier's assigned resolvers from mixing in with your custom ones. Requires the modem's DNS Mode to be set to Proxy (the page will tell you if it isn't).

🛠️ Improvements

  • Watchdog Tier 1 renamed: "Re-register to Network" — better reflects what actually happens (AT+COPS=2 deregister → AT+COPS=0 re-register).

  • curl is no longer required to install or update QManager. The installer auto-detects curl or wget and uses whichever is available. This unblocks fresh installs on firmwares that ship only wget (common on RM502/RM520/RM521).

  • Tailscale SSH toggle is the source of truth. QManager re-applies the toggle on every reconnect, so it survives tailscale up --reset. If you change SSH state via the CLI or carried over a Tailscale install from SimpleAdmin/RGMII Toolkit, the GUI won't see that change until you toggle the switch off and back on once.

🐛 Fixes

  • Data Used counter now shows correct upload/download on every firmware. Some users saw swapped totals or a counter stuck near zero — caused by QManager relying on the modem's +QGDNRCNT AT command, which returns fields in a firmware-specific order that a one-time calibration download tried (and often failed) to detect. QManager now reads byte totals straight from the kernel's network interface stats, where the labels are consistent everywhere. The calibration download has been removed. Your counter resets to zero on upgrade — this clears any incorrect totals from the old method.

📥 Installation

Upgrading from v0.1.10

System Settings → Software Update → Download → Install. No SSH/ADB needed. All settings preserved.

Fresh Install

SSH or ADB into the modem and run:

curl -fsSL -o /tmp/qmanager-installer.sh \
  https://github.com/dr-dolomite/QManager-RM520N/raw/refs/heads/main/qmanager-installer.sh && \
  bash /tmp/qmanager-installer.sh

No curl? Use wget — the installer works either way:

wget -O /tmp/qmanager-installer.sh \
  https://github.com/dr-dolomite/QManager-RM520N/raw/refs/heads/main/qmanager-installer.sh && \
  bash /tmp/qmanager-installer.sh

💙 Thank You!

Bug reports and feature requests welcome on GitHub Issues.

Like what's new? QManager is built and maintained for free — if these updates have made your setup a little better, you can show your support via Wise or PayPal. Every bit helps keep this project alive. GitHub Sponsors works too.

License: MIT + Commons Clause — Happy connecting!


QManager RM520N BETA v0.1.10

Pre-release

Choose a tag to compare

@dr-dolomite dr-dolomite released this 13 May 04:00

🚀 QManager RM520N BETA v0.1.10

Fixes the negative and swapped Data Used totals that 5G-SA users were seeing on v0.1.9, makes APN changes take effect immediately instead of waiting for the next network cycle, and tidies up how IPv6 and dual-stack DNS values render on mobile. The dashboard also catches up faster after a SIM-slot swap, so the Custom Profiles page no longer briefly flashes a false "SIM Mismatch" badge while it waits.

One-click OTA from System Settings → Software Update if you're on v0.1.5 or newer. SSH/ADB is not required.

🐛 Fixes

  • Data Used counter no longer reports negative or swapped upload/download values. Two bugs combined to produce screenshots like "Download 271.9 MB / Upload -772994965 B" on 5G-SA users in v0.1.9: the +QGDNRCNT AT counter returns its fields in a firmware-specific order (some Quectel firmwares ship it reversed vs +QGDCNT), and the poller's shell arithmetic was wrapping at 2.15 GB on BusyBox sh. Both are fixed: the poller now runs under bash for 64-bit arithmetic, and on first run (or after a counter reset) it performs a one-time 1 MB calibration download to detect the correct field order and locks it for the lifetime of the install. The calibration emits an event to the dashboard's event log so the metered-data cost is transparent. Existing users will see their counter reset to zero on upgrade — this is intentional and heals any corrupted accumulated values from v0.1.9.

🛠️ Improvements

  • Changing the APN now takes effect immediately and preserves TTL/HL hotspot-bypass rules. QManager forces the modem to re-establish its data connection after an APN change, so the new APN is used right away instead of waiting for the next network cycle. If you've set a TTL/HL preset (e.g. for carrier hotspot bypass), those rules are automatically re-applied once the connection is back — no need to re-enter them just because you changed APN.

  • IPv6 addresses no longer overflow the Cellular Information card on mobile. WAN IPv6, Primary DNS, and Secondary DNS values now wrap cleanly inside the card on narrow screens instead of running off the right edge. Addresses are also displayed in their standard compressed form (RFC 5952), so a value like 2607:fb91:0000:0000:0000:425d:28b3:2230 shows as 2607:fb91::425d:28b3:2230. The full uncompressed address is still available in the info-icon tooltip.

  • Secondary DNS shows a clean value on dual-stack (IPv4+IPv6) networks. On carriers that hand out both an IPv4 and IPv6 data context (e.g. T-Mobile US), the Secondary DNS field could appear as a long garbled string with two addresses fused together (e.g. 10.177.0.34253.0.151.106.0.0…). The poller now correctly separates the two records before reading the DNS fields, so a single, valid DNS server is shown.

  • Recent Activities on the dashboard now shows the last 6 events instead of 5, making better use of the available card space.

  • The dashboard updates immediately when you switch SIM slots. Previously, the ISP name and SIM card details shown on the dashboard could remain stuck on the old SIM's values for up to ~30 seconds after a slot swap — long enough that the "SIM Mismatch" badge on the Custom Profiles page could falsely flag a perfectly-matched profile as mismatched. The dashboard now catches up within a couple of seconds, before the profile page has a chance to show a false mismatch.

📥 Installation

Upgrading from v0.1.9

System Settings → Software Update. Click Download, then Install. No SSH/ADB needed. All settings preserved.

Fresh Install

ADB or SSH into the modem and run:

curl -fsSL -o /tmp/qmanager-installer.sh \
  https://github.com/dr-dolomite/QManager-RM520N/raw/refs/heads/main/qmanager-installer.sh && \
  bash /tmp/qmanager-installer.sh

If your modem has wget but not curl (common on x5x/x6x firmwares like RM502/RM520/RM521), just use wget to fetch the installer — preflight auto-installs curl from Entware so future OTA updates work (Entware must already be bootstrapped):

wget -O /tmp/qmanager-installer.sh \
  https://github.com/dr-dolomite/QManager-RM520N/raw/refs/heads/main/qmanager-installer.sh && \
  bash /tmp/qmanager-installer.sh

💙 Thank You!

Bug reports and feature requests welcome on GitHub Issues.

Like what's new? QManager is built and maintained for free — if these updates have made your setup a little better, you can show your support via Wise or PayPal. Every bit helps keep this project alive and growing. GitHub Sponsors is also an option if that works better for you.

License: MIT + Commons Clause — Happy connecting!


QManager RM520N BETA v0.1.9

Pre-release

Choose a tag to compare

@dr-dolomite dr-dolomite released this 11 May 13:59

🚀 QManager RM520N BETA v0.1.9

One-click OTA from System Settings → Software Update if you're on v0.1.5 or newer. SSH/ADB is not required.

✨ New Features

  • Enable Tailscale SSH from the UI. A new toggle in the Tailscale Connection card lets you turn on Tailscale's built-in SSH server with one click. Access is controlled entirely by your Tailscale admin-panel ACL policy — no changes to the device's existing SSH. A confirmation prompt reminds you to review your ACLs before enabling. The setting sticks across reconnects and reboots.

  • System Health now shows load averages. A new row beneath CPU Usage displays the 1-minute, 5-minute, and 15-minute load averages. On the single-core RM520N-GL, these give a clearer picture of sustained load than a single CPU % snapshot — the bar turns yellow or red when the device is under pressure, and an info icon explains what the three numbers mean.

  • Data Used counter now survives reboots. Previously, the counter reset every time the modem restarted or the data session re-attached — making it unreliable for tracking usage over days. QManager now maintains its own running total independently of the modem session. A new Reset button on the Device Metrics card lets you zero it on demand, handy for tracking usage within a billing window.

🛠️ Improvements

  • Live Traffic fixed on x5x-class modems (RM501, RM502, RG502Q). The traffic display was looking at the wrong network interface on these platforms and showing zeroed counters. It now auto-detects the active interface correctly each time.

  • Connectivity status no longer gets stuck on "Offline." On certain device variants, the connectivity check was reading from a fixed interface that wasn't active — so it always appeared offline even when internet was working. The check now uses HTTP probes to Cloudflare and Google, which is the correct and reliable signal.

  • OTA upgrades no longer abort on non-standard device variants. Users on variant firmware IDs (e.g. RM520FGL_VA) were seeing "Installation aborted by user" during upgrade — even though they hadn't cancelled anything. The installer now handles non-interactive environments correctly and proceeds with a warning instead of exiting.

  • LAN Gateway now displays correctly on all variants. On some devices (notably RM501-class), the LAN Gateway field was occasionally stuck on -. It's now fetched once at startup by the background poller and cached, so it loads instantly and renders correctly across all supported models.

  • Modem access fixed on older Quectel platforms (RM502Q-AE, RG502Q). A permissions issue on X55-family devices could silently prevent the web server from communicating with the modem, causing AT commands to fail. The installer now uses multiple fallback methods to ensure access is set up correctly, and removes any conflicting rules from third-party tools.

📥 Installation

Upgrading from v0.1.8

System Settings → Software Update. Click Download, then Install. No SSH/ADB needed. All settings preserved.

Fresh Install

ADB or SSH into the modem and run:

curl -fsSL -o /tmp/qmanager-installer.sh \
  https://github.com/dr-dolomite/QManager-RM520N/raw/refs/heads/main/qmanager-installer.sh && \
  bash /tmp/qmanager-installer.sh

If your modem has wget but not curl (common on x5x/x6x firmwares like RM502/RM520/RM521), just use wget to fetch the installer — preflight auto-installs curl from Entware so future OTA updates work (Entware must already be bootstrapped):

wget -O /tmp/qmanager-installer.sh \
  https://github.com/dr-dolomite/QManager-RM520N/raw/refs/heads/main/qmanager-installer.sh && \
  bash /tmp/qmanager-installer.sh

💙 Thank You!

Bug reports and feature requests welcome on GitHub Issues.

Like what's new? QManager is built and maintained for free — if these updates have made your setup a little better, you can show your support via Wise. Every bit helps keep this project alive and growing. GitHub Sponsors is also an option if that works better for you.

License: MIT + Commons Clause — Happy connecting!