Skip to content

Akmod packaging#632

Open
Xabi08YT wants to merge 24 commits intoBeardOverflow:mainfrom
Xabi08YT:akmod-packaging
Open

Akmod packaging#632
Xabi08YT wants to merge 24 commits intoBeardOverflow:mainfrom
Xabi08YT:akmod-packaging

Conversation

@Xabi08YT
Copy link
Contributor

@Xabi08YT Xabi08YT commented Mar 5, 2026

SRPM packaging script for MSI-EC.
Designed to work on Fedora and Fedora Silverblue. Builds may be opened to more RPM-based distro in the future.

Distros:

  • Fedora 42 (Testing not Planned as EOL is in April 2026, community maybe ?)
  • Fedora 43 Silverblue/Kinoite (Installed flawlessly)
  • Fedora 43 Workstation (Installed flawlessly.)
  • Fedora 44 (Not out yet, but build is already opened in case)
  • Fedora Rawhide (Opened to have insights)
    x RHEL 8 (Cannot build on COPR)
    x RHEL 9 (Cannot build on COPR)

Anyway, I stated into the COPR install instruction, that the recommended way for Workstation editions and RHEL remains this github repo and DKMS. COPR are only provided as backup for distros like Fedora Silverblue/Kinoite that are only supporting Akmod.

@Xabi08YT Xabi08YT marked this pull request as ready for review March 5, 2026 20:35
@Xabi08YT Xabi08YT marked this pull request as draft March 5, 2026 20:38
@glpnk
Copy link
Collaborator

glpnk commented Mar 5, 2026

instead of merging main into this branch you can just rebase it onto main

@glpnk
Copy link
Collaborator

glpnk commented Mar 5, 2026

Also please squash commits like this Removed accidentally commited rpmbuild folder

@glpnk
Copy link
Collaborator

glpnk commented Mar 5, 2026

You can make it later tho, when it will be ready to merge

@Xabi08YT
Copy link
Contributor Author

Xabi08YT commented Mar 5, 2026

You can make it later tho, when it will be ready to merge

Yeah I was planning to squash everything as it is a bit messy.

instead of merging main into this branch you can just rebase it onto main

True, but teachers did not teach that to us ! They said the opposite which is the stupidest thing ever as it is causing a lot of merge conflict (rebasing main into your dev branch 💀 )

@glpnk
Copy link
Collaborator

glpnk commented Mar 5, 2026

As you not changed files, changed in other commits - this can't create conflicts. But I'm using GUI for squash/rebase

@Xabi08YT
Copy link
Contributor Author

Xabi08YT commented Mar 5, 2026

As you not changed files, changed in other commits - this can't create conflicts. But I'm using GUI for squash/rebase

Yeah ok. I am mainly using the CLI so it is a bit hard. Do you happen to know if it will be possible to add a webhook to this repo to trigger the COPR builds upon merging in the main branch ?

@glpnk
Copy link
Collaborator

glpnk commented Mar 5, 2026

No, but if you have guide lets think how make it possible.

I mean that only setting I have is GH Actions

@Xabi08YT
Copy link
Contributor Author

Xabi08YT commented Mar 5, 2026

Okay, I think we can make it work that way. I will study that and add a github action file to my PR. If you want I can do it on a different PR.

@glpnk
Copy link
Collaborator

glpnk commented Mar 5, 2026

If Github have native webhooks support, we can ask BeardOverflow to enable it

@glpnk
Copy link
Collaborator

glpnk commented Mar 5, 2026

Okay there is push trigger, but not merge, when Actions have more fine grained settings

@glpnk
Copy link
Collaborator

glpnk commented Mar 5, 2026

What I really would like to automate is supported devices and issues list #277

@Xabi08YT
Copy link
Contributor Author

Xabi08YT commented Mar 6, 2026

What I really would like to automate is supported devices and issues list #277

What would you want with that ? Like every PR gets linked to the issue, or every new issue creates a new PR ? Because if it is the latter, it is a good recipe for instability and merge conflicts IMO.

@Xabi08YT
Copy link
Contributor Author

Xabi08YT commented Mar 6, 2026

And if you want CI/CD to update the list, then I think it may be possible, but I will have to see how.

@Xabi08YT
Copy link
Contributor Author

Xabi08YT commented Mar 6, 2026

OK Just went through everything, and I think auto-updating the device list may be something possible. However, we may have to change again and switch back to a Markdown file. Let me explain:
In the repo, we could have something like a CSV file with all the supported device list. Then we are mandating a PR format or a pattern that can be scanned and where infos can be extracted by the CI/CD script.
In the CI/CD, we could have a python script, that adds all the new devices to the CSV if they do not exist and then it exports the new CSV, sorted, to a markdown file.

