Page 1 of 6

Switchking on Raspberry Pi

Posted: Thu 19 Jul 2012, 15:54
by ga3ns3blu3mchen
Hello everyone,
i've read that some of you managed to install Switchking Server on Raspberry Pi. Could someone tell me how? I am new to Linux. As you will see in the Telldus Forum i've desperatly tried to install Telldus Center with Live Support on my RaspPi, and now i want to try it with Switchking Server, but really don't know where to start....
I have telldus core installed, what would be the next step?


Sorry for posting in the wrong subforum. Request should be in the support section...

Re: Switchking on Raspberry Pi

Posted: Thu 19 Jul 2012, 16:10
by Martin
Switch King requires Mono Runtime to run. Unfortunately, it seems that the latest versions of Mono hasn't been packaged for Raspberry Pi.
This means that you need to build Mono from source.

How to do that is described here: (last post on page)

Once Mono is up and running, you should be able to start Switch King Server.

Re: Switchking on Raspberry Pi

Posted: Thu 19 Jul 2012, 17:00
by ga3ns3blu3mchen
thanks for the fast reply,

just saw that it would take up to 9 houres to compile....
would it be possible for Switchking to support a complete image? i don't want to sound lazy, but since my last experiences in trying to compile and run telldus center on my RaspPi, which costs me a lot of time, i am not feeling very confident that i am getting Switch King server working on the raspberry pi.....

anyway, BIG thank you for the info about mono :)

Re: Switchking on Raspberry Pi

Posted: Thu 19 Jul 2012, 17:04
by Martin
ga3ns3blu3mchen wrote:would it be possible for Switchking to support a complete image?
Not sure what you mean by this?

Re: Switchking on Raspberry Pi

Posted: Thu 19 Jul 2012, 17:15
by ga3ns3blu3mchen
a debian or fedora image with preinstalled mono, switchking server and telldus core, so everyone interrested in using a raspberry pi together with tellstick and switchking, just has to download the image, write it on an sd card and can start to configure....easy, and a great alternative for tellstick net for people using switchking :)

Re: Switchking on Raspberry Pi

Posted: Thu 19 Jul 2012, 17:43
by Martin
Sorry, this is a bit out of our league - timewise. We wouldn't have the possibility to support this with the limited resources we have. :cry:

Switch King is a hobby project, being developed on evenings and weekends so time is very limited.

Re: Switchking on Raspberry Pi

Posted: Thu 19 Jul 2012, 17:51
by ga3ns3blu3mchen
of course, wouldn't expect that from you :) just dreaming :P

for a hobby project it is incredible btw.
missing switchking alot since i have my tellstick pluged in the rasppi and not in my htpc :(

Re: Switchking on Raspberry Pi

Posted: Thu 19 Jul 2012, 18:30
by Martin
Go ahead and try the build over night then - next morning you'll know ;)

I'd like to try the RbPi myself but I don't have the time to put together a kit.

If you are unsure about the compilation, you van always pm the other Switch King user running RbPi. :wave:

Re: Switchking on Raspberry Pi

Posted: Sun 08 Dec 2013, 13:32
by Greven
Wow, I really must test this and run Switch King on my Raspberry Pi :)

Re: Switchking on Raspberry Pi

Posted: Sun 29 Dec 2013, 11:41
by frittefrax
Here is an complete instruction to get SwitchKing working on Raspberry Pi.
I've choosen to install Raspbian of the latest version direct from It comes with mono 10.2.8, this version is compiled with soft float and you will need hard float on the Pi.

Install to raspbian to at least 4GB SD card. If you choose 4GB you will need to mount a USB stick later on to compile mono, if you don't want to do that use 8GB SD card instead.
Do language settings, be sure to keep UTF-8 otherwise mono will not run correctly, keyboard and so on. Don't forget to expand file system.

Install Tellstick core, follow this instruction and you will have it run perfectly as a daemon

Install mono of latest version using this instruction
If you have choosen a 4GB SD card you will need to mount a USB stick otherwise you will run out of disk space. This page could be helpful ... pberry-pi/.
Be sure to to be in /mnt/usbdrive directory before you follow Neil's instructions
USB stick can be unmounted after the installation is complete

