BLANK IMAGE
BLANK IMAGE
MENU IMAGE HOME
BLANK IMAGE
MENU IMAGE MY SHACK
BLANK IMAGE
MENU IMAGE SOFTWARE
BLANK IMAGE
MENU IMAGE CLX BASIC
BLANK IMAGE
MENU IMAGE SM5BSZ
BLANK IMAGE
MENU IMAGE CALCS
BLANK IMAGE
MENU IMAGE LINKS
BLANK IMAGE
MENU IMAGE MAPS-ES
BLANK IMAGE
MENU IMAGE MAPS-ALL
BLANK IMAGE
MENU IMAGE USER AREA
BLANK IMAGE
G7RAU - LIVE MUF V7 Linux
G7RAU LOGO IMAGE
Running Live MUF on Linux.

I have managed to get Live MUF running on Linux now at home on my Debian 6/7/8/9/10 and Mint machine (X86, 64 AND ARM (Odroid-XU4) CPUs) plus Ubuntu.
Although it is not perfect (missing links to rigs in logger, one day I will build a cross platform fix!) it is good enough to use in my view
(it is faster on Linux and I use it all the time, it drives the Live MUF website) but I am sure you will find bugs in it.
I have tested this using MySql and sqLite databases. It is very fast data processing on MySQL, at least 120 spots per second!
I recommend if you are geeky to run Linux then set up MySQL for running Live MUF as sqlite is not as fast under very heavy loads i.e. RBN skimmer mania.

Ok, a basic guide on Debian:
Make sure you have mono installed on your linux distro (at least 6.0.0).
Mono is not available in the standard Debian repositories. We’ll install the Mono packages from the official Mono’s repositories.
It is a relatively straightforward process and will only take a few minutes.
Start by installing the necessary packages:
sudo apt update
sudo apt install dirmngr gnupg apt-transport-https ca-certificates
Enter the following command to import the repository’s GPG key:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF

The output should look like below:
gpg: key A6A19B38D3D831EF: public key "Xamarin Public Jenkins (auto-signing) <releng@xamarin.com>" imported
gpg: Total number processed: 1
gpg: imported: 1

Add the Mono repository to your system sources' list:
sudo sh -c 'echo "deb https://download.mono-project.com/repo/debian stable-buster main" > /etc/apt/sources.list.d/mono-official-stable.list'

Once the apt repository is enabled , update the packages list and install Mono:

sudo apt update
sudo apt install mono-complete

mono-complete is a meta-package that installs everything you need for Mono development, including the runtime, development tools, and all libraries.

Verify the installation printing the Mono version:

mono --version

At the time of writing this article, the latest stable version of Mono is 6.8.0 Stable (6.8.0.107).

You will need libgdiplus (see further down as it is STILL out of date in the mono package grr)

mono cli 4.0 are the framework components used.
Later Mono versions don't seem very backward compatible but Live MUF luckily will run in cli 4.0
the compatibility warning.

Make sure you have SQLite3 / mysql / 7z installed on your distro
Live MUF uses 7za in the updater, make sure you have it, it is normally in the package p7zip-full: http://linux.die.net/man/1/7za

Download and extract live_mufV7.exe to where you want to run Live MUF in your home drive (make sure you have full rights where you run it from!)

download http://www.g7rau.co.uk/soft/downloads/lm7_linux_dll.exe and overwrite the files in your Live MUF folder
(MySql.Data.dll System.Data.SQLite.dll etc)

from a terminal window browse to the live MUF folder and run Live MUF as ./Live_MUF.exe or mono Live_MUF.exe


And a basic guide on Fedora:
2. yum install mono cli 2.0 components (Mono-Complete seems to get all)
3. download livemuf
4. download special dll.
5. Unpack livemuf / dll using the archive manager as the exe is a 7z archive.
6. Put everything to a directory
7. mono Live_MUF.exe (with the ./Live_MUF.exe command wine wants to take over...)

3. Note for Older Odrois-XU4 builds (probably Raspberry PI as well) the Mono version is too old, best to go direct to mono site and follow instructions from there. The scripts are a bit of a fiddle, email if you need help.

Live MUF should work as normal from here apart from:
When it 1st loads make sure you tick "Running in Linux" in the user details

Use the menu file/exit to close the app otherwise your opened windows are not retained..

In buffers / fonts change the font to courier 10 or similar. Set main windows buffer limit to 3000 to reduce flicker (in reality there will be 6000 in the buffer, ample enough) or find your own happy setting.

Updating will be a partially manual process, sorry.. you need to follow the screen messages in Live MUF Updater. Remember to keep the files MySql.Data.dll System.Data.SQLite.dll you downloaded as these are specific to Linux

SQLite is not good under high loads i.e. cpu usage is big! Use MySQL instead, it is worth the pain,

BUG ALERT!!!! Due to the way Linux seems to work ALWAYS USE THE File / Exit menu rather than the cross top right to exit the app or your tabs will be trashed.
Again: ALWAYS USE THE File / Exit menu when quitting live MUF!
Best to go to menu "Misc" on the top and hide title bar and select start maximised then you get a custom X cross box that does work in Linux ;)


