PiecewiseHow a peer to peer transfer actually works

Transmission: the small client that runs anywhere

Transmission

A small always-on machine of the kind a daemon runs on.

Transmission is a free and open source torrent client built around a daemon that a separate interface talks to, which is why it turns up on servers, network attached storage boxes and router firmware far more often than on a desktop.

The project publishes its own source and its own builds for macOS and Linux, and the same project maintains every interface that drives it, so a Transmission build should come from the project or from your distribution's package repository and from nowhere else.

What Transmission is and who makes it

Transmission is a client program that speaks the BitTorrent protocol, so it does what any client does: it reads a torrent file or a magnet link, finds peers, trades pieces and hashes each one before writing it. How a transfer works covers that sequence. What distinguishes Transmission from its two siblings is that a single project maintains four separate faces onto one engine: a native macOS application, a GTK interface for Linux, a Qt interface, and a web interface served by the daemon itself. All four drive the same background process.

It is a volunteer project with no company behind it, published under a free software license, and there is no paid edition to be sold up to.

What engine Transmission runs on

Transmission runs on its own engine, libtransmission, maintained inside the same project as the interfaces rather than shared with any other client. That makes it the odd one of the three: qBittorrent and Deluge both sit on libtorrent, so they inherit one shared implementation of the distributed hash table, protocol encryption and the microtransport protocol, while Transmission implements all of that itself.

The practical consequence is footprint. An engine with no desktop toolkit and no scripting runtime loaded is small enough to live in the flash storage of a router and in NAS firmware, which is exactly where it ended up. It also means a protocol behavior that changes in libtorrent does not change in Transmission, and the reverse.

How Transmission is driven

Transmission is driven through a daemon and a remote, and understanding that split is most of understanding the program. The background process, transmission-daemon, holds every transfer and keeps running after you log out. It exposes a remote procedure call interface on port 9091 by default, and four official faces speak to that interface.

  • The web interface, served by the daemon itself on port 9091, needing nothing installed on the machine you drive it from.
  • transmission-remote, the command line tool, which adds, lists, pauses and removes transfers and is what scripts and cron jobs use.
  • The native macOS application, which can either attach to a daemon or run the engine inside itself.
  • The GTK and Qt desktop interfaces, which do the same in a window on a Linux desktop.

The macOS application and the desktop interfaces can therefore run the engine in their own process for someone who just wants a window, or connect to a daemon elsewhere for someone who does not.

To use Transmission on a server, install the daemon package, set a username and password for the remote interface before exposing the port, then add torrents either through the web interface or by dropping files into the watch directory the daemon monitors. Nothing about that workflow needs a screen attached to the machine.

What Transmission does that qBittorrent and Deluge do not

Transmission goes where the other two do not. It ships in OpenWrt and in the firmware of many consumer NAS devices, it has been the client shipped by default with several Linux distributions, and it starts on machines with a fraction of the memory a desktop client expects. One daemon serving four official interfaces is also unusual: you can start a transfer from a Mac window and finish supervising it from a browser on a phone, with no third program in between.

Against qBittorrent the trade is explicit. qBittorrent exposes far more controls, creates torrents, filters by IP, tags and categorizes, and schedules alternative speed limits. Transmission exposes a fraction of that and asks you to accept its defaults. Deluge splits daemon from interface as Transmission does, but reaches its extra features through plugins rather than leaving them out. Those two are the realistic alternatives to Transmission, and The clients sets out the axes they differ on.

What Transmission leaves out on purpose

Transmission leaves out the plugin system, the deep preferences and the built in extras, and it does so as policy rather than by neglect. The project's stated aim is a client that a person can install and never configure, which means every option that survives has to justify itself. There is no extension mechanism, so nobody can bolt anything onto it, and no advertising, no bundled installer offers and no premium tier, because there is no company that would benefit.

The cost is real. If you want per torrent granularity, elaborate categorization or fine control over the piece picker, Transmission will frustrate you and is not trying not to.

Where an official Transmission build comes from

An official build comes from the Transmission project or from your operating system's package manager. The project publishes the macOS application, the Linux interfaces and the complete source, and whether an official Windows build exists for a given release is a question to settle at the project itself. Debian, Ubuntu, Fedora and the BSD ports trees compile their own packages from the source, and OpenWrt does the same for routers. Both routes are legitimate chains. Verify the published checksum or signature against what you downloaded, and refuse any installer that offers a toolbar or a cleanup utility along the way.

Two name traps are worth knowing. Transmission is a common word, and sites trading under names built from it are not the project. And there is no official Transmission application for Android: the project does not publish one. What exists on that platform are separate programs that act as remote controls for a daemon running somewhere else, which is a reasonable thing to use and a different thing from the client. An installable package offered as Transmission itself, from outside a project that does not publish one, is precisely the repackaged build to walk away from. Peer to peer explains why the daemon can sit on one machine while you drive it from another in the first place, and The swarm covers what the peers on the far side can see either way.

Where to go next