@Xabi08YT
Copy link
Contributor Author

Xabi08YT commented Mar 6, 2026

And if you'd prefer a local database, that may be possible too but i am a bit scared of how that would turn with merge conflicts, unless we are running the CI/CD in it's own branch.

@glpnk
Copy link
Collaborator

glpnk commented Mar 6, 2026

My goal was to reduce amount of new issues, which duplicate already existing ones. And problems tracing.

Next goal is getting rid of versions in version strings. We've figured out that SKU from DMI represents board revision, as same as EC version string. But I need more data to prove this.

@glpnk
Copy link
Collaborator

glpnk commented Mar 6, 2026

You made me think about GH wiki, which can be updated in CI/CD pipeline. But now we have no reliable way to link devices to Issues and PRs, except text in them. Linking helps, but not enough. Tagging will create email storm and eat API rate limit if automated.

Would be nice to find markup format which can be easily updated and rendered

@glpnk
Copy link
Collaborator

glpnk commented Mar 13, 2026

Do you mean to build by Github or just trigger remote buildbot?

@Xabi08YT
Copy link
Contributor Author

Xabi08YT commented Mar 13, 2026

It would be a trigger for a remote build operated by copr directly. A webhook could also do trick. It means however that we will have to change the version regularly (this is why it is in a new makefile in my pr, so we can automate that)

@glpnk
Copy link
Collaborator

glpnk commented Mar 13, 2026

So you want automate version bumping in repo via CI/CD?

Currently we are bumping it rarely because you can't uninstall DKMS module if you bumped version. It should be easy fixable tho.
When you installing module twice with different versions, DKMS will use latest but complain that it also have older ones

But actually I will prefer webhook from gh repo settings than script. But what will happen if copr buildbot sees same version? Just skip build?

@glpnk
Copy link
Collaborator

glpnk commented Mar 13, 2026

@BeardOverflow Hi, can you add Fedora copr webhook to repo settings, so we can automate builds for Fedora Silverblue?

@glpnk
Copy link
Collaborator

glpnk commented Mar 13, 2026

@Xabi08YT Do you know anything about Bazzite? It built on top of Silverblue so may it have some benefits from this copr release?

@Xabi08YT
Copy link
Contributor Author

Xabi08YT commented Mar 13, 2026

Currently we are bumping it rarely because you can't uninstall DKMS module if you bumped version. It should be easy fixable tho.

Yeah i think it would be fixable pretty easily if you want i can do a separat makefile only for that.

@Xabi08YT Do you know anything about Bazzite? It built on top of Silverblue so may it have some benefits from this copr release?

Yes it is based on silverblue and also uses akmods, so it should also benefit from this COPR repo. The install process should be the same as the one for Silverblue I think.

@Xabi08YT
Copy link
Contributor Author

So you want automate version bumping in repo via CI/CD?

Currently we are bumping it rarely because you can't uninstall DKMS module if you bumped version. It should be easy fixable tho. When you installing module twice with different versions, DKMS will use latest but complain that it also have older ones

But actually I will prefer webhook from gh repo settings than script. But what will happen if copr buildbot sees same version? Just skip build?

No it wont skip the build, but the client won't be able to update. So if you want I make a separate makefile just for akmod.

@Xabi08YT
Copy link
Contributor Author

Anyway; I am super happy i finally got it to work. Do you want me to test the akmod on bazzite ? It won't be able to test it before 23:00 CEST.

@Xabi08YT
Copy link
Contributor Author

I personnaly think it would be better to trigger the build through CI/CD though. Because on PR we could add the -experimental flag to all packages coming out of copr, avoiding peaple getting versions that do not build.
It would also allow us to increment the version automatically for RPM builds.

@glpnk
Copy link
Collaborator

glpnk commented Mar 13, 2026

If you have installed Bazzite - would be nice, but if not - don't bother. Bazzite devs worked on msi-wmi-platform driver but it still not upstreamed.

About webhooks - let's wait for BeardOverflow's answer

@Xabi08YT
Copy link
Contributor Author

Xabi08YT commented Mar 13, 2026

If you have installed Bazzite - would be nice, but if not - don't bother. Bazzite devs worked on msi-wmi-platform driver but it still not upstreamed.

About webhooks - let's wait for BeardOverflow's answer

Okay. For bazzite, the WMI platform is great but most commands about TDP, performance mode and so on are passing directly to the ec, if I recall correctly.

@Xabi08YT
Copy link
Contributor Author

Also, I don't knwo what you think about that, but I though I could try publishing the rpm package to rpm fusion in the near future.

I have a last idea, that I may implement later, but it would be a .deb package for Debian based distro, since many beginner may use these distro.

@glpnk
Copy link
Collaborator

glpnk commented Mar 13, 2026

