[GUIDE] Cross Compiling Transmission 2.82

CROSS COMPILING TRANSMISSION 2.82 FOR WD MY CLOUD

This is a guide to compile transmission 2.82 for the WD MyCloud 2/3/4 TB.

PLAIN TEXT VERSION: https://gist.github.com/sled/7745097

Because I didn’t want to install the build tools and dependencies on my NAS I chose to setup a cross-compiler toolchain on my x86_64 Ubuntu 12.04 machine and create a .deb package that can be installed on the NAS. Furthermore the cross compiler can be used to compile anything for the My Cloud (printer drivers, …)

However you need to turn on SSH on your NAS and accept the possibility that you might void your warranty by installing transmission on your NAS. I don’t take any responsibility for anything you do with this guide, your NAS and/or transmission :wink:

Host System: Ubuntu 12.04 LTS

Target System: Western Digital MyCloud, Concerto 2000 (ARMv7l, Cortex-A9)

If you are too lazy (and trust me (haha)), you can get the binary from my dropbox: transmission_2.82-1_armhf.deb (MD5: b543074596e6e02ffca02152fe274bf8). So you can jump directly to my second post where I show you how to install the package and configure transmission on the My Cloud

 

 

Install Dependencies for crosstool-ng
=====================================

NOTE: I already had the build-essential package and everything else installed therefore I didn’t need to install any dependencies.

I took the depency list from http://smdaudhilbe.wordpress.com/2013/04/26/steps-to-create-cross-compiling-toolchain-using-crosstool-ng/

However, there are many guides available about how to install crosstool-ng on ubuntu.

IMPORTANT: All steps that follow now are to be executed on your local machine and NOT on the My Cloud!

sudo apt-get install autoconf automake libtool libexpat1-dev ncurses-dev bison flex patch curl cvs texinfo build-essential subversion gawk python-dev gperf g++

 

Create a Working Directory
==========================

Note: Replace with sled with your username

mkdir /home/sled/ARM  
cd /home/sled/ARM

 

Install crosstool-ng
====================

cd /home/sled/ARM
wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.19.0.tar.bz2

Extract:

tar xjvf crosstool-ng-1.19.0.tar.bz2

Remove downloaded file to keep everything tidy:

rm crosstool-ng-1.19.0.tar.bz2

Go into crosstool-ng folder:

cd crosstool-ng-1.19.0

Configure and Make:

./configure --prefix=/usr/local
make
sudo make install

Tidy up:

cd /home/sled/ARM
rm -R crosstool-ng-1.19.0

 

 

Creating a cross-compiler
=========================

cd /home/sled/ARM
mkdir toolchain
cd toolchain

Option A: Use my config file:

Setup a basic config file by running ct-ng menuconfig and exit directly with saving.

Now download my .config file and replace the hidden .config file (/home/sled/ARM/toolchain/.config)

https://gist.github.com/sled/7736747

Important: Adjust the paths beginning with /home/sled accordingly with a simple text editor.

Option B: Configure manually:

ct-ng menuconfig

Leave everything as is and configure as follows:

Paths and misc options --->
  [*] Try features marked as EXPERIMENTAL
  ( ) Local tarballs directory
        -> set to /home/sled/ARM/toolchain/src
  ( ) Working directory
        -> set to /home/sled/ARM/toolchain/.build
  ( ) Prefix directory
        -> set to /home/sled/ARM/toolchain/x-tools/${CT_TARGET} 

Target options --->
  ( ) Target Architecture 
        -> choose "arm"
  ( ) Endianness
        -> make sure it's little endian
  ( ) Bitness 
        -> make sure it's 32-bit
  ( ) Architecture Level
        -> set to armv7-a
  ( ) Tune for CPU
        -> set to cortex-a9
  ( ) Use specific FPU
        -> set to neon
  ( ) Floating point:
        -> choose hardware (FPU)
  ( ) Target CFLAGS:
        -> set to -mfpu=neon -mfloat-abi=hard
  ( ) Default instruction set mode
        -> set to thumb
  -*- Use EABI
  [*] append 'hf' to the tuple (EXPERIMENTAL) (NEW)
        -> choose it

