Qu’est-ce qu’un firmware ou Micrologiciel et les mises à jour

Dans les systèmes électroniques et informatiques, on rencontre souvent le mot firmware que l'on traduit en français par micrologiciel.
Parfois, des fabricants utilisent le terme microcode de manière incorrect comme synonyme de micrologiciel.
Vous pouvez donc vous poser la question de savoir ce qu'est c'est et à quoi cela sert.

Ce tutoriel vous dit tout sur le firmware, à quoi cela sert et comment le mettre à jour.
Enfin des tutoriels pour mettre à jour le firmware de différents appareils (routeur, NAS, SSD, etc).

Qu'est-ce qu'un firmware (Micrologiciel)

Qu'est-ce qu'un firmware ou micrologiciel ?

Le micrologiciel est un programme logiciel ou un ensemble d'instructions programmé sur un périphérique matériel.
Il permet le fonctionnement d'un matériel comme une machine à laver, smartphone, routeur ou NAS.
Par exemple, il peut être en charge de la manière dont les LED vont s'allumer ou effectuer des tests des sous-composants du matériel.
Dans certains cas, il peut englober l'intégralité du système d'exploitation permettant à l'utilisateur d’interagir avec le matériel mais dans la plupart des cas, l'OS se trouve "à côté".

Le micrologiciel est généralement stocké dans la mémoire flash ROM (Read Only Memory) d'un périphérique matériel. Alors que la ROM est une «mémoire en lecture seule», la ROM flash peut être effacée et réécrite car il s'agit en fait d'un type de mémoire flash.
Mais cela est de moins en moins vrai. De plus en plus souvent, une image du micrologiciel doit être chargée dans la RAM du périphérique par un pilote de périphérique lors de l'initialisation du périphérique.
Il existe plusieurs raisons pour lesquelles les fabricants souhaitent utiliser la RAM au lieu de la mémoire flash. Tout d'abord, il permet de concevoir une seule version du matériel, mais en même temps de livrer plusieurs versions du produit (pour différentes zones de marché, par exemple).
Si le produit doit être fréquemment mis à niveau, il peut être plus facile de gérer les mises à niveau du micrologiciel de cette façon que de créer un programme de mise à niveau de la mémoire flash sur l'appareil. Ce programme doit avoir une interface utilisateur agréable et être conçu pour être aussi convivial que possible, car il est généralement destiné à être exécuté par l'utilisateur final du produit.
Certains appareils avec stockage flash exécutent souvent du code à partir de la RAM de toute façon, et ils copient simplement le contenu de la mémoire flash dans la RAM lorsque l'appareil est démarré, auquel cas la puce flash reste inactive la plupart du temps et représente une dépense supplémentaire.

Enfin, le fabricant du matériel propose des mises à jour du firmware qui peuvent corriger des failles logicielles, bugs ou apporter de nouvelles fonctionnalités.

Mettre à jour le firmware

Routeur ou box internet

Votre routeur ou box internet est fourni avec un firmware qui embarque un système d'exploitation embarqués.
Très souvent ce dernier se base sur Linux, principalement utilisé sur les appareils embarqués pour acheminer le trafic réseau.
On y trouve souvent des composants Linux tels que util-linux, musl, ou BusyBox.
Ainsi, le firmware gère toutes les fonctionnalités réseaux comme IPv4, IPv6, DNS, DHCP, routing, firewall, NAT, port forwarding et WPA.
Mais aussi d'autres comme le port knocking, UPNP, Wake-on-LAN, etc.

Les fabricants de routeur comme Linksys, Netgear ont leurs propres firmware propriétaire.
Mais on trouve aussi des firmwares open source comme DD-WRT, OpenWrt, Tomato, etc.
A noter que certains firmware comme OpenWrt fonctionnent aussi sur d'autres plateformes comme des passerelles résidentielles, les smartphones, les ordinateurs de poche et les ordinateurs portables.

NAS

Les NAS (Network Attached Storage) possède aussi un firmware en plus du système d'exploitation.
L’utilisateur peut alors effectuer à tout moment une mise à jour pour corriger des vulnérabilités ou obtenir de nouvelles fonctionnalités.

Mise à jour du micrologiciel d'un NAS

BIOS

