1. **Use a Supported Linux Distribution:** To use the AGL software, it is
recommended that your build host is a native Linux machine that runs a
Yocto Project supported distribution as described by the
- "[Supported Linux Distributions](https://docs.yoctoproject.org/ref-manual/system-requirements.html#supported-linux-distributions)"
+ "[Supported Linux Distributions](https://docs.yoctoproject.org/scarthgap/ref-manual/system-requirements.html#supported-linux-distributions)"
section in the Yocto Project Reference Manual.
Basically, you should be running a recent version of Ubuntu, Fedora, openSUSE,
CentOS, or Debian.
- Python 3.4.0 or greater
If your distribution does not meet these minimal requirements, see the
- "[Required Git, tar, and Python Versions](https://docs.yoctoproject.org/ref-manual/system-requirements.html#required-git-tar-python-and-gcc-versions)"
+ "[Required Git, tar, and Python Versions](https://docs.yoctoproject.org/scarthgap/ref-manual/system-requirements.html#required-git-tar-python-and-gcc-versions)"
section in the Yocto Project Reference Manual for steps that you can
take to be sure you have these tools.
Depending on the Linux distribution you are using, the list of
host packages differ.
See
- "[The Build Host Packages](https://docs.yoctoproject.org/ref-manual/system-requirements.html#required-packages-for-the-build-host)"
+ "[The Build Host Packages](https://docs.yoctoproject.org/scarthgap/ref-manual/system-requirements.html#required-packages-for-the-build-host)"
section of the Yocto Project Quick Start for information on the packages you need.
**NOTE:** If you are using the CentOS distribution, you need to
separately install the epel-release package and run the `makecache` command as
described in
- "[The Build Host Packages](https://docs.yoctoproject.org/ref-manual/system-requirements.html#required-packages-for-the-build-host)"
+ "[The Build Host Packages](https://docs.yoctoproject.org/scarthgap/ref-manual/system-requirements.html#required-packages-for-the-build-host)"
section of the Yocto Project Quick Start.
Aside from the packages listed in the previous section, you need the following:
```sh
$ tree -L 1
- .
- ├── bsp
- ├── external
- ├── meta-agl
- ├── meta-agl-cluster-demo
- ├── meta-agl-demo
- ├── meta-agl-devel
- ├── meta-agl-extra
- └── meta-agl-telematics-demo
+ ... bsp # Machine BSP folders in here
+ ... external # External dependencies. Do not modify.
+ ... meta-agl # Core/essential layers - to be reused
+ ... meta-agl-demo # Demo UI layers
+ ... meta-agl-devel # WIP / Development / Staging area
```
```sh
Available machines:
[meta-agl]
- am62xx-evm
- aws-ec2-arm64
- aws-ec2-x86-64
- bbe # BeagleBoneEnhanced
- beaglebone # BeagleBone
- beaglebone-ai64
- beagleplay
- cubox-i # multiple i.MX6 boards
- dragonboard-410c # Qualcomm Dragonboard 410c
- dragonboard-820c # Qualcomm Dragonboard 820c
+ am62xx-evm )*
+ aws-ec2-arm64 )* # graviton
+ aws-ec2-x86-64 )* # x86-64
+ beaglebone-ai64 )* #
+ beagleplay )* #
+ cubox-i )* # multiple i.MX6 boards
ebisu # Renesas RCar Ebisu
h3-salvator-x # Renesas RCar Salvator/H3
h3ulcb # Renesas RCar H3
h3ulcb-kf # Renesas RCar H3 w Kingfisher Board
h3ulcb-nogfx # Renesas RCar H3 w/o gfx blobs
- hsdk # ARC HS
- imx6qdlsabreauto # i.MX6 sabreauto
- imx8mqevk # i.MX8 w etnaviv
- imx8mqevk-viv # i.MX8 w vivante
+ imx6qdlsabreauto )* # i.MX6 sabreauto
+ imx8mqevk )* # i.MX8 w etnaviv
+ imx8mqevk-viv )* # i.MX8 w vivante
intel-corei7-64 # x86-64 (Intel flavour)
- j7-evm # TI Jacinto 7 EVM
- jetson-agx-orin-devkit
+ j721e-evm )* # TI evm
+ jetson-agx-orin-devkit )* # nvidia
m3-salvator-x # Renesas RCar Salvator/M3
m3ulcb # Renesas RCar M3
m3ulcb-kf # Renesas RCar M3 w Kingfisher Board
m3ulcb-nogfx # Renesas RCAR M3 w/o gfx blobs
- nitrogen6x # i.MX6 nitrogen board
+ nanopc-t6 )* # NanoPC t6
qemuarm # Qemu ARM
qemuarm64 # Qemu AArch 64 (ARM 64bit)
- qemuriscv64
+ qemuriscv64 #
* qemux86-64 # Qemu x86-64
raspberrypi4 # Raspberry Pi 4
raspberrypi5 # Raspberry Pi 5
- s4sk
- unmatched
+ s4sk #
+ unmatched )* #
+ visionfive2 )* #
+```
+
+```
+NOTE: Boards marked with )* are supported by community members.
```
## AGL Features
agl-ci # CI: specific settings for the CI environment
agl-create-spdx # Software Bill of Materials (SBOM) generation
agl-devel :( agl-package-management ) # Developer Env (root login w/o pass)
+ agl-flutter # Flutter UI env
agl-fossdriver # Fossology integration, Scancode, etc.
+ agl-kuksa-val # Kuksa.Val support
agl-localdev # inclusion of local development folder ./meta-localdev
agl-netboot # network boot (e.g. in CI)
agl-package-management # include package management (e.g. rpm)
agl-virt # EG-Virt features
agl-virt-guest-xen # EG-Virt features
agl-virt-xen # EG-Virt features
- agl-weston-remoting # remote streaming support
- agl-weston-waltham-remoting # remote streaming support w/ waltham
[meta-agl-demo] # DEMO layer
Refer: https://git.automotivelinux.org/AGL/meta-agl-demo/tree/templates/feature
agl-demo # default IVI demo
+ agl-container-guest-demo # Container demo
+ agl-demo-control-panel # Demo control panel
+ agl-demo-html5 # HTML5 demo - maintainer needed
agl-kvm # Enables support for building multiconfig based KVM+QEMU demo images
[meta-agl-devel] # Development layer
Refer: https://git.automotivelinux.org/AGL/meta-agl-devel/tree/templates/feature
agl-drm-lease # DRM lease support
agl-egvirt # EG-Virt feature
- agl-flutter # Flutter support
agl-ic-container # Instrument Cluster EG demo using containers
agl-offline-voice-agent # Feature template for meta-offline-voice-agent layer
agl-test # Test framework under development
+ agl-rdp # support for screen output over rdp
+ agl-uhmi # Unified HMI support
```
To use mirrors, add this line to your `local.conf` file in the Build directory:
```sh
-SSTATE_MIRRORS_append = " file://.* https://download.automotivelinux.org/sstate-mirror/ricefish/${DEFAULTTUNE}/PATH \n "
+SSTATE_MIRRORS:append = " file://.* https://download.automotivelinux.org/sstate-mirror/ricefish/${DEFAULTTUNE}/PATH \n "
```
You can learn more about shared state and how it is used in the
$ ln -sf $AGL_TOP/site.conf conf/
```
-**Sample HTML5 based IVI demo :**
-
-```sh
-$ source meta-agl/scripts/aglsetup.sh -f -m qemux86-64 -b qemux86-64 agl-demo agl-devel agl-profile-graphical-html5
-$ echo "# reuse download directories" >> $AGL_TOP/site.conf
-$ echo "DL_DIR = \"$HOME/downloads/\"" >> $AGL_TOP/site.conf
-$ echo "SSTATE_DIR = \"$AGL_TOP/sstate-cache/\"" >> $AGL_TOP/site.conf
-$ ln -sf $AGL_TOP/site.conf conf/
-```
-
**IVI-EG Flutter based demo :**
```sh
$ export IMAGE_NAME=agl-ivi-demo-qt-qemux86-64.vmdk.xz
```
-**Sample HTML5 based IVI demo :**
-The target is `agl-ivi-demo-html5`.
-
-```sh
-$ time bitbake agl-ivi-demo-html5
-```
-
-By default, the build process puts the resulting image in the Build Directory and further exporting that as `$IMAGE_NAME`:
-
-```sh
-<build_directory>/tmp/deploy/images/qemux86-64/agl-ivi-demo-html5-qemux86-64.vmdk.xz
-
-$ export IMAGE_NAME=agl-ivi-demo-html5-qemux86-64.vmdk.xz
-```
-
**IVI-EG Flutter based demo :**
The target is `agl-image-flutter`.
Once QEMU is installed, boot the image with KVM support:
```sh
-qemu-system-x86_64 -enable-kvm -m 2048 \
+qemu-system-x86_64 -enable-kvm -m 2048 -smp 4\
-bios ${OVMF_PATH} \
-hda ${IMAGE_NAME} \
-cpu kvm64 -cpu qemu64,+ssse3,+sse4.1,+sse4.2,+popcnt \
---
-title: Building for Raspberry Pi 4
+title: Building for Raspberry Pi 4/Pi 5
---
The
If you are building the AGL demo image for a Raspberry Pi 4 board, you need to specify some
specific options when you run the script :
+Note: for Pi5 replace "-m raspberrypi4" with "-m raspberrypi5" below.
+
**Qt based IVI demo :**
```sh
$ export IMAGE_NAME=agl-ivi-demo-qt-raspberrypi4.rootfs.wic.xz
```
-**HTML5 Based IVI demo :**
-The target is `agl-ivi-demo-html5`.
+**Flutter Based IVI demo :**
+The target is `agl-ivi-demo-flutter`.
```sh
-$ time bitbake agl-ivi-demo-html5
+$ time bitbake agl-ivi-demo-flutter
```
By default, the build process puts the resulting image in the Build Directory and further exporting that as `$IMAGE_NAME`.
Here is example for the Raspberry Pi 4 board for HTML5 Based demo:
```sh
-<build_dir>/tmp/deploy/images/raspberrypi4/agl-ivi-demo-html5-raspberrypi4-64.rootfs.wic.xz
+<build_dir>/tmp/deploy/images/raspberrypi4/agl-ivi-demo-rlutter-raspberrypi4-64.rootfs.wic.xz
-$ export IMAGE_NAME=agl-ivi-demo-html5-raspberrypi4-64.rootfs.wic.xz
+$ export IMAGE_NAME=agl-ivi-demo-flutter-raspberrypi4-64.rootfs.wic.xz
```
## 4. Deploying the AGL Demo Image
$ sudo screen /dev/ttyUSB0 115200
```
-5. SOTA
-
- Follow the step below to build AGL for Raspberry Pi with enabled software over
- the air (SOTA) updates:
-
- 1. Include **agl-sota** feature.
-
- 2. In **bblayers.conf** replace meta-updater-qemux86-64 with
- **meta-updater-raspberrypi**.
-
- 3. In **local.conf** set `SOTA_PACKED_CREDENTIALS` and `OSTREE_BRANCHNAME`.
- More details are available [here](https://docs.ota.here.com/getstarted/dev/raspberry-pi.html).
Flutter based IVI demo image, using `flutter-ics-homescreen` application.
-### agl-ivi-demo-html5
-
-HTML5 based IVI demo image, using a combination of the Chromium Embedded Framework (CEF) and Web Application Manager (WAM).
-
### agl-ivi-demo-qt
Qt based IVI demo image, using `homescreen` and `launcher` as well as other Qt applications.