{"id":21388114,"url":"https://github.com/grisp/grisp_demo","last_synced_at":"2025-07-31T08:32:33.483Z","repository":{"id":42189025,"uuid":"428564931","full_name":"grisp/grisp_demo","owner":"grisp","description":"Default image for new GRiSP boards","archived":false,"fork":false,"pushed_at":"2025-03-12T12:43:51.000Z","size":44,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-13T15:43:33.269Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grisp.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,"zenodo":null}},"created_at":"2021-11-16T07:52:42.000Z","updated_at":"2025-03-12T12:43:52.000Z","dependencies_parsed_at":"2025-07-13T15:32:34.426Z","dependency_job_id":"8a870a5c-6b7b-4786-9003-86438b9b9f69","html_url":"https://github.com/grisp/grisp_demo","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/grisp/grisp_demo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grisp%2Fgrisp_demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grisp%2Fgrisp_demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grisp%2Fgrisp_demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grisp%2Fgrisp_demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grisp","download_url":"https://codeload.github.com/grisp/grisp_demo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grisp%2Fgrisp_demo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268010834,"owners_count":24180613,"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","status":"online","status_checked_at":"2025-07-31T02:00:08.723Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-22T12:16:00.836Z","updated_at":"2025-07-31T08:32:33.456Z","avatar_url":"https://github.com/grisp.png","language":"Erlang","funding_links":[],"categories":[],"sub_categories":[],"readme":"# grisp_demo\n\nDemo application for GRiSP boards.\nIt includes grisp_connect to interface with grisp.io services,\nand grisp_updater to enable software updates.\n\n\n## Generate GRiSP Firmwares\n\nTo generate the firmware image to write on the GRiSP board EMMC, run:\n\n\trebar3 as dev grisp firmware -i -r -f\n\nor:\n\n\trebar3 as prod grisp firmware -i -r -f\n\nThis generate the system firmware to update a single system partition,\nand the full EMMC image to reset the GRiSP board EMMC.\nSee [rebar3_grisp documentation](https://hexdocs.pm/rebar3_grisp/readme.html#generate-grisp-2-firmwares)\nfor more information on how to write firmwares.\n\n\n## Generate a software update package\n\nTo create a software update package, run:\n\n\t$ rebar3 as dev grisp pack -r -f\n\nor:\n\n\t$ rebar3 as prod grisp pack -r -f\n\nThis will generate an unsigned package, for the package to be verified you need to:\n\n - Change the configuration key `signature_check` to `true`.\n - Add the public key into `priv/certificates/updates`.\n - Generate the package with either:\n\n \t```\n\t$ rebar3 as prod grisp pack -r -f -k private_key.pem\n\t$ rebar3 as dev grisp pack -r -f -k private_key.pem\n\t```\n\nNote that updates will be verified only after this change itself is installed\non the board.\n\nSee [rebar3_grisp documentation](https://hexdocs.pm/rebar3_grisp/readme.html#build-software-update-package)\nfor more information on how to update.\n\n\n## Development\n\nAdd your development server certificate if it is self-signed, or the\ndevelopment CA certificate used to sign the server certificate into\n`priv/certificates/servers`.\n\ne.g.\n\n\tln -s $MY_SERVER_REPO/priv/_dev_certs/www.seawater.local.CA.pem priv/certificates/servers/www.seawater.local.pem\n\n\n### Local Development\n\nThe local development release runs on the host itself and connects to a local server.\n\nAdd an entry in your local hosts file so the domain www.seawater.local points\nto your local development server. Remember to configure the local server to\ncheck the client certificate against the `grisp_connect` test CA.\n\nFor the default configuration to work, the grisp_connect dependency must be\nin your `_checkouts` directory.\n\nStart a local development shell:\n\n    rebar3 as local shell\n\nRun tests:\n\n    rebar3 ct\n\nTo start a local development shell with support for TLS distribution, you need \nfirst to generate a testing CA and certificate:\n\n\tlocal/setup.sh\n\nThen you can start the shell with:\n\n\tERL_FLAGS='-proto_dist inet_tls -ssl_dist_optfile local/ssl_dist_opts.rel -connect_all false' rebar3 as local shell --sname local --setcookie grisp\n\n\n### Development on GRiSP Hardware\n\nThe development release runs on a GRiSP board and connects to a local server.\n\nAdd an entry in the grisp hosts file so the domain www.seawater.local points\nto your local development server.\n\ne.g. using `ifconfig` command (MacOS and older linux):\n\n\tmkdir -p grisp/grisp2/common/deploy/files/etc\n    echo \"$(ifconfig | grep 'inet ' | grep -v 127.0.0.1 | awk '{ print $2 }' | head -n 1) www.seawater.local\" \u003e\u003e grisp/grisp2/common/deploy/files/etc/hosts\n\ne.g. using `ip` command (Newer linux):\n\n\tmkdir -p grisp/grisp2/common/deploy/files/etc\n    echo \"$(ip addr show | grep 'inet ' | grep -v 127.0.0.1 | awk '{print $2}' | cut -d/ -f1 | head -n 1) www.seawater.local\" \u003e\u003e grisp/grisp2/common/deploy/files/etc/hosts\n\nThe deploy the release, configure rebar3_grisp's deploy configuration in\nrebar.config and then run:\n\n    rebar3 as dev grisp deploy\n\nTo generate the firmwares:\n\n\trebar3 as dev grisp firmware -i -r -f\n\nTo create a software update package:\n\n\trebar3 as dev grisp pack -r -f\n\n\n## Production\n\nThe production release runs on a GRiSP board and connect to a production server.\n\nTo deploy on GRiSP hardware for production, configure rebar3_grisp's deploy\nconfiguration in rebar.config and then run:\n\n    rebar3 as prod grisp deploy\n\nTo generate the firmwares:\n\n\trebar3 as prod grisp firmware -i -r -f\n\nTo create a software update package:\n\n\trebar3 as prod grisp pack -r -f\n\nTo deploy to grisp.io:\n\n\trebar3 grisp-io auth\n\trebar3 as prod grisp-io upload -r -f\n\n\n## Known Issues\n\n### Issues with hostname resolution (nxdomain)\n\nFor proper DNS resolution using DHCP-given DNS, when building from a pre-built\nOTP package, the minimum OTP version MUST be 27.2.4.\nIf you still have issues, you may have an old version of the pre-built package.\nTry cleaning up the pre-built package cache.\n\nOn MacOS:\n\n\trm ~/Library/Caches/grisp/packages/grisp2/otp/*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrisp%2Fgrisp_demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrisp%2Fgrisp_demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrisp%2Fgrisp_demo/lists"}