Les PC possède aussi un firmware sous la forme d'un BIOS (Basic Input Output System).
Il remplit plusieurs rôle lié au matériel et composants hardware du PC.
Pour commencer, il stocke la configuration matérielle dans la ROM présente dans la carte mère.
C'est le BIOS qui effectue les différentes étapes d'amorçage du PC avant de donner la main au système d'exploitation.
Notamment, il vérifie le fonctionnement de chacun des composants matériels (processeur, carte graphique, mémoire RAM et disque dur/SSD).
Si un composant est considéré comme défectueux, il interrompt le démarrage du PC pour afficher un message d'erreur et des beeps au démarrage du PC.

Plus d'informations :

Enfin concernant la mise à jour du BIOS :

Firmware UEFI

UEFI (Unified Extensible Firmware Interface) est le firmware qui remplace le BIOS dans les cartes mères.
Tout comme le BIOS, c'est est une spécification pour un programme logiciel qui connecte le micrologiciel d'un ordinateur à son système d'exploitation (OS).
Cette nouvelle norme apporte beaucoup de nouveautés mais aussi plus de sécurité.
Notamment la méthode de démarrage du système d'exploitation est totalement revenu pour empêcher la falsification des bootkits.
De plus, l'UEFI ne fonctionne qu'avec des disques GPT.

Pour tout comprendre, suivez ce dossier complet :

Firmware dans les smartphones

Le micrologiciel dans les smartphones Android signifie maintenant le micrologiciel plus le système d'exploitation Android en plus.
Vous rencontrez également le terme ROM personnalisée.
Dans ce cas, la ROM ne signifie pas, dans ce cas, la mémoire en lecture seule, où le micrologiciel est stocké dans le matériel du smartphone. ROM personnalisée signifie une image de système d'exploitation personnalisée qui comprend également le micrologiciel nécessaire au fonctionnement du smartphone ou de la tablette Android.
Lorsque vous achetez un smartphone, il est livré avec une ROM d'origine ou un micrologiciel d'origine.
Cela fait référence au micrologiciel et au système d'exploitation préinstallés.
La ROM stock est fournie par le fabricant du smartphone (si vous l'avez acheté déverrouillé) ou par l'opérateur mobile auprès duquel vous avez un abonnement (si vous avez acheté un smartphone verrouillé).
L'opérateur mobile utilise la ROM stock proposée par le fabricant de votre smartphone et la modifie en fonction de ses intérêts, ce qui donne une nouvelle ROM stock que l'on ne trouve que sur les smartphones vendus par cet opérateur mobile.
Elle comporte donc une surcouche opérateur qui incluent des applications, paramètres et réglages propres.

Là aussi le système vous prévient par une notification quand une mise à jour du firmware ou du système d'exploitation est disponible.
On peut aussi vérifier dans les paramètres > Mise à jour logicielle.

Sur un SSD

Les SSD (Solid State Drive) sont des périphériques de stockage électroniques.
Ainsi, il embarque aussi un firmware qui peut par exemple déterminer le fonctionnement des cellules mémoires.

Là aussi les constructeurs proposent des versions et mises à jour du micrologiciel.

Très souvent avec les SSD, on trouve le terme Microcode.

Samsung Magician et version du microcode

Dans Linux

Le système d'exploitation Linux utilise aussi le terme de firmware.

Dans le contexte du noyau Linux, le micrologiciel est un logiciel qui s'exécute sur un autre processeur du système, par ex. un contrôleur sans fil, un GPU, un contrôleur SCSI …
Ce logiciel était auparavant stocké en ROM (de différents types) attaché au contrôleur concerné, mais pour réduire les coûts et simplifier les mises à niveau, les contrôleurs ont maintenant tendance à s'appuyer sur le fonctionnement de l'hôte système pour charger leur firmware pour eux.

Sur Linux, le micrologiciel Linux est un package distribué avec le noyau Linux qui contient des codes binaires de micrologiciel nécessaires pour une fonctionnalité partielle ou complète de certains périphériques matériels

Les cartes graphiques modernes d'AMD et de NVIDIA nécessitent presque certainement le chargement de ces codes binaires pour que le matériel fonctionne correctement.
De même pour les chipsets Intel Wi-Fi modernes.

Les firmwares dans Linux s'installent dans /lib/firmware/

Liens

sources : https://wiki.ubuntu.com/Kernel/Firmware et https://courses.lumenlearning.com/zeliite115/chapter/reading-firmware/