Announcement
Collapse
No announcement yet.
Switch off Sapphire Nitro+ 5700 xt rgb leds (Linux)
Collapse
X
-
Originally posted by CalcProgrammer1 View PostI'm the developer of OpenRGB. I just got an RX580 Nitro+ the other day and have been reverse engineering it on Windows. It is an i2c device, but unlike the screenshot above I was unable to capture calls to the I2C ADL function in API Monitor from either version of TriXX I tried. Fortunately someone had contributed an ADL i2c driver not long ago so I was dumping the controller registers after setting them with TriXX and figured out most of the control scheme. I still can't seem to set modes, as it reads back in register 0x00 but writing to that register has no effect. LumielGR, where did you find that screenshot of TriXX R/E? I would love to see what it's sending!
As for control on Linux, we need to adapt https://github.com/twifty/aura-gpu (i2c driver for on-board bus of AMD GPUs) to work with Sapphire cards. This should give OpenRGB access to the i2c device.
The Linux GPU kernel driver already exposes the i2c buses.
Comment
-
Originally posted by agd5f View Post
You might want to look at:
The Linux GPU kernel driver already exposes the i2c buses.
Comment
-
Originally posted by CalcProgrammer1 View Post
I know about the i2c-dev interface. OpenRGB uses it fairly extensively for RGB motherboard, RAM, and GPU lighting control. The issue is that the amdgpu driver doesn't seem to expose a /dev/i2c-X device for the correct bus. ASUS Aura RX580 GPU users have said Twifty's driver works for them but I haven't been able to make it work for me. I noticed in the more recent kernel (5.8-rc4 I think) that I now see i2c hw and aux busses for the GPU that I didn't on my other box (using Debian's testing kernel, probably a few weeks out of date). I know the RGB controller is at address 0x55 and can be found using i2cdetect with READ mode. I tried detecting all of the AMD GPU busses and didn't find it. I can see it using the ADL I2C functionality in Windows (OpenRGB has a subset of i2c-tools functionality built in so it can be used on Windows).
- Likes 1
Comment
-
I was digging through the amdgpu code and it looks like SMU is only for Vega and newer? This is a Polaris card.
Code:bool is_support_sw_smu(struct amdgpu_device *adev) { if (adev->asic_type == CHIP_VEGA20) return (amdgpu_dpm == 2) ? true : false; else if (adev->asic_type >= CHIP_ARCTURUS) { if (amdgpu_sriov_vf(adev)&& !amdgpu_sriov_is_pp_one_vf(adev)) return false; else return true; } else return false; }
Comment
-
Originally posted by CalcProgrammer1 View PostI was digging through the amdgpu code and it looks like SMU is only for Vega and newer? This is a Polaris card.
Comment
-
I made some progress. I made the following changes to the kernel:
Code:- if (!amdgpu_device_has_dc_support(adev)) + //if (!amdgpu_device_has_dc_support(adev)) amdgpu_atombios_i2c_init(adev);
More details here:
Last edited by CalcProgrammer1; 19 July 2020, 05:19 PM.
Comment
Comment