{"id":17501890,"url":"https://github.com/pravinraghul/gpioserdev-driver","last_synced_at":"2026-05-07T17:33:59.993Z","repository":{"id":258095230,"uuid":"866568681","full_name":"pravinraghul/gpioserdev-driver","owner":"pravinraghul","description":"Custom GPIO serial data transfer driver using a bit-banging technique.","archived":false,"fork":false,"pushed_at":"2024-12-26T16:56:13.000Z","size":80,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-17T16:53:40.024Z","etag":null,"topics":["gpio","kernel-driver","linux-device-drivers","linux-kernel","raspberry-pi-3"],"latest_commit_sha":null,"homepage":"","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/pravinraghul.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,"zenodo":null}},"created_at":"2024-10-02T13:51:16.000Z","updated_at":"2025-01-13T12:20:29.000Z","dependencies_parsed_at":"2024-11-18T17:37:17.283Z","dependency_job_id":"77a200be-ff0a-4754-b84f-9d53ceb27976","html_url":"https://github.com/pravinraghul/gpioserdev-driver","commit_stats":{"total_commits":6,"total_committers":1,"mean_commits":6.0,"dds":0.0,"last_synced_commit":"9029a78c27dcf1b7930207af530abd630c4d22e5"},"previous_names":["pravinraghul/gpioserdev-driver"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pravinraghul/gpioserdev-driver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pravinraghul%2Fgpioserdev-driver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pravinraghul%2Fgpioserdev-driver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pravinraghul%2Fgpioserdev-driver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pravinraghul%2Fgpioserdev-driver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pravinraghul","download_url":"https://codeload.github.com/pravinraghul/gpioserdev-driver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pravinraghul%2Fgpioserdev-driver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32748674,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-07T02:14:30.463Z","status":"ssl_error","status_checked_at":"2026-05-07T02:14:29.405Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["gpio","kernel-driver","linux-device-drivers","linux-kernel","raspberry-pi-3"],"created_at":"2024-10-19T20:15:52.260Z","updated_at":"2026-05-07T17:33:59.974Z","avatar_url":"https://github.com/pravinraghul.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Custom GPIO Serial Communication Driver\n\n## Purpose\nTo develop my understanding of device driver concepts, I focused on developing loadable kernel modules with configurable parameters, implementing ioctl calls, and working with device tree overlays. This improved project based on the final project I completed as part of the [Advanced Embedded Linux Development specialization](https://coursera.org/share/984470e36325dfdacdcdbbe11a76e00d)\n\n## Data Transfer Design\nIn this design, the strobe signal controls the timing, and on each rising edge, the value on the data line is captured. The data is transmitted sequentially, with each bit being read on the strobe's rising edge. \n\nThe data is transmitted in the order of the least significant bit (LSB) to the most significant bit (MSB) in the below example, but it can be configured to transmit in the opposite direction.\n\n![gpioserdev-data-transfer-design.png](gpioserdev-data-transfer-design.png)\n\n## Testing Driver\n\nOnce the driver loaded we can use `echo` command to transfer data.,\n```bash\n$ echo helloworld \u003e /dev/gpioserdev \n```\n\nTo receive the transferred data, a `test/recv.py` python script is used.,\n\n```bash\n$ cd test/\n$ python3 recv.py \u003clsb | msb\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpravinraghul%2Fgpioserdev-driver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpravinraghul%2Fgpioserdev-driver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpravinraghul%2Fgpioserdev-driver/lists"}