Operating System --->
  Target OS 
    -> choose linux

C-Compiler --->
  C compiler (gcc) -->
    [*] Show Linaro versions
      gcc version (linaro-4.8-2013.06-1) -->
    [*] C++
  
C-library --->
  C library (eglibc) --->
    eglibc version (2_17)

Exit and Save config file (it’s hidden and called .config)

Build the cross compiler:

ct-ng build

Take a break and have a coffee, it will take about 45 minutes If anything fails, try to fix it and run ct-ng clean before you try to build it again

The output from the build process:

sled@sled-MacBookPro:~/ARM/toolchain$ ct-ng build
[INFO] Performing some trivial sanity checks
[INFO] Build started 20131201.171932
[INFO] Building environment variables
[INFO] =================================================================
[INFO] Retrieving needed toolchain components' tarballs
[INFO] Retrieving needed toolchain components' tarballs: done in 0.06s (at 00:01)
[INFO] =================================================================
[INFO] Extracting and patching toolchain components
[INFO] Extracting and patching toolchain components: done in 0.14s (at 00:02)
[INFO] =================================================================
[INFO] Installing GMP for host
[INFO] Installing GMP for host: done in 46.41s (at 00:48)
[INFO] =================================================================
[INFO] Installing MPFR for host
[INFO] Installing MPFR for host: done in 22.68s (at 01:11)
[INFO] =================================================================
[INFO] Installing ISL for host
[INFO] Installing ISL for host: done in 23.08s (at 01:34)
[INFO] =================================================================
[INFO] Installing CLooG for host
[INFO] Installing CLooG for host: done in 7.89s (at 01:42)
[INFO] =================================================================
[INFO] Installing MPC for host
[INFO] Installing MPC for host: done in 9.45s (at 01:51)
[INFO] =================================================================
[INFO] Installing binutils for host
[INFO] Installing binutils for host: done in 71.76s (at 03:03)
[INFO] =================================================================
[INFO] Installing pass-1 core C compiler
[INFO] Installing pass-1 core C compiler: done in 355.79s (at 08:59)
[INFO] =================================================================
[INFO] Installing kernel headers
[INFO] Installing kernel headers: done in 9.18s (at 09:08)
[INFO] =================================================================
[INFO] Installing C library headers & start files
[INFO] Installing C library headers & start files: done in 24.26s (at 09:32)
[INFO] =================================================================
[INFO] Installing pass-2 core C compiler
[INFO] Installing pass-2 core C compiler: done in 528.41s (at 18:21)
[INFO] =================================================================
[INFO] Installing C library
[INFO] Installing C library: done in 396.35s (at 24:57)
[INFO] =================================================================
[INFO] Installing final compiler
[INFO] Installing final compiler: done in 695.28s (at 36:32)
[INFO] =================================================================
[INFO] Cleaning-up the toolchain's directory
[INFO] Stripping all toolchain executables
[INFO] Cleaning-up the toolchain's directory: done in 4.41s (at 36:37)
[INFO] Build completed at 20131201.175609
[INFO] (elapsed: 36:36.90)
[INFO] Finishing installation (may take a few seconds)...

Once you are complete you will find the complete toolchain under /home/sled/ARM/toolchain/x-tools/arm-unknown-linux-gnueabihf, there’s also a version for the target system so you could copy it to your my cloud and compile stuff directly on my cloud without installing any build tools, but we won’t do this for transmission. Also this toolchain can be used to compile other stuff than transmission.

 

Preparing to compile transmission
==================================

We emulate the root folder / on the my cloud by creating a new folder called mycloud

mkdir /home/sled/ARM/mycloud

This means we get a folder structure like /home/sled/ARM/mycloud/usr/local/bin etc.

We create a folder to hold the source code for transmission and its dependencies

