Borg, Kopia, Restic: a comparison

[This is the English translation by DeepL]
[Version originale en français]

I've been using Borg Backup for several years now. However, at the end of 2023, I encountered major problems with the backup of one of my machines. So I decided to explore alternative solutions. A quick search revealed two solutions that were relatively equivalent to Borg Backup: Restic and Kopia.

In the absence of a comparison of these three solutions (there is an "old" comparison between Borg and Restic, but it doesn't go as far and doesn't mention Kopia), I decided to carry out some tests myself, to be able to compare simple metrics common to all three software packages.

Finally, once a regular backup is automated, the important metrics for me are: backup duration, network exchange volume and storage volume on the backup server. Similar metrics are worth exploring for backup restore operations and backup server maintenance operations.

My test environment consists of the following components:

  • client: macmini M2 Pro running macOS 13.6.3, 32 GB RAM
  • backup server: Intel(R) Core(TM) i3-3220T-based PC, running FreeBSD 14, 16 GB RAM, ZFS storage on SSD
  • switched 1Gbps ethernet network
  • Splunk instance to ingest logs and produce statistics and graphs

To make sure I was working with representative data, I decided to back up part of my user directory. I've excluded a huge directory of digital photos that rarely changes, as well as numerous cache directories that it's not relevant to back up. The final size of my backup target is around 140GB.

I based my backup protocol on my experience with Borg. However, as each software has its own specificities, it took some time to document and adapt. In spite of these preparations, the backup process did have a few surprises in store for me.

Backups were automated using a single bash script, which launched the creation of backups via Borg, Restic and Kopia in random order. I had in mind that the first backup task would be potentially penalized by access to files on the client workstation that were not in the system cache, but after 15 days of testing, I found that there was no visible difference in backup time attributable to the order of the backup tasks. I therefore subsequently decided to freeze the order of backup jobs, which also makes it much easier to track metrics.

The client machine has scheduled sleep periods at night. During these sleep periods, no backup takes place. In addition, the script is scheduled in Launchd by setting the StartInterval argument to 3600 seconds. Unlike a crontab schedule, for example, this one ensures an incompressible delay of one hour between two script executions. In other words, one hour must elapse between the end of the previous execution and the start of the new one. This means that the script is actually run just under once an hour. For example, if each execution lasts 5 minutes, then it takes 26 hours, not 24 hours, to run the script 24 times.

Important note: I'm not going to go into detail in these articles about the differences in the software's ergonomics, the availability or otherwise of a graphical management interface, etc. Some of the solutions presented here have several different graphical interfaces, the functionalities of the three products vary, and I don't wish to make a catalog comparing each software point by point.

Here's the table of contents of my comparison. The link to each article will become active upon publication.

Related posts

Borgbackup: it’s complicated

As I wrote in a previous article, I'm using Borgbackup to back up some servers and workstations. And most of the time it's going OK. Unfortunately, when it's not OK, it can be very (very) hard to recover. Spoiler alert: one of my backup repositories had a problem, it took me 16 days and 1131 connections to the repository to fix it.

Few weeks ago, I've noticed that the Borg repository for the backups of my MacBook Pro was holding way too many backups. The pruning process was not doing its job properly. So I’ve started to investigate, and discovered that every attempt to prune older backups failed.
Trying to check the repository failed too: every single time the connection was reset. Apparently the remote server was dropping the SSH connection after a while (between 20 and 90 minutes). Client-side the error message was Connection closed by remote host.
I started to wonder if the problem was the very large number of backups, so I tried to delete backups manually. Some of them were easy to delete but most of the older backups needed delete --force and even delete --force --force, which is pretty bad.
Basically, I destroyed two years worth of backups, but it was still impossible to check and repair the repository. Also, the use of --force and --force --force makes it impossible to reclaim the space until you repair the repository.

Digging in the (mis)direction of a connection problem I’ve tried everything I could. It failed every single time:

  • tune ClientAliveInterval and ClientAliveCountMax server-side
  • tune ServerAliveInterval and ServerAliveCountMax client side
  • using and not using multiplexed ssh connections
  • moving the client to another physical network
  • using caffeinate to launch the borg command
  • using Amphetamine
  • upgrading ssh on the client
  • upgrading borg
  • giving mosh a try (nope)
  • running ssh with -vvv
  • using ktrace server-side to find the cause

None of this helped at all. Not to find a cause, not to make it work properly.
Eventually I stumbled upon this blog post: Repair Badly Damaged Borg Repository.

The repair method described failed too:
- step check --repair --repository-only worked
- but check --repair --archives-only died with the same Connection closed by remote host.
As a workaround attempt I’ve scripted a loop that would do check --repair --archives-only on every archive individually (~630).
After 3 full days and more than 600Go transferred from the repo to the client, every archives were checked and none was faulty.
Next step was to attempt check --repair again on the whole repository. About 15 hours later the output was

