- C 49.5%
- Go 41.4%
- CMake 5.8%
- Python 1.7%
- Shell 0.9%
- Other 0.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| client | ||
| docs | ||
| examples/linux | ||
| firmware | ||
| hardware | ||
| tests | ||
| tools | ||
| .gitignore | ||
| README.md | ||
ForgeIR
A USB infrared receiver project aiming for Flirc-like remote learning and configurable USB HID keyboard/media controls.
Firmware 0.4.1 supports button learning, four persistent profiles, and a Go configuration CLI. The factory Samsung/Jellyfin profile preserves the tested playback setup; new mappings can be learned without rebuilding firmware.
| Directory | Contents |
|---|---|
hardware/ |
KiCad 9 schematic, PCB, project, BOM, custom libraries, and reference PDF |
firmware/ |
Pico SDK / TinyUSB firmware and NEC pulse decoder |
client/ |
Go CLI: learning, profile management, JSON import/export |
docs/ |
Import notes, validation, and next steps |
Hardware and firmware live together so board changes and their firmware support can be reviewed in the same commit. Client software will share this repository.
Build firmware
Requires CMake, Make, Python 3, an Arm bare-metal GCC toolchain
(arm-none-eabi-gcc and C++ support), and Raspberry Pi Pico SDK with submodules.
SDK/tool setup may require network access. The import was built against SDK
commit ee68c78d0afae2b69c03ae1a72bf5cc267a2d94c (2.1.1 plus one commit)
and TinyUSB commit 86ad6e56c1700e85f1c5678607a762cfe3aa2f47 (0.18.0).
From the repository root, with PICO_SDK_PATH pointing to your SDK checkout:
cmake -S firmware -B build/firmware \
-DPICO_SDK_PATH="$PICO_SDK_PATH" \
-DPICO_BOARD=forge_ir -DCMAKE_BUILD_TYPE=Release
cmake --build build/firmware -j4
Outputs include build/firmware/ir_decode.uf2 and ir_decode.elf.
The SDK may download/build picotool if it cannot find a compatible installation;
use -Dpicotool_DIR=/path/to/picotool/cmake/package to reuse an existing one.
The forge_ir board definition selects GPIO 12 for IR and 4 MiB flash, using
conservative standard SPI flash reads.
Building does not flash the device.
Configure a remote
cd client
go build -o ../build/forgeir ./cmd/forgeir
cd ..
./build/forgeir profiles
./build/forgeir wizard --profile profile-2
./build/forgeir activate profile-2
See the CLI guide for individual learning, backups, permissions, and cross-platform builds. The device keeps working without the client. Supported IR protocols are NEC, extended NEC, and Samsung32; this is not raw/universal protocol learning.
Open hardware
flatpak run org.kicad.KiCad "$PWD/hardware/OS_IR_decoder.kicad_pro"
Keep the original KiCad project basename: library references are relative to this project directory. Custom libraries and supplied models are included; standard symbols, footprints, and models come from KiCad.
See import notes for the existing behavior and validation, and firmware baseline for flashing/testing. See Jellyfin navigation/playback, Linux/media-center setup, product direction, and next steps.
Licensing
Existing third-party copyright/license headers and supplied library license files are preserved. A project-wide license for original hardware/software has not yet been selected; no new license grant is implied by this import.