mkdir /home/sled/ARM/src

 

 

Compiling dependencies for transmission
=======================================

We need a handful of dependencies for transmission:

  • libevent
  • zlib
  • openssl
  • libcurl

The order is important because cURL depends on OpenSSL etc…

 

Compiling libevent
==================

Download and extract:

cd /home/sled/ARM/src
wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
tar xvfz libevent-2.0.21-stable.tar.gz

Go into libevent source folder:

cd libevent-2.0.21-stable

Setup Environment Variables:

export PATH="/home/sled/ARM/toolchain/x-tools/arm-unknown-linux-gnueabihf/bin:$PATH"
export cross=arm-unknown-linux-gnueabihf-
export CC="${cross}gcc"

./configure --host="arm-unknown-linux-gnueabihf" --prefix="/home/sled/ARM/mycloud/usr/local"
make

NOTE: You should see “arm-unknown-linux-gnueabihf-gcc” several times in the output if you only see “gcc” then it didn’t use the cross-compiler, make sure the environment variables are set properly.

make install

 

Compiling zlib
==============

IMPORTANT: Close your old terminal tab and open a new one and set the environment variables again to make sure the correct ones are being used…

Download and extract:

cd /home/sled/ARM/src
wget http://zlib.net/zlib-1.2.8.tar.gz
tar xvfz zlib-1.2.8.tar.gz

Go into zlib source folder:

cd zlib-1.2.8

Setup Environment Variables:

export PATH="/home/sled/ARM/toolchain/x-tools/arm-unknown-linux-gnueabihf/bin:$PATH"
export cross=arm-unknown-linux-gnueabihf-
export CC="${cross}gcc"

./configure --prefix="/home/sled/ARM/mycloud/usr/local"
make

NOTE: You should see “arm-unknown-linux-gnueabihf-gcc” several times in the output if you only see “gcc” then it didn’t use the cross-compiler, make sure the environment variables are set properly.

make install

 

 

Compiling OpenSSL
=================

IMPORTANT: Close your old terminal tab and open a new one and set the environment variables again to make sure the correct ones are being used…

Download and extract:

cd /home/sled/ARM/src
wget http://www.openssl.org/source/openssl-1.0.0k.tar.gz
tar xvfz openssl-1.0.0k.tar.gz

Go into OpenSSL source folder

cd openssl-1.0.0k

Setup Environment Variables:

export PATH="/home/sled/ARM/toolchain/x-tools/arm-unknown-linux-gnueabihf/bin:$PATH"
export cross=arm-unknown-linux-gnueabihf-

./Configure linux-generic32 --prefix=/home/sled/ARM/mycloud/usr/local shared zlib-dynamic -I"/home/sled/ARM/mycloud/usr/local/include"

IMPORTANT: Configure begins with capital letter here!

make CC="${cross}gcc" AR="${cross}ar r" RANLIB="${cross}ranlib"

NOTE: You should see “arm-unknown-linux-gnueabihf-gcc” several times in the output if you only see “gcc” then it didn’t use the cross-compiler, make sure the environment variables are set properly.

make install

 

Compiling cURL
==============

IMPORTANT: Close your old terminal tab and open a new one and set the environment variables again to make sure the correct ones are being used…

Download and extract:

cd /home/sled/ARM/src
wget http://curl.haxx.se/download/curl-7.33.0.tar.gz
tar xvfz curl-7.33.0.tar.gz

Go into cURL source folder:

cd curl-7.33.0

Setup Environment Variables:

export PATH="/home/sled/ARM/toolchain/x-tools/arm-unknown-linux-gnueabihf/bin:$PATH"
export cross=arm-unknown-linux-gnueabihf-
export CC="${cross}gcc"

./configure --prefix="/home/sled/ARM/mycloud/usr/local" --target=arm-unknown-linux-gnueabihf --host=arm-unknown-linux-gnueabihf --with-zlib="/home/sled/ARM/mycloud/usr/local" --with-ssl="/home/sled/ARM/mycloud/usr/local"