2851697 orphaned objects found!
Archive consistency check complete, problems found.

Full working solution for me:

export BORG_CHECK_I_KNOW_WHAT_I_AM_DOING=YES 
borg check -p --repair --repository-only LOGIN@HOST:/path/to/repo
borg -p list LOGIN@HOST:/path/to/repo | awk '{print $1}' > listborg
cat listborg | while read i; do 
	borg -vp check --repair --archives-only LOGIN@HOST:/path/to/repo::$i
done
borg -p check --repair LOGIN@HOST:/path/to/repo

Final step was to reclaim space on the server with compact:

$ borg compact -p --verbose path/to/repo/
compaction freed about 376.22 GB repository space.

Boy that was painful!

I’m pretty sure it’s not really an ssh issue. Something is causing the connection to drop but I have ssh connections opened for days between that client and that server, so I guess ssh is not the problem here. Also, borgbackup’s github is loaded with issues about failing connections. In the end it boils down to:
- borg repositories can break badly without warning
- repairing a repo might not worth the bandwidth/CPU/IOs

Related posts

Littérature de l’imaginaire et altérité (2)

Dans un article précédent, j'ai abordé l'altérité au travers des textes de Jemisin, Okorafor ou Chambers. Il existe une autre forme d'altérité : la jeunesse. Si on s'intéresse un peu à la question, on s'aperçoit que la jeunesse est confrontée aux mêmes traitements et discriminations que les femmes dans les sociétés inégalitaires. Finalement, pour une société patriarcale, le jeune est un «autre» qui ne mérite pas sa voix au chapitre. La jeunesse est une population dont il faut freiner les instincts, qu'il faut domestiquer, remodeler à son image pour se perpétuer soi-même.
On trouve dans la littérature de nombreux textes qui abordent l'opposition entre la jeunesse et un certain ordre établi ou le remplacement des vieux par les jeunes. Je vais légèrement forcer le trait ici : pour ma part le roman Je suis une légende de l'auteur Richard Matheson en est un parfait exemple. Remanié dans une version contemporaine il pourrait très bien être intitulé Je suis un Boomer : un héros vieillissant et de plus en plus isolé, lutte pour sa survie dans un monde qui évolue inexorablement. À la fin, il meurt, effacé par la nouvelle génération. Cette interprétation fonctionne parfaitement avec le roman original, et il est assez remarquable que la dernière version produite par Hollywood nous donne un film qui raconte exactement l'inverse. Le héros, incarné par Will Smith, n'est pas si isolé que cela et, surtout, il semble avoir fait la découverte nécessaire pour renverser la situation et rétablir l'ordre initial : la société des Boomers est sauvée.
Dans un certain sens, le roman de Maïa Mazaurette Rien ne nous survivra : le pire est avenir pourrait être vu comme une sorte de prequel à Je suis une légende, mais vu de l'autre bord. L'autrice y présente la lutte désespérée de la jeunesse pour prendre — les armes à la main — sa place dans un monde de vieux. Les vieux doivent mourir, il n’y a pas d’alternative. Mazaurette y décrit le sentiment d'urgence pour la jeunesse de vivre pleinement sa vie, sans se la voir dictée par les vieux. Tout y est poussé à l'extrême, rendu viscéral. D'une violence parfois inouïe, ce roman m'a fait m'interroger sur ce qui peut pousser la jeunesse à une telle révolte, sur ce qui, dans nos sociétés, dysfonctionne à ce point.

Dans un style très différent, les romans de Sabrina Calvo Toxoplasma et, surtout, Melmoth furieux mettent aussi à l'honneur la jeunesse. Elle y établit clairement qu'un jeune — voire un enfant — n'est pas un personnage secondaire, c'est une personne entière avec laquelle il faut compter et qu'il faut accompagner plutôt que forcer dans un moule. Suivre plutôt que guider, le droit à l'autodétermination est au cœur des préoccupations de l'autrice dont les deux romans se déroulent dans une Commune assiégée. Contrairement à Mazaurette, Calvo n’oppose pas les âges, les générations. Son style est aussi positif, enjoué, porteur d'espoir : tout l'inverse du roman de Mazaurette. Les deux autrices se rejoignent dans la manière dont les candidats à l'autodétermination se retrouvent oppressés, harcelés, éliminés par les représentants d’un l'ordre établi.

Related posts

LG Ergo DualUP, premières impressions

