- 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에 공개됨
- 작성자는 “직접 코드를 작성하지 않았다”고 명시함
- 일부 알려진 문제가 남아 있으며, 현재는 학습용 참고 수준으로만 사용할 것을 권장함