Make sure its configured with the following options:

curl version: 7.33.0
  Host setup: arm-unknown-linux-gnueabihf
  Install prefix: /home/sled/ARM/mycloud/usr/local
  Compiler: arm-unknown-linux-gnueabihf-gcc
  SSL support: enabled (OpenSSL)
  SSH support: no (--with-libssh2)
  zlib support: enabled

Now make it:

make

NOTE: You should see “arm-unknown-linux-gnueabihf-gcc” several times in the output if you only see “gcc” then it didn’t use the cross-compiler, make sure the environment variables are set properly.

make install

 

Compiling Transmission (finally :P)
====================================

IMPORTANT: Close your old terminal tab and open a new one and set the environment variables again to make sure the correct ones are being used…

Download and extract:

cd /home/sled/ARM/src
wget http://download.transmissionbt.com/files/transmission-2.82.tar.xz
tar xvfJ transmission-2.82.tar.xz

Go into transmission source folder:

cd transmission-2.82

Setup Environment Variables:

export PATH="/home/sled/ARM/toolchain/x-tools/arm-unknown-linux-gnueabihf/bin:$PATH"
export cross=arm-unknown-linux-gnueabihf-

./configure --host="arm-unknown-linux-gnueabihf" --prefix=/usr/local --without-gtk --disable-libnotify --disable-mac --disable-wx --disable-beos --enable-utp --disable-nls --enable-inotify --enable-utp --enable-lightweight --enable-cli --enable-daemon --with-zlib="/home/sled/ARM/mycloud/usr/local" PKG_CONFIG="/usr/bin/pkg-config" PKG_CONFIG_PATH="/home/sled/ARM/mycloud/usr/local/lib/pkgconfig" CPPFLAGS=-DTR_EMBEDDED

make CC="${cross}gcc" AR="${cross}ar" RANLIB="${cross}ranlib"

Now we create a nice little .deb package using checkinstall

(If you don’t have checkinstall, install it using apt-get install checkinstall)

sudo checkinstall --install=no

Checkinstall will ask you a few questions that I filled in as follows:

--- SNIP START ---
The package documentation directory ./doc-pak does not exist. 
Should I create a default set of package docs? [y]: n

Please write a description for the package.
End your description with an empty line or EOF.
>> Transmission
>> a lightweight BitTorrent client
>> 

