Preparing and Flashing OpenIPC Firmware

This guide explains how to compile and flash the OpenIPC firmware with QuadroFleet’s Masina client for the drone’s camera (e.g., SSC30KQ, SSC338Q). It also covers configuring the 4G modem’s RNDIS interface.

Prerequisites

  • A Linux system (Ubuntu 22.04+ recommended).
  • Internet access for downloading repositories and tools.
  • A TFTP server for flashing (e.g., tftpd-hpa on Ubuntu).
  • Optional: CH341A programmer for direct flashing.

Step 1: Compile OpenIPC Firmware

  1. Install dependencies:
    sudo apt update
    sudo apt install g++-arm-linux-gnueabihf build-essential git
    
  2. Clone the OpenIPC firmware repository:
    git clone https://github.com/OpenIPC/firmware.git
    
  3. Clone the QuadroFleet-Masina project (opt branch):
    git clone -b opt https://github.com/beep-systems/quadrofleet-masina.git
    
  4. Build the Masina client:
    cd quadrofleet-masina/client
    make clean
    make
    
  5. Copy Masina client files to the OpenIPC firmware directory:
    cd ..
    cp -r quadrofleet-masina/client/drop/* firmware/
  6. Build the firmware:
    cd firmware
    make
    
  7. Select the target device (SSC30KQ_4G or SSC338Q_4G) during the build process.
  8. Find the output files in firmware/output/images (e.g., rootfs.squashfs.ssc30kq, uImage.ssc30kq).

Step 2: Flash Firmware via TFTP

Since the image files are slightly non-standard in size for OpenIPC, you must manually specify the block sizes for kernel and rootfs. Size of images (0x1fdd68 or 0x8ea000) may be different, 192.168.178.66 is IP of local tftp server.
How to flash these files, you can find in the OpenIPC Wiki.

  1. Set up a TFTP server on your Linux system:
    sudo apt install tftpd-hpa
    sudo cp firmware/output/images/* /var/lib/tftpboot/
    sudo systemctl restart tftpd-hpa
    
  2. Connect the camera to the TFTP server via Ethernet and access its bootloader (e.g., via a serial terminal like minicom).
  3. Set environment variables (adjust kernsize and rootsize based on file sizes):
    setenv serverip 192.168.178.66
    setenv kernsize 0x300000
    setenv rootaddr 0x350000
    setenv rootsize 0xA00000
    setenv rootmtd 10240k
    setenv bootargs 'console=ttyS0,115200 panic=20 root=/dev/mtdblock3 init=/init mtdparts=NOR_FLASH:256k(boot),64k(env),3072k(kernel),${rootmtd}(rootfs),-(rootfs_data) LX_MEM=${memlx} mma_heap=mma_heap_name0,miu=0,sz=${memsz}'
    saveenv
    
  4. Flash the kernel and root filesystem:
    tftp 0x21000000 uImage.ssc30kq
    sf probe 0; sf erase 0x50000 0x300000; sf write 0x21000000 0x50000 0x1fdd68
    tftp 0x21000000 rootfs.squashfs.ssc30kq
    sf probe 0; sf erase 0x350000 0xA00000; sf write 0x21000000 0x350000 0x8ea000
    saveenv
    reset
    

Step 3: Alternative Flashing with CH341A

  1. Download precompiled firmware from QuadroFleet.
  2. Use a CH341A programmer and NeoProgrammer 2.2.0.10:
    Device: GD25Q128x [3.3V]
    Type: SPI NOR 25xx
    BitSize: 128 Mbits
    Manuf: GIGADEVICE
    Size: 16777216 Bytes
    Page: 256 Bytes
    
  3. Flash the .bin file.

Step 4: Update Firmware (Optional)

  1. Connect to the camera via Ethernet and access its terminal (e.g., via SSH or web interface).
  2. Download new firmware images. 192.168.178.66 is IP of a local webserver with new images:
    cd /tmp
    curl -O http://192.168.178.66/rootfs.squashfs.ssc30kq
    curl -O http://192.168.178.66/uImage.ssc30kq
    
  3. Apply the update:
    soc=$(fw_printenv -n soc)
    sysupgrade --kernel=/tmp/uImage.${soc} --rootfs=/tmp/rootfs.squashfs.${soc} -z --force_ver -n
    

Step 5: Configure the 4G Modem (Quectel EC25)

Preparing the EC25-EU Modem (activating Ethernet (RNDIS) interface).

  1. Connect the modem to a PC via USB.
  2. Open a terminal (e.g., PuTTY) with settings:
    Baud rate: 115200
    Data bits: 8
    Stop bits: 1
    Parity: None
    Flow control: None
    
  3. Enable the RNDIS interface:
    AT+QCFG="usbnet",1
    AT+CFUN=1,1
    
  4. Wait for the modem to reboot and appear as a network device.

Step 6: Verify Firmware

  • Access the camera’s web interface (default IP via DHCP).
  • Confirm the QuadroFleet Masina client is running (ps | grep client).
  • Test VPN connectivity and UDP data flow using the control application.

Notes

  • Ensure the TFTP server IP (192.168.178.66) matches your network setup.
  • Backup camera settings before flashing.
  • Refer to the OpenIPC Wiki for additional flashing details.