Raspbian + Transmission: Fixing “Connection refused on port 9091”

I’ve just managed to solve a quite annoying glitch. After booting Raspbian, Transmission was immediately unable to connect to transmission-daemon on port 9091.

After much digging, i’ve found out that:

– Restarting the service just makes things work
– I was getting a bunch of error messages in /var/log/daemon.log (re: bind)
– Several posts in few forums suggested that the service was being initialized before the network adapter was actually ready.

Long story short:

1. Launch raspi-config
2. Select: 3. Boot Options
3. Select: B2 Wait for Network at Boot

That’s all you need, pretty much. Next time you boot, transmission-remote-cli will be able to connect immediately.

Raspbian + Flash Drive + fstab

First off, you need to figure out the path of your flash drive:

[cc lang=”bash”]
fdisk -l
[/cc]

Then… edit /etc/fstab as follows:

[cc lang=”bash”]
/dev/sda1 /mnt/flash vfat rw,user,umask=0002,uid=1001,gid=121 0 0
[/cc]

Note that umask is… the “inverted” regular file mask. This represents 665 (because we’re evil). As per uid + gid, you can figure it out by means of this command:

[cc lang=”bash”]
id username
[/cc]

Update:

The best filesystem to use, if you need to maintain compatibility between the Flash Drive you’ll use with your Raspberry, and macOS, is probably ExFat. Now, problem is: Linux doesn’t really support ExFat by default.

So, we’ll need to install it, as follows:

[cc lang=”bash”]
sudo apt-get install exfat-fuse
[/cc]

In such case, your /etc/fstab file should look like this:

[cc lang=”bash”]
/dev/sda1 /mnt/flash exfat. rw,user,umask=0002,uid=1001,gid=121 0 0
[/cc]

Raspberry + Samba

Installing Samba:
[cc lang=”bash”]
apt-get install samba samba-common-bin
[/cc]

Once there, edit /etc/samba/smb.conf as follows:

[cc lang=”bash”]
workgroup = [your_workgroup_name]

[SHARE-NAME]
comment=Samba Share
path=/PATH/TO/YOUR/SHARE
browseable=Yes
writeable=Yes
only guest=no
create mask=0777
directory mask=0777
public=no
[/cc]

At last, setup the Samba password:

[cc lang=”bash”]
smbpasswd -a YOUR_USERNAME
[/cc]

Raspberry + Transmission

Let’s begin with the basics. We’ll need to upgrade the system to the latest, and update the apt-get database. Once ready, we’ll proceed with the transmission’s daemon + cli binaries, as follows:

[cc lang=”bash”]
sudo
apt-get update
apt-get upgrade
apt-get install transmission-cli transmission-common transmission-daemon transmission-remote-cli
[/cc]

Authentication:
By default, transmission requires you to setup username / password. Since our goal is *not* to expose Transmission to the open internet (and we’ll only use it via SSH), we’ll simply neutralize any kind of authentication:

[cc lang=”bash”]
nano /etc/transmission-daemon/settings.json
[/cc]

Once there, edit this snippet:

[cc lang=”bash”]
rpc-authentication-required: false
[/cc]

Logging:
We want Transmission to keep an events log. Anything that goes wrong during setup… must be persisted, otherwise, debugging it will be a nightmare.

The only way i’ve found to set this up, is by means of the Daemon Service Descriptor:

[cc lang=”bash”]
nano /lib/systemd/system/transmission-daemon.service
[/cc]

Once there, you want to add the logfile’s path. Make sure that the file exists, and Transmission’s user has enough permissions to edit it:

[cc lang=”bash”]
OPTIONS=”–config-dir $CONFIG_DIR –logfile /var/log/transmission.log”
[/cc]

Filesystem Permissions:

Transmission’s user is specified in the transmission-daemon.service descriptor (which is debian-transmission). So… you really wanna make sure whatever shared folder you end up using, belongs to Transmission’s group.

[cc lang=”bash”]
usermod -a -G debian-transmission YOUR_USER
chgrp debian-transmission /DOWNLOADS/PATH
chmod 770 /DOWNLOADS/PATH
[/cc]

Magnets!

In order to begin downloading a magned, try the following:

[cc lang=”bash”]
transmission-remote-cli
(And press ‘A’)
[/cc]

Restarting Stopped

Last tip: If you need to restart all of your downloads at once, this command becomes quite handy:

[cc lang=”bash”]
transmission-remote -t all -s
[/cc]