Skip to content

[New Device] [Implementation Details] PowerColor Red Devil RX9070XT

Name of device:

PowerColor Red Devil RX9070XT

Link to manufacturer's product page:

Please select what type of device/interface the device uses:

DeviceType::GPUAMD DeviceTypeSMBus

ID information:

PCI\VEN_1002&DEV_7550&SUBSYS_2435148C&REV_C0\6&1A71686&0&00000019

Please attach screenshots of the device's official control application here:

image

Please attach device captures here:

I have spent considerable time reverse engineering this card. I have both a working test application communicating to the GPU over AMD ADL I2C. I would like to discuss some particularities first.

  1. The original software uses AMD ADLX. Which is the replacement for AMD ADL. I have reverse engineered nearly the entirety of the controlling application with static analysis (Ghidra) and have made an application using ADL (not ADLX) that works. It doesnt matter which library is used since only the I2C bus needs to be exposed. ADL is used in OpenRGB so it is what I chose to use as well.

  2. The original software appears to support many different GPUs. A complete list of all DEVs that the application seems to detect is as follows:

  • 744C_C8
  • 744C_CC
  • 744C_CE
  • 73F0_F6
  • 73BF_C0
  • 73BF_C1
  • 73BF_C3
  • 73AF_C0
  • 73A5_C0
  • 73DF_C1
  • 74DF_C5
  • 73DF_C0
  • 73FF_C1
  • 73EF_C1
  • 747E_C8
  • 747E_FF
  • 746F_F0
  • 7550_C0
  • 7550_C3

I am unsure whether some of these are exceptions or not, nor do I have any way to test them.

  1. There appear to be two different protocols used to communicate with the GPU. I can only test a single one.

  2. There is a SIGNIFICANT amount of undocumented behavior. The I2C device seems to only be responsible for the light control, so I took the risk to probe it with different values. I appear to not have broken anything, however there are far more options than the powercolor software exposes. This includes additional effect modes, the ability to actually read out colors and modes (this is unused in the stock software) and the ability to control individual LEDs (the stock software can only control all of them at once)

  3. Reading out the registers there appears to be a few static ones which I am uncertain of but I reckon are a GPU/RGB chip identifier.

I state all of this since I need some guidance. What is the best way to handle all of this? Should I implement the undocumented features or not? What about the protocols I cannot test but know the implementation details of?

If anyone has any of these DEV IDs please reach out here so that we can test.

Checklist for Step2

  • Name of device
  • A link to the vendors product page has been included
  • The transport bus has been identified and the appropriate label added to the issue.
  • The device ID's have been included for USB or PCI
  • Screenshots of the OEM Application are included
  • There is either, appropriate code examples linked or suitable device captures attached