CameVision EGO - Dual Global-Shutter AI Stereo Camera
Open Stereo Vision Platform for SLAM, Robotics & Spatial AI
CameVision EGO combines dual 2.3MP global-shutter cameras, dual IMUs, a processor with onboard NPU, Wi-Fi 6, BLE, USB 3 and local storage in one compact platform. Built for engineering teams and founders developing SLAM, robotics, egocentric AI and computer vision products. Fully open-source demo software is provided on GitHub, with OEM customization available for product integration and volume projects.
| Specification | CameVision EGO |
|---|---|
| Cameras | 2 × 2.3MP global shutter |
| Stereo | Synchronized dual-camera vision |
| IMU | 2 × IMU, one per camera |
| Processor | Rockchip RV1126B |
| AI | Integrated NPU |
| Memory | 1GB RAM |
| Storage | 16GB eMMC + microSD |
| Wireless | Wi-Fi 6 + BLE |
| USB | USB 3 |
| Power | Battery support |
| Software | Fully open-source demo software on GitHub |
| Customization | OEM customization available |
| Applications | SLAM, robotics, VIO, egocentric AI, spatial AI |
Price breaks
| Sales Price Minimum Order Quantity 10 units | $ 235.00 per unit |
| Sales Price Minimum Order Quantity 1000 units | $ 190.00 per unit |
Minimum order: 10 units.
🔧 Fully Customizable to Your Needs
At Camemake, every camera module you see online is just the beginning. All our models can be custom-tailored to fit your project perfectly — from sensor type and lens options to housing, interface, and firmware. Whether you’re building for robotics, vision systems, or unique applications, we bring your vision to life.
📩 Request a Custom Quote OR Start your project
Let’s talk about your idea! Our team will guide you from concept to final delivery.
Need something off-the-shelf and ready to go? Our trusted global distribution partners stock our most popular modules.
💡 Not sure whether to choose custom or off-the-shelf? We’ll help you pick the most cost-effective option.
Our online prices are for prototyping & small orders. For bulk pricing, OEM, or custom projects, contact us for exclusive deals & expert support.
📩 Contact sales@camemake.com—let’s build your vision, one pixel at a time!
Disclaimer & Support Policy
All Camemake USB camera modules are fully compliant with UVC (USB Video Class) drivers, ensuring plug-and-play compatibility with all standard UVC-supported devices across Windows, macOS, Linux, and embedded platforms. For developers and integrators working with MIPI camera modules, selected MIPI drivers are available for download via our official Camemake GitHub repository. We continuously expand our online driver and documentation library to support a wider range of image sensors and platforms.
Please note: while we provide open access to resources, direct one-on-one technical support for driver integration is not included. For peer-to-peer assistance, tips, and best practices, join our growing Camemake Camera Community on Reddit, where engineers and makers share solutions, showcase projects, and contribute to open development.
CameVision EGO engineering
CV-EGO01-OS-SC (SC233HGS), CV-EGO01-OS-OV (OG02C10), CV-EGO01-OS-AM (MIRA220). Same PCB, V1.I1. USB is ADB, not UVC.
Fitted parts
CameVision Ego V1.I1. Source: device-tree/rv1126b-camevision-ego.dts.
| Block | Schematic label | On the board |
|---|---|---|
| SoC | RV1126B | RV1126B |
| DDR4 U3 | K4A4G165WG (512 MB) | K4A8G165WG 16-bit 1 GB |
| eMMC U2A | BWCTAK611G16G | BWCTAK611G16G 16 GB |
| Cameras U7 / U10 | SC233HGS / OG02C10 / MIRA220 (AM220) | x2, I2C 0x30 each. SKU OS-SC / OS-OV / OS-AM |
| IMU U9 / U12 | LSM6DSV320XTR | LSM6DSVQTR x2 |
| PMIC | RK801-2 | I2C0 0x27 |
| RTC | RV-3028-C7 | I2C2 0x52 |
| Wi-Fi / BT | VS6621S80 U14 | SDMMC1 + UART2 |
| Charger | BQ24072RGTR U13 | 250 mA fast charge |
| microSD | U6 475710001 | SDMMC0, 1.8 V VDD |
Cameras
| Net | Pad / GPIO | Function |
|---|---|---|
| CAM0 MIPI | CSI RX0, 4-lane + CLK | U7 to /dev/video24 |
| I2C3_SCL/SDA_CAM | I2C3M1 GPIO4_A4 / A5 @0x30 | CAM0 control, 400 kHz |
| CAM0 XVCLK | CLK_CAM0_OUT 27 MHz | Sensor clock |
| CAM0_PWDN | GPIO4_A3 pad 1V21 | XSHUTDN, active high |
| MIPI_RX0_SYNC | AG32 GPIO4_A1 | FSYNC to U7.D3 |
| MIPI_RX0_TRIGGER | U31 GPIO6_C2 | EFSYNC to U7.B5 |
| CAM1 MIPI | CSI RX1, 4-lane + CLK | U10 to /dev/video32 |
| I2C4_SCL/SDA_CAM | GPIO4_A6 SCL, GPIO4_A7 SDA @0x30 | CAM1 bit-bang (pads swapped vs SoC I2C4_M2) |
| CAM1 XVCLK | CLK_CAM1_OUT 27 MHz | Sensor clock |
| CAM1_PWDN | GPIO4_A2 pad 1Y23 | XSHUTDN |
| MIPI_RX1_SYNC | AG31 GPIO4_A0 | FSYNC to U10.D3 |
| MIPI_RX1_TRIGGER | V31 GPIO6_C3 | EFSYNC to U10.B5 |
| PWR_EN_2.8V | GPIO0_B0 pad 1AB4 | U15 AVDD 2.8 V |
| PWR_EN_1.5V | GPIO0_B1 pad 1AA4 | U16 1.5 V |
| PWR_EN_1.2V | GPIO0_B2 pad 1AC2 | U18 DVDD 1.2 V |
Continuous trigger. Shared tick on FSYNC and EFSYNC. I2C4 disabled. GMAC off. SC233HGS chip id 0xcb61.
IMU, I2C, SPI
| Net | Pad / GPIO | Function |
|---|---|---|
| SPI0 CLK/CS0/MISO/MOSI | SPI0_M2 GPIO5_A3 / A4 / A5 / A6 | IMU0 U9 (CAM0) |
| IMU0_INT1 / INT2 | GPIO5_B1, GPIO5_D4 | IMU0 interrupts |
| SPI1 CLK/CS0/MISO/MOSI | SPI1_M0 | IMU1 U12 (CAM1) |
| IMU1_INT1 / INT2 | GPIO6_B5, GPIO6_C1 | IMU1 interrupts |
| I2C0_SCL/SDA_PMIC | I2C0M0 0x27 | RK801-2 |
| PMIC INT / PWRCTRL | GPIO0_C0, GPIO0_C1 | PMIC |
| I2C2 | I2C2M0 0x52 | RV-3028 |
| RTC INT / EVI | GPIO0_C5, GPIO0_C4 | RTC |
| I2C1 / I2C5 | - | Disabled on this PCB |
IMU sample rates
Fitted part is LSM6DSVQTR x2, IIO st,lsm6dsv. SPI mode 3, spi-max-frequency 1 MHz. DTB: st,odr-triggered, DRDY on INT1.
| Accel | Gyro | |
|---|---|---|
| This package (HUD) | 480 Hz | 480 Hz |
| IIO nodes | CAM0 iio:device2, CAM1 iio:device4 | CAM0 iio:device1, CAM1 iio:device3 |
| ODR list (Hz) | 1.875, 7.5, 15, 30, 60, 120, 240, 480, 960, 1920, 3840, 7680 | 7.5, 15, 30, 60, 120, 240, 480, 960, 1920, 3840, 7680 |
| Full-scale (typical) | +/-2 / 4 / 8 / 16 g | +/-125 / 250 / 500 / 1000 / 2000 / 4000 dps |
/sys/bus/iio/devices/iio:deviceN/sampling_frequency. Default ODR in tools/ego_imu_hud.py is 480.
Wi-Fi, SD, USB, power, LED, boot
| Net | Pad / GPIO | Function |
|---|---|---|
| eMMC | EMMC / FSPI | U2A, live mmc0 |
| SDMMC0 CLK/CMD/D0-D3 | GPIO2_A0-A5 | microSD |
| SDMMC0_DET | GPIO3_B3 pad 1B14 | Card detect, active low, pull-up |
| SDMMC0_PWREN | GPIO3_B4 pad 1A14 | SD rail enable |
| SDMMC1 CLK/CMD/D0-D3 | SDIO | VS6621 Wi-Fi |
| WIFI_RST / CHIP_EN | GPIO3_B2 | pwrseq, low = rail on (BSS84 Q1) |
| WIFI_SOC_PWCTL | GPIO3_B6 | HOST_WAKE_WL |
| WIFI_INT | GPIO3_B7 pad A16 | WL_WAKE_HOST |
| UART2 TX/RX/CTS | UART2M0 | BT |
| UART2 RTS | GPIO3_A6 | BT RTS as GPIO |
| USB-C J3 | USB2 + USB3 DRD | ADB gadget, dr_mode peripheral |
| BAT_CHG | GPIO0_A7 pad 1AC4 | BQ24072 charge status, active low |
| STATUS_LED_R | GPIO0_A6 pad 1AA6 | RGB common-anode, active low |
| STATUS_LED_G | GPIO0_A5 pad AL10 | RGB common-anode, active low |
| STATUS_LED_B | GPIO0_A4 pad 1AB6 | RGB common-anode, active low |
| UART0 | UART0M2 | Console 1.5 Mbaud |
| SARADC0_IN7 | ADC | Maskrom / eMMC boot |
Card detect is GPIO3_B3. GPIO0_A5 is the green LED. USB stays ADB, not a UVC webcam.
Schematic sheets not used on this PCB
| Block | State in the device tree |
|---|---|
| GMAC | Off: frees GPIO6_C2 / C3 for camera EFSYNC |
| I2C1, I2C5 | Disabled |
| DSI / display | Unused |
| EPHY / Ethernet | Sheet present, not fitted |
| Audio / I2S | Sheet present, not fitted |
The two faces
Where the heat is
Thermal path: RV1126B, centre of the camera side. Dual ISP, stereo and NPU. Cameras, eMMC and VS6621 stay clear of that path.
| Zone | On the PCB | In the housing |
|---|---|---|
| SoC lid | Large square, camera side, between the two eyes | Primary cool point. Soft thermal pad or putty onto a metal wall, spreader or small heatsink. |
| SoC via field | Centre of the connector side, under the BGA | Secondary cool point. Isolating gap pad from that copper into the same metal volume. |
| PMIC / power | Dark block left of centre on the connector side | Air or a light pad. Keep USB-C and PH clear. |
| Cameras | Black barrels at each end | Optical keep-out. Support the PCB, never clamp or twist the modules. |
| Wi-Fi / antennas | Right-hand square and gold RF pads | Plastic or air in front of the antennas. Metal here kills range and does not cool the SoC. |
Die operating 35-45 C. Kernel trip 115 C (cpu-thermal / soc-crit). Passive sink sized for the top of the band in still 25 C air. NPU off at the low end.
Cooling is part of the housing
The metal that holds the cameras is the heat path off the RV1126B.
- Pick up the lid. A 1-2 mm silicone gap pad (electrically isolating, 3 W/mK or better) on the RV1126B lid, compressed 10-30 % onto a flat aluminium or steel wall.
- Use the via field. A second pad on the connector-side via field, into the same metal.
- One stiff volume. The stereo baseline is the PCB. Housing holds the board, not the camera barrels.
- Leave service faces. USB-C, BOOT, RST and PH stay reachable. Maskrom: hold BOOT, tap RST.
Mass and air surface
About 2.0 W with dual ISP and stereo, NPU off. About 3.0 W with the NPU on. Room 25 C. Design die: 42 C off, 45 C on. Pad about 1.5 C/W.
| NPU off, 2.0 W | NPU on, 3.0 W | |
|---|---|---|
| Die in still 25 C air | 35-42 C | 40-45 C |
| Air skin on the metal | 100 cm2 | 160 cm2 |
| Aluminium | 60 g | 100 g |
| Practical part | 50 x 50 mm, 12 mm fins | 60 x 60 mm, 15-18 mm fins, or one 80 x 50 mm housing wall |
Pad and metal
| Use | Avoid | |
|---|---|---|
| Interface | Soft isolating gap pad or putty on the SoC lid and via field | Bare metal on the via field, liquid metal, hard thermal epoxy that locks the BGA |
| Pressure | Even, light compression from the lid | A point load, a screw through the SoC, or a spring that bends the board |
| Metal | Aluminium pocket or plate over the centre of the board | Metal over the right-hand RF square or in front of the lenses |
| Air | A short chimney past the SoC if the shell is plastic-only | Foam, tape or a logo plate sitting on the RV1126B |
Assembly order
- Board. Handle the green outline, not the camera barrels and not the SoC lid. Both modules square. Baseline is this PCB. Keep the connector side clean.
- Thermal parts. Lid pad on the RV1126B square only. Cut the back pad to the via field only. Stay off USB-C, PH, RST, BOOT and the UART pads.
- Housing. Lower the board onto the bosses. Cameras enter their holes last, with no side load. Close the lid so the SoC pad compresses. Check that BOOT and RST still click.
- Prove the path. Power from USB-C. Wait until stereo and ISP are up (live page after ADB forward on the host). On-die sensor after depth is up: 35-45 C (35000-45000). NPU off at the low end; NPU on near 45 C.
Keep-outs
| Feature | Why |
|---|---|
| Camera barrels | Optical axis and stereo baseline. A clamp here shifts depth and can crack the module. |
| microSD | Card eject. SoC pad stays off the slot. |
| BOOT / RST / RX / TX | Maskrom and console. |
| PH | Battery lead. Strain-relieve the cable in the shell, not on the connector. |
| Right-hand RF square | Wi-Fi / BT. Metal here is an antenna shield, not a cooler. |
| Board flex | The outline is the stereo bar. One screw that twists the PCB is a calibration failure. |
Read the SoC temperature
adb shell cat /sys/class/thermal/thermal_zone0/temp
Millidegrees C. 40000 is 40 C. Operating 35000-45000. Critical trip 115000 (115 C).
2G4P module
| Construction | 2G4P + 1 IR, M12 |
|---|---|
| EFL | 1.79 mm (597 px SC233HGS, 639 px MIRA220, 519 px OG02C10) |
| F-number | 2.0 |
| SC233HGS field | D 160, H 144, V 100 on 6.60 / 5.76 / 3.60 mm |
| TV distortion | < -22.3 % |
| CRA | 15.94 deg |
| Relative illumination | > 40 % |
| Image circle | 6.60 mm (SC233HGS), 7.00 mm (OG02C10) |
| Optical TTL | 15.00 +/- 0.3 mm |
| Mechanical TTL | 13.92 +/- 0.3 mm |
| Back focal | 3.40 mm |
| Thread / barrel | M12 x 12.00 mm, OD 16.00 mm |
| IR-cut | 420-600 nm Tavg >= 90 %, 650 +/- 10 nm T = 50 % |
| Closest object | 0.20 m |
| Seal / storage | IP69, -40 to +85 C |
| Baseline | 75.0 mm, CAM0 left, CAM1 right |
Dies
| SC233HGS | MIRA220 (AM220) | OG02C10 | |
|---|---|---|---|
| Pixels | 1920 x 1200 | 1600 x 1400 | 1600 x 1200 |
| Pitch | 3.00 um | 2.80 um | 3.45 um |
| Active array | 5.760 x 3.600 mm | 4.488 x 3.922 mm | 5.520 x 4.140 mm |
| Diagonal | 6.79 mm | 5.95 mm | 6.90 mm |
| Format | 1/2.6 in | 1/2.7 in | 1/2.5 in |
| Shutter | Colour Bayer, global | BSI global | Colour global |
| f | 597 px | 639 px | 519 px |
| D / H / V | 160 / 144 / 100 | 147.4 / 118.6 / 106.4 | 160 / 140 / 112 |
| Half field H / V / D | 72.0 / 50.0 / 80.0 | 59.3 / 53.2 / 73.7 | 70.0 / 56.0 / 80.0 |
| CRA | 15.94 | 15.94 | 15.95 |
| SKU | CV-EGO01-OS-SC | CV-EGO01-OS-AM | CV-EGO01-OS-OV |
Size at 0.40 m
| SC233HGS | MIRA220 (AM220) | OG02C10 | |
|---|---|---|---|
| 10 mm grid | 15 px | 16 px | 13 px |
| 30 mm module | 45 px | 48 px | 39 px |
| 100 mm | 149 px | 160 px | 130 px |
| 180 mm hand | 269 px | 288 px | 233 px |
| 200 mm mat | 298 px | 320 px | 259 px |
| Disparity 0.30 / 0.40 / 0.60 m | 149 / 112 / 75 px | 160 / 120 / 80 px | 130 / 97 / 65 px |
Ego frames
Field on the table
Where it runs
| Place | What sits there |
|---|---|
| Host PC | USB driver, flash, overlay push, ADB forwards, diagnostics, session writer. Sources on GitHub. |
Board /userdata | Stereo page, FSYNC/EFSYNC, IMU HUD, calibration UI, Wi-Fi STA, IQ JSON, native matcher, boot scripts |
| Board kernel | Device tree, CSI, I2C/SPI, SDIO Wi-Fi, ADB gadget: rv1126b-camevision-ego.dts |
Sources: tools/. Overlay: restore/release-0.2-20260902/overlay/ to /userdata.
Drivers
Kernel in the boot FIT is 6.1.141-rt52. In-tree nodes come from the DTB. Out-of-tree modules sit in the overlay and are insmod'd from the boot scripts.
| Block | Driver / compatible | Where it lives | Live nodes |
|---|---|---|---|
| MIPI sensor | smartsens,sc233hgs | Boot FIT (kernel + DTB) | I2C 3-0030, 6-0030, chip id 0xcb61 |
| MIPI CSI-2 D-PHY | csi2_dphy0, csi2_dphy1 | DTB, 4 lanes each | PHY under CSI RX0 / RX1 |
| MIPI CSI-2 host | mipi0_csi2, mipi1_csi2 | DTB | Bridge into CIF |
| CIF | rkcif, rkcif_mipi_lvds, rkcif_mipi_lvds1 | DTB + Rockchip CIF | Raw path into ISP |
| ISP / VPSS | rkisp, rkisp_vir0/1, rkvpss_vir0/1 | DTB + Rockchip ISP | /dev/video24 CAM0, /dev/video32 CAM1 |
| 3A / IQ | rkaiq_3A_server | /oem/usr/bin/ + IQ JSON | Exposure / AWB on both ISPs |
| IMU | st,lsm6dsv (IIO) | Boot FIT, SPI0 / SPI1 | iio:device1 to iio:device4 |
| Wi-Fi / BLE | SDIO 1FFE:6621, skw_sdio_lite, swt6621s_wifi, skwbt | Overlay swt6621-rt52/ + FW | mmc2, wlan0, hci0 |
| Wi-Fi stack | cfg80211, mac80211 | camevision-wifi.sh | nl80211 + wpa_camevision.conf |
| USB gadget | DWC3 dr_mode=peripheral | DTB + rootfs | ADB 2207:0006 |
| eMMC / SD / SDIO | emmc, sdmmc0, sdmmc1 | DTB | mmc0 eMMC, mmc1 uSD, mmc2 Wi-Fi |
| RTC / PMIC | rv3028 I2C2 0x52, rk801 I2C0 0x27 | DTB | /dev/rtc0 |
| NPU / GPU / MPP | rknpu, mali, mpp | Kernel + kmpp-rt52.ko | /dev/rknpu, /dev/mpp_service |
Camera pipe: sensor to D-PHY to CSI-2 to CIF to ISP to VPSS. USB stays the Camemake ADB gadget. Do not switch the board to a webcam profile.
Device tree
Board source: rv1126b-camevision-ego.dts. Model string CameVision Ego, compatible camemake,camevision-ego.
| Node | State |
|---|---|
i2c3/sc233hgs@30, i2c-gpio-cam1/sc233hgs@30 | Both cameras, 27 MHz XVCLK, 4-lane |
i2c4 | Disabled: CAM1 SCL/SDA are swapped, bit-bang instead |
csi2_dphy0/1, mipi0/1_csi2, rkcif*, rkisp* | Dual pipe |
spi0/imu@0, spi1/imu@0 | st,lsm6dsv, SPI mode 3, 1 MHz, st,odr-triggered |
sdmmc1 + pwrseq, UART2 BT | VS6621 |
usb@21500000 | dr_mode = peripheral (ADB) |
gmac, dsi, i2c1, i2c5 | Disabled |
uart0 | Console 1.5 Mbaud |
Flash partition map
| LBA | Image |
|---|---|
| loader (db once) | rv1126b_spl_loader_k4a8g.bin |
0x0 | env.img |
0x40 | idblock.img |
0x440 | uboot.img |
0x2440 | camevision_boot_ego.img (kernel + DTB FIT) |
0x7C40 | userdata.img, then overlay |
0x207C40 | oem_noko.img |
0x607C40 | rootfs_bootstable.img |
CLI: tools/cv_ego_flash.py then tools/cv_ego_overlay_deploy.py.
python tools/cv_ego_flash.py --prebuilt python tools/cv_ego_overlay_deploy.py
Boot chain
S11hwclock: RV-3028 to system clock.S99ego-stereo: starts the stereo script.camevision-stereo.sh: kmpp, Wi-Fi, rkaiq 3A, IMU HUD, thenego_stereo.py.cv_ego_page.py:adb forward8081 and 8083, opens the live page on the host.
On the board
| Block | File | On the board | Role |
|---|---|---|---|
| Live stereo | ego_stereo.py | /userdata/ego_stereo.py, port 8081 | Reads /dev/video24 and /dev/video32. JPEG live page, depth, calibration, record. |
| Matcher | stereo_native.c | /userdata/libego_stereo.so | C block matcher and NV12 overlay. |
| FSYNC / EFSYNC | ego_cam_sync.py | imported by the live page | GPIO4_A1/A0 + GPIO6_C2/C3. Default 12.5 fps continuous trigger. |
| IMU HUD | ego_imu_hud.py | port 8083 | JSON of IMU0 (CAM0) and IMU1 (CAM1). |
| Calibration | ego_calib.html | /cal | Writes /userdata/ego_calib.json. |
| Focus / MTF | ego_mtf.py | /focus/start | ISO 12233 slanted-edge MTF50. |
| Record | ego_record.py | /record/start | HEVC of the live NV12. |
| Wi-Fi STA | camevision-wifi.sh | /userdata | VS6621 modules + wpa conf. |
| IQ | iq JSON | /userdata/iqfiles/ | SC233HGS 3A / ISP tuning. |
Live page routes (host after ADB forward)
On the PC that has the board on USB: adb forward tcp:8081 tcp:8081, then open http://127.0.0.1:8081/.
| Path | Body |
|---|---|
/ | Live HTML, /ov0 and /ov1 MJPEG |
/ov0, /ov1 | MJPEG with depth overlay |
/raw0, /raw1 | MJPEG without overlay |
/depth | Depth view |
/snap0, /snap1, /snapx | Single JPEG |
/stat | JSON status |
/imu | JSON from :8083 |
/trig | FSYNC / EFSYNC status |
/cal and /cal/* | Calibration session |
/focus/start, /focus/stop | MTF |
/align | Stereo align |
/record/start, /record/stat | Session record |
Host tools on GitHub
| Block | File | Role |
|---|---|---|
| USB driver | cv_ego_driver.py | Rockusb + ADB |
| Flash | cv_ego_flash.py | Maskrom write, then overlay |
| Overlay | cv_ego_overlay_deploy.py | ADB copy into /userdata |
| Open live | cv_ego_page.py | Forwards 8081 / 8083 |
| Autostart | cv_ego_autostart.py | Host watcher |
| Diagnostics | cv_ego_diag.py | ADB dump |
| Record (host) | cv_ego_record_host.py | Session writer |
Repository: github.com/Camemake/CameVision-Ego
Specifications
| Sensor | SC233HGS, OG02C10, MIRA220 |






























