About Qcontrol

Qcontrol is a daemon and command line tool which controls the various peripherals that are present on many embedded NAS devices. It supports any peripheral which is driven by either serial port of GPIO, including lights, fans, LCDs and watchdogs. Although it primarily supports QNAP TS devices it is designed to be modular and adding support for other devices should be easy.

Qcontrol is configured using the LUA programming language which gives it lots of flexibility.

Supported devices

  • QNAP TS-109, TS-109 II, TS-209 and TS-209 II (ts209)
  • QNAP TS-409 and TS-409U (ts409)
  • QNAP TS-110, TS-119, TS-210, TS-219 and TS-219P (ts219)
  • QNAP TS-410, TS-410U, TS-419P and TS-419U (ts41x)
  • Synology Diskstation and Rackstation (synology)


qcontrol can be downloaded using git from the git repository or as a tarball from releases page.


In addition to a C compiler and standard libraries to build and run qcontrol you will need:

To build just type make.

Your Linux kernel should have the KEYBOARD_GPIO and INPUT_EVDEV configuration options enabled.

Reporting Bugs

Please report bugs in the Debian bug tracker.

If you are running Debian then you can run:

$ reportbug qcontrol

If you are not running Debian please send a mail to submit@bugs.debian.org. You must include at the top of the mail:

Package: qcontrol
Version: <version>
Tags: upstream

Replacing <version> with the version of qcontrol you are using. Follow this with a blank line and then a description of the issue etc as normal.

For more information on reporting bugs to the Debian bug tracker please see http://www.debian.org/Bugs/Reporting.

Support for x86 based systems

As of today qcontrol today has only (so far as I know) been used on the ARM based versions.

The binary builds fine on x86, so it might (in the best possible case) just be a case of writing a suitable config file, possibly plus a simple new tsXXX.c cargo-culted from one of the others. I'm be happy to review and consider including patches which do this.

However things like GPIO and such are potentially very different on an x86 system compared with the ARM ones, in fact I don't even know if the x86 variants use the same PIC controller (that's the primary piece of h/w that qcontrol talks to) as the ARM ones, so worst case qcontrol for x86 might be an entirely different program. I don't have an x86 QNAP system to play with and I'm afraid that even if I did, it's unlikely I'd have the time to dig into this (but as I say, I'd be happy to review patches).


Releases are also announced on the qcontrol stream of my blog.

  • Allow pkg-config to use to be configured via PKG_CONFIG variable, for easier cross building (thanks Helmut Grohne in Debian bug #908525).
  • Improve build system to allow cleaner separation between static and dynamic builds.
  • Add a configuration option for TS-219 to allow configuring the number of fans, which removes a spurious log error message relating to fans which don't really exist (thanks to Yannis Tsopokis for the patch).
Download: tar (sig)   tar.gz (sig)   tar.xz (sig)
Posted Sun 20 Feb 2022 14:04:00 UTC
  • Fix for kernels which have permissions 0200 (write-only) on gpio export device.
  • Updates to systemd unit files.
  • Update to README for (not so) new location of homepage (thanks to Martin Michlmayr).
  • Add a configuration option in the examples to handle QNAP devices which lack a fan (Debian bug #712841, thanks to Martin Michlmayr for the patch and to Axel Sommerfeldt).
Download: tar (sig)   tar.gz (sig)   tar.xz (sig)
Posted Sun 27 May 2018 11:00:11 UTC
  • Update list of supported devices (Martin Michlmayr, via Debian bug #788911).
  • Update examples to handle varying gpio-keys node name.
  • Improvements to option parsing and help messages (Arnaud, see also Debian bug #804767).
Download: tar (sig)   tar.gz (sig)   tar.xz (sig)
Posted Sun 30 Oct 2016 13:57:00 UTC
  • Correct argument handling for system-status command
Download: tar (sig)   tar.gz (sig)   tar.xz (sig)
Posted Fri 11 Apr 2014 17:04:15 UTC
  • Reduce spaminess of temperature control (Debian bug #727150).
  • Support for enabling/disabling RTC on ts219 and ts41x. Patch from Michael Stapelberg (Debian bug #732768).
  • Support for Synology Diskstation and Rackstation NASes. Patch from Ben Peddell.
  • Return correct result from direct command invocation (Debian bug #617439).
  • Fix ts41x LCD detection.
  • Improved command line argument parsing.
  • Lots of internal refactoring and cleanups.
Download: tar (sig)   tar.gz (sig)   tar.xz (sig)
Posted Fri 11 Apr 2014 11:57:46 UTC
  • Fix memory corruption bug (Debian bug #708376).
  • Ignore code 0x43 from PIC, avoid spamming log.
  • Implement hysteresis for fan speed (Arno via Debian bug #709095).
  • Support for systemd socket activation and added systemd service files (both from Michael Stapelberg).
Download: tar (sig)   tar.gz (sig)   tar.xz (sig)
Posted Sun 29 Sep 2013 19:01:12 UTC
  • Add build targets to enable static linking (Original patch by Frans Pop).
  • Wake-on-Lan and EUP control (by Michael Stapelberg).
  • Updated example configurations (based on Debian package).
  • Support loading configuration snippets from a directory (Ian Campbell,).
  • Various other bug fixes.
Download: tar (sig)   tar.gz (sig)   tar.xz (sig)
Posted Sun 12 May 2013 19:10:18 UTC

First release by new maintainer. This is a rollup of some changes which were made in the old upstream SVN repository but never released and some patches which had been made in the Debian packaging. What's here corresponds to the Debian 0.4.2+svn-r40-3 package.

The 0.4.2 release was untagged in SVN, but corresponds to r14, new stuff since then includes:

  • Support for more hardware (TS-119, TS-219, TS-41x, all by Martin Michlmayr)
  • Support auto power on feature (by Martin Michlmayr)
  • Support for the A125 LCD on TS-419P devices (by Bernhard R. Link)
  • Support for a daemon mode, including syslog (Byron Bradley)
  • Support for disabling the watchdog on TS-219P II and TS-419P II (Helmut Pozimski)
  • Various other fixes (Loïc Minier, Martin, Bernhard, Byron)

As well as the change of maintainer I think the addition of the daemon mode warrants the bump to 0.5.0.

Download: tar (sig)   tar.gz (sig)   tar.xz (sig)
Posted Sat 04 May 2013 16:13:57 UTC