Ajouter la ligne suivante à la fin du fichier /etc/modprobe.d/alsa-base.conf
options snd-hda-intel model=auto,dell-headset-multi
Nov 30 2022
Ajouter la ligne suivante à la fin du fichier /etc/modprobe.d/alsa-base.conf
options snd-hda-intel model=auto,dell-headset-multi
Oct 30 2022
Le « boitier à chaine » STILE RF est un appareil permettant l’ouverture / fermeture d’une fenêtre battante à l’aide d’une télécommande.
L’exemplaire en ma possession refuse totalement de fonctionner, et ne donne aucun signe de vie. Voyons si il est possible de le réparer.
Lire la suiteJan 02 2022
Produite entre 1991 et 1996 par le fabricant danois Bang & Olufsen, la Beolink 5000 est une télécommande permettant de contrôler les différents appareils de la marque, ainsi que de monitorer leur état grâce à l’écran LCD translucide présent à son extrémité. Ce modèle représentait en son temps l’état de l’art dans le domaine des télécommandes multimédia.
Malheureusement, bon nombre de ces télécommandes ont maintenant 30 ans d’age, et si certains composants vieillissants sont facilement remplacés ( notamment les condensateurs électrochimiques assurant la stabilité de la communication infrarouge ), les adhésifs chargés de maintenir en place l’écran et sa nappe montrent eux aussi des signes de faiblesse, avec pour conséquence un détachement partiel ou complet de la nappe de l’écran, ce dernier perdant de ce fait ses capacités d’affichage. La grande majorité des télécommandes encore existantes sont affectées par cette maladie. Certaines fonctions qui requièrent un écran fonctionnel, telles que le paramétrage de la télécommande, ou des équipements associés, deviennent alors inutilisables.
L’exemplaire en ma possession présentait un état encore plus dramatique, l’écran complètement séparé de la télécommande, la nappe le raccordant à son électronique de contrôle s’étant déchirée sous son poids. J’ai décidé de consacré une partie de mon temps libre de l’année dernière à la conception d’un remplacement.
Lire la suiteAvr 05 2021
J’avais déjà il y a quelques temps publié un article décrivant comment installer Linux sur un MacPro 1.1 sans carte graphique ni EFI. Cet article proposait une méthode d’installation utilisant le mode de démarrage en mode « compatibilité BIOS », qui a pour principaux inconvénient de nécessiter un passage par un CD d’amorçage pour l’installation, et, une fois l’installation terminée, implique des temps de démarrage de plus d’une minute. Ayant depuis mis la main sur une carte graphique avec le firmware Apple adéquat, cet article décrit l’installation de Linux Mint avec amorçage EFI.
La méthode décrite dans cet article nécessite une carte graphique Apple fonctionnelle afin de pouvoir afficher le menu d’amorçage !
Utiliser GParted pour créer une nouvelle table de partition GPT sur la clé USB.
Créer 2 partitions sur la clé USB :
Copier l’intégralité des fichiers de l’ISO d’installation sur la partition ext4.
Sur la partition EFI, créer le dossier /efi/boot, et y copier le fichier bootia32.efi. (source).
Créer également le dossier /boot/grub,
et y copier les fichiers vmlinuz
et initrd.lz
obtenus dans le dossier casper
de l’ISO d’installation. Y copier également le fichier grub.cfg
obtenu dans /boot/grub
.
Editer le fichier grub.cfg
, y insérer le contenu suivant ( avant la première entrée de menu ) :
menuentry "Install Mint MacPro" --class linuxmint {
linux /boot/grub/vmlinuz live-media-path=/casper/ ignore_uuid root=PARTUUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX boot=casper nosplash noefi --
initrd /boot/grub/initrd.lz
}
en remplaçant PARTUUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
par l’identifiant de la partition où l’on a copié les fichiers de l’ISO d’installation, obtenu à l’aide de la commande blkid
.
Immédiatement après avoir appuyé sur le bouton de mise sous tension du MacPro, maintenir appuyer la touche Alt du clavier, jusqu’à l’apparition d’un menu de sélection du périphérique d’amorçage. (Cela devrait prendre environ 5 secondes après le gong sonore de démarrage ) .
Appuyer une fois sur la flèche de droite pour sélectionner le périphérique USB EFI Boot
puis appuyer sur entrée.
Le lanceur grub démarre. Appuyer sur entrée pour procéder à la sélection de la première entrée, intitulée Install Mint MacPro
.
Le démarrage de l’image d’installation prend jusqu’à 5 minutes, sans que rien ne s’affiche à l’écran, cela semble normal, et est vraisemblablement due à la faible vitesse d’accès USB de l’implémentation EFI sur ces machines.
Procéder à l’installation de manière usuelle.
A la fin de l’installation, ne pas redémarrer !
Procéder au montage de la partition du disque sur lequel l’installation a été effectuée, et éditer le fichier /boot/grub/grub.cfg
, et rechercher la ligne contenant les arguments noyaux pour le démarrage par défaut (Il doit s’agit de la 1ere ligne commençant par la commande linux
). Y ajouter l’arguement noefi
si il n’y figure pas. ( Cette modification est nécessaire pour permettre un bon démarrage du noyau ).
linux /boot/vmlinuz-5.8.0-48-generic root=UUID=dabdd8d7-32f0-46a3-9c20-ba8cf5c342aa ro quiet splash noefi
Une fois la modification effectuée (et enregistrée), redémarrer la machine.
Editer le fichier /etc/default/grub pour y faire figurer la modification précédemment effectuée :
GRUB_CMDLINE_LINUX="noefi"
Si l’on souhaite par la suite utiliser une carte graphique ne possédant pas le firmware Apple, y apporter également la modification suivante, sans laquelle ma machine (dotée d’une carte graphique AMD R9 380) se fige à l’extinction lorsque plusieurs écrans y sont raccordés.
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nosplash"
Regénérer les fichiers de configuration de grub incorporant ces modifications, à l’aide de la commande suivante :
# update-grub
La machine démarre maintenant en 40 secondes montre en main, ce qui représente une nette amélioration du temps de démarrage précédemment obtenu avec la compatibilité BIOS, qui était supérieure a la minute, sans présenter d’autre inconvénient que de nécessiter une carte graphique Apple pour procéder à l’installation. (j’ai tenté par la suite de reproduire la procédure « à l’aveugle », sans résultat).
Il ne reste plus qu’à baillonner l’interruption gpe11, et optimiser le refroidissement de la carte graphique.
Cependant, l’argument noefi
étant nécessaire au bon démarrage du noyau, mon ambition de pouvoir enfin editer la variable EFI assurant le réglage du volume du gong de démarrage est tombée à l’eau. Je me contenterai du temps de démarrage raccourci !
Sources :
https://forums.linuxmint.com/viewtopic.php?t=333755
https://help.ubuntu.com/community/MacPro
Notes :
Contrairement à l’installation effectuée en mode BIOS, le paramètre noyaux amdgpu.dc=0 n’est plus nécessaire pour obtenir un affichage avec ma carte graphique AMD.
Pour résoudre le problème rencontré à l’extinction de la machine, les arguments noyau suivant ont été essayés, sans résultat : amdgpu.runpm=0
, reboot=pci
, acpi=noirq
et irq=off
Mar 14 2021
Cet article décrit la procédure pour installer Linux Mint avec un système de fichier BTRFS (permettant notamment de bénéficier de « snapshots » offrants une possibilité de restaurer le système à un état antérieur en cas de problème), tout en activant le chiffrement complet du disque dur.
L’installation débute comme une installation standard, puis :
1. A l’écran « Type d’installation« , choisir « Autre chose » :
2. Si nécessaire, créer une table de partition en cliquant sur le bouton « Nouvelle table de partition ». Attention, cette opération détruira la table de partition courante, et provoquera la perte des partitions actuellement sur le disque !
3. Créer une partition de type « Partition Système EFI », de taille 1024 Mo (c’est un peu excessif, mais cela évite de devoir la redimensionner plus tard). Pour cela, sélectionner l' »espace libre » en fin de disque, et cliquer sur le bouton « + ».
4. Créer une partition de type « Système de fichier ext2 », avec point de montage « /boot« , également de taille 1024 Mo.
5. Créer une partition de type « volume physique pour le chiffrement », occupant tout l’espace restant. Saisir la clé de sécurité qui sera demandée au démarrage de l’ordinateur pour déchiffrer le disque dur.
6. Un disque virtuel, contenant une seule partition de type ext4 , apparait alors, sous le nom /dev/mapper/xxx_crypt.
7. Choisir Btrfs comme système de fichier à la place de ext4, avec le point de montage « / ». Pour cela, sélectionner la partition, puis cliquer sur le bouton « modifier ».
8. Les différentes partition de votre système doivent correspondre à la capture d’écran ci-dessous. Cliquer alors sur « installer maintenant », et procéder à la suite de l’installation. Dans le cas d’une erreur, il est plus sage de redémarrer et de recommencer l’installation, l’installateur pouvant avoir un comportement erratique si l’on recommence l’installation après avoir déjà créé une partition chiffrée.
9. C’est terminé ! A chaque démarrage, l’écran suivant demandera le mot de passe permettant le déchiffrement du disque dur :
Cette procédure laisse par contre l’utilisateur sans espace d’échange (swap) configuré. Je n’ai pas encore expérimenté sur le sujet, mais la mise en place d’un fichier de swap (swapfile) sur une partition btrfs est assez bien documentée ( par exemple, ou encore ) , je me pencherai sans doute dessus à l’avenir.
Jan 03 2021
Cet article résume le process nécessaire pour compiler Marlin en ligne de commande sous Linux avec PlatformIO Core.
2. Ajouter PlatformIO au PATH local :
export PATH=$PATH:~/.platformio/penv/bin
3. Récupérer le code source de Marlin.
4. Si on récupère le code source officiel (et pas une version déjà customisée pour une machine spécifique ), récupérer les fichiers de configuration dans le dépot git MarlinFirmware/Configurations, et copier les fichiers de configuration adéquat dans le dossier Marlin / Marlin /
5. Se placer dans le dossier Marlin ( contenant platformio.ini ).
6. Identifier la valeur de MOTHERBOARD, en gras dans l’exemple ci dessous, à partir du fichier Configuration.h. ( pour une carte BTT SKR E3 MINI V2.0 )
$ cat Marlin/Configuration.h | grep MOTHERBOARD
#ifndef MOTHERBOARD
#define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0
If not defined the default pin for the selected MOTHERBOAR
7. Identifier les environnements PlatformIO compatibles à partir du fichier pins.h ( attention à supprimer le BOARD dans la valeur de MOTHERBOARD ):
$ cat Marlin/src/pins/pins.h | grep BTT_SKR_MINI_E3_V2_0
elif MB(BTT_SKR_MINI_E3_V2_0)
#include "stm32f1/pins_BTT_SKR_MINI_E3_V2_0.h" // STM32F1
env:STM32F103RC_btt env:STM32F103RC_btt_512K
env:STM32F103RC_btt_USB env:STM32F103RC_btt_512K_USB
8. Compiler avec l’environnement adapté ( dans mon cas gestion de l’USB mais pas 512K de ROM ) :
$ platformio run -e STM32F103RC_btt_USB
9. Récupérer le fichier firmware.bin à l’emplacement suivant :
.pio/build/STM32F103RC_btt_USB/firmware.bin
10. Le copier sur une carte SD ( sans altérer son nom ), et la mise à jour s’effectue à la mise sous tension de l’imprimante. Le fichier sera alors renommé en FIRMWARE (sans extension).
11. Si présence d’un fichier EEPROM.DAT sur la carte SD lors de la mise à jour firmware, le contenu de l’EEPROM (calibration, réglages) sera écrasé.
Déc 15 2020
Il s’agit d’un petit logiciel que j’ai développé sous Qt, facilitant la calibration d’un écran tactile / tablette graphique, notamment quand l’écran en question est un écran secondaire
Oct 11 2020
Sur ces machines, la ventilation est réalisée en 3 canaux séparés
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.
Sep 13 2020
Installation réalisée sous Linux Mint 20 avec un kernel 5.4
Une distro 64bit fonctionne parfaitement. Se référer à mon précédent article https://pila.fr/wordpress/?p=1078
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
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
Mai 08 2020
Cet article décrit très rapidement la procédure que j’ai suivie ( durant de nombreuses heures de tatonnements ) afin de mettre en place sous Linux Mint un environnement de développement pour stm32f042 basé sur QtCreator, stm32plus et OpenOCD, permettant de s’affranchir des logiciels ST.
Cloner le dépot git situé à l’URL suivante :
https://github.com/andysworkshop/stm32plus
Installer les dépendances nécessaires :
$ apt install libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib scons gdb-multiarch cmake
Compiler la bibliothèque stm32plus : Exécuter la commande suivante dans le dossier stm32plus en modifiant si nécessaire le type de MCU, le mode ( fast, small ou debug ) ainsi qu’en précisant la fréquence en Hz de l’oscillateur interne ou externe utilisé (paramètre hsi ou hse)
$ scons mode=debug mcu=f042 hsi=8000000 -j4
Installer la bibliothèque compilée :
$ sudo scons mode=debug mcu=f042 hsi=8000000 -j4 install
Corriger les problèmes de stm32plus avec CMake :
Dans le dossier /usr/local/arm-none-eabi/lib/stm32plus-040100
Pour éviter un problème de fichier non trouvé, éditer le contenu du fichier stm32plus-config.cmake pour ne conserver que les 2 premières lignes ( copiées ci dessous )
include(${CMAKE_CURRENT_LIST_DIR}/stm32plus-config-${STM32PLUS_CONFIGURATION}i.cmake
OPTIONAL RESULT_VARIABLE STM32PLUS_CONFIG_FILE)
Modifier le fichier stm32plus-config-debug-f042-8000000i.cmake ( modification à répéter pour chaque version de stm32plus compilée ) : ajouter --specs=nosys.specs
aux variables CMAKE_C_FLAGS et CMAKE_CXX_FLAGS.
Répéter éventuellement avec les autres modes pour disposer de la bibliothèque compilée pour chaque mode
Récupérer l’exemple de compilation avec CMake fourni avec stm32plus dans le dossier stm32plus/cmake/example
Dans QtCreator : Aide -> Plugins, activer « BareMetal », et redémarrer QtCreator
Dans les options de QtCreator, catégorie « Appareils Mobiles », onglet « Bare Metal », cliquer « Add » et sélectionner « OpenOCD », remplir ainsi :
Name : OpenOCD for STM32F042
Startup mode : Pipe mode
Executable file : openocd
Root script directory : /usr/share/openocd/scripts
Configuration file : /usr/share/openocd/scripts/board/st_nucleo_f0.cfg
Puis cliquer sur Appliquer
Dans les options de QtCreator, catégorie « Appareils Mobiles », onglet « Périphériques », cliquer « Ajouter » et sélectionner « Bare Metal Device », remplir ainsi :
Nom : STM32F042
GDB Service Provider : OpenOCD for STM32F042
Cliquer sur appliquer
Dans les options de QtCreator, catégorie « Kits », Onglet « Debugger », cliquer sur « Add » et remplir les champs suivants :
Name : GDB Multiarch
Path : /usr/bin/gdb-multiarch
Cliquer sur Appliquer
Dans les options de QtCreator, catégorie « Kits », Onglet « Kits », cliquer sur « Ajouter » et remplir les champs suivants :
Nom : STM32F042
Device type : Bare Metal Device
Device : STM32F042
Compiler C : GCC (C, arm 32 bits in /usr/bin)
Compiler C++ : GCC (C++, arm 32 bits in /usr/bin)
Debugger : GDB Multiarch
Qt Version : None
Cmake tool : System CMake at /usb/bin/cmake
CMake Configuration : cliquer sur « change », puis supprimer la ligne commençant par CMAKE_PREFIX_PATH
Cliquer sur appliquer
Se rendre dans le dossier où l’on a précédemment copié l’exemple CMake fourni avec stm32plus
Ouvrir le fichier CMakeList.txt avec QtCreator, et sélectionner le kit STM32 précédemment créé.
Editer le fichier CMakeList.txt pour refléter le MCU utilisé ainsi que le mode ( fast, small ou debug ) de compilation de stm32plus à utiliser. Spécifier aussi la fréquence de l’oscillateur, suivi de la lettre i ou e pour un oscillateur interne ou externe.
Dans mon cas, ce dossier était inexistant, j’ai copié le dossier system depuis l’example Blink ( sans CMake ), dans lequel j’ai renommé le dossier f042_48_8 en f042.
Renommer le fichier system/f042/startup.asm en system/f042/startup.s. Modifier le fichier CMakeList.txt pour refléter ce changement.
Dans la catégorie « Projet », sélectionner la variable CMAKE_PREFIX_PATH, et cliquer sur « unset », puis « Apply configuration change ». La variable doit se remplir avec le contenu suivant :
/usr/local/arm-none-eabi;/usr/arm-none-eabi
Dans QtCreator, Menu « Compiler », cliquer sur « Executer CMake ».
Il est maintenant (enfin) possible de compiler et de débugger le projet 🙂
Commentaires récents