Replacement for WinRing0
I'm sure you're aware of the issue, but Microsoft has decided to flag the WinRing0 driver now again in one of the latest updates, and so many programs aren't working without an exception.
Are there any plans to replace the WinRing0 driver with a different one? I'm not sure if any of the possible replacements will provide all the required functionality though.
Possible candidates?
- PawnIO
- The WinRing0 repo from GermanAizek, but I think it's not signed
- 0Ring from OCCT
Hi, I am well aware of ths situation, but have no working solution atm. The two options I have are the upcoming ORing driver from OCCT and PawnIO. Currently looking at PawnIO, however it does not cover the whole functionality, will also need the RyzenSMU module updated/extended, as it does not support all codenames I currently have in the dll.
The second option is a no go as no release and no signed driver.
There was one other company that wanted to get a fixed WinRing0 driver signed and released, but I lost track and haven't heard anything new about it.
LibreHardwareMonitor and FanControl (since it uses it) are moving to PawnIO, however LHM only needs smn read and not write.
@sp00n I tried and unfortunatelly it is not possible, even the basic ZenTimings functionality is not covered - e.g. I can't get the patch level as the MSR for that is not allowed for read. I guess some of the issues can be resolved with adding the needed functionality, but a 100% parity probably not going to happen.
Unless the OCCT driver provides the needed functionality, then the project is kind of dead. I can continue to support it, but it would still rely on WinRing0.
Maybe an option for you would be to move away from ZenStates-Core if we submit PRs to the RyzenSMU module for PawnIO to support setting the CO value (and anything else needed). This seems easier to achieve than waiting for me to fully drop WinRing0.
@sp00n Some news about the driver switch. I was working on the PawnIO modules and was able to get ZenTimings working, however it uses a very small subset of the functionality of the Core. None of the SMU commands currently work with the new driver as the module does not support custom commands. We will have to work on extending the module with different mailboxes and support for smu commands (Get and Set).
AFAIK CoreCycler relies on the "Set CO" command, but at the moment I'm not sure about the correct approach to support that. The easiest way is to provide a generic mailbox "Send Command", so I can port all of the functions in the DLL. No ETA though.
The module in question is RyzenSMU: https://github.com/namazso/PawnIO.Modules/blob/main/RyzenSMU.p
Hey @irusanov thanks for the hard-work. I've been looking at your recent commits and wondered if you successfully migrated from Winring0 already. Seams like it but I'm getting TIMEOUT_MAILBOX_READY when executing commands like SetPPTLimit. Apologies if I misunderstood something.
That's correct, I've migrated to PawnIO, but none of the SMU commands are possible at the moment, except for getting SMU version, pmt version and refreshing pmt.
PawnIO works with modules and we managed to get RyzenSMU working for ZenTimings only (and projects like LibreHardwareMonitor) which only need the PM table to display some metrics.
Will be working on adding SMU read and write, but as of now that is not supported.
Thank you very much. Looking forward to it!