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
- Install dependencies:
sudo apt update sudo apt install g++-arm-linux-gnueabihf build-essential git
- Clone the OpenIPC firmware repository:
git clone https://github.com/OpenIPC/firmware.git
- Clone the QuadroFleet-Masina project (
opt
branch):git clone -b opt https://github.com/beep-systems/quadrofleet-masina.git
- Build the Masina client:
cd quadrofleet-masina/client make clean make
- Copy Masina client files to the OpenIPC firmware directory:
cd .. cp -r quadrofleet-masina/client/drop/* firmware/
- Build the firmware:
cd firmware make
- Select the target device (
SSC30KQ_4G
orSSC338Q_4G
) during the build process. - 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.
- 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
- Connect the camera to the TFTP server via Ethernet and access its bootloader (e.g., via a serial terminal like
minicom
). - Set environment variables (adjust
kernsize
androotsize
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
- 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
- Download precompiled firmware from QuadroFleet.
- 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
- Flash the
.bin
file.
Step 4: Update Firmware (Optional)
- Connect to the camera via Ethernet and access its terminal (e.g., via SSH or web interface).
- 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
- 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).
- Connect the modem to a PC via USB.
- Open a terminal (e.g., PuTTY) with settings:
Baud rate: 115200 Data bits: 8 Stop bits: 1 Parity: None Flow control: None
- Enable the RNDIS interface:
AT+QCFG="usbnet",1 AT+CFUN=1,1
- 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.