Ground Control Station

We provide a ground control station for monitoring the status of the quadcopter, for tuning the control loops and for control via keyboard or gamepad.


Run make in the smaccm-comm-client directory of a full SMACCMPilot build tree.


The smaccm-comm-client executable starts a http server on port 8080 (change this with options, see --help to learn more).

In smaccmpilot-build/smaccmpilot-stm32/src/smaccm-comm-client/ there is a shell script Provide two arguments: first, the serial port the radio is connected to, and second, the baud rate (if you’re using smaccm-sik, as you should be, this will always be 57600).

You can pass additional options after these, pass --help to learn about them.

Browser Interface

Several HTML based user interfaces are available:

Additional interfaces convenient for debugging:

Older (deprecated) interfaces:

  • http://localhost:8080/hud.html is the primary display of the vehicle’s state when using the flight application.
  • http://localhost:8080/attitude.html renders the output of the sensor fusion, which is available in the flight application and the smaccm-ins tests
  • http://localhost:8080/bbox.html shows the bounding box output from the odroid companion computer, if connected
  • http://localhost:8080/light.html directly controls the RGB led, useful in the RGB LED unit test
  • http://localhost:8080/pidconfig.html is used to tune the flight PID control loop parameters. Note that these parameters are not saved across the reset, once you tune a vehicle you will have to build new firmware with the desired PID variables by default creating a new vehicle type in smaccmpilot-build/smaccmpilot-stm32/src/smaccm-flight/tuning.conf and building firmware for that precise vehicle by setting the args.vehicle field in your user.conf.


If you wish to make your own GCS app, the smaccm-comm-client server speaks a simple JSON API based on the GIDL schema found in smaccmpilot-build/smaccmpilot-stm32/src/smaccm-comm-schema/smaccm-comm-schama.gidl.

Unfortunately there are very few docs on how this works, but you can follow the examples of the existing browser UIs, and send mail to the list if you need more information.