{"id":19687179,"url":"https://github.com/trinitronx/lyraphase-pi","last_synced_at":"2026-05-26T16:33:31.093Z","repository":{"id":136205861,"uuid":"61982361","full_name":"trinitronx/lyraphase-pi","owner":"trinitronx","description":"Chef Recipes for Raspberry Pi","archived":false,"fork":false,"pushed_at":"2020-02-24T10:32:34.000Z","size":219,"stargazers_count":3,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-27T09:12:15.866Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/trinitronx.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2016-06-26T09:32:19.000Z","updated_at":"2020-02-24T10:31:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"5d5cb9a5-64a4-463f-9717-9ecf6404665d","html_url":"https://github.com/trinitronx/lyraphase-pi","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/trinitronx/lyraphase-pi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trinitronx%2Flyraphase-pi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trinitronx%2Flyraphase-pi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trinitronx%2Flyraphase-pi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trinitronx%2Flyraphase-pi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trinitronx","download_url":"https://codeload.github.com/trinitronx/lyraphase-pi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trinitronx%2Flyraphase-pi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33529626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"ssl_error","status_checked_at":"2026-05-26T15:22:15.568Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":[],"created_at":"2024-11-11T18:33:19.989Z","updated_at":"2026-05-26T16:33:31.043Z","avatar_url":"https://github.com/trinitronx.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"lyraphase-pi cookbook\n======================\n[![Build Status](http://img.shields.io/travis/trinitronx/lyraphase-pi.svg)](https://travis-ci.org/trinitronx/lyraphase-pi)\n[![GitHub Release](https://img.shields.io/github/release/trinitronx/lyraphase-pi.svg)](https://github.com/trinitronx/lyraphase-pi/releases)\n[![Gittip](http://img.shields.io/gittip/trinitronx.svg)](https://www.gittip.com/trinitronx)\n\nA cookbook with various recipes for Raspberry Pi\n\n# Requirements\n\n - [sysctl][1] cookbook (`\u003e=0.7.0` for Chef `\u003c= 12`; `\u003e= 0.9.0` for Chef `\u003e= 13`)\n\n**Note:** With version mismatch of Chef \u0026 `compat_resource` cookbooks, you may get errors during provisioning such as [this one](https://gist.github.com/c681ed0b74e96d5067fc61afd840fdfa):\n\n\u003cdetails\u003e\u003csummary\u003e\u003ccode\u003euninitialized constant Chef::Provider::LWRPBase::InlineResources\u003c/code\u003e (expand to see more...)\u003c/summary\u003e\u003cp\u003e\n\n```\nStarting Chef Client, version 13.1.31\nCreating a new client identity for wifi-bridge-debian-81 using the validator key.\nresolving cookbooks for run list: [\"lyraphase-pi::wifi-bridge\"]\nSynchronizing Cookbooks:\n  - lyraphase-pi (0.3.4)\n  - ohai (4.1.1)\n  - sysctl (0.8.0)\n  - compat_resource (12.10.6)\nInstalling Cookbook Gems:\nCompiling Cookbooks...\n\n================================================================================\nRecipe Compile Error in /tmp/kitchen/cache/cookbooks/compat_resource/libraries/autoload.rb\n================================================================================\n\nNameError\n---------\nuninitialized constant Chef::Provider::LWRPBase::InlineResources\n\nCookbook Trace:\n---------------\n/tmp/kitchen/cache/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/provider.rb:6:in `\u003cclass:Provider\u003e'\n/tmp/kitchen/cache/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/provider.rb:4:in `\u003ctop (required)\u003e'\n/tmp/kitchen/cache/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches.rb:6:in `\u003ctop (required)\u003e'\n/tmp/kitchen/cache/cookbooks/compat_resource/files/lib/chef_compat/resource.rb:1:in `\u003ctop (required)\u003e'\n/tmp/kitchen/cache/cookbooks/compat_resource/files/lib/compat_resource.rb:7:in `\u003ctop (required)\u003e'\n/tmp/kitchen/cache/cookbooks/compat_resource/libraries/autoload.rb:24:in `\u003ctop (required)\u003e'\n\nRelevant File Content:\n----------------------\n/tmp/kitchen/cache/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/provider.rb:\n\n1:  require 'chef/provider'\n2:  require 'chef/provider/lwrp_base'\n3:\n4:  class Chef::Provider\n5:    if !defined?(InlineResources)\n6\u003e\u003e     InlineResources = Chef::Provider::LWRPBase::InlineResources\n7:    end\n8:    module InlineResources\n9:      require 'chef/dsl/recipe'\n10:      require 'chef/dsl/platform_introspection'\n11:      require 'chef/dsl/data_query'\n12:      require 'chef/dsl/include_recipe'\n13:      include Chef::DSL::Recipe\n14:      include Chef::DSL::PlatformIntrospection\n15:      include Chef::DSL::DataQuery\n\nSystem Info:\n------------\n  chef_version=13.1.31\n  platform=debian\n  platform_version=8.1\n  ruby=ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]\n  program_name=chef-client worker: ppid=91;start=18:01:33;\n  executable=/opt/chef/bin/chef-client\n```\n\u003c/p\u003e\u003c/details\u003e\n\n\n# Usage\n\n1. Bootstrap Chef on your Raspberry Pi with [`trinitronx/raspbian_bootstrap`][pi-bootstrap].\n2. Create a role for your Raspberry Pi, and include recipes for it.\n\n\n```ruby\nname \"raspberry_pi_wifi_bridge\"\ndescription \"Role applied to Raspberry Pi to setup a ProxyARP wifi-bridge.\"\nrun_list [ \"lyraphase-pi::wifi-bridge\" ]\n```\n\n# Attributes\n\n  - `node['lyraphase-pi']['wifi-bridge']['packages']`: An Array of packages to install for setting up the ProxyARP WiFi bridge.\n\n# Recipes\n\n## lyraphase-pi::default\n\nBlank recipe. Future use undetermined other than blank recipe for future LWRP include.\n\n## lyraphase-pi::wifi-bridge\n\nRecipe to Setup a [ProxyARP][2] WiFi Client Bridge on Raspberry Pi.\n\n  - Configures `eth0` and `wlan0` for [ProxyARP][1] as a WiFi client bridge via `/etc/network/interfaces.d/wireless-bridge-dhcp-parprouted`\n  - Installs ProxyARP helper packages:\n    - `dhcp-helper`\n    - `parprouted`\n    - `avahi-daemon`\n  - Adds SystemD services for:\n    - `parprouted`\n    - `parprouted-watchdog`\n    - `wpa-cli-event-handler`\n  - Adds `ifup` helper scripts to ensure network adapter state:\n    - `wireless-bridge-setup`\n    - `wireless-bridge-ip-clone`\n    - `wireless-bridge-cleanup`\n\n# Known Issues\n\n  - After a variable period of time (approx ~18 hours avg), `parprouted` begins throwing the following error:\n    - `error: ioctl SIOCGIFADDR for eth0: Cannot assign requested address`\n  - `parprouted` eventually crashes with error:\n    - `parprouted.service: main process exited, code=killed, status=6/ABRT`\n  - **FIXED!** A new `parprouted-watchdog` service has been added to check for the above error every 10 seconds, and will restart `parprouted` if detected!\n  - ~~Sometimes `parprouted` takes a while (~10min) before being restarted by SystemD~~\n\n This recipe attempts to workaround stability issues with `parprouted` by making the WiFi bridge more fault-tolerant:\n\n  - `Restart=always` in SystemD `.service` definition\n  - `wpa-supplicant-event-handler` script ensures `parprouted.service` is restarted when WiFi comes up or is Reconnected\n  - Run `setup` \u0026 `cleanup` scripts on `wlan0` `post-up` \u0026 `post-down` to ensure `eth0` IP state\n\n# Author\n\nAuthor:: James Cuzella ([@trinitronx][keybase-id])\n\n[1]: https://supermarket.chef.io/cookbooks/sysctl\n[2]: https://wiki.debian.org/BridgeNetworkConnectionsProxyArp\n[pi-bootstrap]: https://github.com/trinitronx/raspbian_bootstrap\n[keybase-id]: https://gist.github.com/trinitronx/aee110cbdf55e67185dc44272784e694\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrinitronx%2Flyraphase-pi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrinitronx%2Flyraphase-pi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrinitronx%2Flyraphase-pi/lists"}