{"id":19026467,"url":"https://github.com/conorpp/efm8-arduino-programmer","last_synced_at":"2025-04-23T12:51:31.943Z","repository":{"id":74185886,"uuid":"97351510","full_name":"conorpp/efm8-arduino-programmer","owner":"conorpp","description":"Program EFM8 devices using an arduino","archived":false,"fork":false,"pushed_at":"2018-05-13T17:06:12.000Z","size":11,"stargazers_count":45,"open_issues_count":6,"forks_count":23,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-18T00:11:10.325Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/conorpp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2017-07-16T01:09:15.000Z","updated_at":"2025-03-28T15:02:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"4ffbff07-a3ff-4b93-9268-1950a27bb1a6","html_url":"https://github.com/conorpp/efm8-arduino-programmer","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/conorpp%2Fefm8-arduino-programmer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conorpp%2Fefm8-arduino-programmer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conorpp%2Fefm8-arduino-programmer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conorpp%2Fefm8-arduino-programmer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/conorpp","download_url":"https://codeload.github.com/conorpp/efm8-arduino-programmer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250438077,"owners_count":21430809,"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":[],"created_at":"2024-11-08T20:49:20.931Z","updated_at":"2025-04-23T12:51:31.936Z","avatar_url":"https://github.com/conorpp.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# efm8-arduino-programmer\nProgram EFM8 devices using an Arduino Mega.\n\nThanks to jaromir-sukuba and racerxdl for working on firmware to implement C2 protocol via arduino GPIO.  This work largely pulls from them.\n\n## Pre-Steps\nCurrently, it is for Arduino Mega and maps C2D and C2CK to digital pins 2 and 3, respectively. \n\nC2 is a 2-pin protocol.  Any arduino should work to implement the protocol via GPIO.  Just need to make sure that the correct pins are mapped for your Arduino.\n\n### Update Pins\nCheck the [firmware file](https://github.com/conorpp/efm8-arduino-programmer/blob/master/prog/prog.ino#L11) and change the pins to map to your device if needed.\n\n### Arduino Uno support\nTo use it for Arduino Uno you can just swap from E to D. Just replace all `PORTE`, `DDRE` and `PINE` with `PORTD`, `DDRD` and `PIND`. You can read about Port Registers here: https://www.arduino.cc/en/Reference/PortManipulation\n\n### Write firmware to Arduino\nProgram the firmware to the arduino and connect C2D, C2CK, and GND to your target device.\n\n## Setup for flashing EFM8\nIt is set up in a client/server model to be able to easily support programming multiple targets at the same time.\n\n### Requirements\n- You need to have Python (2.7) installed.\n- Then, install some required python modules.\n\n```\npip install -r requirements.txt\n```\n\n### Setup of Server \u0026 Client\n\n#### Server \nFirst you must run the server that will handle communication to the arduino.\n\n```\npython prog_server.py \u003cserial-port\u003e [\u003cserial-port2\u003e ...]\n```\n\nSupply a list of serial ports (you can use more than one Arduino at a time) to handle programming.  E.g /dev/USB1 or COM1 or /dev/cu.usbmodem*.\n\n#### Client\nThen you can finally program something using the client script.\n\n```\npython prog_client.py \u003cserial-port\u003e \u003cfirmware.hex\u003e\n```\n\nThis will connect to the server and tell it to download specified firmware via specified arduino.\n\n## Troubleshooting\n\n- If your server can't start make sure you have port 4040 available\n- If you get python errors make sure you're not running python3\n- Some modules need sudo on some systems\n- If you're getting data errors, reduce baud rate: https://github.com/conorpp/efm8-arduino-programmer/issues/5\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconorpp%2Fefm8-arduino-programmer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconorpp%2Fefm8-arduino-programmer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconorpp%2Fefm8-arduino-programmer/lists"}