amazon weighted blanket

Archive

Articles taggués ‘mac’

MacPro 1,1 : Optimiser le refroidissement d’un GPU AMD sous Linux

11/10/2020 Aucun commentaire

Sur ces machines, la ventilation est réalisée en 3 canaux séparés

  • Canal 1 : CPU & RAM : 2 ventilateurs, 1 en façade et 1 à l'arrière en extraction, dont la vitesse est régulée en fonction de la température CPU
  • Canal 2 : GPU et cartes d'extensions : 1 ventilateur en façade
  • Canal 3 : Alimentation & lecteurs optiques.

Sur mon système, si les canaux 1 et 3 sont gérés correctement par le SMC ( le chip chargé de la gestion du système ), le ventilateur du canal 2 a sa vitesse fixe à 500 tr/min. J'imagine que la cause est à trouver dans mon utilisation peut habituelle de cette machine : un GPU non officiel (AMD R9 380) sous un OS non officiel (Linux).

Pour pallier à ce problème, et effectivement piloter ce ventilateur en fonction de la demande en refroidissement du GPU, j'ai écrit un script bash, qui contrôle ce ventilateur en fonction de la commande PWM du ventilateur du GPU ( attention, à ma connaissance cette information n'est disponible que sur le pilote graphique libre AMD ) :

$ cat /opt/IO_fan_control.sh
#!/bin/bash

BASE_FAN="/sys/devices/platform/applesmc.768/fan2"
GPU_PWM_FILE="/sys/class/drm/card0/device/hwmon/hwmon0/pwm1"
GPU_PWM_MIN=75
GPU_PWM_MAX=250

function setfancontrolmanual()
{
        echo $1 > $BASE_FAN"_manual"
        if (( $? == 0 ))
        then
                if (( $1 == 0 ))
        then
                        echo "Returning fan control to SMC"
                else
                        echo "Taking control of fan from SMC"
                fi
        else
                if (( $1 == 0 ))
        then
                        echo "Failed to return fan control to SMC"
                        exit 1
                else
                        echo "Failed to take control of fan from SMC"
                        exit 1
                fi
        fi
}

function abort()
{
        setfancontrolmanual 0
        exit
}

function checkforroot()
{
        if(( $(id -u)  != 0 ));
        then
                echo "Need to be run as root";
                exit
        fi
}

checkforroot
if [ "$1" == "release" ]; then
        setfancontrolmanual 0
        exit
fi

trap abort SIGINT
setfancontrolmanual 1

while true
do
        INPUT_RPM=$(<$BASE_FAN'_input')
        MAX_RPM=$(<$BASE_FAN'_max')
        MIN_RPM=$(<$BASE_FAN'_min')
        GPU_PWM=$(<$GPU_PWM_FILE)

        #compute MAC fan RPM from GPU fan PWM
        if (( $GPU_PWM >= $GPU_PWM_MAX )); then
                TARGET_RPM=$MAX_RPM
        elif (( $GPU_PWM <= $GPU_PWM_MIN )); then
                TARGET_RPM=$MIN_RPM
        else
                TARGET_RPM=$(( ($MAX_RPM - $MIN_RPM) * ( $GPU_PWM - $GPU_PWM_MIN ) / ($GPU_PWM_MAX - $GPU_PWM_MIN) + $MIN_RPM))
        fi

        #clamp value between MIN_RPM and MAX_RPM
        if (( $TARGET_RPM < $MIN_RPM )); then
                OUTPUT_RPM=$MIN_RPM
        elif (( $TARGET_RPM > $MAX_RPM )); then
                OUTPUT_RPM=$MAX_RPM
        else
                OUTPUT_RPM=$TARGET_RPM
        fi

        echo $OUTPUT_RPM > $BASE_FAN'_output'

        echo 'INPUT_RPM: '$INPUT_RPM' MAX_RPM: '$MAX_RPM' MIN_RPM: '$MIN_RPM' GPU_PWM: '$GPU_PWM' TARGET_RPM: '$TARGET_RPM' OUTPUT_RPM: '$OUTPUT_RPM

        sleep 2
done

Les variables GPU_PWM_MIN et GPU_PWM_MAX correspondent respectivement aux 2 valeur PWM à laquelle le ventilateur du canal 2 sera commandé à sa vitesse minimum, et celle où il sera commandé à sa vitesse maximum.

Ce script est exécuté automatiquement au démarrage grâce à systemd

$ cat /etc/systemd/system/system_mac-io-fan-control.service
[Unit]
Description=MacPro IO fan control from GPU temperature
After=systemd-udevd.service

