Skip to content
Paul Philippov edited this page Jan 9, 2026 · 15 revisions

We use the latest available version of Buildroot with slight modifications that allow us to create a truly portable building environment.

Cameras and Fragments

Camera hardware is primarily based on the SoC model, image sensor, and sometimes a wireless module. Different cameras may use the same SoC, sensor, and Wi-Fi module, thus requiring similarly built firmware, but still have different GPIO mapping and peripheral configuration.

But these hardware configs have a lot of common, repetitive information related to processor architecture and firmware in general. We use configuration fragments, stored in configs/fragments/*.fragment files, to avoid repeating these settings. You can see how these fragments are included in the module config:

# FRAG: soc toolchain ccache brand rootfs kernel system target

This allows us to minimize the configuration steps required to add new hardware. And, if necessary, we can easily propagate changes to all dependent hardware.

Config for compilation

When make is run, the final configuration for a given camera is assembled from the pieces and saved as a ~/output/<camera_config_name>/.config file. It then runs make olddefconfig, which parses the file, resolves any conflicts and redundancies, and creates a new fully populated .config file, saving the previous version as .config.old, which gets overwritten with any new changes, so we also save the initial version of the .config file as .config_original for easier debugging.

To recreate the .config file from the original camera configuration file and its includes, run make defconfig.

local.fragment and local.mk

We provide a file for local changes to a shared configuration. The local.fragment file in the configs/ directory can contain settings that should be included in a common config on the developer's machine, but don't go into the upstream repository. You can add additional packages there or override the default settings:

BR2_PACKAGE_NANO=y
BR2_PACKAGE_SCREEN=y
BR2_REPRODUCIBLE=n

The local.mk file placed in the root of the firmware directory is a standard Buildroot feature that allows you to override package sources, including those from the Buildroot itself. This is an invaluable feature for local development. Read more about this in chapter 8.13.6 of https://buildroot.org/downloads/manual/manual.html.

LINUX_OVERRIDE_SRCDIR=$(HOME)/dev/thingino/linux
LINUX_HEADERS_OVERRIDE_SRCDIR=$(HOME)/dev/thingino/linux
INGENIC_SDK_OVERRIDE_SRCDIR=$(HOME)/dev/thingino/ingenic-sdk
PRUDYNT_T_OVERRIDE_SRCDIR=$(HOME)/dev/thingino/prudynt-t
  1. Wiki Home
  2. About the Project
    1. Contributions
    2. Features
    3. Project Philosophy
    4. Releases
  3. Getting Started
    1. FAQ
    2. Glossary
    3. Hardware Identification
    4. Image Builder
    5. USB Boot Mode
    6. Ingenic USB Cloner
      1. OTG Booting
    7. PPSTRONG
    8. Installation: General
    9. Installation: No Tools Methods
    10. Resources and Links
    11. Support Community
    12. Troubleshooting
    13. UART Connection
    14. Updating Firmware
    15. Unbricking
    16. Web UI
  4. Supported Cameras
    1. Cameras
    2. 360 AP1PA3
    3. AliExpress LTIA‐37FJZ (Vanhua Z55 module)
    4. AOQEE C1
    5. Aosu C5L
    6. Cinnado
      1. Cinnado D1 2K
      2. Cinnado D1 3K
    7. Dekco DC5L
    8. Eufy
      1. Eufy E210 Outdoor Cam
      2. Eufy E220
    9. Galayou/Wansview
      1. Galayou G2
      2. Galayou G7
      3. Wansview W6
      4. Wansview W7/Galayou Y4
    10. Hualai (Wyze/Atom/Neos/Personal)
      1. Dafang Upgrading for Wyze v2
      2. NEOS conversion
      3. Personal Cam Pan and Cam 2
      4. Wyze Cam Pan V1
      5. Wyze Doorbell (V1)
        1. Chime Reverse Engineering
        2. Flashing VDB1 over UART (YMODEM)
        3. MQTT Control and Monitoring
      6. Wyze v2/Neos SmartCam/ATOM Cam 1
      7. Wyze v3
      8. Wyze Accessories
    11. iFlytek XFP301‐M
    12. Jienuo JN-107-AR-E-WIFI
    13. Jooan A6M
    14. LaView L2
    15. LongPlus X07
    16. LSC 3215672
    17. Sannce I21AG
    18. Sonoff Cam‐S2 and B1P
    19. TP-Link Tapo C100/C110/C111
    20. Wuuk Y0510
    21. Xiaomi
      1. Xiaomi Mijia1080p (SXJ02ZM)
      2. Xiaomi MJSXJ03HL
      3. Xiaomi Outdoor Camera AW200 (MJSXJ05HL)
  5. Configuration
    1. Administration
    2. Automation
      1. Configuring camera using runonce.sh script
    3. Cron jobs
    4. General
    5. LED Indicators
    6. Lighting
    7. Media Streaming Endpoints
    8. Network Storage
    9. Networking
      1. DHCP: Timezone
      2. Wireless Networking
      3. USB Direct w CDC (NCM)
      4. USB Ethernet Networking
      5. Remote Access
      6. VPN
        1. Tailscale
        2. Wireguard
        3. Zerotier
      7. Wi-Fi
        1. Self Hosted AP
        2. Tips and Tricks
      8. WWAN (Cellular)
    10. Night Mode
    11. ONVIF
    12. OSD (On-screen Display)
    13. Plugins
      1. Motion Guard
      2. Yandex Disk
    14. SSH Access Keys
    15. Wi-Fi Access
    16. Provisioning
    17. Streamer Bitrate Control
    18. Video Rotation
  6. Integration
    1. Home Assistant
    2. Frigate
    3. Ingenic A1/$15 NVR
    4. LightNVR
    5. Mobile Apps
    6. MQTT Integration
    7. Telegram Bot Integration
    8. Virtual Webcam on Linux
    9. Mainsail (Klipper)
  7. Development
    1. Booting
      1. Boot: MMC SD
      2. Boot: NFS
    2. CH341A Programmer
    3. RTSP Players
    4. Flash Chips
    5. go2rtc
    6. Porting Guide
    7. Ingenic Platform Capability Matrix
    8. Ingenic Image Processor
    9. ISP Reserved Memory (RMEM)
    10. Debugging
    11. Software
      1. Building From Sources
      2. Buildroot
      3. Toolchain
      4. Choice of JSON library
    12. SSL and TLS Web UI in thingino
    13. Tech Info
      1. Hardware
      2. PWM Info
      3. Supported Hardware
      4. T23 GPIOs
      5. T31 GPIOs
    14. U-Boot Cheatsheet
    15. Zeratul/Atlas/Tassadar
    16. Resources

Clone this wiki locally