Le LG Ergo DualUP est un écran vraiment atypique qui me faisait de l'œil depuis l'annonce de sa sortie, fin 2021. L'écrasante majorité des écrans vendus actuellement est malheureusement en format cinéma, ce qui ne me convient absolument pas : je ne regarde pas de film/série sur mon écran d'ordinateur, je travaille souvent sur de longues fenêtres de texte (tableurs, liste de mails, terminal UNIX, fichiers de log, etc.) et j'ai de longues séances de tri et retouche photo majoritairement en orientation portrait. Bref pour moi l'écran idéal est plutôt carré et en aucun cas un écran très allongé à l'horizontale ou à la verticale.
Photo de l'écran Ergo DualUP affichant une vue du jeu vidéo Sable

Avec un format rectangulaire en portrait, 2560 x 2880 pixels, il offre une surface de travail parfaite pour la photo et toutes les activités sus-mentionnées. Il est monté sur un pied articulé avec passe-câbles qui permet une installation confortable et "propre". Par contre la résolution est bien plus fine que sur mon écran précédent si-bien que j'ai du augmenter sensiblement la taille des polices de caractères dans tous mes logiciels et passer Firefox a un zoom par défaut de 130%.

Pour le moment je prends mes marques avec l'engin. Notamment je ne sais pas encore si je vais le garder en portrait ou le basculer en paysage (rotation de 90° vers la gauche).

Points forts :

  • la forme de la surface de travail, totalement géniale
  • la connectivité (j'ai pu connecter mon mac en USB-C, mon PC windows en DP + HDMI et mon PC FreeBSD en HDMI)
  • le mode Picture above Picture qui permet d'afficher deux sources vidéo l'une au dessus de l'autre (comme 2 écrans 2560 x 1440 pixels superposés)
  • le bras Ergo

Points faibles :

  • le passe-câble est trop étroit pour les 6 câbles que j'ai forcés dedans, j'ai du mettre des serre-flex pour le maintenir fermé
  • les sorties USB sont derrières et non sur le côté ce qui les rend inaccessibles pour un usage du quotidien (type clé USB occasionnelle)
  • orienté en paysage le mode PaP n'est plus vraiment utilisable et n'offre aucun intérêt
  • le mode PaP ne semble pas vouloir retenir la configuration en mémoire, nécessitant à chaque activation un petit travail de re-paramétrage dans l'OSD de l'écran
Related posts

BÉPO or not BÉPO…

BÉPO ?

Une fois de plus je vais parler clavier. Si vous atterrissez ici c'est sans aucun doute que vous en manipulez un de temps en temps. Il est probable que vous utilisez un clavier "AZERTY". Il existe plusieurs dispositions "AZERTY" différentes (française et belge, notamment). Pour bien faire la distinction il est donc préférable de faire référence au format ISO-FR pour un clavier normal français : lettres dans l'ordre azertyuiop, touche entrée en L inversé, etc. Les dispositions de référence sont listées et expliquées ici.

Bref, votre clavier est probablement dans une disposition commerciale très classique et répandue. Pour la plupart, ces dispositions sont aussi assez anciennes (fin 19ème siècle pour l'AZERTY). Elles ne sont pas toujours très adaptées à la langue pour laquelle elles ont été conçues. Depuis longtemps, des dispositions alternatives existent, avec pour ambitions de simplifier ou accélérer la saisie, de diminuer la fatigue des mains, etc. On peut citer par exemple la disposition Dvorak (1930), le "nouvel AZERTY" publié dans la norme AFNOR NF Z71-300 en 2019, ou encore le BÉPO dont une variante est intégrée à la même norme AFNOR et dont il va être question ici.

En attendant de voir si le nouvel AZERTY parvient à percer un jour, l'alternative BÉPO offre une belle ergonomie et a le mérite d'être presque trouvable dans le commerce pour qui sait chercher. Par ailleurs la couche logicielle existe pour la majorité des systèmes d'exploitations (Windows, macOS, Linux et BSD*).

Menu de choix de la disposition du clavier sous macOS après installation de la disposition BÉPO

Menu de choix de la disposition du clavier sous macOS après installation de la disposition BÉPO


Passant des journées entières devant mon clavier tout en n'ayant pas nécessairement une vitesse de frappe astronomique, il m'a semblé intéressant de tester la disposition BÉPO en vrai dans mon quotidien. Cela passera bien évidemment par une phase d'apprentissage et d'entraînement assez longue (les gens parlent de plusieurs mois avec un entraînement quotidien).

Le clavier

J'aurai pu apprendre à moindre frais sur mon clavier actuel : c'est en effet la partie logicielle installée sur l'ordinateur qui converti le signal envoyé par le clavier en lettre à l'écran, la légende de la touche en plastic n'a aucune importance. Donc en activant la disposition BÉPO sur mon système je peux apprendre à taper en BÉPO à condition de ne pas me fier aux légendes imprimées sur les touches. Je voulais plus que ça, j'ai donc investi dans un clavier que je vais dédier à cet usage, l'occasion aussi pour moi de tester un autre format de clavier (75%) et des interrupteurs (switches) tactiles, là où mes claviers actuels ont des switches linéaires. Bref, une expérience à 360° comme disent les gens 2.0.

switches rouge (linéaire), bleu (clicky) et marron (tactile) sous les touches d'un clavier Keychron. Photo © Keychron

switches sous les touches d'un clavier. © Keychron

Mon clavier BÉPO est construit sur une base de Keychron K2 Pro ISO-FR. Ce modèle dispose de switches de touches interchangeables sans soudure, ce qui m'a permis de remplacer ceux d'origine (très bruyants) par un modèle assez silencieux (Gazzew Boba U4). Il est aussi programmable (logiciel VIA), ce qui a une certaine importance puisque j'ai du modifier l'emplacement de quelques touches.
Le kit de touches (les bidules en plastic qui sont fixés sur les switches et sur lesquels on appuie pour taper du texte), est issu d'un "group buy", une procédure de fabrication par achat groupé. Il s'agit de la variante Bépoléon du KAT Napoleonic.

Photo du clavier Keychron K2 Pro avec le jeu de touche KAT Napoleonic en variante Bépoléon

Enseignements en vrac

La vie serait trop simple si elle n'avait pas son lot d'imprévus et de surprises et avant même d'avoir tapé mon premier email sur ce nouveau clavier j'ai essuyé quelques plâtres (dont un seul est lié à BÉPO) !

Silence relatif

Habitué aux switches linéaires "MX silent red" d'usine j'avais une certaine idée de ce que peut être le silence d'un clavier mécanique non personnalisé (quelque chose d'extrêmement relatif). Mais à force de lire sur les forums spécialisés que les MX sont dépassés, qu'il existe des switches bien meilleurs, plus innovants, plus silencieux, etc. On finit par y croire. C'est ainsi que je me suis penché sur la question : comment trouver des switches tactiles ET très silencieux qui ne coûtent pas un bras ? J'ai choisi les Gazzew Boba U4 qui ont fort bonne réputation. Je dois avouer que j'étais loin d'imaginer le résultat : finalement, en terme de silence ces switches semblent faire à peine mieux sur le Keychron que les MX silent red sur mes Vortex Tab90M. Par contre (et là aussi c'est une découverte pour moi), le Keychron avec les Gazzew Boba U4 est incroyablement plus silencieux que le Keychron avec les switches d'origine. Et pris sous cet angle, je comprends mieux que les Gazzew reçoivent autant de louanges.

