An open API service indexing awesome lists of open source software.

https://github.com/openipc/camerasrnd

Experiments with cheap Linux cameras
https://github.com/openipc/camerasrnd

hisilicon ipc ipcam ipcamera openipc xiongmai xiongmaitech xmeye

Last synced: 4 months ago
JSON representation

Experiments with cheap Linux cameras

Awesome Lists containing this project

README

        

# Research & Development repository about cheap cameras (mainly XM manufactured)

PRs with additional information and corrections are welcome.

## Where to begin?

- [OpenIPC wiki](https://openipc.org/wiki)
- [English XM FAQ](doc/XM-FAQ-en.md). Thanks to @vbelov42 for translation from Russian.
- [Russian XM FAQ](doc/XM-FAQ-ru.md).
- [How to get telnet on XM camera](xm_get_telnet.md)

## Articles/books for newbies

- [George Hilliard. Mastering Embedded Linux, series of articles](https://www.thirtythreeforty.net/posts/2019/08/mastering-embedded-linux-part-1-concepts/)
- [Frank Vasquez, Chris Simmonds. Mastering Embedded Linux Programming, 3rd Edition](https://www.google.com/books/edition/Mastering_Embedded_Linux_Programming/K4ApEAAAQBAJ)
- [Linux Inside. A book-in-progress about the linux kernel and its insides](https://0xax.gitbooks.io/linux-insides/content/)
- [Alberto Liberal de los Ríos. Linux Driver Development for Embedded Processors, 2nd Edition](https://www.amazon.com/Linux-Driver-Development-Embedded-Processors-ebook/dp/B07L512BHG/)
- [Bootlin. Linux Kernel training materials](https://bootlin.com/doc/training/linux-kernel/)
- [Introducing ARM assembly language](http://www.cburch.com/books/arm/)

## Telegram groups

- [OpenIPC English](https://t.me/openipc)
- [OpenIPC Russian, русская группа](https://t.me/joinchat/DJ_qFkdXU2CquZhdsVKlzg)
- [OpenIPC Iranian, یم OpenIpc برای کاربران ایرانی](https://t.me/joinchat/EgJJ10_xsEGEL1pnV4kKig)

## Chip families information

Hardware structuring ([courtesy of OpenHisiIpCam project](https://github.com/OpenHisiIpCam/br-hisicam/blob/master/README.md#chip-families-information)):

| Chips | shortcode |
| -------------------------------------------------- | ----------- |
| [hi3516cv100, hi3518cv100, hi3518ev100, hi3518av100](https://drive.google.com/file/d/1XA5IqVb-mUvmYl_77TMnoNonvNgkq473/view) | hi3516cv100 |
| [hi3516dv100, hi3516av100](https://drive.google.com/file/d/1hwCMnwQ_nKL-weH3onGZ1njogz0cPKsK/view) | hi3516av100 |
| [hi3518ev200, hi3518ev201, hi3516cv200](https://drive.google.com/file/d/1nv-m7WFhhfAZ6xgynfZQh1ijtwmmf1UX/view) | hi3516cv200 |
| [hi3519v101](https://drive.google.com/file/d/1DMpPAnUBnijmC9u08I_D4nYpSZC2f4jx/view), [hi3516av200](https://drive.google.com/file/d/1j_3e2PaDu_j5Jy9f7ptRMN5IOwQft6iI/view) | hi3519v100 |
| [hi3516ev100, hi3516cv300](https://drive.google.com/file/d/1xZf-YiYSmB8sn9Lnj3obsR-x4AqDPa4D/view) | hi3516cv300 |
| hi3516dv300, hi3516av300, hi3516cv500 | hi3516cv500 |
| [hi3516ev200](https://drive.google.com/file/d/1zGBJ_SIazFqJ8d8bguURVVwIvF4ybFs1/view), hi3516dv200, hi3518ev300, [hi3516ev300](https://drive.google.com/file/d/1vjAQSrFoxioPq7OhL5taIyi2D0D_3WKc/view) | hi3516ev200 |
| hi3519av100 | hi3519av100 |
| hi3559av100 | hi3559av100 |
| gk7205v200, gk7605v100, gk7202v300, gk7205v300 | gk7205v300(*) |
| nt98562, nt98566 | nt9856x |
| ssc337, ssc335 | ssc335 |
| xm510 | xm510 |
| xm550, xm530 | xm530 |

If you know about newer versions of full datasheets or can share them for different
camera types don't hesitate to make a PR.

(*) Successors of Hisilicon chips

| Hisilicon | Goke |
| ----------- | ---------- |
| hi3516ev200 | gk7205v200 |
| hi3516dv200 | gk7605v100 |
| hi3516ev300 | gk7205v300 |
| hi3518ev300 | gk7202v300 |

## Performance and sensors

| Chip | CPU | Encoder | JPEG substream | Sensors |
|-------------|--------------------------|-------------------------------------|----------------|------------------------------------------------|
| hi3516av100 | A7 600MHz | 5MP@30fps, 1080p@60fps, 1080p@30fps | 5MP@8fps | IMX178, IMX385, IMX290, IMX185, OV4689, AR0237 |
| hi3516dv100 | A7 600MHz | 5MP@15fps, 3MP@30fps, 1080p@30fps | 5MP@8fps | IMX178, IMX385, IMX290, IMX185, OV4689, AR0237 |
| hi3519v101 | A17 1.25GHz + A7 800MHz | 12MP@15fps, 8MP@30fps | 8MP@30fps | IMX226, IMX274 |
| hi3516av200 | A17 1.25GHz + A7 800MHz | 8MP@15fps, 6MP@30fps | 8MP@30fps | IMX274, OS08A10 |
| hi3516dv300 | A7 900MHz (NNIE 1.0Tops) | 5MP@20fps, 1080p@30fps | 16MP@10fps | IMX385, IMX327 |
| hi3516cv500 | A7 900MHz (NNIE 0.5Tops) | 3MP@20fps, 1080p@30fps | 16MP@10fps | IMX327 |
| hi3518ev200 | ARM926 540MHz | 720p@30fps | 2MP@5fps | AR0130, OV9732, OV9712, F02 |
| hi3516ev100 | ARM926 800MHz | 1080p@20fps | 2MP@5fps | IMX291, IMX323, SC3235 |
| hi3516cv300 | ARM926 800MHz | 1080p@30fps | 2MP@5fps | IMX291, IMX323, SC3235 |
| hi3516ev300 | A7 900MHz | 4MP@15fps, 3MP@30fps | 4MP@5fps | IMX335 |
| hi3516ev200 | A7 900MHz | 3MP@20fps, 1080p@30fps | 3MP@5fps | SC3235, IMX307 |

![](images/hisilicon_families.jpg/?raw=true)

## Hardware

- [Sensors information](sensors/README.md)

### How to add new hardware support

- [Your new ARM SoC Linux support check-list](https://elinux.org/images/a/ad/Arm-soc-checklist.pdf)
- Sensor
- Flash

## SDKs

### HiSilicon

| Family | Kernel | U-Boot | MPP |
| ----------- | ------- | ----------------- | ------ |
| hi3516av100 | 3.4.35 | | v2 |
| hi3516av200 | 3.18.20 | | v3 |
| hi3516cv100 | 3.0.8 | 2010.06-svn | v1 |
| hi3516cv200 | 3.4.35 | | v2 |
| hi3516cv300 | 3.18.20 | 2010.06-svn1098 | v3 |
| hi3516cv500 | 4.9.37 | | v4 |
| hi3516ev200 | 4.9.37 | 2016.11-g2fc5f58 | v4 |
| hi3516ev300 | 4.9.37 | | v4 |
| hi3519av100 | 4.9.37 | | v4 |
| hi3559av100 | 4.9.37 | | v4 |

HiSilicon SDK naming principles:

`Hi35xxVxxxRxxxCxxSPCxxy`

Each field is explained as follows:

* `Hi35xx`, segment contains chip type
* `Vxxx` segment contains the type of chip version
* `Rxxx` segment contains the release package type:
- `R001`: Linux SDK
- `R002`: Huawei LiteOS SDK
- `R003`: Linux RDK reference design
- other R bit is not used
* `Cxx` segment contains compiler specific environment
- `C00`: FPGA-based
- `C01`: type A compiler (e.g. `uclibc` based sysroot)
- `C02`: type B compiler (e.g. `glibc` based sysroot)
- `C03` and `C04` are reserved
- `C05`: Huawei LiteOS
- `C09`: based on Demo version
* `SPCxxy` segment shows current version
- `xx` for each next release will be incremented by 1 (releases with fixed errors, additional features, etc)
- `xx0` indicates normal version, for temporary versions last character could be incremented by 1 in range from `1-9` and `A-z`.

### XiongmaiTech

| Platform | Version | Update time | Download link |
| -------- | ---------- | ----------- | ------------- |
| Windows | V4.0.8.80 | 2020-02-27 | [link](https://obs-xm-pub.obs.cn-south-1.myhuaweicloud.com/openPlat/20200227/NetSDK_20200227.zip) |
| Mac | | 2018-12-17 | [link](https://obs-xm-pub.obs.cn-south-1.myhuaweicloud.com/openPlat/20191221/MAC(20181217).zip) |
| Linux | V1.0.2.0 | 2020-01-10 | [link](https://obs-xm-pub.obs.cn-south-1.myhuaweicloud.com/openPlat/20200110/XNetSDK_20200110.zip) |

Latest versions were taken from [official site](https://oppf.xmcsrv.com/#/download?md=netSDK)

* [NetSDK client example](https://github.com/dimerr/xmconfigtool)

## Sophisticated usage

[YouTube streaming](streaming/youtube.md)

## Development

### Low level programming

* [ARM9EJ-S Technical Reference Manual](http://infocenter.arm.com/help/topic/com.arm.doc.ddi0222b/DDI0222.pdf)
* [PrimeCell UART (PL011) Technical Reference Manual](http://infocenter.arm.com/help/topic/com.arm.doc.ddi0183f/DDI0183.pdf)

### Cross-compilation

- [Known toolchains](toolchains.md)
- [Instructions for cross-compilation for different common software](crosscompile/index.md)

### Development using SDK

- [Building custom kernel](kernel/build.md)
- [Building Busybox](busybox/build.md)
- [Hacking camera using NFS](hacking/nfs.md)

### Debugging

- Debugging on board using gdbserver
- [Ltrace debug](debug/ltrace.md)

### Development tricks

- [Running ARM binaries using QEMU on dev host](qemu/userspace.md)
- [Changing files on readonly volumes](tricks/romounts.md)

### RE

- [Reverse binary Linux kernel](reverse/kernel.md)
- [Reverse HiTool](reverse/hitool.md)
- [Reverse Sofia](reverse/sofia.md)