Skip to content

[Task / Story]: Transition wifi drivers to DKMS modules #6933

@ColorfulRhino

Description

@ColorfulRhino

Task description

The current status

Currently, 3rd-party wifi drivers cannot be installed on a per-board basis. Although some drivers are restricted to a specific LINUXFAMILY, many drivers are installed across all kernels. This approach leads to challenges because these drivers often require numerous patches (as shown in drivers_network.sh). These patches will frequently fail on new kernel versions and need to be carefully repaired, or new patches have to be crafted/imported.
This issue becomes particularly pronounced when updating to -rc kernel releases, such as those recently seen with the rk3588 family, where drivers may not yet be compatible with the latest kernel version.

Consequently, those who spend their time updating kernels to newer versions face an additional burden of fixing all the 3rd-party wifi drivers that might not be updated by their original maintainers
This ultimately means that the people who do lots of work to update kernels to newer versions are having this additional hurdle to jump over, to try and fix all the 3rd-party wifi drivers that may or may not be updated to the latest kernel version by their creators.

Proposed solution

Fix this by creating DKMS packages for the drivers which can then be installed on a per-board basis for boards with specific wifi chips or on-demand via the Armbian repo.
This approach offers several benefits:

  • Board maintainers can directly fix and test the wifi driver for their board.
  • Maintainers can see changes immediately and have a stronger incentive to compare the driver with the one potentially included in the mainline kernel.
  • From a user's perspective, some users may not want to have 3rd-party kernel modules installed the same way they don't want to trust vendor kernels. This approach won't force all those 3rd-party wifi drivers to be installed the user's device together with the kernel (additional security benefits from a user's perspective).

Task list

  • Figure out the best design: Should we package the dkms modules and upload them to the armbian repo to be simply added as package at build time? Or shoudl we use extentions like in this example: https://github.com/armbian/build/blob/main/extensions/radxa-aic8800.sh
  • Develop a DKMS package creation mechanism
  • Transition all wifi drivers from drivers_network.sh to the new DKMS mechanism
  • Enable/install the DKMS packages preinstalled per board that uses the specific wifi chip, in the board config file (either with an extension, a variable like DKMS_MODULE= or with some other config hook)

NB: Anyone is welcome to take up this task and contribute to this description/task list :)
I do not plan to do this all on my own.

Metadata

Metadata

Assignees

No one assigned

    Labels

    DiscussionBeing discussed - Voice your opinions :)Help neededWe need your involvementTask/To-DoProject management: To-Do or task(s) someone is working on

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions