Currently, Replicant uses device specific Hardware Abstraction Layers, because device manufacturers implemented non-standard kernel interfaces. However, Android works with mainline kernels and supports plug-n-play hardware nowadays, so it makes sense to have generic Hardware Abstraction Layers for the standard interfaces of the Linux kernel (ALSA, V4L2, etc).Benefits:
- It would allow supporting external WiFi dongles such as the ones supported by the ath9k_htc driver and free firmwares without the need for a specific application or configuration.
- It would make devices last longer by alleviating the device specific maintenance burden: If LineageOS stops supporting a Replicant supported device, Replicant would need to maintain it by its own. This would require a lot of work, unless the device is already supported the mainline Linux kernel and generic hardware abstractions layers. This would enable Replicant to support devices that are not currently supported by LineageOS.
- It would enable the support for devices that are or will be added to mainline Linux.
- Adding a generic WiFi HAL for external dongles only requires a device that is supported by Replicant, and that can provide enough power for the dongle.
- For the other standard interfaces (like ASLA, etc) a device running a mainline Linux Kenrel with as few patches as possible is required.