
Si5351AVFO
etherkit/Si5351AVFO
After any schematic change, run tools/exportdocs.sh (needs KiCad 10 kicad-cli). It rewrites docs/Si5351AVFOschematic.pdf, the netlist, SVGs and docs/erc.rpt.

Firmware for experimental ISM-band audio transmission
Combined is an open-source printed circuit board by activexray, from the activexray/hyperactive_radio repository on GitHub. It is a 4-layer board of 88 × 60 mm with 55 parts on 68 nets, routed with 358 tracks and 330 vias.
It is built around the PAM8406DR, PCM3060PW and BLM18PG221SN1, with the SJ-3524-SMT-TR, DMG2305UX and EC11E18244A5 among its other parts. Its parts include 25 capacitors, 7 connectors, 5 resistors, 5 ICs and 1 transistor. It belongs with the audio and music boards and the RP2040 boards of this library.
Experimental real-time, long-range, high-quality, wireless digital audio for Hyperactive 2026.
| Parameter | Value |
|---|---|
| Codec | Opus (fixed-point) |
| Bitrate | 64 kbps |
| Channels | Stereo |
| Sample rate | 48 kHz |
| Frame size | 20 ms |
| Encoder complexity | 5 / 10 |
| ADC | PCM1808 (24-bit I2S) |
64 kbps stereo Opus at 48 kHz should be transparent for most program material — comparable to a good 128 kbps MP3, but with lower latency and better behaviour at the edges of the bitrate. The fixed-point build removes float entirely; no performance penalty on Cortex-M33 which has a hardware FPU but where the float Opus path was benchmarked to be slower than fixed-point.
End-to-end latency is approximately one frame (20 ms) of algorithmic delay plus radio airtime (~1.6 ms at 100 kbps for a 160-byte packet) plus any playout buffer on the receiver.
| Parameter | Value |
|---|---|
| Radio IC | SX1276 |
| Band | 915 MHz (US ISM) |
| Modulation | GFSK |
| Air rate | 100 kbps |
| TX power | +20 dBm (100 mW) |
| Target range | ~300 m / ~1000 ft mixed indoor/outdoor |
| Link margin | ~18 dB at 100 kbps GFSK |
No frequency hopping required. Part 15.247 has two compliance paths — FHSS is one, but digital modulation is the other: fixed frequency, up to +30 dBm EIRP, with two constraints:
BW_6dB ≈ 2 × f_dev + bit_rate). Lower deviation (e.g. ±50 kHz) only yields ~200 kHz and does not qualify.The exact deviation and power settings need to be verified against both constraints once the RF configuration is finalised. At +20 dBm with sufficiently high deviation the path is viable, but the numbers need to be checked.
Each 20 ms Opus frame encodes to roughly 160 bytes at 64 kbps. With ~10 bytes of framing (sequence number, network ID, CRC) the total packet is ~170 bytes, for an effective air rate of ~68 kbps — well within the 100 kbps channel.
MCU runs at 270 MHz (overclocked from the 150 MHz default; stable at stock 1.1 V).
Benchmarked on hardware against broadband LCG noise (worst case for Opus — no clear pitch, flat spectrum):
| Operation | Cycles (avg) | Time (avg) | Frame budget used |
|---|---|---|---|
| Opus encode, stereo, 64 kbps, 20 ms | 2,299,603 | 8.5 ms | 42.6% |
| Opus decode, stereo, 64 kbps, 20 ms | 895,420 | 3.3 ms | 16.6% |
Frame budget = 20 ms = 5,400,000 cycles at 270 MHz.
The encoder leaves 11.5 ms of headroom per frame for I2S DMA and SPI radio management. The decoder uses only 16.6% of the frame, leaving ample margin for playout buffering and output DMA.
Written in Rust (no_std, Embassy async runtime).
ha_radio/ # firmware binary (bench + main)
embedded-opus/ # safe Rust wrapper around libopus
opus-sys/ # raw FFI bindings; builds libopus via cc crateembedded-opus/build.rs compiles a host-side C probe at build time to determine the exact encoder and decoder state sizes, so buffers are sized precisely without a runtime heap.
The encode headroom is comfortable at 270 MHz, but the dual-core split is still planned for clean separation of concerns once the ADC arrives:
A pair of Embassy Channel queues (depth 2) connect the cores: PCM frames inbound, encoded packets outbound.
cargo build --release --bin ha_radio
cargo build --release --bin benchRequires a Rust nightly toolchain and the thumbv8m.main-none-eabihf target (see rust-toolchain.toml).
| Qty | Value | Footprint | References |
|---|---|---|---|
| 10 | 10u | Capacitor_SMD:C_0805_2012Metric | C1, C3, C6, C8, C10, C12, C13, C14, C15, C17 |
| 7 | 100n | Capacitor_SMD:C_0805_2012Metric | C4, C7, C9, C11, C18, C19, C20 |
| 6 | BLM18PG221SN1 | Inductor_SMD:L_0603_1608Metric | FB1, FB6, FB7, FB8, FB9, FB10 |
| 4 | 220p | Capacitor_SMD:C_0603_1608Metric | C23, C24, C25, C26 |
| 3 | 1u | Capacitor_SMD:C_0805_2012Metric | C21, C22, C27 |
| 3 | 4.7k | Resistor_SMD:R_0805_2012Metric | R2, R3, R4 |
| 3 | MountingHole_Pad | MountingHole:MountingHole_3.2mm_M3_DIN965_Pad_TopBottom | H1, H2, H4 |
| 2 | AudioJack3_SwitchT | Connector_Audio:Jack_3.5mm_CUI_SJ-3524-SMT_Horizontal | J8, J9 |
| 2 | Conn_01x02 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J3, J7 |
| 1 | 100k | Resistor_SMD:R_0805_2012Metric | R1 |
| 1 | 22k | Resistor_SMD:R_0805_2012Metric | R7 |
| 1 | 22u | Capacitor_SMD:C_0805_2012Metric | C2 |
| 1 | Ai-Thinker-Ra-01 | RF_Module:Ai-Thinker-Ra-01-LoRa | U2 |
| 1 | Barrel_Jack_MountingPin | Connector_BarrelJack:BarrelJack_Horizontal | J1 |
| 1 | Conn_01x03_Pin | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J2 |
| 1 | Conn_Coaxial | Connector_Coaxial:SMA_Samtec_SMA-J-P-H-ST-EM1_EdgeMount | J4 |
| 1 | DMG2305UX | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | LD1117S50TR_SOT223 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U1 |
| 1 | PAM8406D | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | U6 |
| 1 | PCM3060 | Package_SO:TSSOP-28_4.4x9.7mm_P0.65mm | U3 |
| 1 | RaspberryPi_Pico | Module:RaspberryPi_Pico_SMD_HandSolder | A1 |
| 1 | RotaryEncoder_Switch_MP | Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm | SW1 |
| 1 | SG-210STF | Oscillator:Oscillator_SMD_SeikoEpson_SG210-4Pin_2.5x2.0mm | Y1 |
| 1 | SSD1306 | Library:SSD1306_0.96_Oled | U4 |
It measures 88 × 60 mm and has 4 copper layers, 1.6 mm thick.
55 parts, built around the PAM8406DR, PCM3060PW, BLM18PG221SN1 and SJ-3524-SMT-TR. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the activexray/hyperactive_radio repository on GitHub, at the commit this page was made from: the board is hardware/combined/combined.kicad_pcb and its schematic hardware/combined/combined.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask activexray before reusing the design.

etherkit/Si5351AVFO
After any schematic change, run tools/exportdocs.sh (needs KiCad 10 kicad-cli). It rewrites docs/Si5351AVFOschematic.pdf, the netlist, SVGs and docs/erc.rpt.


Andre1Becker/GalvOS
Open-source ESP32-S3 laser show controller — built to replace proprietary OEM controllers in RGB galvo laser projectors


darshp848/bldc-controller-60v
60 V, 20 A / 80 A peak BLDC motor controller that fits the MD80 v3.0 mounting. KiCad 10, 6 layers.

catuta0/HAB-payload
Carrier PCB for a high-altitude balloon payload. An ESP32 DevKitC V4 (WROOM-32) plugs into the board together with breakout modules for GPS (NEO-8M, I2C or UART header, fit only one), INA260 power monitor, BME280…