Remplacement des switches

Le démontage des switches quant à lui a été assez douloureux. Une moitié environ a pu être extraite rapidement et sans effort avec l'outil fourni. L'autre moitié par contre a été très pénible à extraire, m'occasionnant de vives douleurs dans les extrémités des doigts à cause de l'ergonomie très frustre de l'extracteur métallique.

Interférences radio

Le K2 Pro peut fonctionner en filaire (USB-C) ou en Bluetooth. Après une charge partielle de la batterie j'ai testé la connexion Bluetooth du clavier. L'appairage se fait très simplement et rapidement sur macOS mais presque immédiatement j'ai entendu dans mes enceintes un vrombissement électronique caractéristique d'une interférence radio. Après différents tests j'ai pu déterminer que c'est la proximité de mon Mac Mini avec une de mes enceintes qui cause cette interférence désagréable quand le clavier est connecté en Bluetooth. Heureusement ce n'est pas le clavier.

Disposition et modification des touches

La connexion du clavier au logiciel VIA (en ligne dans un navigateur) n'est pas évidente pour le K2 Pro, il faut ruser un peu mais tout est expliqué sur le site de Keychron. Une fois qu'on a fait les bonnes manipulations c'est un jeu d'enfant de bricoler l'affectation des touches, de créer des macros, de personnaliser le rétroéclairage (je l'ai éteint), etc. Je ne pensais pas avoir besoin de personnaliser immédiatement la configuration du clavier, mais j'ai découvert en installant les touches KAT Napoléonic que Keychron a pris l'initiative déplorable de ne pas mettre les touches home/page up/page down/end dans l'ordre canonique dans la colonne tout à droite du clavier. Ils ont choisi l'ordre page up/page down/home/end si bien que sur un kit de touches alternatif comme le KAT Napoleonic, je n'avais pas les bonnes touches au bon endroit (les touches ont un profil qui dépend de leur emplacement sur le clavier, une touche qui n'est pas placée sur la bonne ligne n'aura pas la même forme que ses voisines). En réaffectant la touche home là où Keychron avait placé page up, page up à la place de page down et page down là ou se trouvait home, l'ordre était rétabli et j'ai pu placer les bonnes touches aux bons emplacements dans le respect de leur profil respectif.

