IoT Device security requirements — check device configs free

Lint IoT and radio device config, firmware defaults and device manifests against RED Art. 3(3)(d)(e)(f) (EN 18031-1/-2/-3) and the UK PSTI security requirements. Runs entirely in your browser — nothing is uploaded.

Same engine as the VS Code extension, byte for byte.

Install free

Free for the file open in your editor - no key, no limit. The workspace sweep and the report ask for a key.

VS Code MarketplaceOpen VSX (Cursor, VSCodium)npmMCP server (npx)Docker Hub
ext install ReadyStack.en18031-psti-lint
npx @readystack/en18031-psti-lint <file>
npx @readystack/en18031-psti-lint --mcp

Team? One key for every ReadyStack linter, 5 seats, $149 once

Get the full rule table as a PDF
All 18 rules EN 18031 / PSTI Device Config Lint checks, each with its source and date, on printable pages you can hand to your team or auditor. We email it now, and once more only if a rule changes. No newsletter.

Get the full version $29

Sweep every matching config in the workspace and export a dated evidence pack (Markdown + CSV) mapping each finding to its article and clause, kept as a document for the test lab

One payment, one licence key for this tool. The key is shown right after payment.

A contract firmware engineer at $120 an hour bills about $480 for the half day one shipped-defaults file takes by hand, and it repeats every build

Buy the full version — $29
ENDEJAESPT

Find a tool

· ReadyStack

Worked example

Real numbers from this tool, line by line.

EN 18031 / UK PSTI: what a shipped device.yaml really says

19 findings - 15 errors and 4 warnings - in one 39-line device.yaml, for firmware and embedded engineers shipping radio devices into the EU or UK. Six of those 15 errors, exactly as the tool prints them:

L9   error  default_password           PSTI Sch. 1 para. 1 / RED Art. 3(3)(d)
L10  error  telnet_enabled             RED Art. 3(3)(d) / EN 18031-1
L21  error  tls_verification_disabled  RED Art. 3(3)(e) / EN 18031-2
L28  error  update_signature_off       RED Art. 3(3)(d) / EN 18031-1
L36  error  wrong_harmonised_standard  EN 303 645 is not harmonised here
L39  error  support_period_lapsed      ended 2026-06-30, 75 days ago

That file is _fixtures/dirty.yaml, the sample shipped with the extension - a fictional cellular gateway's default configuration, read on 2026-09-13. No code was written to produce any of those findings. Every one of them sits in the shipped defaults: the admin password, the telnet service, the certificate check, the OTA block, and two citations in the compliance section that are simply wrong.

Why a config file decides this

Since 1 August 2025, radio equipment placed on the EU market has had to meet the cybersecurity requirements of Delegated Regulation (EU) 2022/30 under the Radio Equipment Directive: Article 3(3)(d) network protection, 3(3)(e) personal data and privacy, 3(3)(f) protection from fraud. The harmonised standards cited for those limbs are EN 18031-1, -2 and -3. In the UK, PSTI has been in force since 29 April 2024, and its Schedule 1 asks three things a config file can answer: no universal default passwords, a published vulnerability-reporting contact, and a published minimum period for security updates.

The two findings a chatbot will not give you

Ask a general assistant which standard to cite and it will often say EN 303 645. That is the ETSI consumer-IoT baseline. It is not a harmonised standard under the delegated regulation, so citing it alone gives no presumption of conformity - and the line reads as done when it is not. The second is a date: the requirements were originally set for August 2024, then deferred by amendment (EU) 2023/2444 to 1 August 2025. Declarations written in that year still carry the old date, and a reviewer who reads August 2024 concludes the document was never revisited.

Both are rules here, with a third no generic tool asks: en18031_part_missing. EN 18031 without a part is not a citation - -1 is network protection, -2 is personal data and privacy, -3 is protection from fraud.

The line that moves

support_until: 2026-06-30 is not a string match; it is compared against today. Read on 2026-09-13, the published support period ended 75 days ago, so the security-update statement shipped with units already in the field is no longer true. Read the same file on 15 January 2026 and it is a warning with 166 days left - time to extend the date or write the end-of-support notice. Same file, different day, different answer.

The corrected version of that config - unique-per-unit passwords, SSH instead of telnet, mqtts on 8883, signed OTA over HTTPS, telemetry off with consent required, EN 18031 cited by part - returns 0 findings.

A contract firmware engineer at $120 an hour bills roughly $480 for the half day one such file takes by hand against Article 3(3)(d)(e)(f) and PSTI Schedule 1, and it repeats every build, because defaults drift back.

The next date is on the calendar: the EU Cyber Resilience Act reporting duties started on 11 September 2026 - 24 hours, then 72 hours, then 14 days. Same device, shorter clock.

Checking one file is free and complete: all 19 rules resolve with line numbers and clauses, no key, offline, and the same engine runs in the browser with nothing installed. The paid tier is a different job: sweep every config in the workspace and export a dated evidence pack, Markdown and CSV, mapping each finding to its article and clause. $29 once.

15 seconds — what it actually does

Questions people ask

What does EN 18031 / PSTI Device Config Lint actually do?

It reads device config and firmware default files - device.yaml, prj.conf, mosquitto.conf, .env, C headers - and reports each line that fails RED Article 3(3)(d), (e) or (f) or a UK PSTI Schedule 1 duty. 19 rules, each finding carrying a line number, the article and the EN 18031 part the fix belongs to.

Who is this for?

Firmware and embedded engineers, and the compliance lead sitting next to them, at a company placing radio or connected equipment on the EU or UK market. If you are assembling a declaration of conformity for Delegated Regulation (EU) 2022/30, or answering a retailer's PSTI statement-of-compliance request, these are your files. Penalties under the PSTI Act 2022 reach 10 million pounds or 4% of qualifying worldwide revenue.

Why is a chatbot or a generic security linter not enough?

Generic linters look for secrets and syntax, not for legal duties, so they never ask whether a support period was published. Chatbots routinely cite EN 303 645 as the harmonised standard and repeat the withdrawn August 2024 date. This tool checks both mistakes explicitly, offline, against the file in front of you.

What is free and what needs the paid key?

Free and complete for one file: open it, run the check, see every finding with its line and clause, all 19 rules, no key and no account. The paid key adds a different job - sweeping every matching config in the workspace and exporting a dated evidence pack, Markdown plus CSV, that you keep and hand on.

What would this cost if a person did it?

A contract firmware engineer at $120 an hour bills roughly $480 for the half day it takes to walk one shipped-defaults file against Article 3(3)(d)(e)(f) and PSTI Schedule 1 by hand, and that half day repeats on every build. The full version is $29 once,.

Why not just ask ChatGPT or another AI chat?

A general AI chat answers from training data with a cutoff date, cannot read your repository and names no rule version. EN 18031 / PSTI Device Config Lint checks the file you open against 19 rules, each naming its legal or official basis, from a rule set dated 2026-09-20, and points at the exact line. For a filing, an audit or a client you need that dated result on your own files.

Ask about this tool

One question, answered by the person who built it. Your email only if you want the answer sent.

Embed this tool on your site (free)

Paste this code into your page. It runs in your visitor’s browser and stays up to date. Nothing your visitors type is stored.

 All embeddable tools

For businesses: your name and logo instead of ours, and each visitor’s result + e-mail in your inbox (only when they tick consent) — Pro from $19/month. See Pro →