# RTOS Sensor Support List

## Supported Sensors

The current SDK includes built-in driver support for a variety of sensors:

> Note: The support list is continuously updated with each SDK release.

- **GC2093**: 1920×1080@30, 1920×1080@60, 1280×960@90, 1280×720@90
- **OV5647**: 2592×1944@10, 1920×1080@30, 1280×960@45, 1280×720@60, 640×480@90
- **SC132GS**: 1080×1200@30, 640×480@30
- **XS9950**: 1280×720@30
- **BF3238**: 1920×1080@30, 1280×960@30
- **IMX335**: 1920×1080@30, 2592×1944@30

## Sensor Usage Guide (RTOS)

### How to enable a specific sensor driver in the kernel?

Although the SDK ships with driver code for many sensor models, only a small subset of commonly used models are enabled by default in the hardware configuration file — enabling all drivers would increase firmware size and degrade system performance. You can compile custom firmware to enable the sensors you need:

#### How to check which sensors are supported in the current firmware?

On an RTOS system, run the `list_sensor` command to see all cameras and modes supported by the current firmware:

![list_sensor](https://www.kendryte.com/api/post/attachment?id=829)

#### Download the RTOS SDK

- RTOS SDK build guide: [https://www.kendryte.com/k230_rtos/en/main/userguide/how_to_build.html](https://www.kendryte.com/k230_rtos/en/main/userguide/how_to_build.html)

#### Navigate to MPP Configuration → Sensor Configuration

```bash
make menuconfig
```

![make menuconfig](https://www.kendryte.com/api/post/attachment?id=830)

Key options:

- **Default SENSOR on CSI** — default sensor CSI assignment
- **Enable AutoFocus** — enables auto-focus (requires camera support; currently only one LiChuang camera model supports AF)
- **Enable CSIX** — enables CSIX input, PowerDown GPIO, Reset GPIO, and I2C bus (i2c0–i2c4)
- **Enable GC2093 / OV5647 / etc.** — enables the corresponding sensor driver so it is scanned at boot and its MCLK is activated

## How to Validate a Specific Sensor on the RTOS Application Layer

1. Confirm the sensor driver is enabled and rebuild + flash the SDK.

1. On the board, confirm the sensor and mode:

```bash
list_sensor
```

1. Choose a sample program related to camera capture (e.g. `vicap` / `sensor`):

```bash
./mpp/<your_sensor_sample>.elf
```

If the sample name in your image differs, use the `find` command output as the reference.

## Reference (CanMV Python, for CanMV Firmware Only)

If you are using CanMV firmware (not RTOS-only), the following Python usage applies:

```python
from media.sensor import *

sensor = Sensor(id=2, width=800, height=600, fps=30)
```

- `id`: the CSI number matching the physical MIPI CSI connection for your sensor
- `width`, `height`, `fps`: must match a resolution and frame rate listed in the table above

## Reference Links

How to add a new sensor: [../advanced_development_guide/how_to_add_sensor.md](../advanced_development_guide/how_to_add_sensor.md)

Camera calibration workflow: [../advanced_development_guide/how_to_calibrate_isp.md](../advanced_development_guide/how_to_calibrate_isp.md)

CanMV Sensor API reference (CanMV firmware): [https://www.kendryte.com/k230_canmv/en/main/api/](https://www.kendryte.com/k230_canmv/en/main/api/)