Impact de BÉPO sur les Yubikeys et autres périphériques de type clavier

Jouer avec la disposition de clavier dans le système de son ordinateur peut occasionner quelques surprises. Une chose qui m'avait totalement échappé c'est la question des clés d'authentification comme les Yubikeys. J'en utilise de nombreuses, aussi bien à titre personnel que professionnel, en majorité pour du mot de passe statique (la clé tape à ma place un mot de passe fixe qui est enregistré dedans) et comme second facteur d'authentification avec l'OTP Yubico (la clé tape un mot de passe différent à chaque fois, vérifiable grâce à des éléments cryptographiques). Dans les deux cas, la clé se comporte exactement comme un clavier : elle envoie au système un code pour chaque caractère que l'on peut schématiser par l'exemple "2ème touche de la 3ème ligne". Cet exemple sur un clavier américain donnerait le caractère q, sur un clavier français le caractère a et sur un clavier BÉPO le caractère b. Yubico a bien fait les choses, et dans la majorité des cas, avec les réglages normaux, la clé envoie des suites de codes qui ont la particularité de correspondre au même caractère sur les claviers américains et européens standards. Ce n'est pas magique, ils ont simplement limité leur liste de caractères utilisables à la liste des caractères que ces différents claviers ont en commun (par exemple la lettre c qui est au même endroit partout). Ainsi, quand votre système est réglé pour un clavier anglais et que vous actionnez votre Yubikey pour entrer un OTP Yubico ou un mot de passe statique il y a toutes les chances pour que cela donne le même résultat que si vous réglez votre système pour un clavier français. Malheureusement la disposition BÉPO est tellement différente qu'elle n'a aucun caractère placé au même endroit que les autres dispositions, à part les chiffres. L'OTP Yubico ne peut donc nativement pas fonctionner sur un système réglé en BÉPO. Yubico indique qu'il est recommandé de basculer son système en disposition de clavier US avant de déclencher l'OTP ou le mot de passe statique puis de revenir à sa disposition habituelle. Cela fonctionne, bien sûr, mais peut être assez pénible. L'alternative est de forcer la configuration de la clé pour qu'elle convertisse ce qu'elle envoie pour que les codes correspondent à une disposition spécifique. Cela fonctionne avec BÉPO mais impose une limitation importante : la clé ne fonctionnera plus correctement si le système est réglé dans une autre disposition de clavier, donc l'utilisation de la même clé sur un ordinateur ou un smartphone qui n'est pas le mien ne serait plus possible à moins que la disposition BÉPO ne soit disponible et active sur l'appareil.

Related posts

Littérature de l’imaginaire et altérité

Gros fan de science fiction et de fantastique depuis mon plus jeune age, j'ai été bercé très majoritairement par la production littéraire d'hommes blancs et anglo-saxons, souvent d'un certain age, voire morts de longue date : H. P. Lovecraft, Richard Matheson, Poul Anderson, P. K. Dick, Tim Powers et des tonnes d'autres. Les exceptions dans ce qui fut mon "corpus fondateur" se comptent sur les doigts d'une main (Kage Baker, Connie Willis et quelques autres). C'est ainsi qu'on construit un regard sur le monde qui contient ses propres limites.
Heureusement, depuis quelques années les voix de l'altérité sont un peu plus fortes chaque jour, peut être grace à leur fédération au travers des réseaux sociaux. La visibilité internationale des mouvements #Meetoo et "Black Lives Matter" en 2017 et 2020 m'a cueilli au bon moment. Travailler dans une Université de Sciences Humaines et Sociales aide aussi pas mal à réviser son regard sur le monde mais tout ça n'aurait peut être pas donné grand chose si autour de la même période un ami ne m'avait fortement encouragé à lire Les Livres de la Terre fracturée de N. K. Jemisin.
Cette trilogie a été une révélation pour moi. Jemisin n'y fait pas grand cas de la couleur de peau des personnages. Elle est mentionnée en de rares occasions et sans insistance, si bien qu'un lecteur blanc comme moi peut assez facilement passer une bonne partie de l'histoire à se représenter des personnages qui lui ressemblent, pour se voir rappeler quelques centaines de pages plus loin que non, la plupart ne sont pas blancs. Comme Jemisin fait le coup plusieurs fois je suis passé de "ha tiens, j'avais pas fait attention" à "mais c'est quoi mon problème, là ?". Ce début de prise de conscience s'est accompagné d'un flash back d'une myriade de choses lues ou entendues sur la représentation et l'invisibilisation, que j'avais comprises sur le plan intellectuel sans les avoir vraiment intégrées. L'autrice m'a transmis au travers de ces romans l'impulsion nécessaire pour intégrer réellement ces problématiques.

