PHAL is our Platform/Hardware Abstraction Layer, it completely replaces the concept of hardcoded "enclosure" from
Any number of plugins providing functionality can be loaded and validated at runtime, plugins can be system integrations to handle things like reboot and shutdown, or hardware drivers such as Mycroft Mark 2 plugin.
PHAL plugins can perform actions such as hardware detection before loading, eg, the mark2 plugin will not load if it does not detect the sj201 hat. This makes plugins safe to install and bundle by default in our base images.
Platform/Hardware specific integrations are loaded by PHAL, these plugins can handle all sorts of system activities.
|ovos-PHAL-plugin-system||reboot / shutdown / factory reset|
|ovos-PHAL-plugin-mk1||mycroft mark1 integration|
|ovos-PHAL-plugin-mk2||mycroft mark2 integration|
|ovos-PHAL-plugin-respeaker-2mic||respeaker 2mic hat integration|
|ovos-PHAL-plugin-respeaker-4mic||respeaker 4mic hat integration|
|ovos-PHAL-plugin-wifi-setup||wifi setup (central plugin)|
|ovos-PHAL-plugin-gui-network-client||wifi setup (GUI interface)|
|ovos-PHAL-plugin-balena-wifi||wifi setup (hotspot)|
|ovos-PHAL-plugin-network-manager||wifi setup (network manager)|
|ovos-PHAL-plugin-ipgeo||automatic geolocation (IP address)|
|ovos-PHAL-plugin-gpsd||automatic geolocation (GPS)|
|ovos-PHAL-plugin-dashboard||dashboard control (ovos-shell)|
|ovos-PHAL-plugin-notification-widgets||system notifications (ovos-shell)|
|ovos-PHAL-plugin-color-scheme-manager||GUI color schemes (ovos-shell)|
|ovos-PHAL-plugin-configuration-provider||UI to edit mycroft.conf (ovos-shell)|
|ovos-PHAL-plugin-analog-media-devices||video/audio capture devices (OCP)|
|ovos-PHAL-plugin-homeassistant||api and gui to interface with Home Assistant|
AdminPHAL performs the exact same function as PHAL, but plugins it loads will have
This service is intended for handling any OS-level interactions requiring escalation of privileges. Be very careful when installing Admin plugins and scrutinize them closely
NOTE: Because this service runs as root, plugins it loads are responsible for not writing configuration changes which would result in breaking config file permissions.
AdminPlugins are just like regular PHAL plugins that run with
Admin plugins will only load if their configuration contains
"enabled": true. All admin plugins need to be explicitly enabled.
You can find plugin packaging documentation here.