HAL merges information from various sources such that desktop applications can locate and use hardware devices. HAL listen to system events and notify interested application of device changes: availability, capabilities, properties... HAL is a device interface specification and an implementation of this specification.