L’ESP32 pourrait bientôt bénéficier d’une couche MAC WiFi open source

ESP32 open-source WiFi MAC driver

La plupart, sinon la totalité, du matériel WiFi repose sur des blobs binaires à source fermée, notamment le MCU sans fil ESP32, mais des travaux sont actuellement en cours pour procéder à l’ingénierie inverse d’une couche MAC WiFi pour l’ESP32 afin d’en faire une véritable plate-forme open source.

Les microcontrôleurs sans fil Espressif ESP32 disposent déjà d’un cadre open source (ESP-IDF) et d’une chaîne d’outils, les utilisateurs peuvent personnaliser le code dans une certaine mesure, mais cela exclut les bits sans fil (Wi-Fi, Bluetooth, fonctions RF de bas niveau) qui sont distribués. en tant que bibliothèques précompilées à source fermée intégrées au micrologiciel. Des efforts ont été déployés pour fournir une pile open source pour la puce BL602, mais cela n’a abouti à rien, et l’ESP32 pourrait devenir la première cible dotée d’un pilote open source sans aucun blobs, à l’exclusion des projets basés sur FPGA tels que OpenWiFi.

Pilote MAC WiFi open source ESP32Pilote MAC WiFi open source ESP32

La mise en œuvre à un stade précoce prend actuellement en charge les fonctionnalités suivantes :

  • Envoi de trames WiFi
  • Réception de trames WiFi
  • Envoyer un paquet ACK en réponse aux paquets envoyés à l’ESP32
  • Connectez-vous à un point d’accès ouvert et envoyez des paquets UDP
  • Filtrage matériel des paquets basé sur l’adresse MAC

Notez que le code d’initialisation (configuration) repose toujours sur le code propriétaire à source fermée, mais c’est toujours un bon progrès. D’autres fonctionnalités qui devraient être implémentées prochainement incluent le changement de canal, la modification du débit de données, l’ajustement de la puissance d’émission et la mise en œuvre d’un logiciel open source. Séquence d’initialisation du matériel WiFi. Une fois cela fait, le pilote sera intégré dans une implémentation MAC open source 802.11.

À plus long terme, les fonctionnalités suivantes seraient travaillées :

  • Économie d’énergie du modem : éteindre le modem lorsqu’il n’est pas utilisé
  • AMSDU, AMPDU, HT40, QoS
  • Cryptographie nécessaire pour WPA2 effectuée matériellement plutôt que logiciellement
  • Prise en charge Bluetooth
  • Rédigez la documentation SVD pour tous les registres d’ingénierie inverse. Un fichier SVD est un fichier XML qui décrit les fonctionnalités matérielles d’un microcontrôleur et permet de générer automatiquement une API à partir de la description matérielle.

Le projet permettra aux développeurs d’introduire de nouvelles fonctionnalités et pourrait être particulièrement utile pour le WiFi Mesh (IEEE 802.11s) puisque la mise en œuvre actuelle par Espressif Systems est plutôt limitée. Si vous souhaitez en savoir plus sur le travail de rétro-ingénierie, lisez le billet de blog correspondant de Jasper Devreker (c’est une longue lecture) et vous trouverez également le code source sur GitHub.

Merci à Zoobab pour le conseil.

Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

YouTube video