{"id":15066042,"url":"https://github.com/emzi0767/modbuzz","last_synced_at":"2026-02-12T07:02:50.445Z","repository":{"id":256540547,"uuid":"855688041","full_name":"Emzi0767/Modbuzz","owner":"Emzi0767","description":"Modbus slave emulator utility for testing purposes.","archived":false,"fork":false,"pushed_at":"2024-10-17T12:35:20.000Z","size":62,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-21T12:40:55.704Z","etag":null,"topics":["csharp","dotnet","embedded","mobus-rtu","modbus","modbus-rtu-slave"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Emzi0767.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"COPYING.TXT","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE.TXT","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-09-11T09:46:48.000Z","updated_at":"2024-10-17T12:34:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"f063e673-c2da-43fd-8e04-5f605fd8f8b6","html_url":"https://github.com/Emzi0767/Modbuzz","commit_stats":null,"previous_names":["emzi0767/modbuzz"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Emzi0767/Modbuzz","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Emzi0767%2FModbuzz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Emzi0767%2FModbuzz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Emzi0767%2FModbuzz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Emzi0767%2FModbuzz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Emzi0767","download_url":"https://codeload.github.com/Emzi0767/Modbuzz/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Emzi0767%2FModbuzz/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29360728,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T01:03:07.613Z","status":"online","status_checked_at":"2026-02-12T02:00:06.911Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","dotnet","embedded","mobus-rtu","modbus","modbus-rtu-slave"],"created_at":"2024-09-25T01:00:23.134Z","updated_at":"2026-02-12T07:02:50.429Z","avatar_url":"https://github.com/Emzi0767.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Modbuzz - a Modbus slave emulator for testing purposes.\nModbuzz is a simple utility which emulates a Modbus slave. Currently only RTU is implemented.\n\n## Running the program\nThe pre-packaged versions of the program support Windows 10 x64 (or newer) and Debian 10 arm64 (or newer). Support is\nnot guaranteed for other platforms. To run the program on other Linux distributions, consult the\n[RCJP.SerialPortStream][0] readme.\n\nThe program takes 5 arguments:\n1. Serial port (e.g. `COM3` on Windows or `/dev/ttyUSB0` on Linux)\n2. Baud rate (e.g. `9600`)\n3. Data bits (e.g. `8`, but values 6-8 are allowed)\n4. Parity (e.g. `None`, but `None`, `Even`, `Odd`, `Mark`, and `Space` are allowed, not case-sensitive)\n5. Stop bits (e.g. `One`, but `One`, `One5`, and `Two` are allowed, not case-sensitive)\n\nIt then opens the serial port and starts responding to Modbus requests from a master. The emulated device parameters\nare as follows:\n- Slave ID: 192 (`0xC0`)\n- Registers:\n  - Coil:\n    - 10000 (`0x2710`, PLC: 10001): Enable random number generator\n    - 10001 (`0x2711`, PLC: 10002): Enable logging (currently has no effect)\n  - Discrete input:\n    - 40000 (`0x9C40`, PLC: 40001): Current random number is greater than the last one\n    - 40001 (`0x9C41`, PLC: 40002): Counter value overflowed on last tick\n  - Holding register:\n    - 20000 (`0x4E20`, PLC: 20001): Random lower bound\n    - 20001 (`0x4E21`, PLC: 20002): Random upper bound\n    - 20002 (`0x4E22`, PLC: 20003): Random range (if set to non-zero value, will cause the next random to be within\n      this much of the last)\n    - 20003-20004 (`0x4E23`-`0x4E24`, PLC: 20004-20005), size 2: 32-bit number register\n    - 20005 (`0x4E25`, PLC: 20006): Writeable numeric value for float testing\n  - Input:\n    - 30000 (`0x7530`, PLC: 30001): Last random number generated\n    - 30001 (`0x7531`, PLC: 30002): Request counter\n    - 30002-30003 (`0x7532`-`0x7533`, PLC: 30003-30004): 32-bit random number\n\nRegisters 30000, 30001, 30002, and 30003 are updated on each read of 30000. If the value of 10000 is 0, value of 30000\nwill not change.\n\nThe program discards repeated consecutive reads to the same address. If you want to read a register twice, issue\nanother read or write command to another register in-between.\n\n## Building the program\nYou can build the program in 2 flavours: self-contained single-file trimmed .NET application, or a .NET AOT binary. To\ndeploy as the latter, pass `-p:AOT_RELEASE=1` to `dotnet publish`.\n\nFor Linux, you must first compile native libraries for [RJCP.SerialPortStream][0]. Consult the project's readme for\ninstructions.\n\nTo build a deployable executable, use `dotnet publish`. For example:\n\n`dotnet publish -c Release -r linux-arm64 -o publish-linux-arm64/ src/Emzi0767.Modbuzz.Feeder`\n\nThe above command will create a Linux AArch64 (ARM64) binary for glibc-based systems. For Runtime IDs for other\nplatforms, consult [the .NET documentation][1].\n\n\n[0]: https://github.com/jcurl/RJCP.DLL.SerialPortStream\n[1]: https://learn.microsoft.com/en-us/dotnet/core/rid-catalog\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femzi0767%2Fmodbuzz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femzi0767%2Fmodbuzz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femzi0767%2Fmodbuzz/lists"}