HALs

HALs are known as json files in 4a, they are stored in /usr/libexec/agl/4a-hal.

Enabled HALs can be found in the etc subfolder, and disabled HALs in etc.available.

You can enable and disable HALs just by moving the corresponding json file from one folder to the other.

Example:

user@machine$ ls etc etc.available/
etc:
hal-4a-csl-cm106-8ch-usb.json

etc.available/:
hal-4a-2ch-generic-usb.json  hal-4a-intel.json
hal-4a-ensoniq.json          hal-4a-jabra.json
hal-4a-intel-minnow.json     hal-4a-rcar-m3.json
hal-4a-intel-qemu.json       hal-4a-rcar-m3kf.json

user@machine$ mv etc/hal-4a-csl-cm106-8ch-usb.json  etc.available
user@machine$ mv etc.available/hal-4a-2ch-generic-usb.json etc

user@machine$ ls etc etc.available/
etc:
hal-4a-2ch-generic-usb.json

etc.available/:
hal-4a-csl-cm106-8ch-usb.json  hal-4a-intel.json
hal-4a-ensoniq.json            hal-4a-jabra.json
hal-4a-intel-minnow.json       hal-4a-rcar-m3.json
hal-4a-intel-qemu.json         hal-4a-rcar-m3kf.json

user@machine$ sync
user@machine$ reboot

NOTE: Even if multiple HAL are allowed, you have to make sure that they don’t provide the same streams, because it will cause a race condition in the high level API. The first HAL providing the stream is used, any other are ignored.

Also, the hardware used by enabled HALs should be available.