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.