Skip to content

Development: Toolchain

Paul Philippov edited this page Jul 28, 2025 · 3 revisions

Development: Toolchain

This section explains the toolchain, which is a set of tools used to compile (build) the firmware. Buildroot handles compiling this toolchain automatically as part of the firmware-building process. It's set up using these specific settings in the Buildroot configuration file:

BR2_TOOLCHAIN_BUILDROOT_VENDOR="thingino"
BR2_TOOLCHAIN_BUILDROOT_MUSL=y
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_10=y
BR2_BINUTILS_VERSION_2_44_X=y
BR2_GCC_VERSION_14_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y

Speeding Up the Build Process

To make building faster, you can compile the toolchain once and reuse it for future builds. This saves a lot of time because you don't have to recompile it every time.

Here's how:

  1. Run this command to create a toolchain bundle (called an SDK):

    make sdk
    

    The resulting bundle will reside in the images subdirectory, e.g. ~/output/images/mipsel-thingino-linux-musl_sdk-buildroot.tar.gz

  2. Extract the bundle to a local directory and update the toolchain for the new path.

    mkdir -p ~/opt/toolchains/thingino-musl-gcc14
    cd ~/opt/toolchains/thingino-musl-gcc14
    tar xvf ~/output/images/mipsel-thingino-linux-musl_sdk-buildroot.tar.gz
    ./relocate-sdk.sh
    
  3. Update your Buildroot configuration to use this pre-compiled toolchain. Add or change these lines:

    BR2_TOOLCHAIN_EXTERNAL=y
    BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
    BR2_TOOLCHAIN_EXTERNAL_PATH="/opt/toolchains/thingino-musl-gcc14"
    BR2_TOOLCHAIN_EXTERNAL_PREFIX="mipsel-linux"
    BR2_TOOLCHAIN_EXTERNAL_GCC_14=y
    BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y
    BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC=y
    # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
    # BR2_TOOLCHAIN_EXTERNAL_CXX=n
    
  • The BR2_TOOLCHAIN_EXTERNAL_PATH points to where the SDK is installed on your machine (you might need to adjust the path).

Sharing the Toolchain Across Machines

If you want to use the same toolchain on multiple computers, you can upload the SDK bundle to a shared location (like a server or file host) and tell Buildroot to download it from there.

Update your Buildroot configuration like this:

BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
BR2_TOOLCHAIN_EXTERNAL_URL="http://192.168.1.61/thingino-toolchain-musl-gcc14.tar.gz"
BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y
BR2_TOOLCHAIN_EXTERNAL_GCC_14=y
#BR2_TOOLCHAIN_EXTERNAL_CXX=y
BR2_INSTALL_LIBSTDCPP=n
  • Replace the BR2_TOOLCHAIN_EXTERNAL_URL with the actual web address where you've uploaded the toolchain file.
  • This way, Buildroot will download and use the toolchain automatically during the build.
  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