Repository navigation
Releases: Azerxim/Sulfur
Release list
v0.3.1
Sulfur 0.3.1
🇬🇧 English
Linux packaging fixes.
Fixes
- Linux: the application icon is now shown in the applications menu after installing the
.debpackage. The icon is provided in every standard size (16 to 512 px). - Linux: the
.debfile is now namedSulfur_<version>_amd64.deb. The Debian package itself is still namedsulfur.
Installers
- Windows:
Sulfur-Setup-0.3.1.exe - Linux:
Sulfur-0.3.1-x86_64.AppImageorSulfur_0.3.1_amd64.deb - macOS:
Sulfur-0.3.1-arm64.dmg(Apple Silicon) orSulfur-0.3.1-x64.dmg(Intel). The application is not signed: the first time, open it by right-click → Open, or runxattr -cr /Applications/Sulfur.app.
Upgrading
- From 0.3.0: Sulfur offers this version in Settings → Updates (download and install on Windows and Linux, link to this page on macOS).
- From 0.2.0: see the 0.3.0 notes (on Windows, uninstall 0.2.0 first).
🇫🇷 Français
Corrections du packaging Linux.
Corrections
- Linux : l'icône de l'application s'affiche désormais dans le menu des applications après l'installation du paquet
.deb. L'icône est fournie à chaque taille standard (16 à 512 px). - Linux : le fichier
.debs'appelle désormaisSulfur_<version>_amd64.deb. Le paquet Debian garde le nomsulfur.
Installeurs
- Windows :
Sulfur-Setup-0.3.1.exe - Linux :
Sulfur-0.3.1-x86_64.AppImageouSulfur_0.3.1_amd64.deb - macOS :
Sulfur-0.3.1-arm64.dmg(Apple Silicon) ouSulfur-0.3.1-x64.dmg(Intel). L'application n'est pas signée : la première fois, ouvrez-la par clic droit → Ouvrir, ou lancezxattr -cr /Applications/Sulfur.app.
Mise à jour
- Depuis la 0.3.0 : Sulfur propose cette version dans Paramètres → Mises à jour (téléchargement et installation sous Windows et Linux, lien vers cette page sous macOS).
- Depuis la 0.2.0 : voir les notes de la 0.3.0 (sous Windows, désinstallez d'abord la 0.2.0).
v0.3.0
Sulfur 0.3.0
🇬🇧 English
This release adds three IT and supervision protocols (MQTT, SNMP, Syslog), a home page, built-in updates and new installers for Linux (.deb) and macOS.
New modules
MQTT
- Broker (MQTT 3.1, 3.1.1 and 5.0, TCP or TLS): persistent sessions, QoS 0 / 1 / 2, retained messages, last will, topic aliases, MQTT 5.0 subscription options and properties.
- Simulated topics published by the broker (sine, ramp, random or toggle generator), writable through
<topic>/set. - Optional authentication, connected clients and their subscriptions, topic explorer, message log with wildcard filter.
- Client (MQTT 3.1, 3.1.1 or 5.0, TCP or TLS): subscriptions with JSON field extraction, publication, last will, automatic reconnection.
- Not supported yet: shared subscriptions (
$share/…) and MQTT 5.0 enhanced authentication.
SNMP
- Agent (SNMPv1, v2c and v3 with USM authentication and encryption): MIB-II system group and simulated objects, writable by SetRequest.
- Notifications: traps and acknowledged informs in SNMPv1, v2c and v3.
- Manager: Get, GetNext, GetBulk, Walk and Set, monitored OIDs, notification receiver.
Syslog
- Server over UDP, TCP and TLS: RFC 5424 and RFC 3164 parsing, RFC 6587 framing, filters by severity and text.
- Sender: RFC 5424 or 3164 messages, bursts and periodic sending.
All three modules publish points for the Simulator and Trends, and support fault injection (delay, no response, connection cut or forced errors, frozen values).
Interface
- New home page: overview, getting started and access to the modules.
- The sidebar groups the modules: Tools, Industrial automation, IT and supervision.
- Updates: Sulfur checks the GitHub releases at startup, then every 6 hours. This can be turned off in Settings → Updates. On Windows and Linux, the update is downloaded and installed from the application. On macOS, a link to the release page is shown.
- New defaults: theme of the operating system, S7-1500 CPU, latest protocol versions.
Installers
- Windows:
Sulfur-Setup-0.3.0.exe - Linux:
Sulfur-0.3.0-x86_64.AppImageorsulfur_0.3.0_amd64.deb - macOS (new):
Sulfur-0.3.0-arm64.dmg(Apple Silicon) orSulfur-0.3.0-x64.dmg(Intel). The application is not signed: the first time, open it by right-click → Open, or runxattr -cr /Applications/Sulfur.app.
Upgrading from 0.2.0
- Windows: the application identifier has changed. Uninstall Sulfur 0.2.0 before installing 0.3.0. Your settings are kept.
- Version 0.2.0 has no update system: install 0.3.0 manually once. Later versions will be offered by Sulfur itself.
🇫🇷 Français
Cette version ajoute trois protocoles informatiques et de supervision (MQTT, SNMP, Syslog), une page d'accueil, les mises à jour intégrées et de nouveaux installeurs pour Linux (.deb) et macOS.
Nouveaux modules
MQTT
- Broker (MQTT 3.1, 3.1.1 et 5.0, TCP ou TLS) : sessions persistantes, QoS 0 / 1 / 2, messages retenus, dernière volonté, alias de topics, options d'abonnement et propriétés MQTT 5.0.
- Topics simulés publiés par le broker (générateur sinus, rampe, aléatoire ou bascule), modifiables via
<topic>/set. - Authentification facultative, clients connectés et leurs abonnements, explorateur de topics, journal des messages avec filtre à jokers.
- Client (MQTT 3.1, 3.1.1 ou 5.0, TCP ou TLS) : abonnements avec extraction d'un champ JSON, publication, dernière volonté, reconnexion automatique.
- Pas encore pris en charge : abonnements partagés (
$share/…) et authentification étendue MQTT 5.0.
SNMP
- Agent (SNMPv1, v2c et v3 avec authentification et chiffrement USM) : groupe système de la MIB-II et objets simulés, modifiables par SetRequest.
- Notifications : traps et informs acquittés en SNMPv1, v2c et v3.
- Manager : Get, GetNext, GetBulk, Walk et Set, OID surveillés, récepteur de notifications.
Syslog
- Serveur UDP, TCP et TLS : analyse RFC 5424 et RFC 3164, délimitation RFC 6587, filtres par gravité et par texte.
- Émetteur : messages RFC 5424 ou 3164, rafales et envoi périodique.
Les trois modules publient des points pour le Simulateur et les Courbes, et acceptent l'injection de défauts (délai, absence de réponse, coupure ou erreurs forcées, valeurs figées).
Interface
- Nouvelle page d'accueil : présentation, prise en main et accès aux modules.
- La barre latérale regroupe les modules : Outils, Automatismes industriels, Informatique et supervision.
- Mises à jour : Sulfur consulte les releases GitHub au démarrage, puis toutes les 6 heures. Désactivable dans Paramètres → Mises à jour. Sous Windows et Linux, la mise à jour est téléchargée et installée depuis l'application. Sous macOS, un lien vers la page de la release est affiché.
- Nouvelles valeurs par défaut : thème du système, CPU S7-1500, versions de protocole les plus récentes.
Installeurs
- Windows :
Sulfur-Setup-0.3.0.exe - Linux :
Sulfur-0.3.0-x86_64.AppImageousulfur_0.3.0_amd64.deb - macOS (nouveau) :
Sulfur-0.3.0-arm64.dmg(Apple Silicon) ouSulfur-0.3.0-x64.dmg(Intel). L'application n'est pas signée : la première fois, ouvrez-la par clic droit → Ouvrir, ou lancezxattr -cr /Applications/Sulfur.app.
Passer de la 0.2.0 à la 0.3.0
- Windows : l'identifiant de l'application a changé. Désinstallez Sulfur 0.2.0 avant d'installer la 0.3.0. Vos réglages sont conservés.
- La version 0.2.0 n'a pas de système de mise à jour : installez la 0.3.0 à la main une fois. Les versions suivantes seront proposées par Sulfur lui-même.
v0.2.0
Sulfur 0.2.0
🇬🇧 English
This release turns Sulfur into a multi-protocol test bench: four new protocol modules (Siemens S7, PLCSim Advanced, HTTP / REST, NTP), a much more complete OPC UA module, and two cross-protocol modules, Simulator and Trends.
New modules
Siemens S7 (S7comm)
- Simulated PLC: I / Q / M / DB memory, simulated points, SZL identification, RUN / STOP, write protection, memory explorer, injectable faults.
- Client: rack / slot or TSAP addressing, typed and raw reads / writes split to the negotiated PDU size, CPU identification, CPU start / stop, watches published as points.
- Works with S7-1200 / 1500 CPUs that allow PUT/GET access (port 102, rack 0, slot 1 for an S7-1500).
PLCSim Advanced (Windows)
- Drives S7-PLCSIM Advanced virtual PLCs through the Simulation Runtime API: create instances, power on / off, RUN / STOP, memory reset, IP address, tag table, watches.
- Writing to inputs here simulates the process. The CPU keeps the value, unlike a PUT/GET write to an input, which is overwritten at the next cycle.
- Remote PC: connect to the Runtime Manager of another PC (open its port in the PLCSIM Advanced control panel, 50000 by default).
- On a PC without PLCSIM Advanced installed, the module asks for the folder containing the API DLLs.
- Not available on Linux / macOS: the API is a native Windows library.
HTTP / REST
- Server with simulated variables, REST API, templated routes, authentication, HTTPS and webhooks.
- Client with watches.
NTP
- Server with a simulated clock: offset, fixed time, drift, stratum.
- Client.
Simulator
- Node-RED-style flow editor. Flows keep running in the background once deployed.
- Nodes: triggers, points, ramp, fault, logic, JavaScript function, generators and debug.
- Fault injection: delay, no response, disconnection, Modbus exception, OPC UA status code, frozen values.
- Recording of point changes, replayed as a flow.
Trends
- Real-time chart of points from every protocol: sliding window, zoom, tooltip, shared or split layout.
- CSV export.
Improved modules
OPC UA
- Server: arrays and structured types, methods, threshold alarms and events, history (HistoryRead), NodeSet2 XML import.
- Client: method calls, history reads, events and acknowledgement.
Modbus
- Several devices (Unit ID) on one server, device identification (function 43 / 14), read / write multiple (function 23), register explorer.
Interface
- The Simulator, Trends and PLCSim Advanced modules are organised in tabs.
- Each module remembers its last tab (server / client).
- New Startup page setting (by default, the last page viewed).
- The Simulator side panel can be resized.
- A section that is alone on its page uses the full window height.
Fixes
- A dropped connection could crash the OPC UA client.
- Switch-node rules in the Simulator are displayed correctly again.
Project
- Sulfur is now licensed under Apache-2.0.
- Contributions require signing a CLA, by commenting on your first pull request. A contribution guide is available in English and French.
- The roadmap introduces standard and premium editions.
🇫🇷 Français
Cette version fait de Sulfur un banc de test multi-protocoles : quatre nouveaux modules de protocole (Siemens S7, PLCSim Advanced, HTTP / REST, NTP), un module OPC UA bien plus complet, et deux modules communs à tous les protocoles, Simulateur et Courbes.
Nouveaux modules
Siemens S7 (S7comm)
- Automate simulé : mémoire I / Q / M / DB, points simulés, identification SZL, RUN / STOP, protection en écriture, explorateur de mémoire, défauts injectables.
- Client : adressage par rack / emplacement ou par TSAP, lectures / écritures typées et brutes découpées selon la taille de PDU négociée, identification de la CPU, démarrage / arrêt de la CPU, surveillances publiées comme points.
- Fonctionne avec les CPU S7-1200 / 1500 qui autorisent l'accès PUT/GET (port 102, rack 0, slot 1 pour un S7-1500).
PLCSim Advanced (Windows)
- Pilote les automates virtuels de S7-PLCSIM Advanced par l'API Simulation Runtime : création d'instances, mise sous / hors tension, RUN / STOP, effacement général, adresse IP, table des variables, surveillances.
- Écrire les entrées depuis ce module simule le procédé. La CPU garde la valeur, contrairement à une écriture PUT/GET sur une entrée, qui est écrasée au cycle suivant.
- PC distant : connexion au Runtime Manager d'un autre PC (port à ouvrir dans le panneau de contrôle de PLCSIM Advanced, 50000 par défaut).
- Sur un PC sans PLCSIM Advanced installé, le module demande le dossier qui contient les DLL de l'API.
- Indisponible sous Linux / macOS : l'API est une bibliothèque Windows native.
HTTP / REST
- Serveur à variables simulées, API REST, routes à gabarit, authentification, HTTPS et webhooks.
- Client avec surveillances.
NTP
- Serveur à horloge simulée : décalage, heure fixée, dérive, strate.
- Client.
Simulateur
- Éditeur de flux à la manière de Node-RED. Une fois déployés, les flux tournent en continu en arrière-plan.
- Nœuds : déclencheurs, points, rampe, défaut, logique, fonction JavaScript, générateurs et débogage.
- Injection de défauts : délai, absence de réponse, coupure, exception Modbus, code d'état OPC UA, valeurs figées.
- Enregistrement des évolutions de points, rejouées sous forme de flux.
Courbes
- Graphique temps réel des points de tous les protocoles : fenêtre glissante, zoom, info-bulle, affichage superposé ou séparé.
- Export CSV.
Modules améliorés
OPC UA
- Serveur : tableaux et types structurés, méthodes, alarmes à seuils et événements, historique (HistoryRead), import de NodeSet2 XML.
- Client : appel de méthodes, lecture d'historique, événements et acquittement.
Modbus
- Plusieurs équipements (Unit ID) sur un même serveur, identification de l'équipement (fonction 43 / 14), lecture / écriture multiple (fonction 23), explorateur de registres.
Interface
- Les modules Simulateur, Courbes et PLCSim Advanced sont organisés en onglets.
- Chaque module retient son dernier onglet (serveur / client).
- Nouveau réglage Page de démarrage (par défaut, la dernière page affichée).
- Le panneau latéral du Simulateur est redimensionnable.
- Une section seule sur sa page occupe toute la hauteur de la fenêtre.
Corrections
- Une coupure de connexion pouvait faire planter le client OPC UA.
- Les règles du nœud Aiguillage du Simulateur s'affichent de nouveau correctement.
Projet
- Sulfur est désormais sous licence Apache-2.0.
- Les contributions demandent de signer un CLA, par un commentaire sur sa première pull request. Un guide de contribution est disponible en anglais et en français.
- La feuille de route présente les éditions standard et premium.
v0.1.0
Sulfur v0.1.0
First public release of Sulfur, a desktop simulator for industrial protocols. It runs an
OPC UA or Modbus TCP server or client on your PC, so you can test SCADA software, PLC
gateways or client applications without real equipment.
Downloads
| System | File |
|---|---|
| Windows | Sulfur-Setup-0.1.0.exe (installer) |
| Linux | Sulfur-0.1.0-x86_64.AppImage (make it executable: chmod +x, then run it) |
The installers are not code-signed. On Windows, SmartScreen may show a warning: choose
More info → Run anyway.
Features
OPC UA
- Simulated server: variables with sine, ramp, random, toggle or static values, editable while
the server is running. Default endpoint:opc.tcp://localhost:4840/UA/Sulfur. - Client: address space browsing, read / write, real-time monitoring (subscriptions), endpoint
discovery. - Security:
None,SignandSignAndEncryptmodes, modern policies (Basic256Sha256,
Aes128-Sha256-RsaOaep, Aes256-Sha256-RsaPss), anonymous or username / password authentication
(hashed passwords), certificate stores with approval from the interface.
Modbus TCP
- Server: the four tables, functions 1–6, 15 and 16, typed simulated points (Boolean, 16/32-bit
integers, Float32 / Float64, ABCD / CDAB / BADC / DCBA word orders), connected clients list and
security log. - Client: read / write on every table, decoding (integers, floats, hex, binary), periodic polling.
- Security: Modbus/TCP Security (mutual TLS, pinned X.509 certificates), role-based authorization
read from the client certificate, IP allow-list, connection and request rate limits, read-only mode,
Unit ID filtering.
Application
- Saved configurations: server and client settings are restored at the next start.
- Import / export: share a complete test setup as a single JSON file (Settings →
Configurations). - Information page (PC IP addresses, system), English and French interface, dark and light themes.
Good to know
- The OPC UA server has a default user
admin/admin: change or delete it before exposing the
server on a network. - Default ports are 4840 (OPC UA), 5020 (Modbus TCP) and 8020 (Modbus TLS). The standard ports 502 / 802
need administrator rights on Linux. - Data (settings, certificates) is stored in
~/.config/sulfur/(Linux) or%APPDATA%\sulfur\
(Windows).
Known limitations
- Applying a numeric simulation (sine, ramp…) to an OPC UA
Stringvariable fails. - Number fields use the operating system's decimal separator, whatever the interface language.
- The application is not optimized yet (large interface bundle, no automatic updates).
What comes next (fault injection, scenarios, charts, MQTT, SNMP…) is in the roadmap.
Sulfur v0.1.0 (français)
Première version publique de Sulfur, un simulateur de protocoles industriels pour PC. Il fait
tourner un serveur ou un client OPC UA ou Modbus TCP sur votre poste, pour tester une
supervision, une passerelle ou une application cliente sans matériel réel.
Téléchargements
| Système | Fichier |
|---|---|
| Windows | Sulfur-Setup-0.1.0.exe (installeur) |
| Linux | Sulfur-0.1.0-x86_64.AppImage (rendez-le exécutable : chmod +x, puis lancez-le) |
Les installeurs ne sont pas signés. Sous Windows, SmartScreen peut afficher un avertissement :
choisissez Informations complémentaires → Exécuter quand même.
Fonctionnalités
OPC UA
- Serveur simulé : variables en sinus, rampe, aléatoire, bascule ou statiques, modifiables serveur
démarré. Endpoint par défaut :opc.tcp://localhost:4840/UA/Sulfur. - Client : navigation dans l'espace d'adressage, lecture / écriture, surveillance temps réel
(abonnements), découverte des endpoints. - Sécurité : modes
None,SignetSignAndEncrypt, politiques récentes (Basic256Sha256,
Aes128-Sha256-RsaOaep, Aes256-Sha256-RsaPss), authentification anonyme ou par identifiant / mot de
passe (mots de passe hachés), magasins de certificats avec approbation depuis l'interface.
Modbus TCP
- Serveur : les quatre tables, fonctions 1 à 6, 15 et 16, points simulés typés (booléen, entiers
16/32 bits, Float32 / Float64, ordres des mots ABCD / CDAB / BADC / DCBA), liste des clients connectés
et journal de sécurité. - Client : lecture / écriture de toutes les tables, décodage (entiers, flottants, hexadécimal,
binaire), scrutation périodique. - Sécurité : Modbus/TCP Security (TLS mutuel, certificats X.509 épinglés), autorisation par rôle
lue dans le certificat client, liste blanche d'adresses IP, limites de connexions et de requêtes,
mode lecture seule, filtrage du Unit ID.
Application
- Configurations enregistrées : les réglages des serveurs et clients sont restaurés au lancement
suivant. - Import / export : partagez un banc de test complet dans un seul fichier JSON (Paramètres →
Configurations). - Page Informations (adresses IP du PC, système), interface en anglais et en français, thèmes sombre
et clair.
À savoir
- Le serveur OPC UA a un utilisateur par défaut
admin/admin: modifiez-le ou supprimez-le
avant d'exposer le serveur sur un réseau. - Ports par défaut : 4840 (OPC UA), 5020 (Modbus TCP) et 8020 (Modbus TLS). Les ports standards 502 /
802 nécessitent des droits administrateur sous Linux. - Les données (réglages, certificats) sont rangées dans
~/.config/sulfur/(Linux) ou
%APPDATA%\sulfur\(Windows).
Limites connues
- Appliquer une simulation numérique (sinus, rampe…) à une variable OPC UA de type
Stringéchoue. - Les champs numériques utilisent le séparateur décimal du système, quelle que soit la langue de
l'interface. - L'application n'est pas encore optimisée (interface volumineuse, pas de mise à jour automatique).
La suite (injection de défauts, scénarios, courbes, MQTT, SNMP…) est décrite dans la
roadmap.