Switchking on Raspberry Pi

General questions and comments.
ga3ns3blu3mchen
1 star
1 star
Posts: 4
Joined: Thu 19 Jul 2012, 15:47

Switchking on Raspberry Pi

Post by ga3ns3blu3mchen » Thu 19 Jul 2012, 15:54

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?

thanks

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

Martin
Administrator
Administrator
Posts: 2655
Joined: Tue 09 Nov 2010, 20:25

Re: Switchking on Raspberry Pi

Post by Martin » Thu 19 Jul 2012, 16:10

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:
http://www.raspberrypi.org/phpBB3/viewtopic.php?p=80981 (last post on page)

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

ga3ns3blu3mchen
1 star
1 star
Posts: 4
Joined: Thu 19 Jul 2012, 15:47

Re: Switchking on Raspberry Pi

Post by ga3ns3blu3mchen » Thu 19 Jul 2012, 17:00

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 :)

Martin
Administrator
Administrator
Posts: 2655
Joined: Tue 09 Nov 2010, 20:25

Re: Switchking on Raspberry Pi

Post by Martin » Thu 19 Jul 2012, 17:04

ga3ns3blu3mchen wrote:would it be possible for Switchking to support a complete image?
Not sure what you mean by this?
Martin | Switch King

ga3ns3blu3mchen
1 star
1 star
Posts: 4
Joined: Thu 19 Jul 2012, 15:47

Re: Switchking on Raspberry Pi

Post by ga3ns3blu3mchen » Thu 19 Jul 2012, 17:15

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 :)

Martin
Administrator
Administrator
Posts: 2655
Joined: Tue 09 Nov 2010, 20:25

Re: Switchking on Raspberry Pi

Post by Martin » Thu 19 Jul 2012, 17:43

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.
Martin | Switch King

ga3ns3blu3mchen
1 star
1 star
Posts: 4
Joined: Thu 19 Jul 2012, 15:47

Re: Switchking on Raspberry Pi

Post by ga3ns3blu3mchen » Thu 19 Jul 2012, 17:51

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 :(

Martin
Administrator
Administrator
Posts: 2655
Joined: Tue 09 Nov 2010, 20:25

Re: Switchking on Raspberry Pi

Post by Martin » Thu 19 Jul 2012, 18:30

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:
Martin | Switch King

Greven
1 star
1 star
Posts: 8
Joined: Fri 06 Dec 2013, 19:27

Re: Switchking on Raspberry Pi

Post by Greven » Sun 08 Dec 2013, 13:32

Wow, I really must test this and run Switch King on my Raspberry Pi :)

frittefrax
1 star
1 star
Posts: 1
Joined: Sun 29 Dec 2013, 10:58

Re: Switchking on Raspberry Pi

Post by frittefrax » Sun 29 Dec 2013, 11:41

Hi
Here is an complete instruction to get SwitchKing working on Raspberry Pi.
I've choosen to install Raspbian of the latest version direct from http://www.raspberrypi.org/downloads. It comes with mono 10.2.8, this version is compiled with soft float and you will need hard float on the Pi.

1.
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.

2.
Install Tellstick core, follow this instruction and you will have it run perfectly as a daemon
http://elinux.org/R-Pi_Tellstick_core

3.
Install mono of latest version using this instruction
http://neildanson.wordpress.com/
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 http://devtidbits.com/2013/03/21/using- ... 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

4.
Change permission on /etc/tellstick.conf.

Code: Select all

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

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

6.
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
7.
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
### BEGIN INIT INFO
# 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.
#
### END INIT INFO

# 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 mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/bin/SwitchKing/Bin
DESC="SwitchKing service daemon"
NAME=switchkingd
DAEMON=/usr/local/bin/mono
INSTALLDIR=/bin/SwitchKing/Bin
EXENAME=SwitchKing.exe
PIDFILE=/var/run/$NAME.pid
DAEMON_ARGS=" $INSTALLDIR/$EXENAME daemon 8080 8800 &"
SCRIPTNAME=/etc/init.d/$NAME

# 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/vars.sh

# 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
#
do_start()
{
	# 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 -- \
		$DAEMON_ARGS \
		|| 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
#
do_stop()
{
	# 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="$?"
	[ "$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
  start)
	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
	do_start
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  stop)
	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
	do_stop
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  status)
	status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
	;;
  #reload|force-reload)
	#
	# 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"
	#do_reload
	#log_end_msg $?
	#;;
  restart|force-reload)
	#
	# If the "reload" option is implemented then remove the
	# 'force-reload' alias
	#
	log_daemon_msg "Restarting $DESC" "$NAME"
	do_stop
	case "$?" in
	  0|1)
		do_start
		case "$?" in
			0) log_end_msg 0 ;;
			1) log_end_msg 1 ;; # Old process is still running
			*) log_end_msg 1 ;; # Failed to start
		esac
		;;
	  *)
		# Failed to stop
		log_end_msg 1
		;;
	esac
	;;
  *)
	#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
	exit 3
	;;
esac

:
8.
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.

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

Code: Select all

cd /etc/init.d
sudo update-rc.d switchkingd defaults
10.
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:
Fredrik
Last edited by frittefrax on Tue 31 Dec 2013, 21:26, edited 3 times in total.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest