{"id":13741050,"url":"https://github.com/m10k/canny","last_synced_at":"2026-04-04T22:12:28.524Z","repository":{"id":42408634,"uuid":"62055838","full_name":"m10k/canny","owner":"m10k","description":"Simple CAN-over-IP gateway","archived":false,"fork":false,"pushed_at":"2023-04-08T05:26:41.000Z","size":68,"stargazers_count":28,"open_issues_count":3,"forks_count":12,"subscribers_count":5,"default_branch":"unstable","last_synced_at":"2025-05-06T04:53:13.493Z","etag":null,"topics":["can-bus","can-fd","canbus","canfd","gateway","in-vehicle-network","socketcan"],"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/m10k.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-06-27T12:51:56.000Z","updated_at":"2025-05-01T17:56:12.000Z","dependencies_parsed_at":"2024-01-24T15:12:17.396Z","dependency_job_id":"749ffa6c-b816-491c-bf48-861238d342af","html_url":"https://github.com/m10k/canny","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m10k%2Fcanny","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m10k%2Fcanny/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m10k%2Fcanny/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m10k%2Fcanny/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m10k","download_url":"https://codeload.github.com/m10k/canny/tar.gz/refs/heads/unstable","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253153163,"owners_count":21862318,"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":["can-bus","can-fd","canbus","canfd","gateway","in-vehicle-network","socketcan"],"created_at":"2024-08-03T04:00:54.925Z","updated_at":"2026-04-04T22:12:28.461Z","avatar_url":"https://github.com/m10k.png","language":"C","readme":"# canny - A simple CAN-over-IP gateway\n\nThe original purpose of canny was to allow multiple machines to communicate with\na CAN bus without the need for multiple CAN controllers. It was originally meant\nfor development/evaluation and is **NOT** intended to be used in production\nenvironments.\nThere are no security precautions taken to authenticate devices connecting from\nthe IP-network, and messages are blindly forwarded without sanitizing their\ncontents. It should go without saying that this is not meant to be used in an\nactual car or industrial control network.\n\n\n## Usage\n\nThere are two possible use-cases for canny:\n\n* To connect IP-based machines to a CAN bus\n* To connect two CAN buses over an IP network\n\nHow to use canny in these situations will be described in the following sections.\n\n\n### IP-to-CAN gateway\n\nIn the first case, canny can be started like this:\n\n```\n$ canny -p 1234\n```\n\nThis way, canny will listen for incoming TCP connections on port 1234 and forward\nmessages between *all* connected CAN buses and established TCP connections. However,\nmessages received on one CAN bus will not be forwarded to another.\n\n\n### CAN-over-IP tunnel\n\nTo connect two CAN buses over an IP network, start canny on two different machines\nlike the following example.\n\nStart a canny server on machine A (let's assume its IP is 10.0.0.1):\n\n```\n$ canny -p 1234\n```\n\nThen, start canny as a client on machine B:\n\n```\n$ canny -c 10.0.0.1 -p 1234\n```\n\nNow, messages received on any CAN interfaces on machine A will be forwarded to all\nCAN interfaces of machine B, and vice-versa. Again, messages will not be forwarded\nbetween different CAN interfaces of the same machine.\n\n\n### Notes\n\nYou do not have to tell canny what SocketCAN interfaces to use for sending and\nreceiving messages to and from the connected CAN buses. Upon startup, canny will\niterate over all network interfaces, looking for interfaces containing the string\n\"can\". This way, most common interfaces (e.g. can0, vcan0) will be automatically\ndetected.\n\n\n## License\n\nCanny is free software, distributed under the terms of the GNU GPLv3+. For further\ninformation, see the COPYING file.\n","funding_links":[],"categories":["Utils"],"sub_categories":["CAN-over-IP"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm10k%2Fcanny","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm10k%2Fcanny","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm10k%2Fcanny/lists"}