Comme cette trilogie est une réussite flamboyante, il m'en fallait encore. J'ai donc attaqué Genèse de la Cité, premier tome de la trilogie Mégapoles. Cette fois, Jemisin retourne totalement son procédé narratif : elle s'appuie avec insistance, page après page, sur la couleur, l'origine, l'orientation sexuelle, etc. de ses personnages pour plonger le lecteur dans la représentation du monde qu'elle a décidée, et pas une autre. Elle en profite pour se payer une tranche de Lovecraft à mi-chemin entre la critique bien sentie et l'hommage, c'est assez jubilatoire.

D'autres autrices contemporaines sont aussi fer de lance d'une certaine altérité. Au nombre de mes lectures on trouvera Binti, premier tome d'une série de SF écrite par Nnedi Okorafor (rattaché au courant Afrofuturisme). La série de romans Les Voyageurs de Becky Chambers offre une SF féministe, à la limite du Space Opera par moment, qui prone l'acceptation et la reconnaissance avec une teinte LGBTQIA+.

On trouve aussi des autrices françaises sur ce terrain comme Sabrina Calvo ou, un peu plus loin, Maïa Mazaurette, mais ces deux-là méritent un article à part.

À suivre.

Related posts

De la qualité de l’air

Capteur de CO₂ Aranet4 vu de faceLa pandémie de COVID-19 a mis en lumière de nombreux éléments de notre quotidien auxquels nous n'étions pas habitués à prêter attention : l'impact des différents gestes "barrière" sur la transmission, mais aussi le traitement que l'on applique (ou pas) à notre air intérieur.
En raison de l'activité humaine, la quantité de CO₂ dans l'air dans une concentration urbaine de bonne taille se situe autour de 400 à 450 ppm. En milieu clos la concentration mesurée va dépendre de l'activité, du nombre de personnes et de la qualité de l'aération. Si on exclut les cas où le CO₂ est produit par les plantes et des activités artificielles (gazinière par exemple) alors le CO₂ que vous mesurez dans une pièce peut être corrélé à la quantité d'air sortant des poumons des mammifères présents et passés dans la pièce.
Pour faire simple, une valeur haute montre un déficit d'aération et donc votre risque de contamination peut augmenter et vos capacités cognitives baissent.
"Pour la science" et parce que je suis un irrécupérable geek, j'ai décidé de tester trois capteurs permettant la mesure en continu du taux de CO₂ dans l'air ambiant. J'ai choisi trois appareils tout-faits donc utilisables par le grand public presque sans aucune connaissance technique.

Caractéristiques générales

Aranet4 Home Mini Carbon Dioxide Monitor SCD4x CO₂ Gadget
affichage écran e-ink écran à crystaux liquides 1 LED
historique 7 jours sans 8192 mesures
interface utilisateur app iOS et Android bouton unique app iOS et Android
données CO2, température, humidité, pression atmosphérique CO2 CO2
alerte son et visuel son et visuel visuel (LED rouge)
accès distant Bluetooth sans Bluetooth
source d'energie 2 piles AA batterie interne port USB
autonomie quelques mois à plusieurs années 7 heures sans
prix 261,60 € 64,90 € 71,92 €

