Monitoring Radeon GPU temperature on macOS

Overview

RadeonSensor - Kext and Gadget to show Radeon GPU temperature on macOS

GitHub release download-badge

The kext is based on FakeSMCs RadeonMonitor to provide GPU temperature to a dedicated gadget without relying on FakeSMC being installed and can therefore be used with VirtualSMC instead, or without either in a VM with GPU passed through. All credits for the code to read the GPU temperature go to FakeSMC/RadeonMonitor project.

The design of the status bar is based on the AMD PowerGadget to fit together.

GPU temperature and MacOS

Starting with the Radeon VII, Apple stopped reporting the temperature directly, requiring kexts to step in and implement that feature. For Vega 10 and older, other tools can already display the GPU temperature without the need for additional kexts.

Components

  • RadeonSensor.kext: Required to read the GPU temperature and requires Lilu
  • SMCRadeonGPU.kext: Can be used optionally to export GPU temperature to VirtualSMC for monitoring tools to read and requires VirtualSMC
  • RadeonGadget.app: Displays GPU temperature in the status bar and requires only the RadeonSensor kext to be loaded

Supported GPUs

All GPUs starting Radeon HD 7000 series up to the RX 6000 series are supported.

Cedits

Comments
  • No Kexts in 0.3.1

    No Kexts in 0.3.1

    The release zip https://github.com/aluveitie/RadeonSensor/releases/download/0.3.1/RadeonSensor-0.3.1.zip

    Doesn't contain any kexts, what is the latest build? Should I be using kexts in 0.3.0?

    opened by screenpunch 2
  • Does this work on a real Mac with OpenCore?

    Does this work on a real Mac with OpenCore?

    Hi,

    I use OpenCore on my MacBook Pro to get external GPU support for my RX 5700 XT. The package I use includes Lilu, does this mean that the RadeonSensor.kext should work with my config? And if I've understood correctly, do I need to use the SMCRadeonGPU.kext for iStats support (I don't have VirtualSMC, but I guess I can implement it to my config if required)?

    Thanks.

    opened by Piipperi 2
  • (SMCRadeonGPU) <compose failure [UUID]>

    (SMCRadeonGPU)

    SMCRadeonGPU.kext is added RadeonSensor.kext is added

    Bootloader : OC 0.7.6 Release & 0.7.6 Debug.

    Booth version display the same thing.

    2021-12-28 22:51:01.600433+0800 localhost kernel[0]: (SMCRadeonGPU) <compose failure [UUID]> 2021-12-28 22:51:01.600437+0800 localhost kernel[0]: (SMCRadeonGPU) <compose failure [UUID]> 2021-12-28 22:51:01.600439+0800 localhost kernel[0]: (SMCRadeonGPU) <compose failure [UUID]> 2021-12-28 22:51:01.600442+0800 localhost kernel[0]: (SMCRadeonGPU) <compose failure [UUID]> 2021-12-28 22:51:01.600467+0800 localhost kernel[0]: (SMCRadeonGPU) <compose failure [UUID]> 2021-12-28 22:51:01.600507+0800 localhost kernel[0]: (SMCRadeonGPU) <compose failure [UUID]> 2021-12-28 22:51:01.600513+0800 localhost kernel[0]: (SMCRadeonGPU) <compose failure [UUID]> 2021-12-28 22:51:01.600518+0800 localhost kernel[0]: (SMCRadeonGPU) <compose failure [UUID]>

    I got lot of this on MSI RX 5500 XT. Any Idea?

    opened by theofficialcopypaste 2
  • OpenCore cannot inject SMCRadeonSensor.kext

    OpenCore cannot inject SMCRadeonSensor.kext

    Hi, I'm trying to inject this with OpenCore but upon startup SMCRadeonSensor will not load. RadeonSensor loads just fine and can be seen in kextstat output. Loading it via command-line when RadeonSensor is successfully injected by OC will give:

    Executing: /usr/bin/kmutil load -p /Library/Extensions/SMCRadeonGPU.kext
    Error Domain=KMErrorDomain Code=31 "Error occurred while building a collection: 
        1: One or more binaries has an error which prevented linking.  See other errors.
        2: Could not use 'aluveitie.SMCRadeonGPU' because: Failed to bind '__ZN12RadeonSensor9metaClassE' as could not find a kext with 'aluveitie.RadeonSensor' bundle-id
    aluveitie.SMCRadeonGPU specific: 
        1: Failed to bind '__ZN12RadeonSensor9metaClassE' as could not find a kext with 'aluveitie.RadeonSensor' bundle-id
    " UserInfo={NSLocalizedDescription=Error occurred while building a collection: 
        1: One or more binaries has an error which prevented linking.  See other errors.
        2: Could not use 'aluveitie.SMCRadeonGPU' because: Failed to bind '__ZN12RadeonSensor9metaClassE' as could not find a kext with 'aluveitie.RadeonSensor' bundle-id
    aluveitie.SMCRadeonGPU specific: 
        1: Failed to bind '__ZN12RadeonSensor9metaClassE' as could not find a kext with 'aluveitie.RadeonSensor' bundle-id
    }
    

    Help please?

    opened by i0ntempest 2
  • Compile error: fatal error: 'Headers/kern_efi.hpp' file not found

    Compile error: fatal error: 'Headers/kern_efi.hpp' file not found

    Hello, thank you for this amazing project.

    I have issues compiling the project. Unfortuently I have no much experience with this.

    After running xcodebuild I'm getting this fatal error:

    /Users/macpro/openCore/RadeonSensor-0.3.1/RadeonSensor/RadeonSensor.hpp:20:10: fatal error: 'Headers/kern_efi.hpp' file not found
    #include <Headers/kern_efi.hpp>
             ^~~~~~~~~~~~~~~~~~~~~~
    

    MacOS 11.6.5 xcode Version 13.2.1 (13C100)

    Any advice is much appreciated, or maybe a precompiled version? :)

    opened by DimaVIII 1
  • Mac Pro 5,1 with Opencore and using enterprise card AMD Radeon PRO VII, (Vega 20 GPU)

    Mac Pro 5,1 with Opencore and using enterprise card AMD Radeon PRO VII, (Vega 20 GPU)

    Hello,

    This gadget is great, but it is not working with the AMD Radeon PRO VII, (enterprise card), temperature reporting has not worked either in Stats or iStats app or Macs Fan Control.

    Also, when I try to use the included app, it says no radeonsensor found and to download it. I assume this refers to the radeonsensor.kext?

    I have enabled the loading of both the radeonsensor.kext and SMCRadeonGPU.kext in opencore for my machine. So I am not sure what I am missing here.

    Maybe this is not worth it since it just to show the temp, but it would be nice to have to be able to control fans according to GPU temp. Is there a chance you could have a look to maybe include this card in the Radeon Sensor gadget?

    Thanks!

    opened by jtgil 3
  • SMCRadeonGPU.kext not working on Mac Pro 5.1 with RX6600 XT

    SMCRadeonGPU.kext not working on Mac Pro 5.1 with RX6600 XT

    While RadeonSensor.kext and RadeonGadget.app work without any problem SMCRadeonGPU is not showing any data in iStats or any other app (Mac Fan Control...).

    VirtualSMC is not installed because it is genuine Mac and all other fans data are shown as normal

    Installed GPU is XFX Radeon RX6600 XT swift 210 with hardware switch for silent and game mode. It doens't matter which mode is on

    opened by PeroPenx 3
  • Showing 0°C

    Showing 0°C

    Hi! Thank you for your work, I needed that! Sadly sensor are showing 0°C, in GPU Die, GPU Proximity, and RadeonSensor.app too.

    iStats Menu manages to read the temperature here (48°C now), as follows:

    My card is AMD Sapphire Nitro Radeon R9 380 4 GB Device ID: 0x6939 Vendor ID: 0x1002 Revision ID: 0x00f1

    Do you have any ideas? I can't exclude I have broken sensors on my GPU. Thanks in advance.

    Cheers,

    Michele 🇮🇹

    opened by skippydream 1
  • SMC Key for TGDD and TCGC - Stats temperature not showing

    SMC Key for TGDD and TCGC - Stats temperature not showing

    Hi, first thanks for the kexts.

    Using smcread -s I get the following:

      TG0D  [sp78]  3.437500 (bytes 37 00)
      TG0P  [sp78]  3.437500 (bytes 37 00)
      TG0d  [sp78]  3.437500 (bytes 37 00)
      TG0p  [sp78]  3.437500 (bytes 37 00)
    

    So I know your kext is working. However I am using Stats and the iGPU and 6600XT temperatures don't show. I did some digging in the Stats code and noted that it is using:

    • TGDD for the Radeon temperature
    • TCGS for the iGPU temperature image

    "Stats/Modules/GPU/reader.swift"

                } else if ioClass.contains("amd") { // amd
                    predictModel = "AMD Graphics"
                    type = .discrete
                    
                    if temperature == nil || temperature == 0 {
                        if let tmp = SMC.shared.getValue("TGDD"), tmp != 128 {
                            temperature = Int(tmp)
                        }
                    }
                } else if ioClass.contains("intel") { // intel
                    predictModel = "Intel Graphics"
                    type = .integrated
                    
                    if temperature == nil || temperature == 0 {
                        if let tmp = SMC.shared.getValue("TCGC"), tmp != 128 {
                            temperature = Int(tmp)
                        }
                    }
    

    The keys from SMCRadeonGPU.kext are translated as follows in Stats: "Stats/Modules/Sensors/values.swift"

        Sensor(key: "TCGC", name: "GPU Intel Graphics", group: .GPU, type: .temperature),
        Sensor(key: "TG0D", name: "GPU diode", group: .GPU, type: .temperature),
        Sensor(key: "TGDD", name: "GPU AMD Radeon", group: .GPU, type: .temperature),
        Sensor(key: "TG0H", name: "GPU heatsink", group: .GPU, type: .temperature),
        Sensor(key: "TG0P", name: "GPU proximity", group: .GPU, type: .temperature),
    

    I also found this SMC key listing that shows the same:

    	{Key: "TCGC", Desc: "GPU Intel Graphics"},
    	{Key: "TG%D", Desc: "GPU Diode %"},
    	{Key: "TGDD", Desc: "GPU AMD Radeon"},
    

    I have managed to manually change the Stats code and compile the program by simply changing the SMC key names and it does work but would require a recompile for each update.

    So my ask is, can the TGDD key be added to your SMCRadeonGPU.kext? I tried but adding the TGDD key but was unsuccessful (I have no experience with this, other than poking through some code 😀).

    opened by seven-of-eleven 6
  • (SMCRadeonGPU) <compose failure [UUID]>

    (SMCRadeonGPU)

    how to fix?

    2022-08-15 17:46:33.447641+0200 localhost kernel[0]: (SMCRadeonGPU) <compose failure [UUID]> 2022-08-15 17:46:33.447645+0200 localhost kernel[0]: (SMCRadeonGPU) <compose failure [UUID]>

    opened by Terminalstrip 3
Releases(0.3.1)
Owner
Aluveitie
Aluveitie
Macos-arm64-emulation - A guide for emulating macOS arm64e on an x86-based host.

macos-arm64-emulation Use the following guide to download and configure all of the necessary tools and files for emulating the macOS arm64e kernel. Th

Cylance 232 Dec 1, 2022
Single-Cell Li-Ion Battery Charger with Monitoring

TinyCharger - Single Cell Li-Ion Battery Charger with Monitoring TinyCharger is an ATtiny25/45/85-based, single-cell Li-ion battery charger with selec

Stefan Wagner 25 Oct 3, 2022
An R package for monitoring the trend of daily COVID-19 positive cases in Tokyo

R Package TokyoCovidMonitor A simple RStan-based package for monitoring daily COVID-19 positive cases in Tokyo Overview This package offers a simple m

Takashi J. OZAKI 14 Mar 15, 2022
multispectral monitoring of a sourdough starter; esp32 eink module, scd30 co2 sensor, vl6180 distance sensor

EINK STARTER MONITOR See full blogpost here Tracks height of starter with a VL6180 i2c distance sensor, and CO2/temperature/humidity with an SCD30. A

AKA 15 Feb 16, 2022
Phantom Attack: Evading System Call Monitoring

Phantom attack is a collection of attacks that evade Linux system call monitoring. A user mode program does not need any special privileges or capabilities to reliably evade system call monitoring using Phantom attack by exploiting insecure tracing implementations.

Rex Guo 52 Nov 11, 2022
Automatic plant growing and monitoring system using Arduino

Plant Automatic Growing and Monitoring System Roadmap Read sensors Ambient Temperature Ambient Moisture Ambient Light Soil Moisture LCD with custom ch

Diego Santos Seabra 1 Oct 7, 2021
jvm-monitor is a lightweight monitoring tool that logs all the local variables whenever exceptions occur.

jvm-monitor jvm-monitor is a Java agent attached to a Java VM (virtual machine), which logs all the local variables when exceptions occur. Rationales

Barosl Lee 13 Nov 21, 2021
SQL powered operating system instrumentation, monitoring, and analytics.

osquery osquery is a SQL powered operating system instrumentation, monitoring, and analytics framework. Available for Linux, macOS, Windows, and FreeB

osquery 19.6k Dec 1, 2022
Detours is a software package for monitoring and instrumenting API calls on Windows.

Detours is a software package for monitoring and instrumenting API calls on Windows. It is distributed in source code form.

Microsoft 3.8k Dec 5, 2022
Linux System Optimizer and Monitoring - https://oguzhaninan.github.io/Stacer-Web

Linux System Optimizer and Monitoring Reviews Required Packages curl, systemd PPA Repository (for ubuntu) sudo add-apt-repository ppa:oguzhaninan/stac

Oguzhan Inan 8.1k Nov 30, 2022
Custom Arduino-based temperature and humidity data logger.

Arduino Datalogger A custom data logger based on ATmega32u4 with a custom PCB. The device features the following main components: Atmel ATmega32u4 MCU

Valentin Bersier 7 Jul 19, 2021
Driver for the TI TMP102 I2C temperature sensor. For use with TI TM4C123X MCUs.

TI TMP102 Driver Simple driver for the TI TMP102 I2C temperature sensor. For use with TI TM4C123X MCUs and TI's TivaWare™ Peripheral Driver Library. D

Dan Maher 4 Jun 27, 2021
LM75A temperature sensor library that you can use with STM32F10x series microcontrollers.

STM32F10x-LM75A-Library LM75A temperature sensor library that you can use with STM32F10x series microcontrollers. Launching the LM75A sensor in your a

null 12 Nov 25, 2022
DIY Zigbee CC2530 Motion sensor (AM312/ AM412/ BS312/ BS412), Temperature /Humidity /Pressure sensor (BME280), Ambient Light sensor (BH1750), 2.9inch e-Paper Module

How to join: If device in FN(factory new) state: Press and hold button (1) for 2-3 seconds, until device start flashing led Wait, in case of successfu

Sergey Koptyakov 5 Feb 13, 2022
DIY Zigbee CC2530 Motion sensor (AM312/ AM412/ BS312/ BS412), Temperature /Humidity /Pressure sensor (BME280), Ambient Light sensor (BH1750), 2.9/2.13/1.54 inch e-Paper Module

How to join: If device in FN(factory new) state: Press and hold button (1) for 2-3 seconds, until device start flashing led Wait, in case of successfu

Sergey Koptyakov 32 Nov 14, 2022
Arduino library for the SHT2x series temperature and humidity sensors including SHT20, 21, 25.

SHT2x Arduino library for the SHT2x and HTU2x temperature and humidity sensors. Description The SHT2x family of sensors should work up to 400 KHz I2C.

Rob Tillaart 9 Nov 8, 2022
The MLX90614 is an Infra Red thermometer for noncontact temperature measurements.

The MLX90614 is an Infra Red thermometer for noncontact temperature measurements.

Shifeng Li 22 May 25, 2022
This is for interfacing rasberry-pi's (2 cards) with an arduino for sending raw data to form the close loop system to avoid motor heating by acting on a given temperature.

This is for interfacing rasberry-pi's (2 cards) with an arduino for sending raw data to form the close loop system to avoid motor heating by acting on a given temperature. Interface is explained through a master slave approach and client server approach. another camera is used with OPEN-CV platform to interface and collect data aswell.

Younes HAMZA 2 Oct 25, 2021
Updated Vindriktning with Wifi Connectivity, Motion sensor, Temperature and Humidity

Vindriktning-plus Updated Vindriktning with Wifi Connectivity, Motion sensor, Temperature and Humidity Inspired & parts of the code are used from: htt

Glittering Dealer 4 Sep 20, 2022