Documentation updates - October 16, 2026
Summary of documentation changes made on October 16, 2026.
Getting Started
- Backup: Full overhaul, tested on RouterOS 7.26beta1 on the hAP ax² lab router. Turned into a task-oriented page: save an encrypted backup, verify it in the file list, restore it including the exact confirmation flow, what the backup does and does not contain (device-specific, includes the device's MAC addresses; The Dude and User Manager databases excluded), and a troubleshoot section. Verified on the lab that a password alone encrypts with
aes-sha256,dont-encrypt=yeskeeps the file unencrypted even with a password, and that an unencrypted backup stores the configuration in readable form. Replaced the 2018-era example output with fresh captures and links the lighter alternatives (safe mode, undo/redo) and the Files page.
CLI Reference
/system/backup/save,/system/backup/load: Removed the "Since RouterOS v6.43" version qualifiers; parameter descriptions verified on the lab and rewritten (save:name,password,encryptionwith theaes-sha256default and legacyrc4,dont-encrypt;load:name,password,force-v6-to-v7-configuration-upgrade)./tool/traffic-generator: Full parameter descriptions for all 14 pages (see Traffic Generator above), including the defaults (test-id0,latency-distribution-max100us,stats-samples-to-keep100) and the stats sub-menu columns.
Developer Guides
- API: Protocol reference overhauled and verified against the API service on the 7.26beta1 lab router (plaintext login and the legacy challenge over 8728, tags,
listen/cancelwithcategory=2interrupted trap,getall, query words, OIDs through.proplist, traps). Rewrote the initial-login section to present the plaintext method as the login method and the MD5 challenge-response as the method of older RouterOS versions (current RouterOS rejects the legacy response), refreshed the OID example (cpu-loadno longer ships an OID), corrected the trap section (category attribute is not present on every trap) and thelistenexamples (booleans now printtrue/false, deleted items report=.dead=true), removed the 2006/2010-era example transcripts, and clarified that the cert-less api-ssl mode only offers anonymous Diffie-Hellman ciphers, which current TLS clients reject. - Python 3 example: Rewrote the example client: plaintext-first login with automatic fallback to the legacy challenge-response, fixed an infinite loop when input closes, utf-8 encoding, and a secure-mode comment explaining the certificate requirement. The rewritten client was tested against the lab API.
- Developer Guides: Landing page text tightened.
- Scripting: Rewritten and verified claim-by-claim on the 7.26beta1 lab router. Corrected the scope rules (globals are not limited to the block they are declared in; in the interactive CLI a
:localstays visible on the following lines; an undeclared variable can be read and returns an empty value, but assigning a value to it is a compilation error), the bitwise operators section (&,|,^,<<,>>work on integer numbers and on IP/IPv6 addresses; only~is IP-only — IPv6 shifts work), the hexadecimal escape rules (hex letters must be uppercase, and\ffparses as\f+f), the:nothingand:tolfreference rows, and the!commentsprint parameter (it hides the comment banners, it does not filter entries). Refreshed the:timestampexample and the reserved-variable-names explanation (a name that collides with a built-in property resolves to the per-item property inside awhereexpression). - Scripting Examples: Verified the file create/append workaround and the DNS-cache site-blocking example on the lab; added a note that the ppp-secret parser needs CR/LF line endings, and an alternative approach for site blocking using the firewall
tls-host(SNI, HTTPS) andcontent(HTTP) matchers. - Scripting Tips and Tricks: Corrected three tips about declaring global variables that no longer match current RouterOS — a script or a function can read a global variable, or call a function defined in another script, without re-declaring it; the declaration is only required to change its value. Noted that the
/interface wireless info hw-infotip applies only to devices with the legacywirelesspackage.
Diagnostics, Monitoring & Troubleshooting
- Traffic Generator: Turned into a task-oriented page: the property tables moved into the CLI reference, which received full parameter descriptions (14 pages, including the packet-template builder with the IPv4/IPv6/UDP/TCP header fields and the stats sub-menus). Corrected the stream property
numtoid(the old name no longer exists), added thepacket-count,cpu-coreand read-onlydefault-portstream properties, updated theheader-stack/first-headerenums with theipv6andtcpheaders, and removed the quick command'sdurationandfreeze-frame-intervalparameters (no longer exist on 7.26). The device-mode info box now states that the traffic generator is disabled by default in every device mode, how to check it, and that enabling it needs a physical confirmation (button press or power cycle). The IPsec benchmark example was fixed —enc-algorithms=aes-128is a syntax error on RouterOS 7 and is nowaes-128-cbc. - Downgrading RouterOS: Corrected to the current RouterOS — the
factory-softwarefield was renamedminimum-version, and the architecture is reported asarchitecture-name; replaced the fabricated example output with a real/system/resource/printcapture, called out that a downgrade needs the mainrouterospackage and every installed extra package (such as the wireless driver), and that the router downgrades to the version of the uploaded packages during the reboot. - NetFlow analysis with Elasticsearch, CEF with Elasticsearch, Syslog with Elasticsearch: Verified the RouterOS-side commands on the lab (
/system/logging/actionwithremote-log-format=syslog/cef,syslog-facility,cef-event-delimiter,syslog-time-format;/ip/traffic-flowwith an interface list and atargeton the default 2055/UDP, NetFlow v9), fixed the missing image alt text and the malformedros_paths, and clarified the CEF example action name and the Elastic-side default port.
Virtual Private Networks
-
GRE: Verified and rewritten claim-by-claim on a pair of 7.26beta1 lab routers connected through a GRE tunnel. Corrected the keepalive section — keepalive is enabled by default (
10s,10, minimum interval 1 second; a 0-second setting is rejected, unsetting the property removes it but changes nothing about the observed running-flag behavior), and on the tested build a tunnel keeps its running flag even while the remote end is unreachable (the running flag only guarantees the remote end answered once); refreshed the stateless/blackhole explanation around it. Removed the claim that GRE can be used in bridged designs — the interface cannot be added as a bridge port on RouterOS 7 (EoIP covers Layer 2). Confirmed the overhead numbers on the lab (actual-mtu1476 for GRE over IPv4 and 1456 for GRE over IPv6 on a 1500-byte interface), verified theipsec-secretrequirement to disable fast-path, added a troubleshooting section, and refreshed the two-site example (including running the exact setup on the lab). -
EoIP: Verified and rewritten claim-by-claim on a pair of 7.26beta1 lab routers connected with a bridged EoIP tunnel. Confirmed the Layer 2 behavior end-to-end (bridging, ARP, RSTP and MAC learning across the tunnel) and the 42-byte overhead (8-byte GRE header with key, full inner Ethernet frame, outer IPv4 header) —
actual-mtu1458 for EoIP over IPv4 and 1444 over IPv6 on a 1500-byte path. Documented the real keepalive behavior: enabled by default (10s,10), the running flag is removed when the peer does not answer for interval × retries; values below 1 second are rejected, and unsettingkeepaliveturns the mechanism off (the flag then stays up with a dead peer). Documented that the running flag alone does not prove matchingtunnel-ids (with mismatched ids both ends stay running but drop all traffic), the MAC-address handling (locally administered by default, any value accepted — keep them unique per bridge), and the IPsec option (ipsec-secret, withallow-fast-path=norequired on IPv4; the IPv6 menu has no fast-path property). Reworked the two-site wireless example for the default RouterOS configuration (LAN ports are already bridged) and verified the exact setup on the lab.