A fork of OpenIPC/firmware that builds camera images running Raptor as the streamer instead of Majestic.
- Raptor replaces Majestic as the streamer: a set of small daemons sharing frames through shared memory, all GPL-3.0 and rebuildable, where the stock image runs one closed binary.
- Retuned ISP calibration on most of the sensors this fork has had on a bench -- the sensor table below marks which.
- Sensor driver fixes. SC450AI reports its model ID, so the ISP loads its IQ tuning instead of none; and mirror/flip is applied on nine SigmaStar drivers that staged the register and then dropped it.
- Wi-Fi setup portal. A camera with no network configured raises its own access point and serves a setup page instead of sitting unreachable.
- A MAC address per camera, derived from the flash unique ID or the SoC die ID, so two cameras on one network do not arrive sharing one.
- A hostname per camera, derived from the SoC and the sensor.
Rootfs is the partition the image has to fit, and what a Wi-Fi driver or an IQ tuning has to find room in. A driver is often 1.5 MB, which is why a camera with a radio is an image of its own and why the 8 MB boards carry one sensor's tuning rather than the family's.
An SoC target (<soc>_<variant>) is the chip, its flash layout and the
software stack. A camera (<identity>_<soc>_<sensor>_<radio>) is what is
soldered around one: a small directory under br-ext-chip-<vendor>/cameras/
that layers the sensor, the radio and the board's pins on an SoC target. Both
build with make BOARD=<name>.
| Board | SoC · family | Flash | Rootfs | Download |
|---|---|---|---|---|
ssc377qe_raptor |
SSC377QE · infinity6c | 16 MB NOR | 8192 KB | sysupgrade · whole-flash |
ssc377d_raptor |
SSC377D · infinity6c | 16 MB NOR | 8192 KB | sysupgrade · whole-flash |
ssc30kq_raptor |
SSC30KQ · infinity6e | 16 MB NOR | 8192 KB | sysupgrade · whole-flash |
ssc333_raptor |
SSC333 · infinity6b0 | 8 MB NOR | 5120 KB | sysupgrade |
t31_raptor |
T31X · ingenic | 16 MB NOR | 8192 KB | sysupgrade |
hi3516ev300_raptor |
Hi3516EV300 · hi3516ev200 | 16 MB NOR | 10240 KB | sysupgrade |
hi3516ev200_raptor |
Hi3516EV200 · hi3516ev200 | 8 MB NOR | 5120 KB | sysupgrade |
hi3516cv608_raptor |
Hi3516CV608 · hi3516cv6xx | 8 MB NOR | 5120 KB | sysupgrade · whole-flash |
| Camera | On | Sensor · radio | Status | Download |
|---|---|---|---|---|
h4cx-a0_hi3516cv608_os04d10_rtl8733bu |
hi3516cv608_raptor |
OS04D10 · RTL8733BU (USB) | verified 2026-09-25 | sysupgrade · whole-flash |
tapo-d130_ssc377d_sc5239_rtl8192eu |
ssc377d_raptor |
SC5239 · RTL8192EU (USB) | verified 2026-09-25 | sysupgrade · whole-flash |
kd110_ssc333_sc3336_rtl8188fu |
ssc333_raptor |
SC3336 · RTL8188FU (USB) | verified 2026-09-25 | sysupgrade |
wyze-cam3_t31_gc2053_atbm6031 |
t31_raptor |
GC2053 · ATBM6031 (SDIO) | verified 2026-09-25 | sysupgrade · whole-flash |
Status is what has run on the unit, kept in CAMERA_STATUS in
.github/scripts/ci-matrix.py; the camera's own README says what was
verified and what was not.
A whole-flash image carries the bootloader and a fresh U-Boot environment. On a camera with a radio the environment is where the Wi-Fi network is kept, so after one the camera comes up with no network and raises its own access point for setup, exactly as a new one does.
Every image carries drivers for more sensors than have ever been in front of one. Bold is tested on a camera here and carries a tuning made for this fork; italic is tested on a camera but renders with the stock tuning; the rest ship a driver nobody here has run.
| Family | Images | Sensors on the image |
|---|---|---|
| infinity6c | ssc377qe_raptor, ssc377d_raptor (tapo-d130_ssc377d_sc5239_rtl8192eu pins sc5239 alone) |
imx335, sc450ai, sc5239, gc4653, imx415, os04a10, sc401ai, sc4336p, sc501ai, sc5235, sc830ai, sc850sl |
| infinity6e | ssc30kq_raptor |
gc4653, gc2053, gc2093, imx307, imx335, imx347, imx415, os04a10, os04c10, sc501ai, sc8235 |
| infinity6b0 | ssc333_raptor (kd110_ssc333_sc3336_rtl8188fu pins sc3336 alone) |
sc3336, gc2053, gc4023, gc4653, imx307, imx335, jxf37, jxq03, os02g10, sc200ai, sc223a, sc2335, sc2336, sc3338, sc401ai |
| hi3516ev200 | hi3516ev200_raptor, hi3516ev300_raptor |
imx307, imx335, gc2053, gc4653, jxf22, jxf23, jxf37, sc2231, sc2232h, sc2239, sc2315e, sc3235, sc3335, sc4236, sp2305, sp2308 |
| hi3516cv6xx | hi3516cv608_raptor, h4cx-a0_hi3516cv608_os04d10_rtl8733bu |
os04d10, cv2005 (hi3516cv608_raptor only) |
| ingenic t31 | t31_raptor (wyze-cam3_t31_gc2053_atbm6031 pins gc2053 alone) |
gc2053, and on the base every sensor the T31 driver package carries |
These are experimental builds. Have a recovery path before you write one to a camera.
A recovery path means a way to get the camera booting again when the image you just wrote does not: soldered UART leads you have already used once, or a SPI flash clip and a programmer. Not a plan to acquire one afterwards. Nothing in this fork is widely deployed, several targets have run on exactly one unit, and a rootfs is only discovered to be bad after it has been written to flash.
Read the wiki on flashing and serial/UART first if you have not done this before.
These images are ordinary OpenIPC sysupgrade archives. Upgrading an existing
OpenIPC camera may or may not work depending on which variant it runs
(lite, ultimate) and the partition layout it was flashed with.
ssh root@<board> 'sysupgrade --url=<link from the table>'The configuration console is at http://<camera>/.
A new camera ships unclaimed: root has no password, so nothing can be configured and anyone who can reach the camera can take it. Claiming it means setting that password, and it is what protects the console afterwards. Three doors do it, and any one is enough:
- the console at
http://<camera>/, which draws a claim card instead of its settings while the camera has no password; - the setup page on the camera's own access point, if it has no network yet;
- SSH -- log in as
rootwith an empty password and it prompts for one.
They all write the same file and read it live, so whichever you use, the other
two see it immediately. sysupgrade -n wipes the overlay and returns the
camera to unclaimed, which is also the way back from a forgotten password.
This build tree is MIT, inherited from upstream OpenIPC. Raptor itself is GPL-3.0 -- all four of its repositories are -- so an image built here mixes the two, and the Raptor daemons carry GPLv3 obligations that the rest of the tree does not.
OpenIPC is the reason any of this boots at all: kernel, bootloader, vendor packaging and the Buildroot tree are theirs. See the project, the website and the wiki, and consider supporting them at Open Collective.
