# SF900 ESP32 Dongle: implementing the SF900 controller radio protocol

> SF900 ESP32 Dongle implements the SF900/SF2000 controller's 2.4 GHz XN297L radio protocol on an ESP32-S3 receiver. It presents controller input as USB HID or BLE HID and includes a separate USB Wi-Fi mode.

- Type: Case study
- Targets: Protocol
- Category: Independent reconstruction cases
- Relationship: Independent reconstruction project
- Sources reviewed: 2026-11-06
- Added to the catalog: 2026-11-08
- Original resource: <https://github.com/fernandoalves25/sf900-esp32-dongle>
- Primary source: <https://github.com/fernandoalves25/sf900-esp32-dongle/blob/f8b14366bc2218d49b03e06e6afac7f079772628/README.md>
- Catalog page: <https://awesomerea.org/resources/sf900-esp32-dongle-case/>
- Record JSON: <https://awesomerea.org/resources/sf900-esp32-dongle-case/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/sf900-esp32-dongle-case/index.md)

## Requirements & limits

- **Prerequisites:** Requires an ESP32-S3 board, an XN297L radio and a USB-C OTG adapter for handheld use.
- **Prerequisites:** Building the firmware requires PlatformIO.
- **License:** MIT license; bundled third-party components retain their own licenses.

## Primary sources

1. <https://github.com/fernandoalves25/sf900-esp32-dongle/blob/f8b14366bc2218d49b03e06e6afac7f079772628/README.md>
2. <https://github.com/fernandoalves25/sf900-esp32-dongle/blob/f8b14366bc2218d49b03e06e6afac7f079772628/docs/PROTOCOL.md>

## More in Protocols

- [hydroshift2: reconstructing HydroShift II LCD-C USB control](https://awesomerea.org/resources/hydroshift2-case/index.md) · Case study
- [N2Elite-ng: reconstructing N2 Elite dongle control](https://awesomerea.org/resources/n2elite-ng-case/index.md) · Case study
- [Huawei MateBook 13 · Linux: Goodix fingerprint protocol and Linux driver](https://awesomerea.org/resources/huawei-matebook-13-linux-case/index.md) · Case study
- [TP2-Y Label Studio: reconstructing Bluetooth label printing](https://awesomerea.org/resources/tp2y-label-studio-case/index.md) · Case study
- [Halo Home for Home Assistant: reconstructing local Avi-on mesh control](https://awesomerea.org/resources/halo-home-home-assistant-case/index.md) · Case study
- [foobot-local: local Foobot service and reconstructed protocols](https://awesomerea.org/resources/foobot-local-case/index.md) · Case study

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