Change permission on /etc/tellstick.conf.

Code: Select all

chmod 666 /etc/tellstick.conf
otherwise SwitchKing Server not be able to write new devices.

Install SQLite, you may not need this but is good if you want to check database

Install SwitchKing using instructions on SwitchKings homepage.
Download zip file extract it to /bin/SwitchKing. The easiest way to do it will be using file Manager, be sure to to run it as root witch is done in file managers tools menu "open current folder as root".
SwitchKing can be manually started using this command. It is recommended to try this first to see if everything works allright.
It is the same syntax witch has been written in switchkingd file further down

Code: Select all

mono /bin/SwitchKing/Bin/SwichKing.exe terminal 8080 8800
Don't forget to set permissions on database

Code: Select all

chmod 666 /bin/SwitchKing/Bin/DB/switchKing.server.db3
Now time to create the init.d script to start SwitchKing as daemon. I've been using /etc/skeleton as an orginal och here is my code.
File /etc/switchkingd

Code: Select all

#! /bin/bash
# Provides:          switchkingd
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: SwitchKing Server service daemon
# Description:       SwitchKing Server service daemon is runed inside Mono-service.
#		     And is used to controlling Tellstick.
#		     Logs will be written to /var/log/syslog
#                    SwitchKing client is runned on Windows, iPad or Linux.

# Author: Frittefrax 2013-12-28
# Please remove the "Author" lines above and replace them
# with your own name if you copy and modify this script.

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the script
DESC="SwitchKing service daemon"
DAEMON_ARGS=" $INSTALLDIR/$EXENAME daemon 8080 8800 &"

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

# Function that starts the daemon/service
	# Return
	#   0 if daemon has been started
	#   1 if daemon was already running
	#   2 if daemon could not be started
	start-stop-daemon --start --quiet --background --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
		|| return 1
	start-stop-daemon --start --quiet --background --pidfile $PIDFILE --exec $DAEMON -- \
		|| return 2
	# Add code here, if necessary, that waits for the process to be ready
	# to handle requests from services started subsequently which depend
	# on this one.  As a last resort, sleep for some time.

# Function that stops the daemon/service
	# Return
	#   0 if daemon has been stopped
	#   1 if daemon was already stopped
	#   2 if daemon could not be stopped
	#   other if a failure occurred
	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
	[ "$RETVAL" = 2 ] && return 2
	# Wait for children to finish too if this is a daemon that forks
	# and if the daemon is only ever run from this initscript.
	# If the above conditions are not satisfied then add some other code
	# that waits for the process to drop all resources that could be
	# needed by services started subsequently.  A last resort is to
	# sleep for some time.
	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
	[ "$?" = 2 ] && return 2
	# Many daemons don't delete their pidfiles when they exit.
	rm -f $PIDFILE
	return "$RETVAL"

# Function that sends a SIGHUP to the daemon/service
do_reload() {
	# If the daemon can reload its configuration without
	# restarting (for example, when it is sent a SIGHUP),
	# then implement that here.
	start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
	return 0

case "$1" in
	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
	# If do_reload() is not implemented then leave this commented out
	# and leave 'force-reload' as an alias for 'restart'.
	#log_daemon_msg "Reloading $DESC" "$NAME"
	#log_end_msg $?
	# If the "reload" option is implemented then remove the
	# 'force-reload' alias
	log_daemon_msg "Restarting $DESC" "$NAME"
	case "$?" in
		case "$?" in
			0) log_end_msg 0 ;;
			1) log_end_msg 1 ;; # Old process is still running
			*) log_end_msg 1 ;; # Failed to start
		# Failed to stop
		log_end_msg 1
	#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
	exit 3

start switchking using

Code: Select all

sudo service switchkingd start
The CPU will run at 100% for10-15 sec and then return to normal. Test to connect with SwitchKing client. First time you are connecting with the iPad app you maybe discover a crash, if so just start the service again.

If every thing working smoothly add switchkingd to rc.d using

Code: Select all

cd /etc/init.d
sudo update-rc.d switchkingd defaults
Restart your Pi and check that both service is running as they should

Code: Select all

sudo service tellstickd status
sudo service switchking status
Happy switching! :wave: