AlistGo/alist · critical
remote transmission RPC version (v%d) is incompatible with t
Error message
remote transmission RPC version (v%d) is incompatible with the transmission library (v%d): remote needs at least v%d
What it means
During Init(), the tool connects with transmissionrpc and calls RPCVersion(); when the daemon's RPC version is below the library's minimum, ok is false and this error reports the daemon version, the library's own RPC version, and the minimum the daemon must meet. Transmission-daemon versions older than roughly 2.9 (RPC < 15) cannot serve the RPC calls this tool uses (TorrentAdd fields, status enums).
Source
Thrown at internal/offline_download/transmission/client.go:61
func (t *Transmission) Init() (string, error) {
t.client = nil
uri := setting.GetStr(conf.TransmissionUri)
endpoint, err := url.Parse(uri)
if err != nil {
return "", errors.Wrap(err, "failed to init transmission client")
}
c, err := transmissionrpc.New(endpoint, nil)
if err != nil {
return "", errors.Wrap(err, "failed to init transmission client")
}
ok, serverVersion, serverMinimumVersion, err := c.RPCVersion(context.Background())
if err != nil {
return "", errors.Wrapf(err, "failed get transmission version")
}
if !ok {
return "", fmt.Errorf("remote transmission RPC version (v%d) is incompatible with the transmission library (v%d): remote needs at least v%d",
serverVersion, transmissionrpc.RPCVersion, serverMinimumVersion)
}
t.client = c
log.Infof("remote transmission RPC version (v%d) is compatible with our transmissionrpc library (v%d)\n",
serverVersion, transmissionrpc.RPCVersion)
log.Infof("using transmission version: %d", serverVersion)
return fmt.Sprintf("transmission version: %d", serverVersion), nil
}
func (t *Transmission) IsReady() bool {
return t.client != nil
}
func (t *Transmission) AddURL(args *tool.AddUrlArgs) (string, error) {
endpoint, err := url.Parse(args.Url)
if err != nil {
return "", errors.Wrap(err, "failed to parse transmission uri")View on GitHub (pinned to 843d9dc814)
Solutions
- Upgrade transmission-daemon to 3.0+ on the host (its RPC v16 satisfies the library)
- Double-check the endpoint/port actually belongs to transmission's RPC interface
- If upgrading is impossible, run a newer transmission in Docker and point the tool at it
- As a last resort, pin a transmissionrpc library version with a lower minimum RPC requirement
Example fix
# before transmission-daemon 2.82 (RPC v14) -> Init() fails # after (Debian example) sudo apt install transmission-daemon=3.00+ # or docker docker run -d -p 9091:9091 linuxserver/transmission:latest
Defensive patterns
Strategy: validation
Validate before calling
c, err := transmissionrpc.New(endpoint, nil)
if err != nil {
return err
}
ok, serverVersion, serverMinimumVersion, err := c.RPCVersion(context.Background())
if err != nil || !ok {
return fmt.Errorf("transmission daemon too old (v%d, needs >= v%d) — upgrade to 3.0+", serverVersion, serverMinimumVersion)
} Try / catch
ver, err := t.Init()
if err != nil && strings.Contains(err.Error(), "incompatible") {
return errorWithHint(err, "upgrade transmission-daemon to 3.0+ on the target host")
} Prevention
- Standardize on transmission-daemon 3.0+ in provisioning scripts
- Run the RPCVersion check in health checks so aging daemons are caught early
- Verify the endpoint points at transmission's RPC port (default 9091), not the peer port
When it happens
Trigger: Running Init() against an old transmission-daemon (2.4–2.8 era, common on ancient NAS firmware or long-untouched servers); pointing the tool at the wrong service that answers on the port but is not transmission.
Common situations: NAS bundled transmission 2.x; Debian/Ubuntu LTS images with stale transmission packages; connecting to a peer port instead of the RPC port (9091) yielding garbage version numbers.
Related errors
- paths is required
- owner and repo are required
- api_login and api_key are required
- paths is required
- SaveStrmLocalPath is required
AI-assisted analysis of AlistGo/alist@843d9dc814 (2026-08-15).
Data as JSON: /api/errors/88002ca34db7c305.
Report an issue: GitHub.