{"id":24811094,"url":"https://github.com/thin-edge/meta-tedge-project","last_synced_at":"2026-02-02T11:10:46.104Z","repository":{"id":209321659,"uuid":"723742836","full_name":"thin-edge/meta-tedge-project","owner":"thin-edge","description":"Create thin-edge.io images using kas and yocto","archived":false,"fork":false,"pushed_at":"2024-12-14T17:30:49.000Z","size":113,"stargazers_count":0,"open_issues_count":3,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-10T13:03:19.111Z","etag":null,"topics":["community","iot","thin-edge","yocto"],"latest_commit_sha":null,"homepage":"","language":"Just","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/thin-edge.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2023-11-26T16:23:26.000Z","updated_at":"2024-12-14T17:30:50.000Z","dependencies_parsed_at":"2024-02-07T11:52:38.627Z","dependency_job_id":"46544988-3872-4e70-a2b0-3a7962c4401c","html_url":"https://github.com/thin-edge/meta-tedge-project","commit_stats":null,"previous_names":["reubenmiller/meta-tedge-project"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thin-edge%2Fmeta-tedge-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thin-edge%2Fmeta-tedge-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thin-edge%2Fmeta-tedge-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thin-edge%2Fmeta-tedge-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thin-edge","download_url":"https://codeload.github.com/thin-edge/meta-tedge-project/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248449916,"owners_count":21105585,"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":["community","iot","thin-edge","yocto"],"created_at":"2025-01-30T12:19:16.857Z","updated_at":"2026-02-02T11:10:41.083Z","avatar_url":"https://github.com/thin-edge.png","language":"Just","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Getting started\n\n:warning: The kas project files have been moved to the [meta-tedge](https://github.com/thin-edge/meta-tedge) repository under the `kas` directory (where [meta-tedge](https://github.com/thin-edge/meta-tedge) is also the thin-edge.io Yocto Layer). The kas project files were moved to ease the development of the Yocto layer and to ensure that any changes can be validated before the changes are merged.\n\nThis project shows how to build custom Yocto images which can be deployed to devices.\n\nWhilst the project can be modified to support your own setup, currently the project only includes the configuration required to deploy to the following devices:\n\n* Raspberry Pi 3 and 4 (64 bit variants only)\n\n\n### General project flow\n\nBelow describes the general workflow when using this project to build an image and to deploy the image to a device.\n\nThe project flow is as follows:\n\n```mermaid\nstateDiagram-v2\n    [*] --\u003e BuildBootImage\n    BuildBootImage --\u003e FlashBootImage\n    FlashBootImage --\u003e OnboardDevice\n    OnboardDevice --\u003e EditImage\n    EditImage --\u003e BuildImage\n    BuildImage --\u003e DeployImage\n    DeployImage --\u003e EditImage: next version\n```\n\nWhere each step is described below:\n\n|Step|Description|\n-----|-----------|\n|BuildBootImage|Build bootstrap image|\n|FlashBootImage|Flash the bootstrap image to the device, e.g. flash the SD card (this is only required once!)|\n|OnboardDevice|Register the device once to the cloud so you can enable Over-the-Air (OTA) updates|\n|EditImage|Modify your image when new future requirements come up|\n|BuildImage|Build a new image which includes the new changes|\n|DeployImage|Deploy the image to the device using OTA update|\n\n\n## Using the project\n\n### Prelude\n\nIt is highly recommended to use **Ubuntu 20.04 LTS** for your build (host) machine. If you know what you are doing then you can use another linux distribution, however we cannot help you when things go wrong.\n\n#### Minimum requirements\n\n* At least 100 GB free disk space (however ~500GB is recommended as you don't want to run out and have to set all of this up again)\n* x86_64 Machine (arm64/aarch64 is not supported by Yocto)\n* Lots of time (first build can take \u003e 6 hours...welcome to the world of yocto)\n\n\n### Installing the prerequisites\n\nTo start off, you will need to install the project and Yocto dependencies.\n\n1. Clone the project and open a console at project's root directory\n\n2. Install just (follow the instructions on the [justfile website](https://just.systems/man/en/chapter_5.html))\n\n3. Install [kas](https://kas.readthedocs.io/en/latest/) (a tool used to managed yocto bitbake projects)\n\n    ```sh\n    pip3 install kas\n    ```\n\n4. Install the yocto dependencies\n\n    **Ubuntu 20.04 LTS**\n\n    ```sh\n    sudo apt install file gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev xterm python3-subunit mesa-common-dev zstd liblz4-tool\n    ```\n\n    If you having troubles please consult the [Yocto Documentation](https://docs.yoctoproject.org/kirkstone/brief-yoctoprojectqs/index.html#building-your-image)\n\n**Reducing build times**\n\nYou can configure a common **sstate cache** and download folder to share amongst different projects to speed up the build times.\n\nCreate the following folders at the desired location, and then add the paths to the local `.env` file located at the root folder of the project (this file is not included in the project).\n\n*file: .env*\n\n```sh\nSSTATE_DIR=/data/yocto/sstate-cache\nDL_DIR=/data/yocto/downloads\n```\n\n### Building an image\n\nBuild an image which includes thin-edge.io and [RAUC](https://rauc.readthedocs.io/en/latest/):\n\n**Raspberry Pi**\n\n```sh\nKAS_MACHINE=raspberrypi3-64 just build-project ./projects/tedge-rauc.yaml\nKAS_MACHINE=raspberrypi4-64 just build-project ./projects/tedge-rauc.yaml\n```\n\nOr you can save the KAS_MACHINE value in your .env file\n\n```\nKAS_MACHINE=raspberrypi3-64\n```\n\nThe bootstrap image (which you can flash to an SD card) is located below:\n\n```sh\nls -ltr \"build/tmp/deploy/images/$KAS_MACHINE\"/*.bz2\n```\n\nWhere KAS_MACHINE should be replaced with the target machine value, e.g. `raspberrypi4-64`.\n\n### Publishing the OTA image file to Cumulocity IoT\n\n\nPublish/upload the built image to Cumulocity IoT (requires [go-c8y-cli](https://goc8ycli.netlify.app/) to be installed and a session to be active)\n\n```sh\nset-session \"your_session\"\njust publish\n```\n\n## Development Tasks\n\n### Updating yocto layers\n\nThe projects use lock files in order to create reproducible builds by fixing layers to specific commits. Therefore if you need to update them, then run the following task:\n\n```sh\njust update-all-locks\n```\n\nOr you can specify which project file should be updated instead (if you want more control over it).\n\n```sh\njust update-lock ./projects/tedge-rauc.yaml\n```\n\n## Tips\n\n### Unexpected build errors\n\nIf you run into unexpected build errors, or the image just doesn't include the expected contents, then try running the following task, then build again.\n\n```sh\njust clean\n```\n\nOr if you are still having problems, try removing all of the temp folders (build and the repositories)\n\n```sh\njust clean-all\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthin-edge%2Fmeta-tedge-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthin-edge%2Fmeta-tedge-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthin-edge%2Fmeta-tedge-project/lists"}