{"id":19475338,"url":"https://github.com/bluenviron/gomavlib","last_synced_at":"2025-05-16T02:08:19.369Z","repository":{"id":37441246,"uuid":"175249826","full_name":"bluenviron/gomavlib","owner":"bluenviron","description":"Mavlink library (2.0 and 1.0) for the Go programming language","archived":false,"fork":false,"pushed_at":"2025-05-15T05:09:56.000Z","size":8994,"stargazers_count":145,"open_issues_count":2,"forks_count":44,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-05-15T06:23:04.397Z","etag":null,"topics":["go","golang","golang-library","mavlink","mavlink-library","mavlink-protocol","mavlink-proxy","quadcopter","uav","ugv"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bluenviron.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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},"funding":{"custom":["https://www.buymeacoffee.com/aler9"]}},"created_at":"2019-03-12T16:05:15.000Z","updated_at":"2025-05-15T05:10:00.000Z","dependencies_parsed_at":"2024-06-26T06:31:52.109Z","dependency_job_id":"92e29f4a-671f-478d-83a7-eed890c4bf55","html_url":"https://github.com/bluenviron/gomavlib","commit_stats":{"total_commits":905,"total_committers":12,"mean_commits":75.41666666666667,"dds":0.6629834254143646,"last_synced_commit":"013769aa1d8345e7aeb05f5c89abcca158847dda"},"previous_names":["aler9/gomavlib","gswly/gomavlib"],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluenviron%2Fgomavlib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluenviron%2Fgomavlib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluenviron%2Fgomavlib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluenviron%2Fgomavlib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bluenviron","download_url":"https://codeload.github.com/bluenviron/gomavlib/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254453655,"owners_count":22073617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["go","golang","golang-library","mavlink","mavlink-library","mavlink-protocol","mavlink-proxy","quadcopter","uav","ugv"],"created_at":"2024-11-10T19:31:56.627Z","updated_at":"2025-05-16T02:08:14.358Z","avatar_url":"https://github.com/bluenviron.png","language":"Go","funding_links":["https://www.buymeacoffee.com/aler9"],"categories":["Embedded Systems"],"sub_categories":["Protocol implementations"],"readme":"# gomavlib\n\n[![Test](https://github.com/bluenviron/gomavlib/actions/workflows/test.yml/badge.svg)](https://github.com/bluenviron/gomavlib/actions/workflows/test.yml)\n[![Lint](https://github.com/bluenviron/gomavlib/actions/workflows/lint.yml/badge.svg)](https://github.com/bluenviron/gomavlib/actions/workflows/lint.yml)\n[![Dialects](https://github.com/bluenviron/gomavlib/actions/workflows/dialects.yml/badge.svg)](https://github.com/bluenviron/gomavlib/actions/workflows/dialects.yml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/bluenviron/gomavlib)](https://goreportcard.com/report/github.com/bluenviron/gomavlib)\n[![CodeCov](https://codecov.io/gh/bluenviron/gomavlib/branch/main/graph/badge.svg)](https://app.codecov.io/gh/bluenviron/gomavlib/tree/main)\n[![PkgGoDev](https://pkg.go.dev/badge/github.com/bluenviron/gomavlib/v3)](https://pkg.go.dev/github.com/bluenviron/gomavlib/v3#pkg-index)\n\ngomavlib is a library that implements the Mavlink protocol (2.0 and 1.0) in the Go programming language. It can interact with Mavlink-capable devices through a serial port, UDP, TCP or a custom transport, and it can be used to power UGVs, UAVs, ground stations, monitoring systems or routers.\n\nMavlink is a lightweight and transport-independent protocol that is mostly used to communicate with unmanned ground vehicles (UGV) and unmanned aerial vehicles (UAV, drones, quadcopters, multirotors). It is supported by the most popular open-source flight controllers (Ardupilot and PX4).\n\nThis library powers the [**mavp2p**](https://github.com/bluenviron/mavp2p) router.\n\nFeatures:\n\n* Create Mavlink nodes able to communicate with other nodes.\n  * Supported transports: serial, UDP (server, client or broadcast mode), TCP (server or client mode), custom reader/writer.\n  * Emit heartbeats automatically.\n  * Send automatic stream requests to Ardupilot devices (disabled by default).\n  * Use both domain names and IPs.\n* Decode and encode Mavlink v2.0 and v1.0.\n  * Compute and validate checksums.\n  * Support all v2 features: empty-byte truncation, signatures, message extensions.\n* Use dialects in multiple ways.\n  * Ready-to-use standard dialects are available in directory `dialects/`.\n  * Custom dialects can be defined. Aa dialect generator is available in order to convert XML definitions into their Go representation.\n  * Use no dialect at all. Messages can be routed without having their content decoded.\n* Read and write telemetry logs (tlog)\n\n## Table of contents\n\n* [Installation](#installation)\n* [Examples](#examples)\n* [API Documentation](#api-documentation)\n* [Dialect generation](#dialect-generation)\n* [Specifications](#specifications)\n* [Links](#links)\n\n## Installation\n\n1. Install Go \u0026ge; 1.21.\n\n2. Create an empty folder, open a terminal in it and initialize the Go modules system:\n\n   ```\n   go mod init main\n   ```\n\n3. Download one of the [example files](#examples) and place it in the folder.\n\n4. Compile and run:\n\n   ```\n   go run name-of-the-go-file.go\n   ```\n\n## Examples\n\n* [node-endpoint-serial](examples/node-endpoint-serial/main.go)\n* [node-endpoint-udp-server](examples/node-endpoint-udp-server/main.go)\n* [node-endpoint-udp-client](examples/node-endpoint-udp-client/main.go)\n* [node-endpoint-udp-broadcast](examples/node-endpoint-udp-broadcast/main.go)\n* [node-endpoint-tcp-server](examples/node-endpoint-tcp-server/main.go)\n* [node-endpoint-tcp-client](examples/node-endpoint-tcp-client/main.go)\n* [node-endpoint-custom](examples/node-endpoint-custom/main.go)\n* [node-message-read](examples/node-message-read/main.go)\n* [node-message-write](examples/node-message-write/main.go)\n* [node-signature](examples/node-signature/main.go)\n* [node-dialect-absent](examples/node-dialect-absent/main.go)\n* [node-dialect-custom](examples/node-dialect-custom/main.go)\n* [node-events](examples/node-events/main.go)\n* [node-router](examples/node-router/main.go)\n* [node-router-edit](examples/node-router-edit/main.go)\n* [node-serial-to-json](examples/node-serial-to-json/main.go)\n* [node-stream-requests](examples/node-stream-requests/main.go)\n* [frame-read-writer](examples/frame-read-writer/main.go)\n* [telemetry-log](examples/telemetry-log/main.go)\n\n## API Documentation\n\n[Click to open the API Documentation](https://pkg.go.dev/github.com/bluenviron/gomavlib/v3#pkg-index)\n\n## Dialect generation\n\nStandard dialects are provided in the `pkg/dialects/` folder, but it's also possible to use custom dialects, that can be converted into Go files by running:\n\n```\ngo install github.com/bluenviron/gomavlib/v3/cmd/dialect-import@latest\ndialect-import my_dialect.xml\n```\n\n## Specifications\n\n|name|area|\n|----|----|\n|[main website](https://mavlink.io/en/)|protocol|\n|[packet format](https://mavlink.io/en/guide/serialization.html)|protocol|\n|[common dialect](https://github.com/mavlink/mavlink/blob/master/message_definitions/v1.0/common.xml)|dialects|\n|[Golang project layout](https://github.com/golang-standards/project-layout)|project layout|\n\n## Links\n\nRelated projects\n\n* [mavp2p](https://github.com/bluenviron/mavp2p)\n\nOther Go libraries\n\n* [gobot](https://github.com/hybridgroup/gobot/tree/master/platforms/mavlink)\n* [liamstask/go-mavlink](https://github.com/liamstask/go-mavlink)\n* [ungerik/go-mavlink](https://github.com/ungerik/go-mavlink)\n* [SpaceLeap/go-mavlink](https://github.com/SpaceLeap/go-mavlink)\n* [MAVSDK-Go](https://github.com/mavlink/MAVSDK-Go)\n\nOther non-Go libraries\n\n* [official library (C)](https://github.com/mavlink/c_library_v2)\n* [pymavlink (Python)](https://github.com/ArduPilot/pymavlink)\n* [mavlink.net (C#)](https://github.com/asvol/mavlink.net)\n* [rust-mavlink (Rust)](https://github.com/3drobotics/rust-mavlink)\n* [node-mavlink (JS)](https://github.com/omcaree/node-mavlink)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluenviron%2Fgomavlib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbluenviron%2Fgomavlib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluenviron%2Fgomavlib/lists"}