This package will be built according to these values (most important is to set the Architecture to armhf, otherwise it won't install): 

0 - Maintainer: [Simon - <schmsimo@gmail.com>]
1 - Summary: [Transmission]
2 - Name: [transmission]
3 - Version: [2.82]
4 - Release: [1]
5 - License: [GPL]
6 - Group: [checkinstall]
7 - Architecture: [armhf]
8 - Source location: [transmission-2.82]
9 - Alternate source location: []
10 - Requires: []
11 - Provides: [transmission]
12 - Conflicts: []
13 - Replaces: []
--- SNIP END --

When you are done the output should be:

--- SNIP START ---
**********************************************************************

 Done. The new package has been saved to

 /home/sled/ARM/src/transmission-2.82/transmission_2.82-1_armhf.deb
 You can install it in your system anytime using: 

      dpkg -i transmission_2.82-1_armhf.deb

**********************************************************************

--- SNIP END ---
3 Likes

Installing Transmission on WD My Cloud
======================================

  1. Transfer the .deb package to your NAS via scp:

    scp transmission_2.82-1_armhf.deb root@:/tmp

  2. Open a remote shell to your My Cloud

    ssh root@

  3. All commands that follow are to be executed on the remote shell!

  4. Install transmission

    dpkg -i /tmp/transmission_2.82-1_armhf.deb

 

Configuring Transmission on WD My Cloud
=======================================

  1. Add a user for transmission:

    adduser --disabled-password transmission
    usermod -a -G share transmission
    usermod -a -G www-data transmission

  2. Get start-/stop script from https://gist.github.com/sled/7742775 and save it to /etc/init.d/transmission-daemon

  3. Set permissions and flags:

    chmod +x /etc/init.d/transmission-daemon
    chown root:root /etc/init.d/transmission-daemon

  4. Start Transmission Daemon:

    /etc/init.d/transmission-daemon start

The output should be:

WDMyCloud:/tmp# /etc/init.d/transmission-daemon start
Starting bittorrent client transmission-daemon...
   Starting bittorrent client transmission-daemon succeeded
  1. Go to http://:9091 → You should get a “403: Forbidden” Message, which is good as it proofs that the transmission-daemon is running :slight_smile:
  2. Customize the config file which can be found under /home/transmission/.config/transmission-daemon/settings.json

→ All possible configuration options can be found on https://trac.transmissionbt.com/wiki/EditConfigFiles

 

Example Configuration for transmission-daemon on WD My Cloud
============================================================

Here I will cover some basic configuration options to get transmission up and running.

  1. Stop Transmission

    /etc/init.d/transmission-daemon stop

  2. Go to your WD My Cloud Web Interface and create a new share, I called it “Transmission”. This is the place where your downloads will be placed.

  3. Create the following folders (assuming your share is called Transmission, case-sensitive!):

    mkdir /DataVolume/shares/Transmission/Complete
    mkdir /DataVolume/shares/Transmission/Incomplete
    mkdir /DataVolume/shares/Transmission/Watch

  4. Open “/home/transmission/.config/transmission-daemon/settings.json” with a text editor and adapt it accordingly (an example: https://gist.github.com/sled/7743612 )

The key settings are:

  • download-dir
    → make sure download-dir lies on a share (e.g. /DataVolume/shares/Transmission/Complete)
  • incomplete-dir
    → make sure incomplete-dir lies on a share (e.g. /DataVolume/shares/Transmission/Incomplete)
  • watch-dir
    → make sure watch-dir lies on a share (e.g. /DataVolume/shares/Transmission/Watch)
  • rpc-username
    → choose an arbitrary username
  • rpc-password
    → choose an arbitrary password (will be hashed afterwards)
  • rpc-whitelist
    → MAKE SURE YOUR HOME NETWORK IP RANGE IS DEFINED! YOU CAN USE WILDCARDS!
    MY HOME NETWORK USES AN IP RANGE THAT STARTS WITH 192.168.*.*
    SO THE VALUE I CHOSE IS: “127.0.0.1,192.168.*.*”
  • umask
    → set to 0 so that all clients can read/write the downloaded files
  1. Start transmission:

    /etc/init.d/transmission-daemon start

  2. Go to http://:9091 and ENJOY your torrent box!! :slight_smile:

2 Likes

Very nice and thank you.

This will come in handy next time i update my firmware and lose my current transmission install.

No problem, I’ll add another guide shortly about how to setup flexget/TvRSS + automated download organization with transmission.

This is of great help. Thank you very much!

Hey you did  a great work! I’d like to ask you a few questions. I’d like to compile transmission for my home router, which is a MIPS based one. Do you think it would be possible to follow your guide (and re-adapt it when necessary) in order to compile transmission for another architecture? Are the dependencies the same (libevent, zlib, openssl, zcurl) and the settings of crosstool the same (except for the system architecture: mips)? Thank you if you will reply…

I was able to set up the torrent successfully. However, I had to deviate from couple of things mentioned above.

Access was forbidden even after properly whitelisting my IPs. Finally I had to do away with the whole whitelisting and disabled it. 

What is the purpose of the username and password that are added in the json file? I was never asked for a username and password when the web interface was opened. 

Is there a way to secure the web application with some kind of login? If that’s possible, I can port forward 9091 and I can schedule torrents on this device sitting anywhere!

Once again, thanks a lot for this useful thread!

clevermax wrote:

I was able to set up the torrent successfully. However, I had to deviate from couple of things mentioned above.

 

Access was forbidden even after properly whitelisting my IPs. Finally I had to do away with the whole whitelisting and disabled it. 

 

What is the purpose of the username and password that are added in the json file? I was never asked for a username and password when the web interface was opened. 

 

Is there a way to secure the web application with some kind of login? If that’s possible, I can port forward 9091 and I can schedule torrents on this device sitting anywhere!

 

Once again, thanks a lot for this useful thread!

Hi,

cool that it worked! could you post the deviations? this might be helpful for others :slight_smile:

the whitelisting and username/password should work if you set the wildcards correctly, I ran into the issue where my config file was overwritten by transmission on startup of the transmission daemon because I didn’t set the TRANSMISSION_HOME (“/home/${USERNAME}/.config/transmission-daemon”, where username is transmission) variable in the /etc/init.d/transmission-daemon script.

Have a look at the init.d script and the settings.json  (/home/transmission/.config/transmission-daemon/settings.json) and compare the settings.json to the original and make sure it is the same after you restart the transmission daemon and make sure it contains no typos.

The RPC Username/Password is a simple HTTP Basic Authentication, which you don’t really need if you have whitelisting enabled in a trusted network. If configured correctly a login should pop-up when you access the transmission web ui.

Make sure you restart transmission (/etc/init.d/transmission-daemon restart) every time you make changes to the settings.json.

1 Like

viarippa11 wrote:

Hey you did  a great work! I’d like to ask you a few questions. I’d like to compile transmission for my home router, which is a MIPS based one. Do you think it would be possible to follow your guide (and re-adapt it when necessary) in order to compile transmission for another architecture? Are the dependencies the same (libevent, zlib, openssl, zcurl) and the settings of crosstool the same (except for the system architecture: mips)? Thank you if you will reply…

The dependencies are the same. You should be able to compile it for a MIPS based system, just make sure you adjust the architecture, endianess, OS (Linux/BSD), FPU and other platform dependent settings. Running cat /proc/cpuinfo should give you a good hint about what is supported with regards to the FPU etc… I’d suggest to google existing crosstool-ng configurations for your target processor/architecture.

The naming convention will change also, like the prefix arm-unknown-linux-gnueabihf-. So you have to adapt those too.

Another advice: Start with a minimalistic non-optimized config file and get it to compile sucessfully and then start to optimize the config file (setting FPU, processor tuning etc.) and compile everything again. I spent hours because some tuning parameters were spelled wrong/incorrect and led to weird compiler/linker errors.

Thank you. Yesterday night I re-adapted your guide for my architecture and everthing went fine,  but when I run the final ‘make’ of transmission (make CC=“${cross}gcc” AR=“${cross}ar” RANLIB=“${cross}ranlib”) I got this error:

…/third-party/libutp/libutp.a: could not read symbols: File in wrong format
collect2: error: ld returned 1 exit status

Could you wonder what does this error mean and how is it possible to workaround it?

Point two: I use a standard configuration of crosstool, because I don’t know anything particular about my CPU (it’s a Broadcom 6358). Will the process work anyway (at least, not optimized for my cpu) or it is necessary to specify those parameters in the crosstool config file (FPU, …)? The result of cat /proc/cpuinfo was:

system type        : AGPF-S0
processor        : 0
cpu model        : BCM6358 V1.0
BogoMIPS        : 299.00
wait instruction    : yes
microsecond timers    : yes
tlb_entries        : 32
extra interrupt vector    : no
hardware watchpoint    : no
ASEs implemented    :
VCED exceptions        : not available
VCEI exceptions        : not available

which resembles arab for me… :S

Point three: is it necessary to pack all the binaries in a .deb file or I can simply put them on a folder of a mass storage attached to my router and then launch the transmission-daemon from the console or from a shell script?

regards,

M

viarippa11 wrote:

Thank you. Yesterday night I re-adapted your guide for my architecture and everthing went fine,  but when I run the final ‘make’ of transmission (make CC=“${cross}gcc” AR=“${cross}ar” RANLIB=“${cross}ranlib”) I got this error:

 

…/third-party/libutp/libutp.a: could not read symbols: File in wrong format
collect2: error: ld returned 1 exit status

Could you wonder what does this error mean and how is it possible to workaround it?

 The problem is that there is a missmatch between the build and target architecture i.e the libutp.a was not compiled for x86 while you try to compile for MIPS or vice versa. Could you paste the output of the configure/make command on pastebin.com and post the link? Just check that the right gcc compiler is used in the case of an ARM architecture you should see “arm-unknown-linux-gnueabihf-gcc” in the make output if you only see “gcc” without any prefix, the wrong compiler is used (CC environment variable not set!).

Point two: I use a standard configuration of crosstool, because I don’t know anything particular about my CPU (it’s a Broadcom 6358). Will the process work anyway (at least, not optimized for my cpu) or it is necessary to specify those parameters in the crosstool config file (FPU, …)? The result of cat /proc/cpuinfo was:

 

 I don’t think you can optimize much on that CPU :wink: just make sure software FPU is used because the CPU doesn’t have a dedicated FPU afaik.

Point three: is it necessary to pack all the binaries in a .deb file or I can simply put them on a folder of a mass storage attached to my router and then launch the transmission-daemon from the console or from a shell script?

 

regards,

M

You can put everything separately on to your router but you need all the files in the .deb file. Alternatively you can run configure on transmission with --prefix=/home/sled/ARM/router and then execute “make install” instead of checkinstall. It will install everything inside the /home/sled/ARM/router folder for example, so you can just put this folder on to your external hard drive and transfer it to the router. Just make sure to use a different prefix folder than you used before with the dependencies (OpenSSL, zlib, libevent, etc.) otherwise you will get a mess because you DON’T need to transfer the dependencies (OpenSSL, zlib, libevent, etc.) to the router.

 The problem is that there is a missmatch between the build and target architecture i.e the libutp.a was not compiled for x86 while you try to compile for MIPS or vice versa. Could you paste the output of the configure/make command on pastebin.com and post the link? Just check that the right gcc compiler is used in the case of an ARM architecture you should see “arm-unknown-linux-gnueabihf-gcc” in the make output if you only see “gcc” without any prefix, the wrong compiler is used (CC environment variable not set!).

 

this is output of configure command → http://pastebin.com/0PwKqBxn

this is outpot of make command → http://pastebin.com/kPNffDsM

 

 I don’t think you can optimize much on that CPU :wink: just make sure software FPU is used because the CPU doesn’t have a dedicated FPU afaik.

 

 

How can I make sure software FPU is used? Is it a default setting? In that case I probably left it unmodified.

You can put everything separately on to your router but you need all the files in the .deb file. Alternatively you can run configure on transmission with --prefix=/home/sled/ARM/router and then execute “make install” instead of checkinstall. It will install everything inside the /home/sled/ARM/router folder for example, so you can just put this folder on to your external hard drive and transfer it to the router. Just make sure to use a different prefix folder than you used before with the dependencies (OpenSSL, zlib, libevent, etc.) otherwise you will get a mess because you DON’T need to transfer the dependencies (OpenSSL, zlib, libevent, etc.) to the router.

 

So, if I understood correctly, I have to re-run ./configure command specifying a sub-folder of my ubuntu home as a prefix, then make and then make install instead of checkinstall? And finally I have my binaries ready to be launched on my router?

 

 

 

Thank you for your patience, I’m a total n00b with cross-compile…

 

sled0815 wrote:


Hi,

cool that it worked! could you post the deviations? this might be helpful for others :slight_smile:

 

The deviations were -

  1. I had to disable whitelisting

  2. in the Json file, I couldn’t find an entry for the watch-dir, so I added it but with that json file, the deamon wouldn’t start.

  3. I created the folder “Incomplete” using WinSCP and did a chmod 777, but it wasn’t accessible from the cloud. So I deleted it and created one through the cloud share mapping. But I never saw any files inside this.

I shall try your recommnedations and update my results here later! Thank you!

UPDATE: Now I have enabled whitelisting and security! Thanks for the pointer.

hi sled, did you read my reply and my pastebins? I’m trying to redo the entire process from the beginning. I that when I setup crosstool, I didn’t set this part in my .config file:

C-Compiler --->
  C compiler (gcc) -->
    [*] Show Linaro versions
      gcc version (linaro-4.8-2013.06-1) -->
    [*] C++

Do you think this could be the cause of my compiling problems? I think the error I got have something to do with C++, and I didn’t check the “C++” option, neither use linaro-4.8-2013.06-1

Thank you,

M

Dear Sled,

I used your pre-compiled deb to install tranmssion and all seems well. It appears to be installed correctly (got all the succes prompts/no errors) and i am able to start and stop the service on command without a hitch. Thanks for that btw!

However i am having an issue now with the webservice. It seems that even after i set up the .json file with all the correct setting (listed below) when i access http://[MyCloudIP]:9091 i still get a 404 Not Found. I made sure to reset the service each time i made an edit to the json file.

Do you have any indication what might be causing this issue?

here is some information:

MyCloud IP: 192.168.1.7

Settings.Json File: **NOTE download directory in this case is “/Downloads”**

{
"alt-speed-down": 50, 
"alt-speed-enabled": false, 
"alt-speed-time-begin": 540, 
"alt-speed-time-day": 127, 
"alt-speed-time-enabled": false, 
"alt-speed-time-end": 1020, 
"alt-speed-up": 50, 
"bind-address-ipv4": "0.0.0.0", 
"bind-address-ipv6": "::", 
"blocklist-enabled": false, 
"blocklist-url": "http://www.example.com/blocklist", 
"cache-size-mb": 2, 
"dht-enabled": true, 
"download-dir": “/DataVolume/shares/Downloads/Complete“, 
"download-queue-enabled": true, 
"download-queue-size": 5, 
"encryption": 0, 
"idle-seeding-limit": 30, 
"idle-seeding-limit-enabled": false, 
"incomplete-dir": "/DataVolume/shares/Downloads/Incomplete", 
"incomplete-dir-enabled": true,
“watch-dir”: “/DataVolume/shares/Downloads/Watch”,
"watch-dir-enabled": true, 
"lpd-enabled": false, 
"message-level": 2, 
"peer-congestion-algorithm": "", 
"peer-id-ttl-hours": 6, 
"peer-limit-global": 200, 
"peer-limit-per-torrent": 50, 
"peer-port": 51413, 
"peer-port-random-high": 65535, 
"peer-port-random-low": 49152, 
"peer-port-random-on-start": false, 
"peer-socket-tos": "default", 
"pex-enabled": true, 
"port-forwarding-enabled": true, 
"preallocation": 1, 
"prefetch-enabled": 0, 
"queue-stalled-enabled": true, 
"queue-stalled-minutes": 30, 
"ratio-limit": 2, 
"ratio-limit-enabled": true, 
"rename-partial-files": true, 
"rpc-authentication-required": true, 
"rpc-bind-address": "0.0.0.0", 
"rpc-enabled": true, 
"rpc-password": “password”, 
"rpc-port": 9091, 
"rpc-url": "/transmission/", 
"rpc-username": “username”, 
"rpc-whitelist": "127.0.0.1”, 
"rpc-whitelist-enabled": false, 
"scrape-paused-torrents-enabled": true, 
"script-torrent-done-enabled": false, 
"script-torrent-done-filename": "", 
"seed-queue-enabled": false, 
"seed-queue-size": 10, 
"speed-limit-down": 100, 
"speed-limit-down-enabled": false, 
"speed-limit-up": 100, 
"speed-limit-up-enabled": false, 
"start-added-torrents": true, 
"trash-original-torrent-files": false, 
"umask": 0, 
"upload-slots-per-torrent": 14, 
"utp-enabled": true
}

It works, thank you

I’m struggling to get flexget installed so that i can have it pull in my eztv tss feed. Any help??