It has been a while since my last entry on the blog but life is not what it used to be.
Anyway, today I bring you a new tutorial with detailed instructions on how to build Oscam for your Android box (like Wetek Play).
The official Oscam documentation has some information on how to compile it using the NDK toolchain but it’s outdated and you will not be able to target devices running on Lollipop (5.0+) as the binaries will not run because they are not Position Independent Executables (PIE) and it also does not explain how to cross-compile and install OpenSSL.
I will show you how to compile a good static binary that should run on any arm-based Android device.
First of all, you will need a Linux machine, I am using Linux Mint which is based on Ubuntu and all the instructions are for Ubuntu environments.
If you dont have a a linux environment, install an Ubuntu virtual machine.
Install the required packages.
sudo apt-get update sudo apt-get install subversion
Next you need to download the latest Linux 64-bit (x86) Android NDK which you can find at https://developer.android.com/ndk/downloads/index.html
At the time of this writing, the latest stable version is r13b.
Extract the NDK file to your home directory and cd into the build/tools folder so we can build our toolchain for Cross Compiliing.
cd ~/android-ndk-r13b/build/tools export TOOLCHAIN=~/android-toolchain ./make_standalone_toolchain.py --arch arm --api 24 --install-dir $TOOLCHAIN
This command takes a few seconds to run and it should create the android toolchain on your home directory.
Before cross-compiling OScam with this toolchain, we need to compile OpenSSL
Download, extract and build OpenSSL :
cd ~ wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz tar -xf openssl-1.0.1g.tar.gz cd openssl-1.0.1g export CC=$TOOLCHAIN/bin/arm-linux-androideabi-gcc export RANLIB=$TOOLCHAIN/bin/arm-linux-androideabi-ranlib ./Configure --prefix=$TOOLCHAIN/sysroot/usr android make make install_sw
Now, lets checkout the Oscam svn and configure the build.
cd ~ svn checkout http://www.streamboard.tv/svn/oscam/trunk oscam-svn cd oscam-svn ./config.sh --enable WEBIF WITH_SSL
Now comes the part you have been waiting for, cross-compile Oscam for Android.
make static EXTRA_FLAGS="-pie" LIB_RT= LIB_PTHREAD= CROSS=$TOOLCHAIN/bin/arm-linux-androideabi-
If everything worked, you should have a nice binary in the Distribution folder of oscam-svn.
I know what you are thinking :
– “What the hell, this is not an APK. How will I install and run this on my device?”.
Well, what we have just done was compile native C code to run on an Android environment.
An APK is a package that contains bytecode (compiled java code) and resources that will run inside the android java virtual machine (which can be Dalvik or ART depending on your Android version).
We will basically need to build an Android app (APK) that contains our native binary as a resource, extract it to a place where it can be executed (does not work on the SDCard), make it executable and run it.
But that, will be for the next tutorial that includes a sample on github ready-to-go.
🙂
shit
I got this error can you help me?
LINK Distribution/oscam-1.20-unstable_svn11395-arm-linux-androideabi-ssl-static.debug
csctapi/ifd_db2com.c:26: error: undefined reference to ‘major’
csctapi/ifd_db2com.c:27: error: undefined reference to ‘minor’
collect2: error: ld returned 1 exit status
@Carmy
Instead of using “./config.sh –enable WEBIF WITH_SSL”, use “./config.sh -g” command and unselect the card readers which are not required (especially db2). Then you may give the final command to compile.