Firmware drone changes to support caf_ardrone

CAF (Cloud Assistant Framework)

Co-design permanent, active, stateful, reliable cloud proxies with your web app.



This repository has submodules, after cloning use:

git submodule update --init 


  • Connect the drone as a client of a wpa protected network (see
  • Enable dns queries in the drone (cross-compile
  • Enable a gps dongle (like USGlobalSat ND100S) accessible via gpsd (cross-compile gpsd and add kernel modules for usb serial- see
  • Use udev rules to conditionally start the drone in caf_ardrone mode if a particular USB dongle is present. It is difficult to recover the drone if wifi gets messed up, and removing the dongle provides a simple way to boot normally.
  • Synchronize local clock with ntp (i.e., cross-compile ntpclient
  • Start a node.js daemon (like that will push video streams and execute atomically bundles of commands with precise timing. See for cross-compiling node.js.
  • Automatically restart a crashed node.js daemon with mon (see Note that there is very little free memory in the drone and we aggressively force garbage collections by starting node with option --expose_gc. We also overprovision virtual memory (i.e., setting overcommit_ratio). This risky strategy occasionally fails and we use mon to restart the daemon...
  • Periodically scan local wifi networks to improve indoors location capabilities.

The installation process will check that the current firmware version matches the target one (currently 2.3.3, to upgrade download from, place the plf file in the /update directory -by, for example, using ftp- and reboot). If it matches it just untars a patch file in the root directory (see To create that tar file, some customization is needed (for example, npm install the daemon with your changes in /data/caf or set your wpa password and essid in /etc/wpa_supplicant.conf), and this is done with the script The name of the new tar file is /tmp/changes.tar.gz.


This repository does not currently provide an easy and bullet-proof way to upgrade your drone. This is all work in progress, and it is very likely that scripts will leave your drone in a corrupted state from which it will be very difficult to recover. You have been warned...