[Service]
ExecStart=/opt/IO_fan_control.sh
Restart=always
StartLimitIntervalSec=10
ExecStopPost=/opt/IO_fan_control.sh release

[Install]
WantedBy=multi-user.target

Il ne reste plus qu'à activer l'unité systemd créé :

$ sudo systemctl enable system_mac-io-fan-control.service
$ sudo systemctl start system_mac-io-fan-control.service

La vitesse du ventilateur du canal 2 est maintenant asservie à celle du GPU, facilitant le refroidissement de ce dernier, et réduisant le niveau sonore de la machine.

Categories: Linux Tags: , , ,

MacPro 1,1 : Linux trucs & astuces

13/09/2020 Aucun commentaire

Installation réalisée sous Linux Mint 20 avec un kernel 5.4

Boot avec PlopKexec.

Une distro 64bit fonctionne parfaitement. Se référer à mon précédent article http://pila.fr/wordpress/?p=1078

Obtenir un affichage avec un GPU AMD

Les cartes graphiques AMD exploitant le nouveau code d'affichage "DC" provoquent un kernel panic. Il faut ajouter la commande suivante dans le fichier /etc/default/grub pour utiliser l'ancian code :

amdgpu.dc = 0

Ne pas oublier d'appliquer les changements :

$ sudo update-grub 

Bâillonner l'interruption gpe11

Sur cette machine, le taux d'occupation CPU restait important même au repos. Il s'avère que l'IRQ 9 est déclenchée à une fréquence très élevée (indiqué par le compteur du fichier /proc/interrupts), et monopolise à elle seule un des coeurs CPU. Les compteurs lisibles dans les différents fichiers à l'emplacement /sys/firmware/acpi/interrupts nous permettent de déterminer la source de cette IRQ : gpe11. Un service systemd nous permet de la désactiver, en créant le fichier /etc/systemd/system/disableGPE11.service avec le contenu suivant :

[Unit]
Description=Disables GPE 11 going crazy on this MacPro
[Service]
ExecStart=/bin/bash -c 'echo "disable" > /sys/firmware/acpi/interrupts/gpe11'
[Install]
WantedBy=multi-user.target

Ce service est rendu actif par la commande suivante :

$ sudo systemctl enable disableGPE11.service


Categories: Linux Tags: , , ,

MacPro 2006 : Installer Linux sans DVD ni carte graphique EFI

29/05/2016 Aucun commentaire

Après avoir remis en service le MacPro en remplaçant les ventilateurs avant et la carte graphique, il est temps de le doter d'un OS digne de ce nom,  un linux (Mint).

Le MacPro est désormais habité par un pingouin

Le MacPro est désormais habité par un pingouin

Cependant, le hardware peu commun de la machine pose quelques problèmes : seul l'EFI est capable de booter sur USB ( et les distributions Linux récentes nécessitent toute plus d'espace que ce qu'un CD peut offrir), mais il ne s'agit que d'un EFI 32 bits, alors que l'UEFI présent sur les PC ( et géré par la plupart des live Linux ) est en 64bits. De plus, démarrer avec l'EFI avec une carte graphique non supportée par Apple impose de ne pas avoir de vidéo avant le chargement du gestionnaire de bureau.

La solution la plus simple est de graver une distribution sur un DVD. En Effet, après 1min de tentative de boot en EFI, un bios à l'ancienne prend la main et tente à son tour de booter, sur les seuls médias qui lui sont accessibles ( disques sur et médias optiques ).

Cependant, si comme moi vous n'avez pas de DVD sous la main, il est possible d'utiliser un CD d'amorçage. Celui-ci, une fois chargé par le BIOS, va permette de lancer un linux situé sur une clé USB.

Lire la suite...

Categories: Linux Tags: , , , ,

MacPro 2006 : Démontage et remplacement des ventilateurs avants

22/05/2016 un commentaire

Je viens de mettre la main sur l'une de ces fantastiques machines que sont les Mac Pro de première génération d'Apple, désignés par l'appellation "Mac Pro 2006" ou "Mac Pro 1,1":

Image Mac Pro 2006

Avec son imposant chassis aluminium, c'est clairement une belle machine !

J'ai obtenu celle-ci sur Leboncoin pour un prix dérisoire, mais il y a quelques problèmes : l'un des ventilateurs de la face avant est bloqué, et cela a entrainé la surchauffe ( et la mort prématurée ) de la carte graphique.

Heureusement, de par sa conception, le démontage de cette machine est plutôt aisé. Cet article décrit le remplacement de l'unité de ventilateurs avant, ou "front fan assembly" :

Lire la suite...