(les prix s'entendent TTC et frais de port inclus)

Bilan des expérimentations

J'ai utilisé ces capteurs en conditions réelles : maison, travail, transport, cinéma, etc. Ils utilisent tous trois la technologie NDIR (non-dispersive infra-red) aussi je m'attendais à ce qu'ils fournissent tous des mesures similaires. Ce n'est pas le cas, mais finalement ce n'est pas forcément ce qui retient l'attention à la fin de la journée.

Mesures

Sur la qualité des mesures, les capteurs Aranet4 Home et SCD4x CO₂ Gadget (Sensirion) sont ceux qui donnent les meilleurs résultats : ils sont très proches l'un de l'autre avec un écart qui dépasse très rarement les 50 ppm. En comparaison le Mini Carbon Dioxide Monitor (MCDM) sous-évalue la concentration de CO₂ de 160 à 200 ppm.
Le gagnant de cette catégorie est le modèle Aranet4 qui propose en plus du CO₂ une mesure de la température, de l'humidité et de la pression.

Ergonomie

Capteur de CO₂ avec son mousquetonL'ergonomie se mesure à l'aune des usages de chacun. J'attache pour ma part une grande importance à la qualité des interactions avec les appareils et je n'aime pas la friction dans l'usage quotidien. Pour moi, c'est à nouveau l'Aranet4 qui remporte la palme avec son écran e-ink qui reste lisible tout le temps sans drainer les piles. Une fois paramétré via une application smartphone assez bien faite, plus besoin d'y revenir. C'est agréable.
Il tient aussi tout seul quand on le pose, ce qui n'est pas le cas du MCDM. Ce dernier n'est pas conçu pour être posé à la verticale. On peut le coucher mais cela bloque une partie de la circulation de l'air dans le capteur. L'ergonomie du MCDM est d'ailleurs une catastrophe avec un unique bouton pour tout faire : allumer, éteindre, sortir de veille, calibrer, activer ou désactiver les alertes sonores. Son maniement est pénible et déstabilise certains utilisateurs. Pour les fans de mobilité par contre, le MCDM est sans doute plus ergonomique puisque qu'il est conçu pour être accroché à la ceinture, à un sac, via un mousqueton métallique lourd et robuste.

Autonomie

Bien que clairement conçu pour la mobilité le MCDM pêche par une autonomie catastrophique, tout juste 7 heures. Si vous l'emmenez au travail le matin, il sera vide avant la fin de votre journée et devra être rechargé (câble USB-A vers USB-C fourni). En cause une batterie de taille modeste, le rafraîchissement très rapide des mesures et un écran LCD.
Le modèle Aranet4 dispose quant à lui d'une autonomie record avec juste 2 piles AA. L'écran e-ink y est pour beaucoup mais il ne faut pas oublier que la transmission des données se fait en Bluetooth ce qui est aussi consommateur. L'Aranet4 permet par contre de régler la fréquence de rafraîchissement des mesures ce qui a un effet important sur l'autonomie.
Le SCD4x CO₂ Gadget n'a pas de source d'énergie propre, il doit être branché sur un port USB-A pour être alimenté.
La palme revient évidemment à l'Aranet4 une fois de plus.

SCD4x CO₂ Gadget de sensirion avec sa boîte verte

Gestion des données

L'Aranet4 et le SCD4x CO₂ Gadget peuvent tous les deux stocker des données de mesure pendant un certain temps. L'Aranet4 annonce une rétention de 7 jours, le SCD4x CO₂ Gadget annonce un nombre de points de mesure (l'intervalle de temps entre deux mesures est réglable dans l'application). Les deux disposent d'une application de smartphone pour récupérer les données de l'historique. L'une comme l'autre permettent d'exporter les données, ce qui est sympa si vous souhaitez conserver un historique sur le long terme. Attention cependant, si le SCD4x CO₂ Gadget n'est plus alimenté il oubliera les données enregistrées. L'Aranet4 obtient à nouveau la première place, talonné de près par le SCD4x CO₂ Gadget, largement devant le MCDM qui ne gère aucun historique des mesures.

App et divers

L'Aranet4 et le SCD4x CO₂ Gadget sont tous les deux dépendants d'une application plutôt bien faite dans les deux cas. Ces applications permettent différents réglages sur les appareils ainsi que l'affichage et l'export des données enregistrées sur les appareils. L'Aranet4 et son application sont aussi sécurisés : il faut en effet explicitement apparier la sonde avec l'application au moyen d'un code (manipulation classique avec les appareils bluetooth). L'application permet en plus de mettre à jour le firmware de la sonde. Côté SCD4x par contre, pas de manipulation d'appariement. C'est un peu moyen en termes de sécurité. L'application vérifie aussi la version du firmware de la sonde mais je ne sais pas si elle propose un mécanisme pour pousser une mise à jour le cas échéant.

Podium

Pour moi, la première place revient à l'Aranet4 qui, en dépit d'un prix très élevé, apporte une véritable solution clé en main, complète, fiable et, autant que je puisse en juger, durable.
La seconde place revient au SCD4x CO₂ Gadget. Il est d'une grande simplicité, il est petit et performant ce qui le rend attractif malgré sa dépendance à une source de courant extérieure. Son application est bien faite et j'aime le sens du détail avec le quel tout est pensé (on peut régler l'intensité de la LED).
Bon dernier le Mini Carbon Dioxide Monitor, avec une batterie fixe dont l'autonomie est en contradiction totale avec son ambition de mobilité et qui a un impact très négatif sur la durée de vie probable du produit. Une qualité de mesure légèrement inférieure aux deux autres et une ergonomie affreuse viennent encore noircir le tableau. Mais c'est aussi un modèle très abordable compte tenu du fait qu'il utilise la technologie NDIR.
Je pense qu'il est important de souligner que bon nombre de capteurs de CO₂ vendus sur des sites comme Amazon sont basés sur des technologies très inférieures en termes de qualité et de performance. Certains sont aussi vendus avec la mention NDIR alors qu'ils n'utilisent pas cette technologie. Les trois capteurs que j'ai testés sont parmi les meilleurs dans l'offre grand public.

Si l'argent n'est pas un problème ou si vous avez absolument besoin d'un capteur autonome, lisible par tous, à poser dans un coin et à oublier, achetez un Aranet4.
Si vous voulez seulement un point de mesure fixe sans trop dépenser et que lire les mesures sur une app vous convient, achetez le SCD4x CO₂ Gadget de Sensirion.
Si vous avez besoin, quelques heures dans la journée, d'un capteur qui vous accompagne et qui soit capable de vous alerter très rapidement en cas de dépassement du seuil de CO₂ alors le format "accrochable" et la fréquence élevée de rafraîchissement du Mini Carbon Dioxide Monitor en font l'outil idéal.

photo du gadget de Sensirion branché sur un hub USB et de l'interface d'accueil de l'application de pilotage MyAmbience

SCD4x CO₂ Gadget branché sur un hub USB, écran d'un système sous macOS faisant tourner l'app iOS MyAmbience de Sensirion

Related posts

Rage against the Internet (a story of problem solving)

I am so pissed, right now, against the Internet. Its content is now so highly irrelevant and so motivated by easy profit (ads) that you can't find anything valuable when you try to solve a "common" tech problem.
It's like you are back to the pre-Internet days but you will still lose your sanity and you precious time on Earth googling for help. Infuriating.

Yesterday evening, I thought it would be a good idea to play few minutes with Airplay between my iPad (on WIFI) and my new LG TV (on Ethernet). I've tried it before, it worked instantly and it was great. Few minutes became +1h45 of fight.

As a professional Sysadmin I've started to list what could have changed between my initial flawless experience and this huge failure: iPadOS updates (can't roll back for testing), LG TV updates (can't roll back either), Pi-hole installation (can disable very easily). Disabling Pi-hole filtering yielded to zero progress. Then I've started asking Google with queries like "LG TV airplay stopped working" and so many variations I've lost the count.
Every single results page served the same crap to me:

"LG TV AirPlay Not Working (PROVEN Fix!)"
"Airplay Not Working on LG TV | Fix in Easy Methods [2022]"
"AirPlay Not Working on LG TV: How to fix - Blue Cine Tech"
"13 Fixes For LG TV Airplay Not Working - TV To Talk About"
"AirPlay Not Working on LG TV (Do This FIRST!) in 2022"
etc.

13 fixes? SERIOUSLY? All these web pages are clickbait copy-pasta of the same semi-automatically generated content that contradicts itself (one fix: you must absolutely use WIFI, other fix: use Ethernet if WIFI does not work…) and conveys false informations.
Internet is failing hard on people.

After more tests and thinking I knew something was going on in the background that was probably not related to Airplay: starting the Airplay mirroring from the iPad made the TV displaying a black screen with a message about an incoming Airplay connection from name of my device and a 4 digits code that I had to type onto the device. Entering the code yielded only to the iPad complaining about Airplay connection failure.

So, to be clear about that particular tech issue of mine and about Airplay in general:

  • Airplay works flawlessly on a mixed network (WIFI+Ethernet) as long as your devices are on the same network (192.168.0.0/24 for example).
  • Your devices don't have to be on the same WIFI network. Every one who writes the opposite is either lying, taking a huge shortcut, or is being clueless about Airplay.
  • I solved my problem by accepting "Viewing Information" item in the "User Agreements" panel of the TV. Those agreements are in blatant violation with the GDPR but I've neither time nor resources to start a legal fight with LG so I trick the TV with Pi-hole so whatever I consent to, they can't use or collect.

Full (unstable) trick:
- shutdown TV, remove power for 1 minute
- disable Pi-hole for 5 minutes
- re-plug TV, start TV
- go to settings>User Agreements
- check "Viewing Information", then hit the "Agree" button
- test Airplay: it works!
- ensure Pi-hole is active
- disable "Viewing Information" in the "User Agreements"
- TV says it must reboot to disable specific content you can access only if you agree blahblah…
- throw your best villain laugh as you watch the TV rebooting and coming back with a functional Airplay but no "Viewing Information" agreement.

Unfortunately this trick will no survive long (next morning Airplay was dead again). If I want a more simple and stable setup I must agree permanently to the "Viewing Information" item and follow this process:
- shutdown TV
- disable Pi-hole 30 or 60 sec.
- Start TV
- initiate Airplay from iPad
- For privacy's sake it's wise to reboot the TV when done with Airplay, to ensure full Pi-hole protection

I don't know what Apple would think of that totally artificial limitation LG has put in it's implementation of an Airplay client/target, but it looks fishy to me.

I probably should have titled this post "What they don't want you to know about Airplay on LG TV".

Related posts