Basic guide to set up MySQL on Linux for Live MUF:
This is a simplified version, you may prefer to do it your way and make changes to the scripts / database name etc.

1:
Set up Mysql in your distro (remember what you set the root password in MySQL to!!)

2:
Download the MySQL files from my website: http://www.g7rau.co.uk/soft/downloads/mysql_call_locs.exe

3:
Extract this into a folder i.e. /home/username/lm_mysql
there will be 2 files: live_muf_structure.sql and mysql_call_locs.sql

4:
Open a standard terminal and log in as root to mysql in the command prompt:
mysql -u root -p
(you will be prompted to type in your mysql root password)

5:
once logged in type the path to the main script:
\. /home/username/lm_mysql/live_muf_structure.sql
and hit return
this should create the database. now type use live_muf and hit return
Note, if you have a database already called live_muf this will overwrite all the tables..
If you want more help either email me or read live_muf_structure.sql as there is more help in the script.


6:
Now to update update the locs database with:
\. /home/username/lm_mysql/mysql_call_locs.sql
and hit return

7:
to give rights to your live muf user run:
grant all on live_muf.* to mymufuser@localhost identified by 'mypassword';
and hit return (change mymufuser and mypassword to whatever you like)

For different versions:
#SQL8
CREATE USER 'mymufuser'@'%' IDENTIFIED BY 'mypassword';
GRANT ALL ON live_muf.* TO 'mymufuser'@'%';

#SQL5
CREATE USER 'mymufuser'@'%' IDENTIFIED BY 'mypassword';
GRANT ALL ON live_muf.* TO 'mymufuser'@'%';


8:
Open Live MUF.
Go into general options / database type
Tick use mysql
set servername to localhost
port to 3306
data source to live_muf
username to mymufuser and password to mypassword (or whatever you changed these to).
You can also tick use logger and set the logger db name to live_muf
Click update and you should be all ok!

9:
Finally go to general options / MUF updates and run update spot filter, DXCC file and run a 99 week call/loc update.


If you create your own desktop shortcut on Linux you will find a suitable icon in the mapping subfolder.
And of course you can create your own launchers, this one I use to restart the app if it fails (skimmer under high load still causes the odd issue!)

#Script started, make sure it is executable!
#folder path to app
cd /home/lm/lm_for_webserver/
#Starter number for the app
mynum=1
#seconds to wait fater a failure
slp=3
#loop to make sure Live MUF stays up
while :
do
#mono-sgen Live_MUF.exe /auto
mono Live_MUF.exe /auto
#App failed! sleep 2 seconds and then write something to the Live MUF log!
sleep 2
dt=$(date)
mt=" !!!!!!!!!!!!!MUF app failed!!!!!!!!!!!! instance-"
echo $dt $mt $mynum '\n'>>muf_errors/muf_errors.log
#Increase the sleep time for crashes, if a bad loop then at least the gaps get bigger between retries
mynum=$((mynum+1))
slp=$(($mynum+$slp))
sleep $slp
if [ "$mynum" -gt 200 ]; then
#At 200 failures stop, something BAD is wrong
exit 0
fi
done
#Script finished

Let me know if you get Live MUF running on your Linux Distro (include OS when you email me) and let me know any bugs.




Fix in case libgdiplus is out of date on your system. Annoying that only the very latest mono references this!

Go to here and 1st build a new libgdiplus:
https://docs.telerik.com/reporting/knowledge-base/how-to-build-and-install-libgdiplus-linux

______________________________________________________________
Solution
Prerequisites:
We are assuming that you already have older libgdiplus which installed its dependencies. More information and build and install instructions can be found here: https://github.com/mono/libgdiplus
sudo apt install libgdiplus
Easier method (WOULD NOT WORK ON DEB!):
https://www.mono-project.com/download/stable/#download-lin
sudo apt install gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update

sudo apt install libgdiplus

Harder method:

On Debian based distributions install prerequisites by running this command:

sudo apt-get install libgif-dev autoconf libtool automake build-essential gettext libglib2.0-dev libcairo2-dev libtiff-dev libexif-dev

Clone or download and unarchive libgdi repository:

git clone https://github.com/mono/libgdiplus.git
cd libgdiplus

Run build script (Optionally you can use --with-pango parameter if you want to use this library:

./autogen.sh
make

Then run unit tests to verify of all is correct:

make check

If everything is fine, install by running:

make install

or

sudo make install

If the first one fails because of missing rights.

______________________________________________________________

NOW THE FIX!!!!!:
Next copy
/usr/local/lib/libgdiplus.so.0.0.0

go to /usr/lib and rename libgdiplus.so.0.0.0 to libgdiplus.so.0.0.0OLD
paste /usr/local/lib/libgdiplus.so.0.0.0 into /usr/lib

And there we go, Live MUF maps on steroids!!!



73 de Dave