An open ESP32-S3 handheld that combines RivetTX, ExpressLRS, an RX5808 receiver, an AT7456E OSD, and an AMT630A snow-screen display.
Why OpenPocket · Architecture · Hardware · Build path · Firmware · Documentation
Caution
OpenPocket is an engineering prototype, not a flight-proven product. Build the first revision on a current-limited bench supply. Keep propellers removed and mechanisms safe until your exact transmitter, failsafe, power system, RF link, and video chain have passed hardware-in-the-loop validation.
OpenPocket puts the controls, live analog FPV picture, and transmitter menus in one compact handheld. It uses the existing RivetTX OpenPocket character compositor unchanged and connects it to a physical AT7456E video-overlay backend. The ESP32 never has to capture or process video pixels.
| One handheld | Gimbals, switches, ExpressLRS control, telemetry, video, and menus in a single enclosure. |
| Purpose-built MCU | ESP32-S3 provides the GPIO, native USB, and task separation needed by the complete controller. |
| Low-latency video | RX5808 composite video passes through the AT7456E into an AMT630A TFT controller without digital capture. |
| Snow-screen display | The selected AMT630A board keeps weak or lost analog video visible as noise instead of hiding it behind a blue screen. |
| Native analog OSD | PAL/NTSC autodetection, a 30×16 character grid, custom glyphs, delta updates, and video-loss recovery. |
| Bounded background work | OSD and receiver services cannot delay control, CRSF, or telemetry processing. |
| Open development path | Wiring, BOM decisions, bring-up evidence, and future KiCad sources live in this repository. |
The flight-control path stays short while video and presentation work run as bounded services.
flowchart LR
A[Gimbals + switches] --> B[ESP32-S3<br/>RivetTX]
B --> C[CRSF UART]
C --> D[ExpressLRS<br/>TX module]
E[5.8 GHz antenna] --> F[RX5808]
F -->|composite video| G[AT7456E]
G -->|video + overlay| H[AMT630A<br/>snow-screen board]
H --> I[Matched TFT panel]
B -->|tune + RSSI| F
B -->|bounded SPI| G
D -->|telemetry| B
classDef control fill:#102a43,stroke:#38bdf8,color:#f8fafc;
classDef video fill:#26163f,stroke:#a78bfa,color:#f5f3ff;
class A,B,C,D control;
class E,F,G,H,I video;
The 250 Hz control task owns channel output and safety. The OSD driver advances a non-blocking state machine and writes only changed character runs. Video loss, PAL/NTSC changes, or an absent OSD chip must never hold up the control path.
| Component | Role |
|---|---|
| ESP32-S3 development board or module | RivetTX, inputs, UI, storage, USB, and hardware services |
| ExpressLRS TX hardware | full-duplex 3.3 V CRSF control and telemetry link |
| RX5808 module | tunable 5.8 GHz analog receiver, composite video, and RSSI |
| AT7456E OSD module | PAL/NTSC character overlay between the receiver and display |
| AMT630A snow-screen controller board | PAL/NTSC composite decoding without blue-screen signal masking |
| matched parallel-RGB TFT panel | live FPV image and the complete OpenPocket interface |
| two dual-axis gimbals | four primary analog control axes |
| switches, menu buttons, and optional encoder | arming, AUX controls, navigation, and editing |
| validated regulators and protection | clean supplies sized for RF, display, video, and logic peaks |
The ESP32-S3 is the OpenPocket target. RivetTX may support smaller ESP32-C3 transmitters, but the C3 is not the reference platform for this handheld. See ADR-0001 for the decision record.
The existing RivetTX compositor produces a hardware-independent 30-column by 16-row character frame. The AT7456E backend then provides:
- PAL/NTSC autodetection and safe standard changes without a reboot
- all 30×16 cells in PAL, with essential content held inside 30×13 for NTSC
- custom character uploads for icons, selection markers, and warnings
- shadow-frame comparison so unchanged cells generate no SPI traffic
- bounded asynchronous transfers instead of full-screen blocking redraws
- communication retry/backoff and redraw after video loss or recovery
The RX5808 feeds baseband video to the AT7456E; the AT7456E overlays text and passes the result to the AMT630A board, which drives its matched TFT panel. The AMT630A's internal OSD is not used for OpenPocket menus. See the complete wiring guide.
Bring up one subsystem at a time:
- Read the bill of materials and record the exact revisions of every module.
- Build and measure the protected 5 V and 3.3 V rails on a current-limited supply.
- Add the ESP32-S3, controls, and ExpressLRS link with RF output constrained.
- Prove the direct RX5808-to-AMT630A composite path in PAL and NTSC, including snow-screen behavior with no received signal.
- Insert the AT7456E, level shifting, and SPI control lines.
- Configure RivetTX, then complete every item in the bring-up checklist.
The bench build guide contains the full sequence and stop conditions. Do not design a battery pack or order a PCB production run from the provisional module-level BOM.
OpenPocket runs the main branch of
Twotoz/RivetTX:
git clone https://github.com/Twotoz/RivetTX.git
cd RivetTX
idf.py set-target esp32s3
idf.py menuconfig
idf.py build
idf.py flash monitorEnable Use OpenPocket AT7456E analog OSD instead of SSD1306 under
Component config -> RivetTX hardware, then assign pins for the OSD, CRSF,
controls, and other peripherals. There is deliberately no universal GPIO map
until a specific ESP32-S3 module and reviewed schematic are selected. See the
firmware guide for the complete configuration.
| Document | Contents |
|---|---|
| Bill of materials | prototype parts, electrical requirements, and unresolved selections |
| Wiring | ESP32-S3, RX5808, AT7456E, AMT630A, TFT, and ExpressLRS interconnects |
| Bench build guide | staged assembly sequence and stop conditions |
| Firmware | ESP32-S3 target setup and RivetTX OSD configuration |
| Bring-up checklist | electrical, control, PAL/NTSC, failure-recovery, and endurance tests |
| Architecture | task boundaries, character presentation, and video path |
| ESP32-S3 decision | why OpenPocket standardizes on the S3 |
| AMT630A display decision | why the display stage uses a snow-screen AMT630A board |
| Hardware sources | scope and release policy for future KiCad and production files |
RivetTX already contains the 30×16 OpenPocket menus and the physical AT7456E backend, including host-side PAL, NTSC, navigation, warning, delta-update, glyph-upload, video-loss, standard-change, and SPI-failure tests. RX5808 target hardware, the exact AMT630A PCB/panel revision, the final GPIO assignment, the reference schematic, PCB, power system, and complete composite-video HIL evidence remain open engineering work.
No schematic, PCB, enclosure, or battery design is currently released as production-ready. The hardware directory will become the authoritative source for those files after design review and measurement.
Issues, schematic reviews, module measurements, and focused pull requests are welcome. Hardware findings must identify the exact module revision, voltage, firmware commit, measurement point, and PAL/NTSC source. See CONTRIBUTING.md.
OpenPocket documentation and future hardware sources are released under the MIT License. RivetTX is maintained in its own repository under its own license.
Built for open hardware experimentation, low-latency analog FPV, and careful validation.