FreeBSD에는 내 오래된 MacBook용 Wi-Fi 드라이버가 없었다, 그래서 AI가 만들어줬다

4 hours ago 2

  • 2016년형 MacBook Pro의 Broadcom BCM4350 칩은 FreeBSD에서 기본 지원되지 않아, 기존에는 Linux VM을 통한 wifibox 우회 방식이 일반적이었음
  • 작성자는 Claude Code를 이용해 Linux의 brcmfmac 드라이버를 FreeBSD로 포팅하려 했으나, 커널 패닉과 LinuxKPI 호환성 문제로 실패함
  • 이후 Pi coding agent를 사용해 brcmfmac의 동작 원리를 분석하고, BCM4350 전용 11장짜리 기술 명세서(specification) 를 AI가 작성함
  • 여러 AI 모델(Opus, Codex, Gemini 등)을 교차 검증해 명세를 보완한 뒤, 이를 기반으로 FreeBSD용 신규 드라이버를 완전 자동 생성
  • 결과물은 Wi-Fi 스캔, 2.4/5GHz 연결, WPA/WPA2 인증을 지원하는 커널 모듈로 완성되었으며, 코드는 GitHub에 공개됨

배경

  • 2016년형 MacBook Pro는 Broadcom BCM4350 Wi-Fi 칩을 사용하지만, FreeBSD에는 해당 칩을 위한 네이티브 드라이버가 없음
    • FreeBSD 포럼에서는 wifibox라는 Linux VM을 통해 brcmfmac 드라이버를 사용하는 방법이 일반적으로 제시됨
  • brcmfmac은 Broadcom의 FullMAC 칩용 Linux 드라이버로, 802.11 프레임 처리와 WPA 암호화 같은 작업을 칩 내부 펌웨어에 위임함
  • FreeBSD용 네이티브 모듈을 만들려면, Linux 코드의 일부를 FreeBSD에 맞게 포팅하는 “glue code” 변환이 필요함

Act 1 — Claude Code로의 첫 시도

  • 작성자는 Claude Code를 이용해 brcmfmac 코드를 FreeBSD용으로 변환 시도
    • FreeBSD의 LinuxKPI 호환 계층을 참고해 Intel용 iwlwifi 드라이버 방식을 따르도록 요청함
  • 모듈은 컴파일되었지만 실제 하드웨어에서 작동하지 않았고, 커널 패닉이 발생함
  • Claude는 #ifdef __FreeBSD__ 구문을 추가하며 수정했으나, LinuxKPI의 결함으로 인해 여전히 불안정했음
  • AI는 프로젝트가 “복잡하고 지저분해질 것”이라 경고했으며, 결과적으로 작동하지 않는 코드만 남음

Act 2 — 명세서 기반 접근

  • 이후 Pi coding agent를 사용해 brcmfmac 드라이버의 구조를 BCM4350 중심으로 분석하고, 클린룸 구현용 상세 명세서를 작성시킴
  • AI는 11개 장으로 구성된 문서를 생성함
    • 예: 00-overview.md, 04-firmware-interface.md, 08-data-path.md 등
  • 작성자는 Codex 모델을 이용해 명세서와 실제 코드의 불일치를 검증하고 수정함
  • 이어서 Opus 모델로 재검증하여 수정 내용이 코드와 일치하는지 확인함
  • 여러 모델을 비교한 결과, Gemini 3 Pro preview가 가장 많은 오류(“hallucination”)를 보였다고 언급됨

Act 3 — 새 FreeBSD 드라이버 구축

  • 명세서를 기반으로 BCM4350용 FreeBSD 드라이버를 새로 작성하는 프로젝트를 시작함
  • AI는 프로젝트 구조, 언어(C 사용 여부), LinuxKPI 의존성, 마일스톤 등 설계 결정을 문서화
  • 초기에는 LinuxKPI를 사용했으나, 복잡성 증가로 인해 네이티브 FreeBSD 코드로 전환
  • AI는 SSH를 통해 빌드 호스트와 테스트 VM에 접근해 자동 빌드·테스트 루프를 수행함
    • VM이 크래시할 때마다 원인을 요약·기록하도록 설정
  • 반복 세션 끝에 Wi-Fi 스캔, 2.4GHz/5GHz 연결, WPA/WPA2 인증이 가능한 커널 모듈 완성

결과 및 공개

  • 완성된 드라이버는 GitHub 저장소 github.com/narqo/freebsd-brcmfmac에 공개됨
  • 작성자는 “직접 코드를 작성하지 않았다”고 명시함
  • 일부 알려진 문제가 남아 있으며, 현재는 학습용 참고 수준으로만 사용할 것을 권장함

Read Entire Article