Better idea would be to switch to developing the msi-wmi-platform driver for all WMI2 devices in the future. Because maintaining the huge white list isn't great. But detecting supported features seems to be nightmare, because they are misconfigured by vendor

@Xabi08YT
Copy link
Contributor Author

Better idea would be to switch to developing the msi-wmi-platform driver for all WMI2 devices in the future. Because maintaining the huge white list isn't great. But detecting supported features seems to be nightmare, because they are misconfigured by vendor

True. I tried decompiling MSI's ACPI, and the IASL (Intel's tool to do so) said nope.

@glpnk
Copy link
Collaborator

glpnk commented Mar 13, 2026

For bazzite, the WMI platform is great but most commands about voltage, performance mode and so on are passing directly to the ec, if I recall correctly.

Actually this all available through EC directly, but mapped to ACPI calls. But sadly MSI in own software used direct addressing in most cases.

@glpnk
Copy link
Collaborator

glpnk commented Mar 13, 2026

Also, I don't knwo what you think about that, but I though I could try publishing the rpm package to rpm fusion in the near future.

I have a last idea, that I may implement later, but it would be a .deb package for Debian based distro, since many beginner may use these distro.

I've planned to simplify version matching and get rid of release number part. SKU number seemed promising, but in reality was just BIOS + BIOS revision, while EC carries 2 revision numbers

@glpnk
Copy link
Collaborator

glpnk commented Mar 13, 2026

And worst thing that I have WMI1 laptop, so I can't test

@Xabi08YT
Copy link
Contributor Author

Actually this all available through EC directly, but mapped to ACPI calls. But sadly MSI in own software used direct addressing in most cases.

Okay. I understand better. So at the moment, this module is a backup solution. I will try disassembling everything again shortly because if MSI support can be improved for machines that I use, I'm in.

Also, I don't knwo what you think about that, but I though I could try publishing the rpm package to rpm fusion in the near future.
I have a last idea, that I may implement later, but it would be a .deb package for Debian based distro, since many beginner may use these distro.

I've planned to simplify version matching and get rid of release number part. SKU number seemed promising, but in reality was just BIOS + BIOS revision, while EC carries 2 revision numbers

Okay I think it would be great to avoid having to update supported versions every day.

And worst thing that I have WMI1 laptop, so I can't test

Mine is WMI2 if you want.

@glpnk
Copy link
Collaborator

glpnk commented Mar 13, 2026

Their code is just big hardcoded name matching. Other basic functions seems standard for all models, but whitelisted by their logic.

For WMI1 devices they used kernel ring0 driver, so I'm curios did they've found workaround of it being marked malware

@Xabi08YT
Copy link
Contributor Author

Their code is just big hardcoded name matching. Other basic functions seems standard for all models, but whitelisted by their logic.

For WMI1 devices they used kernel ring0 driver, so I'm curios did they've found workaround of it being marked malware

Oh... Yup that's bad.
Let's see how that goes...
Recently, i got fan support from msi_wmi on my WMI2 laptop, so it's great. I would like to have it on my older WMI1 laptop too...

Looking forward to the evolution of MSI WMI driver.

@Xabi08YT
Copy link
Contributor Author

BTW, just throwing that here, but do you think creating a new issue label named "Package issue" would be a good idea ?

@glpnk
Copy link
Collaborator

glpnk commented Mar 13, 2026

msi-wmi is different driver for old devices. But which driver you mean?

WMI1 and 2 are partially compatible by design, but WMI1 lacks some address mappings to EC, so direct access is needed

@Xabi08YT
Copy link
Contributor Author

msi-wmi is different driver for old devices. But which driver you mean?

WMI1 and 2 are partially compatible by design, but WMI1 lacks some address mappings to EC, so direct access is needed

Oh I though msi_wmi was the recent one since it is also loaded. Is the new one msi_wmi_platform ? Both are actually loaded on both of my laptops.

@glpnk
Copy link
Collaborator

glpnk commented Mar 13, 2026

msi-wmi is intended for soft keys on old devices. Currently through same WMI callbacks events are sent in other format. Events are like fan button, usb-c charge, backlight key, etc

@Xabi08YT
Copy link
Contributor Author

msi-wmi is intended for soft keys on old devices. Currently through same WMI callbacks events are sent in other format. Events are like fan button, usb-c charge, backlight key, etc

Interesting thank you.

added back old config for those who need it for dkms.
improved english concerning dkms over copr
@glpnk
Copy link
Collaborator

glpnk commented Mar 13, 2026

Do you have other ways to contact you? Telegram, Matrix, Discord?

@Xabi08YT
Copy link
Contributor Author

Do you have other ways to contact you? Telegram, Matrix, Discord?

I have discord, but like, discord.... That is the most reliable way to contact me. Then you have email...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants