11 points par GN⁺ 2026-02-24 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • La puce Broadcom BCM4350 du MacBook Pro 2016 n’est pas prise en charge nativement par FreeBSD ; jusqu’ici, la solution courante consistait à contourner le problème avec wifibox via une VM Linux
  • L’auteur a d’abord tenté de porter sur FreeBSD le pilote Linux brcmfmac avec Claude Code, mais a échoué à cause de kernel panics et de problèmes de compatibilité avec LinuxKPI
  • Il a ensuite utilisé Pi coding agent pour analyser le fonctionnement de brcmfmac et faire rédiger par l’IA une spécification technique en 11 chapitres dédiée au BCM4350
  • Après avoir complété cette spécification par validation croisée avec plusieurs modèles d’IA (Opus, Codex, Gemini, etc.), il a pu générer entièrement automatiquement un nouveau pilote pour FreeBSD sur cette base
  • Le résultat est un module noyau prenant en charge le scan Wi‑Fi, les connexions 2,4/5 GHz et l’authentification WPA/WPA2, et le code a été publié sur GitHub

Contexte

  • Le MacBook Pro 2016 utilise une puce Wi‑Fi Broadcom BCM4350, mais FreeBSD ne dispose d’aucun pilote natif pour cette puce
    • Sur les forums FreeBSD, la méthode généralement recommandée consiste à utiliser le pilote brcmfmac via une VM Linux appelée wifibox
  • brcmfmac est le pilote Linux de Broadcom pour les puces FullMAC ; il délègue au firmware interne de la puce des tâches comme le traitement des trames 802.11 et le chiffrement WPA
  • Pour créer un module natif FreeBSD, il faut adapter une partie du code Linux à FreeBSD via une conversion de « glue code »

Acte 1 — Première tentative avec Claude Code

  • L’auteur a essayé d’utiliser Claude Code pour convertir le code de brcmfmac vers FreeBSD
    • Il lui a demandé de s’appuyer sur la couche de compatibilité LinuxKPI de FreeBSD, en suivant l’approche du pilote Intel iwlwifi
  • Le module compilait, mais ne fonctionnait pas sur le vrai matériel et provoquait des kernel panics
  • Claude a ajouté des blocs #ifdef __FreeBSD__ pour corriger le code, mais l’ensemble restait instable à cause de défauts de LinuxKPI
  • L’IA a averti que le projet risquait de devenir « complexe et désordonné », et au final il ne restait que du code non fonctionnel

Acte 2 — Approche fondée sur une spécification

  • L’auteur a ensuite utilisé Pi coding agent pour analyser l’architecture du pilote brcmfmac en se concentrant sur le BCM4350, puis lui a fait rédiger une spécification détaillée pour une implémentation clean room
  • L’IA a généré un document composé de 11 chapitres
    • Par exemple : 00-overview.md, 04-firmware-interface.md, 08-data-path.md
  • L’auteur s’est servi du modèle Codex pour vérifier et corriger les écarts entre la spécification et le code réel
  • Il a ensuite refait une vérification avec le modèle Opus pour confirmer que les corrections correspondaient bien au code
  • Après comparaison de plusieurs modèles, il indique que Gemini 3 Pro preview est celui qui a produit le plus d’erreurs (« hallucinations »)

Acte 3 — Construction d’un nouveau pilote FreeBSD

  • Sur la base de cette spécification, il a lancé un projet de réécriture d’un pilote FreeBSD pour le BCM4350
  • L’IA a documenté les décisions de conception : structure du projet, langage (usage ou non du C), dépendance à LinuxKPI, jalons, etc.
  • Le projet s’appuyait d’abord sur LinuxKPI, mais a ensuite basculé vers du code FreeBSD natif en raison de la complexité croissante
  • L’IA accédait à l’hôte de build et à la VM de test en SSH afin d’exécuter une boucle automatisée de build et de test
    • Il était configuré pour résumer et consigner la cause à chaque crash de la VM
  • Au terme de nombreuses itérations, un module noyau capable d’assurer le scan Wi‑Fi, les connexions 2,4 GHz / 5 GHz et l’authentification WPA/WPA2 a été finalisé

Résultats et publication

  • Le pilote finalisé a été publié dans le dépôt GitHub github.com/narqo/freebsd-brcmfmac
  • L’auteur précise qu’il « n’a pas écrit le code lui-même »
  • Quelques problèmes connus subsistent, et il recommande pour l’instant de ne l’utiliser que comme référence pédagogique

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.