<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.cumuluswiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Phil23</id>
	<title>Cumulus Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.cumuluswiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Phil23"/>
	<link rel="alternate" type="text/html" href="https://www.cumuluswiki.org/a/Special:Contributions/Phil23"/>
	<updated>2026-04-27T06:46:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.cumuluswiki.org/index.php?title=Pop-Up_Graphs_-_Gauges_Page&amp;diff=11130</id>
		<title>Pop-Up Graphs - Gauges Page</title>
		<link rel="alternate" type="text/html" href="https://www.cumuluswiki.org/index.php?title=Pop-Up_Graphs_-_Gauges_Page&amp;diff=11130"/>
		<updated>2023-01-22T22:49:45Z</updated>

		<summary type="html">&lt;p&gt;Phil23: /* Basic Overview. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction. ==&lt;br /&gt;
This page attempts to describe step by step how to setup the Pop-up Graphs that can be seen on the Gauges pages when hovering the mouse over a particular gauge.&lt;br /&gt;
Theses are more correctly referred to as &#039;&#039;&#039;&#039;&#039;Server Generated Graphs&#039;&#039;&#039;&#039;&#039;, as they are created on the Web Hosting Server.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is a lot of detail in [https://cumulus.hosiene.co.uk/viewtopic.php?p=103317#p103317 this thread in the forum], which now spans 6 years.&lt;br /&gt;
&lt;br /&gt;
=== Basic Overview. ===&lt;br /&gt;
&lt;br /&gt;
Re-Visiting this during a Hosting Migration.&lt;br /&gt;
&lt;br /&gt;
Requirements:-&lt;br /&gt;
&lt;br /&gt;
JpGraph, from here...&lt;br /&gt;
https://jpgraph.net/download/&lt;br /&gt;
&lt;br /&gt;
Cumulus-MX-Gauge-Graphs, from here...&lt;br /&gt;
https://github.com/mcrossley/Cumulus-MX-Gauge-Graphs&lt;/div&gt;</summary>
		<author><name>Phil23</name></author>
	</entry>
	<entry>
		<id>https://www.cumuluswiki.org/index.php?title=Pop-Up_Graphs_-_Gauges_Page&amp;diff=9813</id>
		<title>Pop-Up Graphs - Gauges Page</title>
		<link rel="alternate" type="text/html" href="https://www.cumuluswiki.org/index.php?title=Pop-Up_Graphs_-_Gauges_Page&amp;diff=9813"/>
		<updated>2021-08-31T10:12:19Z</updated>

		<summary type="html">&lt;p&gt;Phil23: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction. ==&lt;br /&gt;
This page attempts to describe step by step how to setup the Pop-up Graphs that can be seen on the Gauges pages when hovering the mouse over a particular gauge.&lt;br /&gt;
Theses are more correctly referred to as &#039;&#039;&#039;&#039;&#039;Server Generated Graphs&#039;&#039;&#039;&#039;&#039;, as they are created on the Web Hosting Server.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is a lot of detail in [https://cumulus.hosiene.co.uk/viewtopic.php?p=103317#p103317 this thread in the forum], which now spans 6 years.&lt;br /&gt;
&lt;br /&gt;
=== Basic Overview. ===&lt;br /&gt;
&lt;br /&gt;
More to come.&lt;/div&gt;</summary>
		<author><name>Phil23</name></author>
	</entry>
	<entry>
		<id>https://www.cumuluswiki.org/index.php?title=Pop-Up_Graphs_-_Gauges_Page&amp;diff=9812</id>
		<title>Pop-Up Graphs - Gauges Page</title>
		<link rel="alternate" type="text/html" href="https://www.cumuluswiki.org/index.php?title=Pop-Up_Graphs_-_Gauges_Page&amp;diff=9812"/>
		<updated>2021-08-31T10:05:28Z</updated>

		<summary type="html">&lt;p&gt;Phil23: /* To be Created. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction. ==&lt;br /&gt;
This page attempts to describe step by step how to setup the Pop-up Graphs that can be seen on the Gauges pages when hovering the mouse over a particular gauge.&lt;br /&gt;
Theses are more correctly referred to as &#039;&#039;&#039;&#039;&#039;Server Generated Graphs&#039;&#039;&#039;&#039;&#039;, as they are created on the Web Hosting Server.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is a lot of detail in [https://cumulus.hosiene.co.uk/viewtopic.php?p=103317#p103317 this thread in the forum], which now spans 6 years.&lt;br /&gt;
&lt;br /&gt;
More to come.&lt;/div&gt;</summary>
		<author><name>Phil23</name></author>
	</entry>
	<entry>
		<id>https://www.cumuluswiki.org/index.php?title=Pop-Up_Graphs_-_Gauges_Page&amp;diff=9810</id>
		<title>Pop-Up Graphs - Gauges Page</title>
		<link rel="alternate" type="text/html" href="https://www.cumuluswiki.org/index.php?title=Pop-Up_Graphs_-_Gauges_Page&amp;diff=9810"/>
		<updated>2021-08-31T09:53:21Z</updated>

		<summary type="html">&lt;p&gt;Phil23: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== To be Created. ==&lt;br /&gt;
(As soon as I get the work flow finalised &amp;amp; get a handle on creating an entire page)....&lt;/div&gt;</summary>
		<author><name>Phil23</name></author>
	</entry>
	<entry>
		<id>https://www.cumuluswiki.org/index.php?title=Pop-Up_Graphs_-_Gauges_Page&amp;diff=9809</id>
		<title>Pop-Up Graphs - Gauges Page</title>
		<link rel="alternate" type="text/html" href="https://www.cumuluswiki.org/index.php?title=Pop-Up_Graphs_-_Gauges_Page&amp;diff=9809"/>
		<updated>2021-08-31T09:52:30Z</updated>

		<summary type="html">&lt;p&gt;Phil23: Created page with &amp;quot;To be Created. (As soon as I get the work flow finalised &amp;amp; get a handle on creating an entire page)....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To be Created.&lt;br /&gt;
(As soon as I get the work flow finalised &amp;amp; get a handle on creating an entire page)....&lt;/div&gt;</summary>
		<author><name>Phil23</name></author>
	</entry>
	<entry>
		<id>https://www.cumuluswiki.org/index.php?title=MX_on_Linux&amp;diff=9585</id>
		<title>MX on Linux</title>
		<link rel="alternate" type="text/html" href="https://www.cumuluswiki.org/index.php?title=MX_on_Linux&amp;diff=9585"/>
		<updated>2021-07-25T04:06:14Z</updated>

		<summary type="html">&lt;p&gt;Phil23: /* USB HID */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:WorkInProgressBanner}}{{Template:Version badge Mx}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This page focuses on aspects of MX that are specific to the Linux operating systems.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you are running MX on on any computer running the Microsoft Windows Operating System, then you should be reading the [[MX on Windows OS]] page instead.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
=Page Content=&lt;br /&gt;
&lt;br /&gt;
This page:&lt;br /&gt;
* describes the options available for installing MX, and the other Cumulus packages&lt;br /&gt;
* describes the pre-requisite &#039;&#039;&#039;MONO&#039;&#039;&#039; software needed to run the various Cumulus executables, (for Raspberry Pi only), how to add the Mono repository to your system, and how to upgrade MONO&lt;br /&gt;
* explains the few key Linux commands it uses&lt;br /&gt;
* describes the administrative interface and instructions for configuring MX&lt;br /&gt;
* it tries to be useful to anyone who has never used MX, and anyone who knows Cumulus, but has not run MX on Linux before&lt;br /&gt;
* describes the various options available to run MX&lt;br /&gt;
* describes the optional parameters you can add when starting MX&lt;br /&gt;
* describes the other executables &lt;br /&gt;
&lt;br /&gt;
There are various related pages to get more information:&lt;br /&gt;
*Go to [[:Category:Terminology]] for links to pages that explain terminology used by Cumulus (some of these need updating for MX)&lt;br /&gt;
*Go to [[:Category:Cumulus MX]] for links to all pages in this Cumulus Wiki that relate specifically to MX&lt;br /&gt;
*[[MX Administrative Interface|Admin interface]] provides information on configuration and web pages for viewing your weather data locally&lt;br /&gt;
*Go to [[:Category:Cumulus Files]] for links to all pages describing the sub-folders and files used by MX&lt;br /&gt;
*If you encounter a problem when running MX, see [[What to do when I have a problem with MX]]&lt;br /&gt;
*The [[Cumulus MX FAQ]] page was created with snippets from the forum, but nobody has yet sorted this out into a useful page or updated it for recent releases&lt;br /&gt;
*If you were using the original (now legacy) Cumulus software, please read [[Migrating_from_Cumulus_1_to_MX]], although that is mostly directed at those using MX on the same Windows PC as they used for Cumulus 1, and was written for an old MX release, it will help you understand configuration differences.&lt;br /&gt;
*If you want to use a script language, you might want to read [[PHP|PHP Hypertext Pre-processor and JavaScript]] page&lt;br /&gt;
&lt;br /&gt;
=Using MX on UNIX-derived Operating Systems=&lt;br /&gt;
&lt;br /&gt;
MX runs on any UNIX-derived operating systems (OS):&lt;br /&gt;
* including those found on Apple Mac computers, &lt;br /&gt;
* and those found on a multitude of devices running Linux. &lt;br /&gt;
&lt;br /&gt;
UNIX is a long established operating system, and both UNIX and its derivatives have good long term compatibility. This means that commands are generally easy to learn and use. Most devices also have a graphical user interface that can do the more straightforward tasks without needing to know all the commands.&lt;br /&gt;
&lt;br /&gt;
==Device Coverage==&lt;br /&gt;
&lt;br /&gt;
Linux is available based on a multitude of different kernels (the building block for the operating system), on a multitude of devices.&lt;br /&gt;
&lt;br /&gt;
It is hoped that contributions to this page will be made by Cumulus users with a range of such devices. The page has been originated by a contributor using the Raspberry Pi Operating System (this is based on Debian, one of the Linux kernels). Where appropriate, this page gives instructions specific to a [[Raspberry Pi computer page|Raspberry Pi computer]].&lt;br /&gt;
&lt;br /&gt;
:Until somebody creates a separate page for Apple Mac computers (that would be a good idea), this page is the closest.&lt;br /&gt;
&lt;br /&gt;
==What do people think about MX on Linux?==&lt;br /&gt;
&lt;br /&gt;
Contributions to the [https://cumulus.hosiene.co.uk/viewforum.php?f=40 Cumulus Support Forum] suggest that:&lt;br /&gt;
*Use on a Raspberry Pi (RPi) computer is very popular&lt;br /&gt;
*In general, people find installing, and running, MX on Linux is easy&lt;br /&gt;
*The few people who do have difficulties are those who have good knowledge of Microsoft systems and feel scared to swap to something different.&lt;br /&gt;
&lt;br /&gt;
Microsoft has had a deliberate policy of being different to traditional computers mostly based on UNIX, and the [[MX_on_Windows_OS|Running Cumulus MX on Microsoft Windows]] page covers those aspects of MX that are specific to Personal Computers running Microsoft&#039;s Windows Operating System. &lt;br /&gt;
&lt;br /&gt;
In the Cumulus support forum, there are many posts from people who are struggling with MX on PCs, as it seems people often find “installing”, and using, MX is more difficult when using Microsoft Windows.&lt;br /&gt;
&lt;br /&gt;
=For those using Raspberry Pi computers=&lt;br /&gt;
&lt;br /&gt;
You have two choices:&lt;br /&gt;
&lt;br /&gt;
CHOICE ONE: ‘’’Create a micro-SD card that has everything on it to load a kernel onto your computer and run MX’’’&lt;br /&gt;
&lt;br /&gt;
The developer has created [[Software#Raspberry_Pi_Image|an image you can download]].&lt;br /&gt;
&lt;br /&gt;
That image contains:&lt;br /&gt;
#Raspberry Pi Lite Operating System as kernel (no graphical user interface, designed for a RPi without keyboard or monitor)&lt;br /&gt;
#Mono-complete package&lt;br /&gt;
#Cumulus MX package&lt;br /&gt;
&lt;br /&gt;
* If you are new to MX, after booting from image, you will need to use the [[MX_Administrative_Interface#Station_Settings|admin interface]] to define station type, your choice of units, and some other settings, before MX can start recording data from the connected weather station.&lt;br /&gt;
* If you are migrating from another computer, after booting from image, you need to add (using an external memory stick or file transfer from your other device to the RPi), the following:&lt;br /&gt;
** (mandatory) [[Cumulus.ini]], &lt;br /&gt;
**(optional) [[strings.ini]], &lt;br /&gt;
**(mandatory) all files from old [[Data_folder|data sub-folder]], &lt;br /&gt;
**and any (optional) files from old Reports sub-folder.&lt;br /&gt;
&lt;br /&gt;
If you want to pursue that approach, please read [[Raspberry_Pi_Image]] page, instead of continuing to read this page.  Obviously, you can return to this page if you want to learn more.&lt;br /&gt;
&lt;br /&gt;
CHOICE TWO: ‘’’Load the software packages individually’’’&lt;br /&gt;
&lt;br /&gt;
Please read on, this page will tell you all you need to know.&lt;br /&gt;
&lt;br /&gt;
= Do you have a Operating System? =&lt;br /&gt;
&lt;br /&gt;
New hardware might come preloaded with an operating system, or might allow you to choose which operating system to install on it.&lt;br /&gt;
&lt;br /&gt;
Please see [[Raspberry Pi computer page]] if you want guidance on choosing which model to buy and how to install an operating system on those computers, so you are ready to install MX.&lt;br /&gt;
&lt;br /&gt;
=Do you know how to install packages?=&lt;br /&gt;
&lt;br /&gt;
If you already know how to install packages, your computer has the pre-installed image, or you have installed MX before, you will want to skip the sub-sections that follow on here, and continue reading at [[#Cumulus packages]].&lt;br /&gt;
&lt;br /&gt;
Otherwise, here is a short technical digression to explain the commands.&lt;br /&gt;
&lt;br /&gt;
==The various components to commands for installation==&lt;br /&gt;
&lt;br /&gt;
Linux computers have a “source list” which references the repositories from which software packages can be installed.&lt;br /&gt;
&lt;br /&gt;
If a particular package can not be found in repositories already in the source list, then another repository can be added to the source list.&lt;br /&gt;
&lt;br /&gt;
===sudo===&lt;br /&gt;
&lt;br /&gt;
By default, a Linux user will log in as a default user with limited rights. For example, on the Raspberry Pi Operating System, there is a single default user, initially called &amp;quot;Pi&amp;quot;, with their home folder that can be referenced as &amp;quot;~&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The initial &amp;quot;sudo&amp;quot; part of many commands gives us super-user (root) rights when executing the instruction that follows.&lt;br /&gt;
&lt;br /&gt;
If we are working away from the folder(s) owned by the default user, we can consider whether we want to change the ownership of these parts of the file system (how to do this for a MX installation is explained later) so that we can access the files with our default user without using &amp;quot;sudo&amp;quot; for file/folder commands.&lt;br /&gt;
&lt;br /&gt;
In some limited cases, it might make sense to just change &amp;quot;read&amp;quot; rights,so that the default user can read a file/folder, but other actions are not possible without using &amp;quot;sudo&amp;quot; prefix. This limits our ability to accidentally delete files that other processes need.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
The second part of our installation commands is “apt” meaning “Advance Package Tool”. In simple terms, it runs the “package manager” used in Linux.  &lt;br /&gt;
&lt;br /&gt;
If you are looking online for a tutorial on how to install packages, you might see “apt-get” or &amp;quot;apt-cache&amp;quot; used in examples they quote. It should be safe to replace these older package managers with &amp;quot;apt&amp;quot;. I have included a little technical explanation at the end of this page if this really worries you.&lt;br /&gt;
&lt;br /&gt;
===install===&lt;br /&gt;
&lt;br /&gt;
The third part of our installation instruction is “install”, which tells our package manager what we are trying to do.&lt;br /&gt;
&lt;br /&gt;
For the record only, here is full list of what can follow “apt”: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:30px&amp;quot; | Instruction following “apt”&lt;br /&gt;
!style=&amp;quot;width:300px&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
|install&lt;br /&gt;
|To install a package and its dependencies&lt;br /&gt;
|-&lt;br /&gt;
|update&lt;br /&gt;
| The &amp;quot;source list&amp;quot; [[#The various components to commands for installation|mentioned earlier]] that references the repositories from which software packages can be installed, needs to be updated periodically so it reflects any changes within those repositories. The instruction &amp;quot;update&amp;quot; is included after &amp;quot;apt&amp;quot; to make sure your computer has up to date information about repositories installed, and to report if these contain packages that can be upgraded&lt;br /&gt;
|-&lt;br /&gt;
|upgrade&lt;br /&gt;
| Once your &amp;quot;source list&amp;quot; is up to date, the instruction &amp;quot;upgrade&amp;quot; can be included after &amp;quot;apt&amp;quot; to download any newer versions now available in repositories, and to replace those packages that are already installed on your computer with those newer versions&lt;br /&gt;
|-&lt;br /&gt;
|autoremove&lt;br /&gt;
| The instruction &amp;quot;autoremove&amp;quot; can be included after &amp;quot;apt&amp;quot; to check all components in the packages you have installed onto your computer, and remove any components that are not needed by the dependencies of the packages you are using. A download for software frequently includes some components specifically for their software to work with particular other optional packages.&lt;br /&gt;
&lt;br /&gt;
When we install mono-complete later, the other packages we install do not need every component that has installed, and “autoremove” can be used to tidy up when all our installations are finished.&lt;br /&gt;
|-&lt;br /&gt;
|remove&lt;br /&gt;
|If you want to remove just one component manually, after &amp;quot;apt&amp;quot;, use “remove” followed by the name of component you no longer want&lt;br /&gt;
|-&lt;br /&gt;
|purge&lt;br /&gt;
| To remove any installed package and delete all related configuration files, after &amp;quot;apt&amp;quot; type &amp;quot;purge&amp;quot; then the name of the package we no longer want&lt;br /&gt;
|-&lt;br /&gt;
|search&lt;br /&gt;
|To search in repositories in source list for a package you specify after “search”&lt;br /&gt;
|-&lt;br /&gt;
|show&lt;br /&gt;
|To show any information available about a package that you name after the “show”&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
&lt;br /&gt;
The basic syntax is either one or two hyphens, followed by one or two letters (each letter has to be a specific case). Various examples will be seen on this page, but here just one is explained here.&lt;br /&gt;
&lt;br /&gt;
If we selected &amp;quot;install&amp;quot; or &amp;quot;upgrade&amp;quot; to follow &amp;quot;apt&amp;quot;, we can add a “-y” flag to signify that we want the install to continue.  Without this flag, the package manager will ask periodically if we want it to continue,  and we have to then respond with a “y” each time.  For example, when we ask to install a package, &amp;quot;apt&amp;quot; will do a search, it will list what components it has found, and output how big their demands are on storage, without &amp;quot;-y&amp;quot; flag, it will then ask (at least once) if it is okay to continue to installing.&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
The final part of the package command is the name of the package or component that we want to install/upgrade/purge/show/remove or search for.&lt;br /&gt;
&lt;br /&gt;
=Install starts here=&lt;br /&gt;
&lt;br /&gt;
If your computer has the pre-installed image, or you have installed MX before, you can skip the sub-sections that follow on here and continue reading at [[#Cumulus packages]].&lt;br /&gt;
&lt;br /&gt;
== Preparing for an install==&lt;br /&gt;
&lt;br /&gt;
Before we do an install of a new package, we typically use this series of commands to ensure our computer is in the best state to work out dependencies of what we are about to install:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt -y upgrade&lt;br /&gt;
sudo apt autoremove&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Each of those can be understood from information in previous section.&lt;br /&gt;
&lt;br /&gt;
If you are installing onto a Pi zero, or similar slow computer, please ensure the size of the swapfile is as big as possible, as the mono-complete we will install is large. In linux, we type &amp;lt;code&amp;gt;free -m&amp;lt;/code&amp;gt; to see our RAM size and our swapfile size.&lt;br /&gt;
&lt;br /&gt;
To change swapfile size on the Raspberry Pi, you need to edit a file &amp;lt;code&amp;gt;sudo nano /etc/dphys-swapfile&amp;lt;/code&amp;gt;.  Move the cursor down line by line until it reaches &#039;&#039;&#039;CONF_SWAPSIZE=100&#039;&#039;&#039;.  That is showing that the swapfile is only 99 mb by default in the Raspberry Pi Operating System. Now move the cursor to the 100, and change it to &amp;quot;512&amp;quot; which is enough for mono even on a Pi zero. Next, stop, and restart the relevant service using &amp;lt;code&amp;gt;sudo /etc/init.d/dphys-swapfile stop &amp;amp;&amp;amp; sudo /etc/init.d/dphys-swapfile start&amp;lt;/code&amp;gt;. That should complete quickly, and we can type &amp;lt;code&amp;gt;free -m&amp;lt;/code&amp;gt; again to see the 99 we saw previously has been replaced by 511.&lt;br /&gt;
&lt;br /&gt;
=== USB HID === &lt;br /&gt;
&lt;br /&gt;
There is one more prerequisite package for MX with some weather station types.&lt;br /&gt;
&lt;br /&gt;
The cross-platform [https://www.nuget.org/packages/HidSharp/ Universal Serial Bus (USB) Human Interface Device (HID) library] used by MX to connect to weather stations that appear as a HID connecting via USB (like Fine Offset and USB connected Oregon Scientific models) calls a package file called &#039;&#039;libudev.so.1&#039;&#039;, so you may need to [[#install|search]] your Linux computer for this file, and [[#install]] it if it is missing. Alternatively, you might just need a symbolic link where MX looks to where the file is.&lt;br /&gt;
&lt;br /&gt;
To check your USB devices, type &amp;lt;code&amp;gt;sudo lsusb -t&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
To check HID, download this [https://cumulus.hosiene.co.uk/download/file.php?id=11414 USB HID test package] and run it.&lt;br /&gt;
&lt;br /&gt;
Optionally read about [https://cumulus.hosiene.co.uk/viewtopic.php?f=39&amp;amp;t=14310&amp;amp;p=111593&amp;amp;hilit=libudev.so.1#p111593 Oregon Scientific] issues.&lt;br /&gt;
&lt;br /&gt;
To read about [https://cumulus.hosiene.co.uk/viewtopic.php?p=107913#p107913 Fine Offset issues and the (file may need to be linked to where MX wants it) file link instructions]&lt;br /&gt;
&lt;br /&gt;
=== Changing the Source List ===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;source list&amp;quot; [[#The various components to commands for installation|mentioned earlier]] may not contain all the repositories we need for our installations.&lt;br /&gt;
&lt;br /&gt;
Consequently, type &amp;lt;code&amp;gt;sudo apt search mono-complete&amp;lt;/code&amp;gt;, to find out whether the mono package is available from one of the repositories already in our source list, and if the version available is compatible with MX (Release announcements for MX should specify which versions of Mono will work).  Each of the parts of that command was explained earlier.&lt;br /&gt;
&lt;br /&gt;
If mono-complete is not available (or only available in an older version incompatible with MX), then we have to add a new repository, and the one to add depends on which Linux kernel is used by our Operating System.&lt;br /&gt;
&lt;br /&gt;
There are a number of sub-sections below, please check which applies to you, and only read that one.&lt;br /&gt;
&lt;br /&gt;
===Add the Mono repository for a Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
The two Mono repositories listed here are specific to the 2017 and 2019 releases (respectively) of the operating system for a Raspberry Pi computer.  These are taken from  [https://www.mono-project.com/download/stable/#download-lin-raspbian download-lin-raspbian].&lt;br /&gt;
&lt;br /&gt;
# the first line (in each case) installs a certificate&lt;br /&gt;
# the echo line defines a repository to add to the sources list.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:450px; color:blue&amp;quot; | Raspberry Operating System 9 (stretch) !! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:450px; color:navy&amp;quot; | Raspberry Operating System 10 (buster)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sudo apt install apt-transport-https dirmngr gnupg ca-certificates&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;sudo apt install apt-transport-https dirmngr gnupg ca-certificates&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;echo &amp;quot;deb https://download.mono-project.com/repo/debian stable-raspbianstretch main&amp;quot;&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;echo &amp;quot;deb https://download.mono-project.com/repo/debian stable-raspbianbuster main&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sudo tee /etc/apt/sources.list.d/mono-official-stable.list&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;sudo tee /etc/apt/sources.list.d/mono-official-stable.list&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sudo apt update&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;sudo apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:450px; color:blue&amp;quot; | Raspberry Operating System 9 (stretch)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:450px; color:navy&amp;quot; | Raspberry Operating System 10 (buster)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;height:50px;| sudo apt install apt-transport-https dirmngr gnupg ca-certificates&lt;br /&gt;
| sudo apt install apt-transport-https dirmngr gnupg ca-certificates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;height:100px; |&amp;lt;code&amp;gt;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;height:50px;| &amp;lt;nowiki&amp;gt;echo &amp;quot;deb https://download.mono-project.com/repo/debian stable-raspbianstretch main&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;echo &amp;quot;deb https://download.mono-project.com/repo/debian stable-raspbianbuster main&amp;quot;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;height:50px;|sudo tee /etc/apt/sources.list.d/mono-official-stable.list&lt;br /&gt;
| sudo tee /etc/apt/sources.list.d/mono-official-stable.list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Add the Mono repository to Ubuntu, Debian, Fedora===&lt;br /&gt;
&lt;br /&gt;
At time of writing, [https://www.mono-project.com/download/stable/#download-lin-ubuntu download-lin-ubuntu], shows the instructions for versions 16, 18, and 20 of Ubuntu.&lt;br /&gt;
&lt;br /&gt;
Equally, [https://www.mono-project.com/download/stable/#download-lin-debian download-lin-debian], gives details for debian, and [https://www.mono-project.com/download/stable/#download-lin-fedora download-lin-fedora] for Fedora.&lt;br /&gt;
&lt;br /&gt;
Others can be found by choosing other tabs on any of those links.&lt;br /&gt;
&lt;br /&gt;
== Installing Mono instruction ==&lt;br /&gt;
&lt;br /&gt;
Now we have the certificate needed, and the repository for mono-complete is added to our source list, we can do the actual install:&lt;br /&gt;
: &amp;lt;code&amp;gt;sudo apt install -y mono-complete&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
The “sudo”, “apt”, “install”, and “-y” have already been explained.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;mono-complete&amp;quot; is the package we want.&lt;br /&gt;
&lt;br /&gt;
:Please note that if you just specify “mono”, you will get ‘’’mono-devel’’’ (the developer edition) that does not include all the components required by each of the Cumulus executables.&lt;br /&gt;
&lt;br /&gt;
Please note that a particular MX build might specify it needs a particular version of Mono.  Hence, although normally you can upgrade a cumulus package without upgrading Mono, sometimes you will need to install Mono again.&lt;br /&gt;
&lt;br /&gt;
The latest release of Mono can always be downloaded from [https://www.mono-project.com/download/stable/#download-lin], follow step 1 there, but in step 2 replace ‘’’mono-devel‘’’ by ‘’’mono-complete’’’&lt;br /&gt;
&lt;br /&gt;
=Cumulus packages=&lt;br /&gt;
&lt;br /&gt;
Note use of plural in section name above, the following sub-sections will install various packages produced by Developer Mark Crossley.  If you are using the [[Software#Cumulus_MX|pre-built disc image]], then (unless the MX release version included in your image is an old one) you should skip the instructions for &amp;quot;CumulusMX&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Handling zip files==&lt;br /&gt;
&lt;br /&gt;
Each release is presented as a zip.&lt;br /&gt;
&lt;br /&gt;
The download and unzip procedure is exactly same on your Linux computer, and on a Windows PC.  So if you have two devices available, you can download on either device, and if it is not the computer you want to install on, you can use a file transfer package to move the files between devices, or use a drive (or even a memory card) with a partition formatted so that you can read it on both devices.  Windows and Linux partitions are formatted in different ways. While it is likely that Linux can read a Microsoft formatted partition, Microsoft Windows can never read a Linux formatted partition.&lt;br /&gt;
&lt;br /&gt;
When your browser saves the zip it might be into a folder called “downloads” on your computer, or you may be able to save into another folder that you prefer (perhaps on a different partition).  Your browser might even remember the folder you used before for files of type zip.&lt;br /&gt;
&lt;br /&gt;
When the download has completed, whatever computer type this is on, mouse click (it might need a right click or a double click depending on settings) on the download file and it should unzip (it may create a folder whose name is taken from the zip file name in the same folder by default, or it may ask you where you want to unzip to).  If you are unable to use a mouse, there should be a keyboard code to use. If you are using a file manager, with a graphical interface, there may be a different way to select the file and unzip it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Where to install all packages?==&lt;br /&gt;
&lt;br /&gt;
For simplicity on this page EXISTING PATH (the contents of this will start with a slash “/”, but not end with a slash) is used to represent any location in the Linux file structure where you decide to install all the Cumulus packages. &lt;br /&gt;
&lt;br /&gt;
The phrase “EXISTING PATH”  is used, because it is most likely you want to create the sub-folder called “/CumulusMX” (note where capital letters must be used) in a part of the Linux file structure that already exists.&lt;br /&gt;
&lt;br /&gt;
It is important to minimise the length of the path name, because this path name has to be passed between various different software languages (and longer paths risk truncation).&lt;br /&gt;
&lt;br /&gt;
* You can create sub-folder called “/CumulusMX” as you unzip a MX release, or you can type &amp;lt;code&amp;gt;sudo mkdir EXISTING PATH/CumulusMX&amp;lt;/code&amp;gt; first (note that EXISTING PATH is explained above and always starts with a slash “/”).&lt;br /&gt;
* By using the phrase EXISTING PATH this advice avoids telling you to install Cumulus where you do not want it:&lt;br /&gt;
*# Many people with a Raspberry Pi, and a little technical understanding, add an external drive to reduce wear on the internal micro-SD card, and keep their Cumulus files away from the drive that holds the operating system.&lt;br /&gt;
*#* This page is not going to get technical by telling you how to create, or mount, Linux partitions on your external drive. If your drive was bought from a Raspberry Pi reseller, they might help you. &lt;br /&gt;
*# Other people using a Raspberry Pi without that technical expertise, might use ‘’’/home/pi’’’ for EXISTING PATH as that is the default folder for the default user (Pi) and can be referenced as &amp;quot;~&amp;quot; in file path instructions they issue (although Cumulus will not understand that shorthand)&lt;br /&gt;
*#* Within that ‘’’/home/pi’’’ folder, the default user has full permissions automatically.&lt;br /&gt;
*# The developer suggests you use ‘’’/opt’’’ for EXISTING PATH (which should be available on any Linux computer).  &lt;br /&gt;
*#* By default, the code Mark provides for installing Cumulus as a service, will run that service as a root user, and the root user has full permissions in /opt (and everywhere else)&lt;br /&gt;
*#* If you do choose a EXISTING PATH outside your home folder, you might want to change the ownership of the &amp;quot;CumulusMX&amp;quot; sub-folder, to the default user (Pi), if so, type &amp;lt;code&amp;gt;sudo chown -R pi: EXISTING PATH/CumulusMX&amp;lt;/code&amp;gt;.  The advantages of that command is you no longer need &amp;quot;sudo&amp;quot; to access the files (however, if you are running MX as a service, you also need to edit the user in the script provided to create the service, so MX does not create files with root ownership - this will be covered later)&lt;br /&gt;
&lt;br /&gt;
==Packages to install==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;We shall install the Cumulus software listed on [[Software]] page&amp;lt;/big&amp;gt;:&lt;br /&gt;
# &#039;&#039;&#039;CumulusMX’’’:&lt;br /&gt;
#* &#039;&#039;&#039;CumulusMX.exe’’’ is written in C#&lt;br /&gt;
#* Download &#039;&#039;&#039;CumulusMX zip file’’’ from [[Software#Latest_build_distribution_download]]&lt;br /&gt;
# [[Software#Create_Missing|&#039;&#039;&#039;Create Missing&#039;&#039;&#039;]]:&lt;br /&gt;
#* &#039;&#039;&#039;CreateMissing.exe&#039;&#039;&#039; is another C# package&lt;br /&gt;
#*  Using &#039;&#039;&#039;CreateMissing.exe&#039;&#039;&#039; is fully documented at [[Calculate_Missing_Values#CreateMissing.exe]] in this Wiki (it will populate missing fields in [[standard log files]] and/or missing lines in [[dayfile.txt]]),  &lt;br /&gt;
#* Simple Instructions for using this executable are on the github page where they are found, you can find the link for that at [[Software#Create_Missing]] in this Wiki.&lt;br /&gt;
# &#039;&#039;&#039;ExportToMySQL&#039;&#039;&#039;&lt;br /&gt;
#*  &#039;&#039;&#039;ExportToMySQL.exe&#039;&#039;&#039; is also written in C#&lt;br /&gt;
#* Download &#039;&#039;&#039;ExportToMySQL.exe&#039;&#039;&#039; package from [[Software#ExportToMySQL]]&lt;br /&gt;
#* &#039;&#039;&#039;ExportToMySQL.exe&#039;&#039;&#039; is not (at the time this was written) documented in this Wiki although [[MX_Administrative_Interface#MySQL_settings]] does describe a similar utility (written by Steve Loft) that was actually included in early MX release downloads.&lt;br /&gt;
&lt;br /&gt;
As at 9 March 2020, there is another utility, &#039;&#039;&#039;CreateRecord&#039;&#039;&#039;, initialised in the Github areas managed by the developer where Cumulus is worked on.  This will, if my understanding is correct, read [[dayfile.txt]] and use that to update the various [[:Category:Ini Files|extreme record files]].  However, at the time of writing this, it is nothing more than a concept that needs to be coded, and (as far as I know) there has been no progress on that utility for at least 4 months.&lt;br /&gt;
&lt;br /&gt;
===Alternative download link for older MX releases===&lt;br /&gt;
&lt;br /&gt;
Skip this sub-section if either you have installed the &amp;quot;pre-built disc image&amp;quot;, or the current MX release is stable (it has been available for a while and nobody has reported any bugs).&lt;br /&gt;
&lt;br /&gt;
Check if posts in the [https://cumulus.hosiene.co.uk/viewforum.php?f=40 Cumulus Support Forum] tell you that the current release of MX has one or more bug(s) that affects one or more aspect(s) of MX that you intend to use. &lt;br /&gt;
&lt;br /&gt;
Remember, it is impossible for the developer to check all the ways in which versatile MX can be used:&lt;br /&gt;
* Different weather station types (the developer only has a Davis),&lt;br /&gt;
* Different computer types (development is mostly on Microsoft Windows), &lt;br /&gt;
* Plus a whole host of optional features, and different external upload sites, (typically each of these optional features are only used by a sub-set of Cumulus users).&lt;br /&gt;
&lt;br /&gt;
Anyway, &#039;&#039;&#039;you can download any earlier build, without the bug&#039;&#039;&#039;, from [https://github.com/cumulusmx/CumulusMX/releases CumulusMX/releases].&lt;br /&gt;
&lt;br /&gt;
You need to ensure that you use the right version of &amp;quot;CreateMissing.exe&amp;quot; and &amp;quot;ExportToMySQL.exe&amp;quot; utilities for the MX release you are running, so if you are using an old MX release, you will need to go directly to the [https://github.com/cumulusmx Cumulus MX github] page, and navigate to the utility of interest, to download an older version of these utilities that matches your older MX.&lt;br /&gt;
&lt;br /&gt;
==Upgrading a Cumulus package==&lt;br /&gt;
&lt;br /&gt;
Upgrading to a new MX release is explained [[Updating_MX_to_new_version|here]], but basically follow instructions above, and install over your existing files.  The alternative is to install in a new folder (or rename the old one), and copy across files not in the release from old location to new location.&lt;br /&gt;
&lt;br /&gt;
== Report and data files to copy across from any previous Cumulus location ==&lt;br /&gt;
&lt;br /&gt;
All the (optional) files in the [[Reports folder]] can be copied across from a previous installation. If your previous installation was not on Linux, see [[#Line terminators in .txt files]]&lt;br /&gt;
&lt;br /&gt;
All the files in the [[data folder]] can also be copied across. If your previous installation was not on Linux, see [[#Line terminators in .txt files]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your previous Cumulus installation was version 1.9.4, or earlier, then you need to do a lot of reading:&lt;br /&gt;
* [[Amending dayfile]] tells you about how MX is far more fussy about the content in [[dayfile.txt]]&lt;br /&gt;
* [[:Category:Ini Files|.ini files]] explains how time-stamps are formatted differently in the extreme tracking files&lt;br /&gt;
* [[Migrating from Cumulus 1 to MX]] gives some advice about differences in settings, but be aware that the way MX handles settings varies by release, and information on the linked page may be out of date&lt;br /&gt;
&lt;br /&gt;
==Configuration Files to copy across from any previous Cumulus installation==&lt;br /&gt;
&lt;br /&gt;
There are two configuration files that are not included in any MX release:&lt;br /&gt;
*[[strings.ini]] (note all lower case) – optional file to customise output&lt;br /&gt;
*[[Cumulus.ini]] (note initial capital, then lower case) – main configuration file&lt;br /&gt;
&lt;br /&gt;
If your old installation was for a relatively recent release, then just copy these files to new installation and optionally skip the next 2 sub-sections.&lt;br /&gt;
&lt;br /&gt;
If you are upgrading from an older release, please read the next 2 sub-sections for advice.&lt;br /&gt;
&lt;br /&gt;
===strings.ini===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is an optional file&#039;&#039;&#039;.  Its [[strings.ini|purpose]] is to allow customisation of some of the outputs from Cumulus. You might want to use customisation to abbreviate (or extend) some outputs, or to change those outputs into another language.&lt;br /&gt;
&lt;br /&gt;
You create a “strings.ini” file by selecting some of the parameters from the [[samplestrings.ini]] file that is included in each MX release, and modifying the value for the listed attributes as you type them (under the same group titles - these are enclosed in [ ] as before). &lt;br /&gt;
&lt;br /&gt;
The sections that appear in &#039;&#039;&#039;samplestrings.ini&#039;&#039;&#039;, and the parameters that appear within a section, changed drastically between Cumulus 1.9.4 and MX.  So be cautious if you try to use a &amp;quot;strings.ini&amp;quot; file originally created by the legacy software, check whether the parameters you used before are still available in the latest &amp;quot;samplestrings.ini&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The content of &amp;quot;samplestrings.ini&amp;quot; is changing as MX is developed. Therefore, your existing “strings.ini” might need to be modified. There is no automatic way to check your “strings.ini” file, if MX does not understand any parameter in this file, it ignores it. Instead, you need to manually check each parameter you have in your “strings.ini” file to see if that parameter is in “samplestring.ini” included in the release you have installed. You may also find new parameters in “samplestring.ini” that you wish to add to your “strings.ini” file to tailor new functionality to your preferences.&lt;br /&gt;
&lt;br /&gt;
===Cumulus.ini===&lt;br /&gt;
&lt;br /&gt;
If your old release was 3.8.0 or later, then copy the [[Cumulus.ini]] file used in that old installation into your new one. The file is growing with lots of new parameters, and the tables on the page I have just linked indicated when parameters were introduced, and where those settings may be changed to make it simple for you to ensure all settings are right for your new release.&lt;br /&gt;
&lt;br /&gt;
If your old release was older that 3.8.0, then you will see [[:Category:Configuration Files|the Configuration Files page]] shows different links for documentation on older &amp;quot;cumulus.ini&amp;quot; files.  Because of those differences, many people prefer to rename their existing “Cumulus.ini” file when upgrading from such an old release, or making an install on a new device. To create a new file, they work through all the settings manually, so that MX can create a fresh file, with them having confidence every setting reflects their preference.  However, you do need to be aware that such older releases included a lot of &amp;quot;read-only&amp;quot; parameters that had to be set manually in the file, you may find some of those parameters are still needed by you, so you will want to edit the new file, with MX stopped, and copy any of those old &amp;quot;read-only&amp;quot; parameters that might not yet be settings you configure within the MX interface (although the number of these is diminishing with each new release).&lt;br /&gt;
&lt;br /&gt;
If you previously used an older release of Cumulus, but in this new installation will be using the latest release (latest is what is normally best, unless it has bugs), you may want to read up on all the changes between your old release and the current release, not just changes that affect the configuration file.&lt;br /&gt;
&lt;br /&gt;
==Moving from Microsoft Windows to Linux==&lt;br /&gt;
&lt;br /&gt;
===Line terminators in .txt files===&lt;br /&gt;
&lt;br /&gt;
If you are a novice to computers, skip this sub-section and the next, go directly to [[#File Names &amp;amp; Paths]]. &lt;br /&gt;
&lt;br /&gt;
You need to have some technical understanding to do an action that might encounter the issues discussed here. For normal MX usage, line terminators do not matter.&lt;br /&gt;
&lt;br /&gt;
If you are moving from Microsoft Windows to Linux, be aware that Microsoft ends each line with two characters (Carriage Return and Line Feed) while Unix/Linux ends each line with a single character (Line Feed). Cumulus can cope with both approaches for existing files, but will create new files correctly for Linux.&lt;br /&gt;
&lt;br /&gt;
If you run your Linux computer in a headless mode, accessing its files by a remote terminal session, be aware that the line terminator used by the remote computer may be applied to files affected by whatever command you do remotely. Equally, running a Cumulus executable (MX or one of the utilities) may create new files with the wrong end of line terminator. The latest releases have been amended to match existing files, when they create a new file to replace an old file (or because that file is missing/corrupted).&lt;br /&gt;
&lt;br /&gt;
If you try to edit a file outside MX, the tool you choose to use might be able to detect that it is getting Microsoft files, and discard the extra end of line character.&lt;br /&gt;
&lt;br /&gt;
However, if you are reading a comma separated value file (such as MX uses for various files) in a script, your script might not detect the end of line encoding:&lt;br /&gt;
* If the script expects the Linus LF, and finds CR LF, then the final field of each CSV line has an invalid character in it, so your script will not be able to understand that field as a numerical value (or time-stamp).&lt;br /&gt;
* If the script expects CR only, and finds CR LF, then the first field of the each line presented to the script (except the first line) starts with a “LF” and the script will not recognise it as a date.&lt;br /&gt;
* If the script expects CR only, but just finds LF, the script will believe the whole file is just one line, and the fields before and after the LF will be treated as a single field so your script will not be able to understand that field as a numerical value (or time-stamp).&lt;br /&gt;
* If the script was written for a Microsoft Windows environment, it will expect CR LF, but might be confused if the end of line is different&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Changing line terminators===&lt;br /&gt;
&lt;br /&gt;
Many editors designed for programmers (they might be described as providing a programming development environment) can change the line ending of every line (either while file is being edited or when file is saved). &lt;br /&gt;
&lt;br /&gt;
‘’’Geany’’’ is a programming development editor provided on some Linux systems including Raspberry Pi, that can do this (&#039;&#039;&#039;Document&#039;&#039;&#039; menu, --&amp;gt;&amp;gt; &#039;&#039;&#039;Select Line Endings&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Notepad++ is another editor available for multiple operating systems (&#039;&#039;&#039;Edit&#039;&#039;&#039; menu --&amp;gt;&amp;gt; &#039;&#039;&#039;EOL conversion&#039;&#039;&#039;).  &lt;br /&gt;
&lt;br /&gt;
Both have capabilities to make such changes on either the single file that has focus, or all loaded files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===File Names &amp;amp; Paths===&lt;br /&gt;
&lt;br /&gt;
Another issue that may be encountered when moving from Windows to Linux is the difference in File Names &amp;amp; Paths.&lt;br /&gt;
Linux file names are Case Sensitive, and the separator is &amp;quot;/&amp;quot; Vs &amp;quot;\&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This could be applicable if you are using Extra Web files.&lt;br /&gt;
&lt;br /&gt;
Here is an example changing the case and the separators: &#039;&#039;Web\extrapageT.htm&#039;&#039; in Windows, changed to read &#039;&#039;&#039;web/extrapageT.htm&#039;&#039;&#039; in Linux.&lt;br /&gt;
&lt;br /&gt;
=Running MX on Linux=&lt;br /&gt;
&lt;br /&gt;
This section explores the optional parameters, and then covers 2 ways to run MX:&lt;br /&gt;
# as a service and &lt;br /&gt;
# interactively with terminal window left open.&lt;br /&gt;
&lt;br /&gt;
== Optional parameters to add to the instruction to run the MX engine ==&lt;br /&gt;
&lt;br /&gt;
This list of parameters covers every parameter, if you are using the latest release skip the historic 3.0.0 sub-sections.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: The &amp;quot;sudo&amp;quot; prefix shown in code examples for the various parameters can be omitted if the user that is running MX owns the folder &amp;quot;CumulusMX&amp;quot; and all its contents. In the [[#Where to install all packages?|installation notes earlier]] possible locations and ownership issues were mentioned.  That earlier section also defined EXISTING PATH, if that is not mentioned in the code examples, it is assumed you have already issued a &amp;lt;code&amp;gt;cd EXISTING PATH&amp;lt;/code&amp;gt; to be in the right folder for issuing the command.&lt;br /&gt;
&lt;br /&gt;
Note that you &#039;&#039;may&#039;&#039; need to supply your root password after typing any &#039;sudo ...&#039; command line if the instruction changes something set by another package (e.g. changing the locale for MX from the locale set by mono). The system will prompt you for this if it is needed.&lt;br /&gt;
&lt;br /&gt;
=== Parameter for changing Port ===&lt;br /&gt;
&lt;br /&gt;
When Cumulus starts, it will display the URL of the user interface. It runs on port 8998 by default; if this is not suitable for some reason you can over-ride it using the &#039;-port&#039; parameter on the command line, e.g. to use port 9999 instead:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo mono CumulusMX.exe -port 9999&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parameter for changing Locale ===&lt;br /&gt;
&lt;br /&gt;
On Linux and (in particular) OS X, Cumulus MX may not be given the correct locale to use, and you may get the default US locale even if that is not your locale. It will output the local it is using when it starts; if it is not correct, close it down and start it again, this time specifying your locale on the command line, using the -lang parameter . For example, in the UK, on a non-Windows device type:&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo mono CumulusMX.exe -lang en-GB&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other locale examples:  &#039;&#039;&#039;CumulusMX.exe Current culture: English (United States)&#039;&#039;&#039;, &#039;&#039;&#039;CumulusMX.exe -lang de-DE&#039;&#039;&#039;,  &#039;&#039;&#039;CumulusMX.exe -lang el-GR&#039;&#039;&#039; (this is one of the locales that reads numbers with &#039;&#039;&#039;integer,decimal&#039;&#039;&#039; format), &#039;&#039;&#039;CumulusMX.exe -lang nl-NL&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are not sure what value you need to supply for the -lang parameter, there is a list here - http://msdn.microsoft.com/en-gb/library/ee825488%28v=cs.20%29.aspx. You need to supply the code in the first column (&amp;quot;Language Culture Name&amp;quot;) in that list. &lt;br /&gt;
&lt;br /&gt;
Note that this does not affect the language used by Cumulus MX (although it may in the future), it affects the decimal separator and the list separator.&lt;br /&gt;
&lt;br /&gt;
=== Parameter for running as service ===&lt;br /&gt;
&lt;br /&gt;
The parameter syntax is &amp;lt;code&amp;gt;sudo mono CumulusMX.exe -service&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You don&#039;t use this parameter in a terminal or interactive instruction for running MX. Instead it appears within a file that we use to set up for running MX as a service.&lt;br /&gt;
 &lt;br /&gt;
For the latest release, (see [https://cumulus.hosiene.co.uk/viewtopic.php?p=146473#p146473 this later release announcement]:&lt;br /&gt;
#There is a task to do just once to configure the service&lt;br /&gt;
#Find the &#039;&#039;&#039;EXISTING PATH/CumulusMX/MXutils/linux/&#039;&#039;&#039; sub-folder, that might be in home directory and therefore found using &amp;quot;~/CumulusMX/MXutils/linux&amp;quot; as explained elsewhere on this page&lt;br /&gt;
#* At time of typing this, the sub-folder only contains one file, the one we need to edit&lt;br /&gt;
# As described later there is a choice of editors, but you can use &amp;lt;code&amp;gt;sudo nano cumulusmx.service&amp;lt;/code&amp;gt; to edit the service configuration file&lt;br /&gt;
# Within the provided file you should find a [Service] section:&lt;br /&gt;
&amp;lt;pre&amp;gt;[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Group=root&lt;br /&gt;
ExecStart=/usr/bin/mono-service -d:/home/install/CumulusMX CumulusMX.exe -service&lt;br /&gt;
Type=forking&lt;br /&gt;
ExecStopPost=/bin/rm /tmp/CumulusMX.exe.lock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are some edits needed to that section:&lt;br /&gt;
# Replace &#039;&#039;&#039;User=root&#039;&#039;&#039; if you want the service to run as a different user&lt;br /&gt;
# Edit the line that begins with &#039;&#039;&#039;ExecStart=&#039;&#039;&#039;&lt;br /&gt;
#* The mandatory change is to replace &#039;&#039;&#039;/home/install&#039;&#039;&#039; by what you have selected for EXISTING PATH&lt;br /&gt;
#* An optional change is to add additional parameters after the &#039;&#039;&#039;-service&#039;&#039;&#039; (select from &#039;&#039;&#039;-debug&#039;&#039;&#039;, -locale, -port) as described in sub-sections above&lt;br /&gt;
#save file with a new name &#039;&#039;&#039;cumulusmx_mine.service&#039;&#039;&#039; (using a new name stops it being overwritten when we upgrade MX&lt;br /&gt;
#now copy file to where it is needed to run the service: &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo cp EXISTING_PATH/CumulusMX/MXutils/linux/cumulusmx_mine.service /etc/systemd/system/cumulusmx.service&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how the file might look after the changes:&lt;br /&gt;
&amp;lt;pre&amp;gt;[Unit]&lt;br /&gt;
Description=CumulusMX service&lt;br /&gt;
Documentation=https://cumuluswiki.org/a/Main_Page&lt;br /&gt;
After=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=pi&lt;br /&gt;
Group=pi&lt;br /&gt;
ExecStart=/usr/bin/mono-service -d:/opt/CumulusMX CumulusMX.exe -service -debug&lt;br /&gt;
Type=forking&lt;br /&gt;
ExecStopPost=/bin/rm /tmp/CumulusMX.exe.lock&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up as a service in release 3.8.0 ==&lt;br /&gt;
&lt;br /&gt;
Skip this sub-section for latest release.  &lt;br /&gt;
&lt;br /&gt;
For historic reasons, note the original instructions in the 3.8.0 [https://cumulus.hosiene.co.uk/viewtopic.php?p=145048#p145048 release announcement]:&lt;br /&gt;
# Ensure you are in the folder containing CumulusMX.exe&lt;br /&gt;
# Type &amp;lt;code&amp;gt; mono-service -l:/var/run/cmx.pid CumulusMX.exe -service&amp;lt;/code&amp;gt;&lt;br /&gt;
# (to verify) note this does not allow you to add -port, -debug, -locale parameters&lt;br /&gt;
&lt;br /&gt;
=== Parameter for adding debugging ===&lt;br /&gt;
&lt;br /&gt;
MX has a default level of logging that stores in the [[MXdiags_folder]] folder a log file that shows some of the interaction with the weather station and some of the output actions done as MX runs. A new log is started each time MX is restarted.&lt;br /&gt;
&lt;br /&gt;
If there is a problem, then there is a great benefit in actually increasing the level of detail in these logs; and that is done either within the settings (on recent MX releases this is on &#039;&#039;&#039;Program Settings&#039;&#039;&#039; page of admin interface - please see [[MXdiags_folder]] page for details) or by adding a parameter:  &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo mono CumulusMX.exe -debug&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parameters only applicable to Version 3.0.0 Beta builds of MX ===&lt;br /&gt;
&lt;br /&gt;
The following two parameters cannot be used with MX since it came out of 3.0.0 beta.&lt;br /&gt;
&lt;br /&gt;
==== web sockets ====&lt;br /&gt;
&lt;br /&gt;
Beta builds in MX version 3.0.0 had an optional parameter &amp;lt;code&amp;gt;sudo mono EXISTING PATH/CumulusMX/CumulusMX.exe -wsport nnnn&amp;lt;/code&amp;gt; that determined which port (represented by a 4 digit number &#039;&#039;nnnn&#039;&#039;) was used for &#039;&#039;&#039;Web Sockets&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
That parameter [https://cumulus.hosiene.co.uk/viewtopic.php?f=40&amp;amp;t=17887&amp;amp;p=138815&amp;amp;hilit=sockets#p138815 is now deprecated as Web Sockets in all builds since 3045] use the same port for web sockets as for the HTTP port of the [[MX_Administrative_Interface#The_API_interface|Admin Interface]], see -port parameter described earlier. &lt;br /&gt;
&lt;br /&gt;
==== Debugging of data flow between station and MX====&lt;br /&gt;
&lt;br /&gt;
Use &#039;&#039;&#039;sudo mono CumulusMX.exe -Logging=1&#039;&#039;&#039; (for the station to MX transfers to have increased debugging logging). &lt;br /&gt;
&lt;br /&gt;
Note use of this parameter is now deprecated.&lt;br /&gt;
&lt;br /&gt;
Although this is not mentioned in any release announcements, it appears that on all recent MX releases this effect is incorporated into the &#039;&#039;&#039;-debug&#039;&#039;&#039; parameter described earlier.  Perhaps someone could confirm whether this is true.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running as a service==&lt;br /&gt;
&lt;br /&gt;
The instructions to set up the ability to run MX as a service [[#Parameter for running as service| were given earlier]]. If you want MX to automatically start when your Linux computer is booted, just type &amp;lt;code&amp;gt;sudo systemctl enable cumulusmx&amp;lt;/code&amp;gt; once, and it will be activated on each reboot.&lt;br /&gt;
&lt;br /&gt;
The full set of commands to use with this service are at [[Raspberry_Pi_Image#systemctl_commands|systemctl_commands]],they are not duplicated here, so there is only one place to do any update.&lt;br /&gt;
&lt;br /&gt;
In the [[#Parameter for running as service|earlier instructions]] it was suggested you change the user for the service, if you have done that you can omit the &amp;quot;sudo&amp;quot; in &amp;lt;code&amp;gt;sudo systemctl start cumulusmx&amp;lt;/code&amp;gt; which manually restarts the service.  Equally, you can omit &amp;quot;sudo&amp;quot; from any command that accesses Cumulus files created by the service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running any MX executable with a terminal session left open ==&lt;br /&gt;
&lt;br /&gt;
This is alternative to the running as service as described above.&lt;br /&gt;
&lt;br /&gt;
The simplest instruction to run Cumulus MX  is &amp;lt;code&amp;gt;cd EXISTING PATH/CumulusMX &amp;amp;&amp;amp; sudo mono CumulusMX.exe&amp;lt;/code&amp;gt;.  &lt;br /&gt;
* This is two commands issued together, the first changes the working folder, the second actually starts the main executable&lt;br /&gt;
** To run &amp;quot;Create Missing&amp;quot; or &#039;&#039;&#039;ExportToMySQL&#039;&#039;&#039;, just edit what appears after &amp;quot;mono&amp;quot; to the correct executable name&lt;br /&gt;
* If you have followed advice at [[#Where to install all packages?]], the user you are using will own the &amp;quot;EXISTING PATH/CumulusMX&amp;quot; folder and you can omit the &amp;quot;sudo&amp;quot;.&lt;br /&gt;
* You can add parameters after &amp;quot;CumulusMX.exe&amp;quot;  (select from &#039;&#039;&#039;-debug&#039;&#039;&#039;, -locale, -port) as described in sub-sections above&lt;br /&gt;
&lt;br /&gt;
Just in case it is not obvious .... if you start any executable using this command in a terminal window on your Pi, you must leave that session running, or that executable will stop running. &lt;br /&gt;
&lt;br /&gt;
You can start it off directly on your Pi, and then&lt;br /&gt;
*optionally disconnect the keyboard, &lt;br /&gt;
*switch off monitor or TV attached to your Pi, &lt;br /&gt;
*Just ensure you leave Pi on (with that window minimised) so that terminal session continues running.&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;&#039;&#039;&#039;ps -ef | grep -i cumulus | grep -v grep&#039;&#039;&#039;&amp;lt;/code&amp;gt; to see if Cumulus is running or not.&lt;br /&gt;
&lt;br /&gt;
= Operating a web site with uploads from MX engine =&lt;br /&gt;
&lt;br /&gt;
== The standard web pages ==&lt;br /&gt;
&lt;br /&gt;
=== From release 3.10.1 ===&lt;br /&gt;
&lt;br /&gt;
The web pages are a one-off upload from &#039;&#039;&#039;CumulusMX/webfiles&#039;&#039;&#039;.  The data to be shown on these web pages are uploaded from [[:Category:JSON_Files|.json]] files in the [[web_folder]].&lt;br /&gt;
&lt;br /&gt;
Please read [[New_Default_Web_Site_Information|this page]] for more information about styling options and other details.&lt;br /&gt;
&lt;br /&gt;
=== Until release 3.9.7 ===&lt;br /&gt;
&lt;br /&gt;
The styling and library files were a one-off upload from &#039;&#039;&#039;CumulusMX/webfiles&#039;&#039;&#039;. These release use [[Cumulus_template_file|template files]], these are [[Customised_templates#What_is_meant_by_.27Cumulus_processes_templates.27|processed by MX to add the variable data]], and this will create web pages that are uploaded to your web site.&lt;br /&gt;
&lt;br /&gt;
Please read [[Customised_templates]] for further information about the various pages originally provided, and how you could customise them to suit you. &lt;br /&gt;
 &lt;br /&gt;
=== Comparison with legacy Cumulus 1 web pages ===&lt;br /&gt;
&lt;br /&gt;
* Note that any web files, designed for Cumulus 1, cannot be used with MX, for multiple reasons&lt;br /&gt;
** so if moving from Cumulus 1 to MX, delete all your Cumulus 1 files from the &amp;quot;web&amp;quot; and &amp;quot;webfiles&amp;quot; sub-folders, and all files from your web server; then upload files from the new &amp;quot;webfiles&amp;quot; folder. &lt;br /&gt;
* The standard gauges are rather like the stand alone [[SteelSeries Gauges|SteelSeries gauges]] you could optionally add to Cumulus 1, but the MX ones are different.&lt;br /&gt;
** The new default gauges page does not display a graph when you hover over a gauge (Cumulus 1 generated some images that the stand alone Steel Series gauges page could use)&lt;br /&gt;
* The various charts pages for MX rely on MX to generate files with time and value pairs, these are stored in json format, the various web pages use a library package (Highstocks) to draw graphs from those data pairs.&lt;br /&gt;
** (The Trends page provided as standard in Cumulus 1 simply displayed images of graphs uploaded to the web server)&lt;br /&gt;
&lt;br /&gt;
== Alternative ways to obtain web pages ==&lt;br /&gt;
&lt;br /&gt;
You can choose to use some of the alternative web pages available from third parties and described [[:Category:User Contributions|on User Contributions page]].&lt;br /&gt;
&lt;br /&gt;
== Using your own web pages ==&lt;br /&gt;
&lt;br /&gt;
* Of course you can use your own web pages, instead of the standard ones. Assuming they need to include figures that are available as web tags, there are three alternative ways to implement this:&lt;br /&gt;
*# MX can process template files with a HTML structure and those web tags in the structure where values are required just as it does with the standard templates, and MX can upload the resulting web pages  at either the real-time interval, the standard interval, or after end of day. All of this is covered on the [[Customised_templates|Customised templates]] page in this Wiki.&lt;br /&gt;
*# MX can process a file with a string of web tags mirroring the realtime.txt option in MX, and upload the resulting file so your web pages can use JavaScript for a one-off insert of the values or an Ajax routine to update the web page at a fixed interval.&lt;br /&gt;
*# Alternatively, you can use template scripts processed locally by MX that don&#039;t create web pages, but are uploaded by MX at either the real-time interval, the standard interval, or after end of day. These scripts simply initialise script variables with values obtained from web tags. You then independently have a set of web pages resident only on your web server (they don&#039;t exist where you run MX) using a combination of HTML and script content that bring in the script(s) with the variables by the appropriate syntax. All of this is covered on the [[Php_webtags|PHP web tags]] page in this wiki. As it suggests there, you might therefore have several files processed by Cumulus MX at these different intervals, converting the web tags into script variables, and then use AJAX (JavaScript that may use json format to bring in the variables) or PHP (using &amp;lt;tt&amp;gt;&#039;require_once &#039;filename&#039;;&amp;lt;/tt&amp;gt; syntax) to put those variables into a web page.&lt;br /&gt;
&lt;br /&gt;
You may find [[PHP|this wiki page]] useful for understanding more about the different script languages.&lt;br /&gt;
&lt;br /&gt;
=That is enough folks=&lt;br /&gt;
&lt;br /&gt;
If you have read up to here, you now know the basics for using MX on Linux.&lt;br /&gt;
&lt;br /&gt;
The remaining sections are more technical and so you can skip them.&lt;br /&gt;
&lt;br /&gt;
=Technical Extra=&lt;br /&gt;
&lt;br /&gt;
PLEASE SKIP ALL SUBSEQUENT SUB-SECTIONS IF YOU WANT TO AVOID TECHNICAL EXPLANATIONS.&lt;br /&gt;
&lt;br /&gt;
== A very quick introduction to Linux ==&lt;br /&gt;
&lt;br /&gt;
This article is not the place to teach you Linux, you can find books and on-line articles for yourself, but I list here enough for you to understand the instructions used elsewhere in this article.&lt;br /&gt;
&lt;br /&gt;
If you have a Raspberry Pi with a monitor attached, you will see a raspberry icon that you can click to get Graphical User Interface access to many features, including shutdown options.&lt;br /&gt;
&lt;br /&gt;
=== su and sudo ===&lt;br /&gt;
&lt;br /&gt;
There is a command &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; that allows a terminal session to become a super user session with root privileges. If you use that command, without a &#039;&#039;&#039;sudo&#039;&#039;&#039; command in front, you need to type in the password (we changed earlier) when prompted.  if you type &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt;, then you get root privileges without being asked to quote password. All subsequent lines in this terminal session will have a prompt that reminds you that you have root access and do not need to prefix subsequent commands with &amp;quot;sudo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Normally, all terminal sessions will use the default &amp;quot;pi&amp;quot; user, and for individual commands, you will use a &amp;quot;sudo&amp;quot; prefix each time that command needs administrative rights, as this allows a standard Pi user to do tasks that otherwise only work for the root user.&lt;br /&gt;
&lt;br /&gt;
You might use a &amp;quot;sudo&amp;quot; prefix if you need to access a part of the file structure that your user does not have any access to, or where the standard user does not have write (or execute) access. &lt;br /&gt;
&lt;br /&gt;
There are also some commands (like displaying mounted storage) that are not available to a standard user. Here are 3 system commands that in terminal mode will only ever work with this prefix (although if you have installed the version of the Raspberry Pi Operating System that supports a graphical user interface you can also select these actions from a menu):&lt;br /&gt;
*&#039;&#039;&#039;sudo halt&#039;&#039;&#039; = stops any cpu functions, but leaves Pi running; used when you have reached the end of commands you want to do for now&lt;br /&gt;
*&#039;&#039;&#039;sudo poweroff&#039;&#039;&#039; = makes pi do a tidy shutdown and turn off its power; used when you will not be using your Pi for a while&lt;br /&gt;
*&#039;&#039;&#039;sudo reboot&#039;&#039;&#039; (or &amp;quot;sudo reboot -verbose&amp;quot; for diagnostic output during shutdown and reboot) = makes your Pi close down and then reboot; used when you change settings, and after you install new software, to ensure Pi starts with all applications running using the latest settings and latest already installed software&lt;br /&gt;
&lt;br /&gt;
=== ~ and / ===&lt;br /&gt;
&lt;br /&gt;
The tilde symbol &#039;&#039;&#039;~&#039;&#039;&#039; denotes the home directory for the current user.  Sub-directories within the current user&#039;s folder can be identified by &#039;&#039;&#039;~/documents&#039;&#039;&#039; or similar notation. &lt;br /&gt;
&lt;br /&gt;
To reference a folder in root or any other area, the prefix is always &#039;&#039;&#039;/&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are using the RPi OS GUI, it provides a file manager that displays folders and files, and if you have a mouse you can click on an object to see what actions are available.  The file manager has &amp;quot;Home&amp;quot; and &amp;quot;Root&amp;quot; as bookmarks by default, you can bookmark others.  Typically, any new partitions created can also be accessed from bookmarks.  Depending on options you select, there may be icons on the GUI desktop to link to particular folders and clicking on these offers various options including opening them in file manager.&lt;br /&gt;
&lt;br /&gt;
In a terminal environment, to see what files and folders are in the current directory, type &amp;lt;code&amp;gt;dir&amp;lt;/code&amp;gt; for just names or &amp;lt;code&amp;gt;ls&amp;lt;/code&amp;gt; for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== folder commands ===&lt;br /&gt;
&lt;br /&gt;
To make a new folder in the current directory, type &amp;lt;code&amp;gt;sudo mkdir folder_name&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To remove a folder, that has no files in it, type in a particular path, type &amp;lt;code&amp;gt;sudo rmdir /path/directory&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To remove a folder that does have files, and/or sub-folders within it, type tt&amp;gt;sudo rm -r /path/directory&amp;lt;/code&amp;gt;, but remember the contents are gone for ever, so be absolutely sure you have specified the right folder! &lt;br /&gt;
&lt;br /&gt;
To copy folders/files from one directory to another use something like &amp;lt;code&amp;gt;cp -R --update --preserve /home/pi/CumulusMX/backup/daily /media/pi/data/CumulusMX/archive&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sometimes, you have a folder or file in just one place in the file system, but want to be able to access it at a different place (because something expects it in the second place), the syntax is &amp;lt;code&amp;gt;ln -s /path/elsewhere path/pointer_location&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
An example might be &#039;&#039;&#039;ln -s /var/lib/phpliteadmin/diary.db ~/CumulusMX/data/diary.db&#039;&#039;&#039; (phplite admin can only update databases in one folder /var/lib/phpliteadmin, or in older releases in /usr/share/phpliteadmin; while MX expects the file to be in its data folder but is happy with a logical pointer to another folder).&lt;br /&gt;
&lt;br /&gt;
=== chmod ===&lt;br /&gt;
&lt;br /&gt;
When you are attempting any of the actions listed in this article that involve reading, creating, editing, exeduting, or moving, files; you might see an error message generally because of a lack of write (or execute) permissions on an existing file or folder.   Whilst &amp;lt;code&amp;gt;rm filename&amp;lt;/code&amp;gt; will remove a file even if it is write protected, for nano you need to change the file permissions with &amp;lt;code&amp;gt;sudo chmod -R ugo+rw ~/CumulusMX&amp;lt;/code&amp;gt; for modify access to all files in your Cumulus installation (see the syntax below if you want to restrict access).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;chmod&#039;&#039;&#039; command to modify permissions&lt;br /&gt;
* the &#039;&#039;&#039;-R&#039;&#039;&#039; indicates recursive action (i.e. including not just the named folder, but all files within it and all sub-folders, and all files within sub-folders)&lt;br /&gt;
*letters indicating whose permission is being modified&lt;br /&gt;
** &#039;&#039;&#039;u&#039;&#039;&#039; = Owning user (sometimes the owner is the user root, sometimes the owner is the user Pi, for our web pages later we change ownership)&lt;br /&gt;
** &#039;&#039;&#039;g&#039;&#039;&#039; = Group (by default the owning user is also a group, but a group can be defined if you want to give multiple users (with different passwords) the same rights of access)&lt;br /&gt;
** &#039;&#039;&#039;o&#039;&#039;&#039; = Other users (write permission here is needed if for example you are using FTP to move a file from a PC to your Pi, or vice versa)&lt;br /&gt;
* sign for add or remove permissions&lt;br /&gt;
* &#039;&#039;&#039;+&#039;&#039;&#039; = add permission&lt;br /&gt;
* &#039;&#039;&#039;-&#039;&#039;&#039; = remove permission&lt;br /&gt;
*letters indicating what permission is being changed&lt;br /&gt;
** &#039;&#039;&#039;r&#039;&#039;&#039; = read [4]&lt;br /&gt;
** &#039;&#039;&#039;w&#039;&#039;&#039; = write [2]&lt;br /&gt;
** &#039;&#039;&#039;x&#039;&#039;&#039; = execute [1]&lt;br /&gt;
&lt;br /&gt;
Note that as an alternative shorter syntax you can use numbers e.g. &#039;&#039;&#039;666&#039;&#039;&#039; is equivalent to &#039;&#039;&#039;ugo+rw&#039;&#039;&#039;. The first digit in the number relates to &#039;&#039;u&#039;&#039;, the second to &#039;&#039;g&#039;&#039; and the last to &#039;&#039;o&#039;&#039;. The values in [] brackets in list of permissions above are added to derive each digit.  So if you are reading the Cumulus support forum and you see a reference to permissions which includes a string of 3 digits, now you can understand what is meant.&lt;br /&gt;
&lt;br /&gt;
=== editing files ===&lt;br /&gt;
&lt;br /&gt;
*Do remember that file names are case sensitive.&lt;br /&gt;
*If you use the wrong case in a path/file name, it will be treated as a different &amp;quot;new&amp;quot; file.&lt;br /&gt;
*If a file editor does not display content you were expecting, look in case &amp;quot;new file&amp;quot; message appears because you have made a typo in the path/file name.&lt;br /&gt;
&lt;br /&gt;
There are various text editors available on a Pi, &lt;br /&gt;
*if you have a mouse and click on a file, you should see &amp;quot;text editor&amp;quot; listed, that loads &#039;&#039;&#039;Mousepad&#039;&#039;&#039; which has a menubar at the top of its &amp;quot;Windows&amp;quot; like interface.&lt;br /&gt;
*in terminal mode &#039;&#039;&#039;nano&#039;&#039;&#039; is a text editor that by default lists the actions available making it easier for a novice to use. &lt;br /&gt;
*in both the GUI and terminal mode, Geary is a programmer&#039;s editor with lots of useful funtionality&lt;br /&gt;
&lt;br /&gt;
All editors can create a file when a file does not exist and edit (subject to file permissions) an existing file. Use prefix of &#039;sudo&#039; to give you access to any file irrespective of ownership, &#039;&#039;&#039;sudo&#039;&#039;&#039; does not change the actual file permissions, so you might find you can read a file, but not save it after you have done your edit.  &lt;br /&gt;
&lt;br /&gt;
====nano====&lt;br /&gt;
&lt;br /&gt;
The full syntax is &amp;lt;code&amp;gt;sudo nano -B Path_file_name&amp;lt;/code&amp;gt; where the &#039;&#039;&#039;-B&#039;&#039;&#039; means it will create a backup of how the file was before (this can be enabled while in the editor by pressing the control key down and typing B). Alternatively use &#039;&#039;&#039;-C&#039;&#039;&#039; which stores each version in a back-up directory.  If you want to edit from a particular line and column you can use &#039;&#039;&#039;+line.column&#039;&#039;&#039;, and also optionally use &#039;&#039;&#039;-l&#039;&#039;&#039; (lower-case &amp;quot;L&amp;quot;) to display line numbers which might be useful when trying to correct a problem with a log file like [[dayfile.txt]].  If you don&#039;t specify a file name, then nano will create a new file and you will need to specify where to save it before exit.&lt;br /&gt;
&lt;br /&gt;
After typing the nano command you need to specify a filename (it might include a path, see earlier sub-section for use of &#039;&#039;&#039;/&#039;&#039;&#039; and &#039;&#039;&#039;~&#039;&#039;&#039;) and there are examples later in this article, but if you decide to &#039;&#039;host a web site on your Pi&#039;&#039; then you might want to edit its home page with (.html or .php) name like &amp;lt;code&amp;gt;sudo nano /var/www/html/index.php&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
After you have made an alteration to the current contents of the file, various options are shown at the bottom. Here are two key ones:&lt;br /&gt;
*First is &#039;&#039;&#039;^O&#039;&#039;&#039; which is used to save the file whilst staying in the editor, to do this press the control key down and type O. Next it shows the current file name, if you press &#039;&#039;&#039;Enter&#039;&#039;&#039; then that file will be overwritten.&lt;br /&gt;
**it allows you to type over the file name shown. If you choose to save as another file, you will be asked if the new name is correct (type &#039;&#039;&#039;Y&#039;&#039;&#039; to continue saving).&lt;br /&gt;
*Another is &#039;&#039;&#039;^X&#039;&#039;&#039; which means if you press the control key down and type X you get the exit dialogue. If you have not made any edits, or have already saved the file, this just exits the editor. If you have not used control and O to save the file, it asks whether you want to save the edited file (type &#039;&#039;&#039;Y&#039;&#039;&#039;), typing just the Y key lets save continue (any other key stroke exits without saving), then it shows the current file name, if you press &#039;&#039;&#039;Enter&#039;&#039;&#039; then that file will be overwritten.&lt;br /&gt;
&lt;br /&gt;
You might find it useful to type &amp;lt;code&amp;gt;sudo nano /etc/nanorc&amp;lt;/code&amp;gt; as this puts you into the configuration file for nano where you can set back-up, line-numbering, and other options.&lt;br /&gt;
&lt;br /&gt;
====Geany====&lt;br /&gt;
&lt;br /&gt;
This uses a GUI, you can set preferences and do all other actions using either menu selections (use mouse or keyboard) or control sequences (on keyboard).  Once it knows what type of programming language, it can colour up the code; it can show you how many times variable identifiers are used; it can match opening and closing quotes, tags, and brackets; and it can ensure encoding and line terminators are correct.&lt;br /&gt;
&lt;br /&gt;
Line-numbering is an option, so it can be used to edit MX log files, and (as BOM is an encoding option) you can be sure it won&#039;t add unwanted encoding.&lt;br /&gt;
&lt;br /&gt;
== removing an unwanted file ==&lt;br /&gt;
&lt;br /&gt;
You can remove a file with various commands, including &amp;lt;code&amp;gt;sudo rm filename&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== external storage ===&lt;br /&gt;
&lt;br /&gt;
Generally, if you attach USB storage (a disc or a stick), Linux OS distributions will detect any existing partitions (yes a technical term) and allow you to read files stored in them. This applies whether the partition is formatted for Linux or for Microsoft Windows.&lt;br /&gt;
&lt;br /&gt;
However, you may have a brand new, unformatted, drive, or you may want to delete, or add partitions, or to format them as Linux partitions (as these make the input/output significantly more efficient).&lt;br /&gt;
&lt;br /&gt;
You can install software that uses a GUI to make this easy, e.g. &#039;&#039;&#039;gparted&#039;&#039;&#039; [https://gparted.org/ partition editor].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use a terminal session, and lots of commands:&lt;br /&gt;
#connect your external storage&lt;br /&gt;
#type &#039;&#039;&#039;su&#039;&#039;&#039; to gain administrative access&lt;br /&gt;
#enter your RPi password&lt;br /&gt;
#type &#039;&#039;&#039;fdisk -l&#039;&#039;&#039; (this is only available to root user) to see names for all storage your Linux computer can see&lt;br /&gt;
#an external drive will be named something like &#039;&#039;/dev/sd&#039;&#039;&#039;&#039;a&#039;&#039;&#039;&#039;&#039; although that &amp;quot;a&amp;quot; might be &amp;quot;b&amp;quot; or a subsequent letter in alphabet depending on what has already been assigned&lt;br /&gt;
# if &amp;quot;sda&amp;quot; and &amp;quot;sdb&amp;quot; appear, or any others up to &amp;quot;sdz&amp;quot;, the last one will relate to the most recently connected storage&lt;br /&gt;
#if your drive has partitions, then you will see further entries like &#039;&#039;&#039;/dev/sda1&#039;&#039;&#039; and &#039;&#039;/dev/sda2&#039;&#039;.&lt;br /&gt;
#type &#039;&#039;&#039;df&#039;&#039;&#039; to see whether your drive is currently mounted (being used by computer system)&lt;br /&gt;
#if it is mounted, the command to use next is (type this accurately, there is a temptation to type an English word that adds an extra &amp;quot;n&amp;quot;!) &amp;lt;code&amp;gt;umount /dev/sda&amp;lt;/code&amp;gt;, obviously replace the &amp;quot;a&amp;quot; by the appropriate letter seen in the earlier command&lt;br /&gt;
#if the drive does not have a partition, create one using &amp;lt;code&amp;gt;fdisk /dev/sda&amp;lt;/code&amp;gt;, again changing the &amp;quot;a&amp;quot; into whatever letter was seen in response to the first &amp;quot;fdisk&amp;quot; command&lt;br /&gt;
#*&amp;quot;fdisk&amp;quot; is a utility, it will wait for further instructions, follow each with pressing &amp;quot;Enter&amp;quot;&lt;br /&gt;
#*type &#039;&#039;&#039;n&#039;&#039;&#039; as instruction to create a new partition&lt;br /&gt;
#*type &#039;&#039;&#039;p&#039;&#039;&#039; to make this the primary partition on this drive&lt;br /&gt;
#* type &#039;&#039;&#039;1&#039;&#039;&#039; to make this the first partition&lt;br /&gt;
#*accept default offered for first cylinder&lt;br /&gt;
#*accept default offered for last cylinder, if this is only partition, as that ensures the whole disk (apart from partition table) is available for your data&lt;br /&gt;
#*for simplicity, this guidance will not cover the possibility of multiple partitions&lt;br /&gt;
#*type &#039;&#039;&#039;t&#039;&#039;&#039; to say you are specifying the way you want this partition to be specified in partition table&lt;br /&gt;
#*optionally type &#039;&#039;&#039;L&#039;&#039;&#039; to see what file system types are available for the partition table&lt;br /&gt;
#*to select a &amp;quot;Linux&amp;quot; partition, type &#039;&#039;&#039;83&#039;&#039;&#039;&lt;br /&gt;
#*type &#039;&#039;&#039;w&#039;&#039;&#039; to create the partition you have now specified for Linux.&lt;br /&gt;
#Now we have a partition table and a partition on our drive, we can repeat &#039;&#039;&#039;fdisk -l&#039;&#039;&#039; to see the entry now added, it might be &#039;&#039;&#039;/dev/sda1&#039;&#039;&#039;, where again the &amp;quot;a&amp;quot; might be a different letter&lt;br /&gt;
#To format this partition for Linux, we specify &amp;quot;ext4&amp;quot; as the way to format it using &amp;lt;code&amp;gt;mkfs.ext4 /dev/sda1&amp;lt;/code&amp;gt;, again replacing the &amp;quot;a&amp;quot; as required.&lt;br /&gt;
#we need to create a folder within &lt;br /&gt;
#*&amp;quot;/media&amp;quot; for Linux in general&lt;br /&gt;
#*&amp;quot;/media/pi&amp;quot; for Raspberry PI OS&lt;br /&gt;
# As we will learn later, the relevant command (in RPi OS) is &#039;&#039;&#039;mkdir /media/pi/my_short_name&#039;&#039;&#039;, where &amp;quot;my_short_name&amp;quot; is selected by you&lt;br /&gt;
#To mount our partition, we type &amp;lt;code&amp;gt;mount /dev/sda1 /media/pi/my_short_name&amp;lt;/code&amp;gt;, where &amp;quot;sda1&amp;quot; is replaced by &amp;quot;sdb1&amp;quot; or whatever we saw in &#039;&#039;&#039;fdisk -l&#039;&#039;&#039;, and &amp;quot;pi/my_short_name&amp;quot; is replaced by whatever we used in our make directory command.&lt;br /&gt;
#To (optionally) get our partition mounted at boot, we can use an editor (see later) to change the boot instructions, by typing &amp;lt;code&amp;gt;nano /etx/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
#*In the editor, use the down arrow on your keyboard to move to last line, and then type &#039;&#039;&#039;/dev/sda1&#039;&#039;&#039; (change the &amp;quot;a&amp;quot; as necessary), then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;/media/pi/my_short_name&#039;&#039;&#039; (change &amp;quot;pi/my_short_name&amp;quot; to whatever we used in our make directory command), then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;ext4&#039;&#039;&#039; (again matching the format type we  selected earlier), then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;defaults&#039;&#039;&#039;, then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;1&#039;&#039;&#039;, then press &amp;quot;tab&amp;quot;, then finally type &#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
#*save the file (as described later in nano sub-section), hold down control key and press &#039;&#039;&#039;o&#039;&#039; letter key. Press &amp;quot;enter&amp;quot; again to confirm same file name.&lt;br /&gt;
#* exit nano by holding control key and pressing &amp;quot;x&amp;quot; key.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Package Manager – a brief technical aside==&lt;br /&gt;
&lt;br /&gt;
Linux operating systems install software by looking in repositories, and checking a register showing dependencies.  When you ask Linux to install a particular package using “apt”, it also checks if all dependencies of the selected package are already present, and installs any that are missing.&lt;br /&gt;
&lt;br /&gt;
If you look up on-line how to install any software in Linux, it may use “apt-get”, that is an earlier package manager, in general you can use “apt” instead now. &lt;br /&gt;
&lt;br /&gt;
The full differences between “apt” and “apt-get” depends on your Linux flavour, so this technical aside now splits further discussion by Linux flavour.&lt;br /&gt;
&lt;br /&gt;
===Debian as used by Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
“Debian Linux” (and its derivatives such as “Raspberry Pi Operating System”) uses “apt” to mean a ‘’’Package Manager’’’ that can install, update, and remove packages from these computer systems. &lt;br /&gt;
&lt;br /&gt;
For Debian Linux, “apt” is directed at the end-user (it has user friendly features like a staus bar showing progress on a long install or long upgrade, and can produce prompts about what it is doing and can give choices about whether to do individual actions). &lt;br /&gt;
&lt;br /&gt;
There is an alternative “apt-get” which is more powerful, but directed at system level users (those who don’t want to be watching progress and possibly responding to prompts). &lt;br /&gt;
&lt;br /&gt;
As “apt-get” is updated less frequently than “apt”, it may be it will not work with new packages. Put another way “apt-get” may never change what it can do, but “apt” may get modified to do more than it did before.&lt;br /&gt;
&lt;br /&gt;
===Ubuntu===&lt;br /&gt;
&lt;br /&gt;
For Ubuntu only “apt-get” was available up to 2014, when “apt” was added. Both work as described above for Debian. Again “apt” is best to use.&lt;br /&gt;
&lt;br /&gt;
===Mint===&lt;br /&gt;
&lt;br /&gt;
Linux Mint has a different variation. Its “apt” calls its “apt-get” and adds extra features.  So both effectively do the same, but (as with previous flavours) “apt” is best to use.&lt;br /&gt;
&lt;br /&gt;
It is likely that other Linux variants will also vary how these alternative commands differ.&lt;/div&gt;</summary>
		<author><name>Phil23</name></author>
	</entry>
	<entry>
		<id>https://www.cumuluswiki.org/index.php?title=MX_on_Linux&amp;diff=9584</id>
		<title>MX on Linux</title>
		<link rel="alternate" type="text/html" href="https://www.cumuluswiki.org/index.php?title=MX_on_Linux&amp;diff=9584"/>
		<updated>2021-07-25T03:48:25Z</updated>

		<summary type="html">&lt;p&gt;Phil23: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:WorkInProgressBanner}}{{Template:Version badge Mx}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This page focuses on aspects of MX that are specific to the Linux operating systems.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you are running MX on on any computer running the Microsoft Windows Operating System, then you should be reading the [[MX on Windows OS]] page instead.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
=Page Content=&lt;br /&gt;
&lt;br /&gt;
This page:&lt;br /&gt;
* describes the options available for installing MX, and the other Cumulus packages&lt;br /&gt;
* describes the pre-requisite &#039;&#039;&#039;MONO&#039;&#039;&#039; software needed to run the various Cumulus executables, (for Raspberry Pi only), how to add the Mono repository to your system, and how to upgrade MONO&lt;br /&gt;
* explains the few key Linux commands it uses&lt;br /&gt;
* describes the administrative interface and instructions for configuring MX&lt;br /&gt;
* it tries to be useful to anyone who has never used MX, and anyone who knows Cumulus, but has not run MX on Linux before&lt;br /&gt;
* describes the various options available to run MX&lt;br /&gt;
* describes the optional parameters you can add when starting MX&lt;br /&gt;
* describes the other executables &lt;br /&gt;
&lt;br /&gt;
There are various related pages to get more information:&lt;br /&gt;
*Go to [[:Category:Terminology]] for links to pages that explain terminology used by Cumulus (some of these need updating for MX)&lt;br /&gt;
*Go to [[:Category:Cumulus MX]] for links to all pages in this Cumulus Wiki that relate specifically to MX&lt;br /&gt;
*[[MX Administrative Interface|Admin interface]] provides information on configuration and web pages for viewing your weather data locally&lt;br /&gt;
*Go to [[:Category:Cumulus Files]] for links to all pages describing the sub-folders and files used by MX&lt;br /&gt;
*If you encounter a problem when running MX, see [[What to do when I have a problem with MX]]&lt;br /&gt;
*The [[Cumulus MX FAQ]] page was created with snippets from the forum, but nobody has yet sorted this out into a useful page or updated it for recent releases&lt;br /&gt;
*If you were using the original (now legacy) Cumulus software, please read [[Migrating_from_Cumulus_1_to_MX]], although that is mostly directed at those using MX on the same Windows PC as they used for Cumulus 1, and was written for an old MX release, it will help you understand configuration differences.&lt;br /&gt;
*If you want to use a script language, you might want to read [[PHP|PHP Hypertext Pre-processor and JavaScript]] page&lt;br /&gt;
&lt;br /&gt;
=Using MX on UNIX-derived Operating Systems=&lt;br /&gt;
&lt;br /&gt;
MX runs on any UNIX-derived operating systems (OS):&lt;br /&gt;
* including those found on Apple Mac computers, &lt;br /&gt;
* and those found on a multitude of devices running Linux. &lt;br /&gt;
&lt;br /&gt;
UNIX is a long established operating system, and both UNIX and its derivatives have good long term compatibility. This means that commands are generally easy to learn and use. Most devices also have a graphical user interface that can do the more straightforward tasks without needing to know all the commands.&lt;br /&gt;
&lt;br /&gt;
==Device Coverage==&lt;br /&gt;
&lt;br /&gt;
Linux is available based on a multitude of different kernels (the building block for the operating system), on a multitude of devices.&lt;br /&gt;
&lt;br /&gt;
It is hoped that contributions to this page will be made by Cumulus users with a range of such devices. The page has been originated by a contributor using the Raspberry Pi Operating System (this is based on Debian, one of the Linux kernels). Where appropriate, this page gives instructions specific to a [[Raspberry Pi computer page|Raspberry Pi computer]].&lt;br /&gt;
&lt;br /&gt;
:Until somebody creates a separate page for Apple Mac computers (that would be a good idea), this page is the closest.&lt;br /&gt;
&lt;br /&gt;
==What do people think about MX on Linux?==&lt;br /&gt;
&lt;br /&gt;
Contributions to the [https://cumulus.hosiene.co.uk/viewforum.php?f=40 Cumulus Support Forum] suggest that:&lt;br /&gt;
*Use on a Raspberry Pi (RPi) computer is very popular&lt;br /&gt;
*In general, people find installing, and running, MX on Linux is easy&lt;br /&gt;
*The few people who do have difficulties are those who have good knowledge of Microsoft systems and feel scared to swap to something different.&lt;br /&gt;
&lt;br /&gt;
Microsoft has had a deliberate policy of being different to traditional computers mostly based on UNIX, and the [[MX_on_Windows_OS|Running Cumulus MX on Microsoft Windows]] page covers those aspects of MX that are specific to Personal Computers running Microsoft&#039;s Windows Operating System. &lt;br /&gt;
&lt;br /&gt;
In the Cumulus support forum, there are many posts from people who are struggling with MX on PCs, as it seems people often find “installing”, and using, MX is more difficult when using Microsoft Windows.&lt;br /&gt;
&lt;br /&gt;
=For those using Raspberry Pi computers=&lt;br /&gt;
&lt;br /&gt;
You have two choices:&lt;br /&gt;
&lt;br /&gt;
CHOICE ONE: ‘’’Create a micro-SD card that has everything on it to load a kernel onto your computer and run MX’’’&lt;br /&gt;
&lt;br /&gt;
The developer has created [[Software#Raspberry_Pi_Image|an image you can download]].&lt;br /&gt;
&lt;br /&gt;
That image contains:&lt;br /&gt;
#Raspberry Pi Lite Operating System as kernel (no graphical user interface, designed for a RPi without keyboard or monitor)&lt;br /&gt;
#Mono-complete package&lt;br /&gt;
#Cumulus MX package&lt;br /&gt;
&lt;br /&gt;
* If you are new to MX, after booting from image, you will need to use the [[MX_Administrative_Interface#Station_Settings|admin interface]] to define station type, your choice of units, and some other settings, before MX can start recording data from the connected weather station.&lt;br /&gt;
* If you are migrating from another computer, after booting from image, you need to add (using an external memory stick or file transfer from your other device to the RPi), the following:&lt;br /&gt;
** (mandatory) [[Cumulus.ini]], &lt;br /&gt;
**(optional) [[strings.ini]], &lt;br /&gt;
**(mandatory) all files from old [[Data_folder|data sub-folder]], &lt;br /&gt;
**and any (optional) files from old Reports sub-folder.&lt;br /&gt;
&lt;br /&gt;
If you want to pursue that approach, please read [[Raspberry_Pi_Image]] page, instead of continuing to read this page.  Obviously, you can return to this page if you want to learn more.&lt;br /&gt;
&lt;br /&gt;
CHOICE TWO: ‘’’Load the software packages individually’’’&lt;br /&gt;
&lt;br /&gt;
Please read on, this page will tell you all you need to know.&lt;br /&gt;
&lt;br /&gt;
= Do you have a Operating System? =&lt;br /&gt;
&lt;br /&gt;
New hardware might come preloaded with an operating system, or might allow you to choose which operating system to install on it.&lt;br /&gt;
&lt;br /&gt;
Please see [[Raspberry Pi computer page]] if you want guidance on choosing which model to buy and how to install an operating system on those computers, so you are ready to install MX.&lt;br /&gt;
&lt;br /&gt;
=Do you know how to install packages?=&lt;br /&gt;
&lt;br /&gt;
If you already know how to install packages, your computer has the pre-installed image, or you have installed MX before, you will want to skip the sub-sections that follow on here, and continue reading at [[#Cumulus packages]].&lt;br /&gt;
&lt;br /&gt;
Otherwise, here is a short technical digression to explain the commands.&lt;br /&gt;
&lt;br /&gt;
==The various components to commands for installation==&lt;br /&gt;
&lt;br /&gt;
Linux computers have a “source list” which references the repositories from which software packages can be installed.&lt;br /&gt;
&lt;br /&gt;
If a particular package can not be found in repositories already in the source list, then another repository can be added to the source list.&lt;br /&gt;
&lt;br /&gt;
===sudo===&lt;br /&gt;
&lt;br /&gt;
By default, a Linux user will log in as a default user with limited rights. For example, on the Raspberry Pi Operating System, there is a single default user, initially called &amp;quot;Pi&amp;quot;, with their home folder that can be referenced as &amp;quot;~&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The initial &amp;quot;sudo&amp;quot; part of many commands gives us super-user (root) rights when executing the instruction that follows.&lt;br /&gt;
&lt;br /&gt;
If we are working away from the folder(s) owned by the default user, we can consider whether we want to change the ownership of these parts of the file system (how to do this for a MX installation is explained later) so that we can access the files with our default user without using &amp;quot;sudo&amp;quot; for file/folder commands.&lt;br /&gt;
&lt;br /&gt;
In some limited cases, it might make sense to just change &amp;quot;read&amp;quot; rights,so that the default user can read a file/folder, but other actions are not possible without using &amp;quot;sudo&amp;quot; prefix. This limits our ability to accidentally delete files that other processes need.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
The second part of our installation commands is “apt” meaning “Advance Package Tool”. In simple terms, it runs the “package manager” used in Linux.  &lt;br /&gt;
&lt;br /&gt;
If you are looking online for a tutorial on how to install packages, you might see “apt-get” or &amp;quot;apt-cache&amp;quot; used in examples they quote. It should be safe to replace these older package managers with &amp;quot;apt&amp;quot;. I have included a little technical explanation at the end of this page if this really worries you.&lt;br /&gt;
&lt;br /&gt;
===install===&lt;br /&gt;
&lt;br /&gt;
The third part of our installation instruction is “install”, which tells our package manager what we are trying to do.&lt;br /&gt;
&lt;br /&gt;
For the record only, here is full list of what can follow “apt”: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:30px&amp;quot; | Instruction following “apt”&lt;br /&gt;
!style=&amp;quot;width:300px&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
|install&lt;br /&gt;
|To install a package and its dependencies&lt;br /&gt;
|-&lt;br /&gt;
|update&lt;br /&gt;
| The &amp;quot;source list&amp;quot; [[#The various components to commands for installation|mentioned earlier]] that references the repositories from which software packages can be installed, needs to be updated periodically so it reflects any changes within those repositories. The instruction &amp;quot;update&amp;quot; is included after &amp;quot;apt&amp;quot; to make sure your computer has up to date information about repositories installed, and to report if these contain packages that can be upgraded&lt;br /&gt;
|-&lt;br /&gt;
|upgrade&lt;br /&gt;
| Once your &amp;quot;source list&amp;quot; is up to date, the instruction &amp;quot;upgrade&amp;quot; can be included after &amp;quot;apt&amp;quot; to download any newer versions now available in repositories, and to replace those packages that are already installed on your computer with those newer versions&lt;br /&gt;
|-&lt;br /&gt;
|autoremove&lt;br /&gt;
| The instruction &amp;quot;autoremove&amp;quot; can be included after &amp;quot;apt&amp;quot; to check all components in the packages you have installed onto your computer, and remove any components that are not needed by the dependencies of the packages you are using. A download for software frequently includes some components specifically for their software to work with particular other optional packages.&lt;br /&gt;
&lt;br /&gt;
When we install mono-complete later, the other packages we install do not need every component that has installed, and “autoremove” can be used to tidy up when all our installations are finished.&lt;br /&gt;
|-&lt;br /&gt;
|remove&lt;br /&gt;
|If you want to remove just one component manually, after &amp;quot;apt&amp;quot;, use “remove” followed by the name of component you no longer want&lt;br /&gt;
|-&lt;br /&gt;
|purge&lt;br /&gt;
| To remove any installed package and delete all related configuration files, after &amp;quot;apt&amp;quot; type &amp;quot;purge&amp;quot; then the name of the package we no longer want&lt;br /&gt;
|-&lt;br /&gt;
|search&lt;br /&gt;
|To search in repositories in source list for a package you specify after “search”&lt;br /&gt;
|-&lt;br /&gt;
|show&lt;br /&gt;
|To show any information available about a package that you name after the “show”&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
&lt;br /&gt;
The basic syntax is either one or two hyphens, followed by one or two letters (each letter has to be a specific case). Various examples will be seen on this page, but here just one is explained here.&lt;br /&gt;
&lt;br /&gt;
If we selected &amp;quot;install&amp;quot; or &amp;quot;upgrade&amp;quot; to follow &amp;quot;apt&amp;quot;, we can add a “-y” flag to signify that we want the install to continue.  Without this flag, the package manager will ask periodically if we want it to continue,  and we have to then respond with a “y” each time.  For example, when we ask to install a package, &amp;quot;apt&amp;quot; will do a search, it will list what components it has found, and output how big their demands are on storage, without &amp;quot;-y&amp;quot; flag, it will then ask (at least once) if it is okay to continue to installing.&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
The final part of the package command is the name of the package or component that we want to install/upgrade/purge/show/remove or search for.&lt;br /&gt;
&lt;br /&gt;
=Install starts here=&lt;br /&gt;
&lt;br /&gt;
If your computer has the pre-installed image, or you have installed MX before, you can skip the sub-sections that follow on here and continue reading at [[#Cumulus packages]].&lt;br /&gt;
&lt;br /&gt;
== Preparing for an install==&lt;br /&gt;
&lt;br /&gt;
Before we do an install of a new package, we typically use this series of commands to ensure our computer is in the best state to work out dependencies of what we are about to install:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt -y upgrade&lt;br /&gt;
sudo apt autoremove&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Each of those can be understood from information in previous section.&lt;br /&gt;
&lt;br /&gt;
If you are installing onto a Pi zero, or similar slow computer, please ensure the size of the swapfile is as big as possible, as the mono-complete we will install is large. In linux, we type &amp;lt;code&amp;gt;free -m&amp;lt;/code&amp;gt; to see our RAM size and our swapfile size.&lt;br /&gt;
&lt;br /&gt;
To change swapfile size on the Raspberry Pi, you need to edit a file &amp;lt;code&amp;gt;sudo nano /etc/dphys-swapfile&amp;lt;/code&amp;gt;.  Move the cursor down line by line until it reaches &#039;&#039;&#039;CONF_SWAPSIZE=100&#039;&#039;&#039;.  That is showing that the swapfile is only 99 mb by default in the Raspberry Pi Operating System. Now move the cursor to the 100, and change it to &amp;quot;512&amp;quot; which is enough for mono even on a Pi zero. Next, stop, and restart the relevant service using &amp;lt;code&amp;gt;sudo /etc/init.d/dphys-swapfile stop &amp;amp;&amp;amp; sudo /etc/init.d/dphys-swapfile start&amp;lt;/code&amp;gt;. That should complete quickly, and we can type &amp;lt;code&amp;gt;free -m&amp;lt;/code&amp;gt; again to see the 99 we saw previously has been replaced by 511.&lt;br /&gt;
&lt;br /&gt;
=== USB HID === &lt;br /&gt;
&lt;br /&gt;
There is one more prerequisite package for MX with some weather station types.&lt;br /&gt;
&lt;br /&gt;
The cross-platform [https://www.nuget.org/packages/HidSharp/ Universal Serial Bus (USB) Human Interface Device (HID) library] used by MX to connect to weather stations that appear as a HID connecting via USB (like Fine Offset and USB connected Oregon Scientific models) calls a package file called &#039;&#039;libudev.so.1&#039;&#039;, so you may need to [[#install|search]] your Linux computer for this file, and [[#install]] it if it is missing. Alternatively, you might just need a symbolic link where MX looks to where the file is.&lt;br /&gt;
&lt;br /&gt;
To check your USB devices, type &amp;lt;code&amp;gt;sudo lsusb -t&amp;lt;/code).  &lt;br /&gt;
&lt;br /&gt;
To check HID, download this [https://cumulus.hosiene.co.uk/download/file.php?id=11414 USB HID test package] and run it.&lt;br /&gt;
&lt;br /&gt;
Optionally read about [https://cumulus.hosiene.co.uk/viewtopic.php?f=39&amp;amp;t=14310&amp;amp;p=111593&amp;amp;hilit=libudev.so.1#p111593 Oregon Scientific] issues.&lt;br /&gt;
&lt;br /&gt;
To read about [https://cumulus.hosiene.co.uk/viewtopic.php?p=107913#p107913 Fine Offset issues and the (file may need to be linked to where MX wants it) file link instructions]&lt;br /&gt;
&lt;br /&gt;
=== Changing the Source List ===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;source list&amp;quot; [[#The various components to commands for installation|mentioned earlier]] may not contain all the repositories we need for our installations.&lt;br /&gt;
&lt;br /&gt;
Consequently, type &amp;lt;code&amp;gt;sudo apt search mono-complete&amp;lt;/code&amp;gt;, to find out whether the mono package is available from one of the repositories already in our source list, and if the version available is compatible with MX (Release announcements for MX should specify which versions of Mono will work).  Each of the parts of that command was explained earlier.&lt;br /&gt;
&lt;br /&gt;
If mono-complete is not available (or only available in an older version incompatible with MX), then we have to add a new repository, and the one to add depends on which Linux kernel is used by our Operating System.&lt;br /&gt;
&lt;br /&gt;
There are a number of sub-sections below, please check which applies to you, and only read that one.&lt;br /&gt;
&lt;br /&gt;
===Add the Mono repository for a Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
The two Mono repositories listed here are specific to the 2017 and 2019 releases (respectively) of the operating system for a Raspberry Pi computer.  These are taken from  [https://www.mono-project.com/download/stable/#download-lin-raspbian download-lin-raspbian].&lt;br /&gt;
&lt;br /&gt;
# the first line (in each case) installs a certificate&lt;br /&gt;
# the echo line defines a repository to add to the sources list.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:450px; color:blue&amp;quot; | Raspberry Operating System 9 (stretch) !! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:450px; color:navy&amp;quot; | Raspberry Operating System 10 (buster)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sudo apt install apt-transport-https dirmngr gnupg ca-certificates&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;sudo apt install apt-transport-https dirmngr gnupg ca-certificates&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;echo &amp;quot;deb https://download.mono-project.com/repo/debian stable-raspbianstretch main&amp;quot;&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;echo &amp;quot;deb https://download.mono-project.com/repo/debian stable-raspbianbuster main&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sudo tee /etc/apt/sources.list.d/mono-official-stable.list&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;sudo tee /etc/apt/sources.list.d/mono-official-stable.list&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sudo apt update&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;sudo apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:450px; color:blue&amp;quot; | Raspberry Operating System 9 (stretch)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:450px; color:navy&amp;quot; | Raspberry Operating System 10 (buster)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;height:50px;| sudo apt install apt-transport-https dirmngr gnupg ca-certificates&lt;br /&gt;
| sudo apt install apt-transport-https dirmngr gnupg ca-certificates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;height:100px; |&amp;lt;code&amp;gt;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;height:50px;| &amp;lt;nowiki&amp;gt;echo &amp;quot;deb https://download.mono-project.com/repo/debian stable-raspbianstretch main&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;echo &amp;quot;deb https://download.mono-project.com/repo/debian stable-raspbianbuster main&amp;quot;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;height:50px;|sudo tee /etc/apt/sources.list.d/mono-official-stable.list&lt;br /&gt;
| sudo tee /etc/apt/sources.list.d/mono-official-stable.list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Add the Mono repository to Ubuntu, Debian, Fedora===&lt;br /&gt;
&lt;br /&gt;
At time of writing, [https://www.mono-project.com/download/stable/#download-lin-ubuntu download-lin-ubuntu], shows the instructions for versions 16, 18, and 20 of Ubuntu.&lt;br /&gt;
&lt;br /&gt;
Equally, [https://www.mono-project.com/download/stable/#download-lin-debian download-lin-debian], gives details for debian, and [https://www.mono-project.com/download/stable/#download-lin-fedora download-lin-fedora] for Fedora.&lt;br /&gt;
&lt;br /&gt;
Others can be found by choosing other tabs on any of those links.&lt;br /&gt;
&lt;br /&gt;
== Installing Mono instruction ==&lt;br /&gt;
&lt;br /&gt;
Now we have the certificate needed, and the repository for mono-complete is added to our source list, we can do the actual install:&lt;br /&gt;
: &amp;lt;code&amp;gt;sudo apt install -y mono-complete&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
The “sudo”, “apt”, “install”, and “-y” have already been explained.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;mono-complete&amp;quot; is the package we want.&lt;br /&gt;
&lt;br /&gt;
:Please note that if you just specify “mono”, you will get ‘’’mono-devel’’’ (the developer edition) that does not include all the components required by each of the Cumulus executables.&lt;br /&gt;
&lt;br /&gt;
Please note that a particular MX build might specify it needs a particular version of Mono.  Hence, although normally you can upgrade a cumulus package without upgrading Mono, sometimes you will need to install Mono again.&lt;br /&gt;
&lt;br /&gt;
The latest release of Mono can always be downloaded from [https://www.mono-project.com/download/stable/#download-lin], follow step 1 there, but in step 2 replace ‘’’mono-devel‘’’ by ‘’’mono-complete’’’&lt;br /&gt;
&lt;br /&gt;
=Cumulus packages=&lt;br /&gt;
&lt;br /&gt;
Note use of plural in section name above, the following sub-sections will install various packages produced by Developer Mark Crossley.  If you are using the [[Software#Cumulus_MX|pre-built disc image]], then (unless the MX release version included in your image is an old one) you should skip the instructions for &amp;quot;CumulusMX&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Handling zip files==&lt;br /&gt;
&lt;br /&gt;
Each release is presented as a zip.&lt;br /&gt;
&lt;br /&gt;
The download and unzip procedure is exactly same on your Linux computer, and on a Windows PC.  So if you have two devices available, you can download on either device, and if it is not the computer you want to install on, you can use a file transfer package to move the files between devices, or use a drive (or even a memory card) with a partition formatted so that you can read it on both devices.  Windows and Linux partitions are formatted in different ways. While it is likely that Linux can read a Microsoft formatted partition, Microsoft Windows can never read a Linux formatted partition.&lt;br /&gt;
&lt;br /&gt;
When your browser saves the zip it might be into a folder called “downloads” on your computer, or you may be able to save into another folder that you prefer (perhaps on a different partition).  Your browser might even remember the folder you used before for files of type zip.&lt;br /&gt;
&lt;br /&gt;
When the download has completed, whatever computer type this is on, mouse click (it might need a right click or a double click depending on settings) on the download file and it should unzip (it may create a folder whose name is taken from the zip file name in the same folder by default, or it may ask you where you want to unzip to).  If you are unable to use a mouse, there should be a keyboard code to use. If you are using a file manager, with a graphical interface, there may be a different way to select the file and unzip it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Where to install all packages?==&lt;br /&gt;
&lt;br /&gt;
For simplicity on this page EXISTING PATH (the contents of this will start with a slash “/”, but not end with a slash) is used to represent any location in the Linux file structure where you decide to install all the Cumulus packages. &lt;br /&gt;
&lt;br /&gt;
The phrase “EXISTING PATH”  is used, because it is most likely you want to create the sub-folder called “/CumulusMX” (note where capital letters must be used) in a part of the Linux file structure that already exists.&lt;br /&gt;
&lt;br /&gt;
It is important to minimise the length of the path name, because this path name has to be passed between various different software languages (and longer paths risk truncation).&lt;br /&gt;
&lt;br /&gt;
* You can create sub-folder called “/CumulusMX” as you unzip a MX release, or you can type &amp;lt;code&amp;gt;sudo mkdir EXISTING PATH/CumulusMX&amp;lt;/code&amp;gt; first (note that EXISTING PATH is explained above and always starts with a slash “/”).&lt;br /&gt;
* By using the phrase EXISTING PATH this advice avoids telling you to install Cumulus where you do not want it:&lt;br /&gt;
*# Many people with a Raspberry Pi, and a little technical understanding, add an external drive to reduce wear on the internal micro-SD card, and keep their Cumulus files away from the drive that holds the operating system.&lt;br /&gt;
*#* This page is not going to get technical by telling you how to create, or mount, Linux partitions on your external drive. If your drive was bought from a Raspberry Pi reseller, they might help you. &lt;br /&gt;
*# Other people using a Raspberry Pi without that technical expertise, might use ‘’’/home/pi’’’ for EXISTING PATH as that is the default folder for the default user (Pi) and can be referenced as &amp;quot;~&amp;quot; in file path instructions they issue (although Cumulus will not understand that shorthand)&lt;br /&gt;
*#* Within that ‘’’/home/pi’’’ folder, the default user has full permissions automatically.&lt;br /&gt;
*# The developer suggests you use ‘’’/opt’’’ for EXISTING PATH (which should be available on any Linux computer).  &lt;br /&gt;
*#* By default, the code Mark provides for installing Cumulus as a service, will run that service as a root user, and the root user has full permissions in /opt (and everywhere else)&lt;br /&gt;
*#* If you do choose a EXISTING PATH outside your home folder, you might want to change the ownership of the &amp;quot;CumulusMX&amp;quot; sub-folder, to the default user (Pi), if so, type &amp;lt;code&amp;gt;sudo chown -R pi: EXISTING PATH/CumulusMX&amp;lt;/code&amp;gt;.  The advantages of that command is you no longer need &amp;quot;sudo&amp;quot; to access the files (however, if you are running MX as a service, you also need to edit the user in the script provided to create the service, so MX does not create files with root ownership - this will be covered later)&lt;br /&gt;
&lt;br /&gt;
==Packages to install==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;We shall install the Cumulus software listed on [[Software]] page&amp;lt;/big&amp;gt;:&lt;br /&gt;
# &#039;&#039;&#039;CumulusMX’’’:&lt;br /&gt;
#* &#039;&#039;&#039;CumulusMX.exe’’’ is written in C#&lt;br /&gt;
#* Download &#039;&#039;&#039;CumulusMX zip file’’’ from [[Software#Latest_build_distribution_download]]&lt;br /&gt;
# [[Software#Create_Missing|&#039;&#039;&#039;Create Missing&#039;&#039;&#039;]]:&lt;br /&gt;
#* &#039;&#039;&#039;CreateMissing.exe&#039;&#039;&#039; is another C# package&lt;br /&gt;
#*  Using &#039;&#039;&#039;CreateMissing.exe&#039;&#039;&#039; is fully documented at [[Calculate_Missing_Values#CreateMissing.exe]] in this Wiki (it will populate missing fields in [[standard log files]] and/or missing lines in [[dayfile.txt]]),  &lt;br /&gt;
#* Simple Instructions for using this executable are on the github page where they are found, you can find the link for that at [[Software#Create_Missing]] in this Wiki.&lt;br /&gt;
# &#039;&#039;&#039;ExportToMySQL&#039;&#039;&#039;&lt;br /&gt;
#*  &#039;&#039;&#039;ExportToMySQL.exe&#039;&#039;&#039; is also written in C#&lt;br /&gt;
#* Download &#039;&#039;&#039;ExportToMySQL.exe&#039;&#039;&#039; package from [[Software#ExportToMySQL]]&lt;br /&gt;
#* &#039;&#039;&#039;ExportToMySQL.exe&#039;&#039;&#039; is not (at the time this was written) documented in this Wiki although [[MX_Administrative_Interface#MySQL_settings]] does describe a similar utility (written by Steve Loft) that was actually included in early MX release downloads.&lt;br /&gt;
&lt;br /&gt;
As at 9 March 2020, there is another utility, &#039;&#039;&#039;CreateRecord&#039;&#039;&#039;, initialised in the Github areas managed by the developer where Cumulus is worked on.  This will, if my understanding is correct, read [[dayfile.txt]] and use that to update the various [[:Category:Ini Files|extreme record files]].  However, at the time of writing this, it is nothing more than a concept that needs to be coded, and (as far as I know) there has been no progress on that utility for at least 4 months.&lt;br /&gt;
&lt;br /&gt;
===Alternative download link for older MX releases===&lt;br /&gt;
&lt;br /&gt;
Skip this sub-section if either you have installed the &amp;quot;pre-built disc image&amp;quot;, or the current MX release is stable (it has been available for a while and nobody has reported any bugs).&lt;br /&gt;
&lt;br /&gt;
Check if posts in the [https://cumulus.hosiene.co.uk/viewforum.php?f=40 Cumulus Support Forum] tell you that the current release of MX has one or more bug(s) that affects one or more aspect(s) of MX that you intend to use. &lt;br /&gt;
&lt;br /&gt;
Remember, it is impossible for the developer to check all the ways in which versatile MX can be used:&lt;br /&gt;
* Different weather station types (the developer only has a Davis),&lt;br /&gt;
* Different computer types (development is mostly on Microsoft Windows), &lt;br /&gt;
* Plus a whole host of optional features, and different external upload sites, (typically each of these optional features are only used by a sub-set of Cumulus users).&lt;br /&gt;
&lt;br /&gt;
Anyway, &#039;&#039;&#039;you can download any earlier build, without the bug&#039;&#039;&#039;, from [https://github.com/cumulusmx/CumulusMX/releases CumulusMX/releases].&lt;br /&gt;
&lt;br /&gt;
You need to ensure that you use the right version of &amp;quot;CreateMissing.exe&amp;quot; and &amp;quot;ExportToMySQL.exe&amp;quot; utilities for the MX release you are running, so if you are using an old MX release, you will need to go directly to the [https://github.com/cumulusmx Cumulus MX github] page, and navigate to the utility of interest, to download an older version of these utilities that matches your older MX.&lt;br /&gt;
&lt;br /&gt;
==Upgrading a Cumulus package==&lt;br /&gt;
&lt;br /&gt;
Upgrading to a new MX release is explained [[Updating_MX_to_new_version|here]], but basically follow instructions above, and install over your existing files.  The alternative is to install in a new folder (or rename the old one), and copy across files not in the release from old location to new location.&lt;br /&gt;
&lt;br /&gt;
== Report and data files to copy across from any previous Cumulus location ==&lt;br /&gt;
&lt;br /&gt;
All the (optional) files in the [[Reports folder]] can be copied across from a previous installation. If your previous installation was not on Linux, see [[#Line terminators in .txt files]]&lt;br /&gt;
&lt;br /&gt;
All the files in the [[data folder]] can also be copied across. If your previous installation was not on Linux, see [[#Line terminators in .txt files]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your previous Cumulus installation was version 1.9.4, or earlier, then you need to do a lot of reading:&lt;br /&gt;
* [[Amending dayfile]] tells you about how MX is far more fussy about the content in [[dayfile.txt]]&lt;br /&gt;
* [[:Category:Ini Files|.ini files]] explains how time-stamps are formatted differently in the extreme tracking files&lt;br /&gt;
* [[Migrating from Cumulus 1 to MX]] gives some advice about differences in settings, but be aware that the way MX handles settings varies by release, and information on the linked page may be out of date&lt;br /&gt;
&lt;br /&gt;
==Configuration Files to copy across from any previous Cumulus installation==&lt;br /&gt;
&lt;br /&gt;
There are two configuration files that are not included in any MX release:&lt;br /&gt;
*[[strings.ini]] (note all lower case) – optional file to customise output&lt;br /&gt;
*[[Cumulus.ini]] (note initial capital, then lower case) – main configuration file&lt;br /&gt;
&lt;br /&gt;
If your old installation was for a relatively recent release, then just copy these files to new installation and optionally skip the next 2 sub-sections.&lt;br /&gt;
&lt;br /&gt;
If you are upgrading from an older release, please read the next 2 sub-sections for advice.&lt;br /&gt;
&lt;br /&gt;
===strings.ini===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is an optional file&#039;&#039;&#039;.  Its [[strings.ini|purpose]] is to allow customisation of some of the outputs from Cumulus. You might want to use customisation to abbreviate (or extend) some outputs, or to change those outputs into another language.&lt;br /&gt;
&lt;br /&gt;
You create a “strings.ini” file by selecting some of the parameters from the [[samplestrings.ini]] file that is included in each MX release, and modifying the value for the listed attributes as you type them (under the same group titles - these are enclosed in [ ] as before). &lt;br /&gt;
&lt;br /&gt;
The sections that appear in &#039;&#039;&#039;samplestrings.ini&#039;&#039;&#039;, and the parameters that appear within a section, changed drastically between Cumulus 1.9.4 and MX.  So be cautious if you try to use a &amp;quot;strings.ini&amp;quot; file originally created by the legacy software, check whether the parameters you used before are still available in the latest &amp;quot;samplestrings.ini&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The content of &amp;quot;samplestrings.ini&amp;quot; is changing as MX is developed. Therefore, your existing “strings.ini” might need to be modified. There is no automatic way to check your “strings.ini” file, if MX does not understand any parameter in this file, it ignores it. Instead, you need to manually check each parameter you have in your “strings.ini” file to see if that parameter is in “samplestring.ini” included in the release you have installed. You may also find new parameters in “samplestring.ini” that you wish to add to your “strings.ini” file to tailor new functionality to your preferences.&lt;br /&gt;
&lt;br /&gt;
===Cumulus.ini===&lt;br /&gt;
&lt;br /&gt;
If your old release was 3.8.0 or later, then copy the [[Cumulus.ini]] file used in that old installation into your new one. The file is growing with lots of new parameters, and the tables on the page I have just linked indicated when parameters were introduced, and where those settings may be changed to make it simple for you to ensure all settings are right for your new release.&lt;br /&gt;
&lt;br /&gt;
If your old release was older that 3.8.0, then you will see [[:Category:Configuration Files|the Configuration Files page]] shows different links for documentation on older &amp;quot;cumulus.ini&amp;quot; files.  Because of those differences, many people prefer to rename their existing “Cumulus.ini” file when upgrading from such an old release, or making an install on a new device. To create a new file, they work through all the settings manually, so that MX can create a fresh file, with them having confidence every setting reflects their preference.  However, you do need to be aware that such older releases included a lot of &amp;quot;read-only&amp;quot; parameters that had to be set manually in the file, you may find some of those parameters are still needed by you, so you will want to edit the new file, with MX stopped, and copy any of those old &amp;quot;read-only&amp;quot; parameters that might not yet be settings you configure within the MX interface (although the number of these is diminishing with each new release).&lt;br /&gt;
&lt;br /&gt;
If you previously used an older release of Cumulus, but in this new installation will be using the latest release (latest is what is normally best, unless it has bugs), you may want to read up on all the changes between your old release and the current release, not just changes that affect the configuration file.&lt;br /&gt;
&lt;br /&gt;
==Moving from Microsoft Windows to Linux==&lt;br /&gt;
&lt;br /&gt;
===Line terminators in .txt files===&lt;br /&gt;
&lt;br /&gt;
If you are a novice to computers, skip this sub-section and the next, go directly to [[#File Names &amp;amp; Paths]]. &lt;br /&gt;
&lt;br /&gt;
You need to have some technical understanding to do an action that might encounter the issues discussed here. For normal MX usage, line terminators do not matter.&lt;br /&gt;
&lt;br /&gt;
If you are moving from Microsoft Windows to Linux, be aware that Microsoft ends each line with two characters (Carriage Return and Line Feed) while Unix/Linux ends each line with a single character (Line Feed). Cumulus can cope with both approaches for existing files, but will create new files correctly for Linux.&lt;br /&gt;
&lt;br /&gt;
If you run your Linux computer in a headless mode, accessing its files by a remote terminal session, be aware that the line terminator used by the remote computer may be applied to files affected by whatever command you do remotely. Equally, running a Cumulus executable (MX or one of the utilities) may create new files with the wrong end of line terminator. The latest releases have been amended to match existing files, when they create a new file to replace an old file (or because that file is missing/corrupted).&lt;br /&gt;
&lt;br /&gt;
If you try to edit a file outside MX, the tool you choose to use might be able to detect that it is getting Microsoft files, and discard the extra end of line character.&lt;br /&gt;
&lt;br /&gt;
However, if you are reading a comma separated value file (such as MX uses for various files) in a script, your script might not detect the end of line encoding:&lt;br /&gt;
* If the script expects the Linus LF, and finds CR LF, then the final field of each CSV line has an invalid character in it, so your script will not be able to understand that field as a numerical value (or time-stamp).&lt;br /&gt;
* If the script expects CR only, and finds CR LF, then the first field of the each line presented to the script (except the first line) starts with a “LF” and the script will not recognise it as a date.&lt;br /&gt;
* If the script expects CR only, but just finds LF, the script will believe the whole file is just one line, and the fields before and after the LF will be treated as a single field so your script will not be able to understand that field as a numerical value (or time-stamp).&lt;br /&gt;
* If the script was written for a Microsoft Windows environment, it will expect CR LF, but might be confused if the end of line is different&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Changing line terminators===&lt;br /&gt;
&lt;br /&gt;
Many editors designed for programmers (they might be described as providing a programming development environment) can change the line ending of every line (either while file is being edited or when file is saved). &lt;br /&gt;
&lt;br /&gt;
‘’’Geany’’’ is a programming development editor provided on some Linux systems including Raspberry Pi, that can do this (&#039;&#039;&#039;Document&#039;&#039;&#039; menu, --&amp;gt;&amp;gt; &#039;&#039;&#039;Select Line Endings&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Notepad++ is another editor available for multiple operating systems (&#039;&#039;&#039;Edit&#039;&#039;&#039; menu --&amp;gt;&amp;gt; &#039;&#039;&#039;EOL conversion&#039;&#039;&#039;).  &lt;br /&gt;
&lt;br /&gt;
Both have capabilities to make such changes on either the single file that has focus, or all loaded files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===File Names &amp;amp; Paths===&lt;br /&gt;
&lt;br /&gt;
Another issue that may be encountered when moving from Windows to Linux is the difference in File Names &amp;amp; Paths.&lt;br /&gt;
Linux file names are Case Sensitive, and the separator is &amp;quot;/&amp;quot; Vs &amp;quot;\&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This could be applicable if you are using Extra Web files.&lt;br /&gt;
&lt;br /&gt;
Here is an example changing the case and the separators: &#039;&#039;Web\extrapageT.htm&#039;&#039; in Windows, changed to read &#039;&#039;&#039;web/extrapageT.htm&#039;&#039;&#039; in Linux.&lt;br /&gt;
&lt;br /&gt;
=Running MX on Linux=&lt;br /&gt;
&lt;br /&gt;
This section explores the optional parameters, and then covers 2 ways to run MX:&lt;br /&gt;
# as a service and &lt;br /&gt;
# interactively with terminal window left open.&lt;br /&gt;
&lt;br /&gt;
== Optional parameters to add to the instruction to run the MX engine ==&lt;br /&gt;
&lt;br /&gt;
This list of parameters covers every parameter, if you are using the latest release skip the historic 3.0.0 sub-sections.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: The &amp;quot;sudo&amp;quot; prefix shown in code examples for the various parameters can be omitted if the user that is running MX owns the folder &amp;quot;CumulusMX&amp;quot; and all its contents. In the [[#Where to install all packages?|installation notes earlier]] possible locations and ownership issues were mentioned.  That earlier section also defined EXISTING PATH, if that is not mentioned in the code examples, it is assumed you have already issued a &amp;lt;code&amp;gt;cd EXISTING PATH&amp;lt;/code&amp;gt; to be in the right folder for issuing the command.&lt;br /&gt;
&lt;br /&gt;
Note that you &#039;&#039;may&#039;&#039; need to supply your root password after typing any &#039;sudo ...&#039; command line if the instruction changes something set by another package (e.g. changing the locale for MX from the locale set by mono). The system will prompt you for this if it is needed.&lt;br /&gt;
&lt;br /&gt;
=== Parameter for changing Port ===&lt;br /&gt;
&lt;br /&gt;
When Cumulus starts, it will display the URL of the user interface. It runs on port 8998 by default; if this is not suitable for some reason you can over-ride it using the &#039;-port&#039; parameter on the command line, e.g. to use port 9999 instead:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo mono CumulusMX.exe -port 9999&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parameter for changing Locale ===&lt;br /&gt;
&lt;br /&gt;
On Linux and (in particular) OS X, Cumulus MX may not be given the correct locale to use, and you may get the default US locale even if that is not your locale. It will output the local it is using when it starts; if it is not correct, close it down and start it again, this time specifying your locale on the command line, using the -lang parameter . For example, in the UK, on a non-Windows device type:&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo mono CumulusMX.exe -lang en-GB&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other locale examples:  &#039;&#039;&#039;CumulusMX.exe Current culture: English (United States)&#039;&#039;&#039;, &#039;&#039;&#039;CumulusMX.exe -lang de-DE&#039;&#039;&#039;,  &#039;&#039;&#039;CumulusMX.exe -lang el-GR&#039;&#039;&#039; (this is one of the locales that reads numbers with &#039;&#039;&#039;integer,decimal&#039;&#039;&#039; format), &#039;&#039;&#039;CumulusMX.exe -lang nl-NL&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are not sure what value you need to supply for the -lang parameter, there is a list here - http://msdn.microsoft.com/en-gb/library/ee825488%28v=cs.20%29.aspx. You need to supply the code in the first column (&amp;quot;Language Culture Name&amp;quot;) in that list. &lt;br /&gt;
&lt;br /&gt;
Note that this does not affect the language used by Cumulus MX (although it may in the future), it affects the decimal separator and the list separator.&lt;br /&gt;
&lt;br /&gt;
=== Parameter for running as service ===&lt;br /&gt;
&lt;br /&gt;
The parameter syntax is &amp;lt;code&amp;gt;sudo mono CumulusMX.exe -service&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You don&#039;t use this parameter in a terminal or interactive instruction for running MX. Instead it appears within a file that we use to set up for running MX as a service.&lt;br /&gt;
 &lt;br /&gt;
For the latest release, (see [https://cumulus.hosiene.co.uk/viewtopic.php?p=146473#p146473 this later release announcement]:&lt;br /&gt;
#There is a task to do just once to configure the service&lt;br /&gt;
#Find the &#039;&#039;&#039;EXISTING PATH/CumulusMX/MXutils/linux/&#039;&#039;&#039; sub-folder, that might be in home directory and therefore found using &amp;quot;~/CumulusMX/MXutils/linux&amp;quot; as explained elsewhere on this page&lt;br /&gt;
#* At time of typing this, the sub-folder only contains one file, the one we need to edit&lt;br /&gt;
# As described later there is a choice of editors, but you can use &amp;lt;code&amp;gt;sudo nano cumulusmx.service&amp;lt;/code&amp;gt; to edit the service configuration file&lt;br /&gt;
# Within the provided file you should find a [Service] section:&lt;br /&gt;
&amp;lt;pre&amp;gt;[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Group=root&lt;br /&gt;
ExecStart=/usr/bin/mono-service -d:/home/install/CumulusMX CumulusMX.exe -service&lt;br /&gt;
Type=forking&lt;br /&gt;
ExecStopPost=/bin/rm /tmp/CumulusMX.exe.lock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are some edits needed to that section:&lt;br /&gt;
# Replace &#039;&#039;&#039;User=root&#039;&#039;&#039; if you want the service to run as a different user&lt;br /&gt;
# Edit the line that begins with &#039;&#039;&#039;ExecStart=&#039;&#039;&#039;&lt;br /&gt;
#* The mandatory change is to replace &#039;&#039;&#039;/home/install&#039;&#039;&#039; by what you have selected for EXISTING PATH&lt;br /&gt;
#* An optional change is to add additional parameters after the &#039;&#039;&#039;-service&#039;&#039;&#039; (select from &#039;&#039;&#039;-debug&#039;&#039;&#039;, -locale, -port) as described in sub-sections above&lt;br /&gt;
#save file with a new name &#039;&#039;&#039;cumulusmx_mine.service&#039;&#039;&#039; (using a new name stops it being overwritten when we upgrade MX&lt;br /&gt;
#now copy file to where it is needed to run the service: &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo cp EXISTING_PATH/CumulusMX/MXutils/linux/cumulusmx_mine.service /etc/systemd/system/cumulusmx.service&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how the file might look after the changes:&lt;br /&gt;
&amp;lt;pre&amp;gt;[Unit]&lt;br /&gt;
Description=CumulusMX service&lt;br /&gt;
Documentation=https://cumuluswiki.org/a/Main_Page&lt;br /&gt;
After=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=pi&lt;br /&gt;
Group=pi&lt;br /&gt;
ExecStart=/usr/bin/mono-service -d:/opt/CumulusMX CumulusMX.exe -service -debug&lt;br /&gt;
Type=forking&lt;br /&gt;
ExecStopPost=/bin/rm /tmp/CumulusMX.exe.lock&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up as a service in release 3.8.0 ==&lt;br /&gt;
&lt;br /&gt;
Skip this sub-section for latest release.  &lt;br /&gt;
&lt;br /&gt;
For historic reasons, note the original instructions in the 3.8.0 [https://cumulus.hosiene.co.uk/viewtopic.php?p=145048#p145048 release announcement]:&lt;br /&gt;
# Ensure you are in the folder containing CumulusMX.exe&lt;br /&gt;
# Type &amp;lt;code&amp;gt; mono-service -l:/var/run/cmx.pid CumulusMX.exe -service&amp;lt;/code&amp;gt;&lt;br /&gt;
# (to verify) note this does not allow you to add -port, -debug, -locale parameters&lt;br /&gt;
&lt;br /&gt;
=== Parameter for adding debugging ===&lt;br /&gt;
&lt;br /&gt;
MX has a default level of logging that stores in the [[MXdiags_folder]] folder a log file that shows some of the interaction with the weather station and some of the output actions done as MX runs. A new log is started each time MX is restarted.&lt;br /&gt;
&lt;br /&gt;
If there is a problem, then there is a great benefit in actually increasing the level of detail in these logs; and that is done either within the settings (on recent MX releases this is on &#039;&#039;&#039;Program Settings&#039;&#039;&#039; page of admin interface - please see [[MXdiags_folder]] page for details) or by adding a parameter:  &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo mono CumulusMX.exe -debug&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parameters only applicable to Version 3.0.0 Beta builds of MX ===&lt;br /&gt;
&lt;br /&gt;
The following two parameters cannot be used with MX since it came out of 3.0.0 beta.&lt;br /&gt;
&lt;br /&gt;
==== web sockets ====&lt;br /&gt;
&lt;br /&gt;
Beta builds in MX version 3.0.0 had an optional parameter &amp;lt;code&amp;gt;sudo mono EXISTING PATH/CumulusMX/CumulusMX.exe -wsport nnnn&amp;lt;/code&amp;gt; that determined which port (represented by a 4 digit number &#039;&#039;nnnn&#039;&#039;) was used for &#039;&#039;&#039;Web Sockets&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
That parameter [https://cumulus.hosiene.co.uk/viewtopic.php?f=40&amp;amp;t=17887&amp;amp;p=138815&amp;amp;hilit=sockets#p138815 is now deprecated as Web Sockets in all builds since 3045] use the same port for web sockets as for the HTTP port of the [[MX_Administrative_Interface#The_API_interface|Admin Interface]], see -port parameter described earlier. &lt;br /&gt;
&lt;br /&gt;
==== Debugging of data flow between station and MX====&lt;br /&gt;
&lt;br /&gt;
Use &#039;&#039;&#039;sudo mono CumulusMX.exe -Logging=1&#039;&#039;&#039; (for the station to MX transfers to have increased debugging logging). &lt;br /&gt;
&lt;br /&gt;
Note use of this parameter is now deprecated.&lt;br /&gt;
&lt;br /&gt;
Although this is not mentioned in any release announcements, it appears that on all recent MX releases this effect is incorporated into the &#039;&#039;&#039;-debug&#039;&#039;&#039; parameter described earlier.  Perhaps someone could confirm whether this is true.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running as a service==&lt;br /&gt;
&lt;br /&gt;
The instructions to set up the ability to run MX as a service [[#Parameter for running as service| were given earlier]]. If you want MX to automatically start when your Linux computer is booted, just type &amp;lt;code&amp;gt;sudo systemctl enable cumulusmx&amp;lt;/code&amp;gt; once, and it will be activated on each reboot.&lt;br /&gt;
&lt;br /&gt;
The full set of commands to use with this service are at [[Raspberry_Pi_Image#systemctl_commands|systemctl_commands]],they are not duplicated here, so there is only one place to do any update.&lt;br /&gt;
&lt;br /&gt;
In the [[#Parameter for running as service|earlier instructions]] it was suggested you change the user for the service, if you have done that you can omit the &amp;quot;sudo&amp;quot; in &amp;lt;code&amp;gt;sudo systemctl start cumulusmx&amp;lt;/code&amp;gt; which manually restarts the service.  Equally, you can omit &amp;quot;sudo&amp;quot; from any command that accesses Cumulus files created by the service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running any MX executable with a terminal session left open ==&lt;br /&gt;
&lt;br /&gt;
This is alternative to the running as service as described above.&lt;br /&gt;
&lt;br /&gt;
The simplest instruction to run Cumulus MX  is &amp;lt;code&amp;gt;cd EXISTING PATH/CumulusMX &amp;amp;&amp;amp; sudo mono CumulusMX.exe&amp;lt;/code&amp;gt;.  &lt;br /&gt;
* This is two commands issued together, the first changes the working folder, the second actually starts the main executable&lt;br /&gt;
** To run &amp;quot;Create Missing&amp;quot; or &#039;&#039;&#039;ExportToMySQL&#039;&#039;&#039;, just edit what appears after &amp;quot;mono&amp;quot; to the correct executable name&lt;br /&gt;
* If you have followed advice at [[#Where to install all packages?]], the user you are using will own the &amp;quot;EXISTING PATH/CumulusMX&amp;quot; folder and you can omit the &amp;quot;sudo&amp;quot;.&lt;br /&gt;
* You can add parameters after &amp;quot;CumulusMX.exe&amp;quot;  (select from &#039;&#039;&#039;-debug&#039;&#039;&#039;, -locale, -port) as described in sub-sections above&lt;br /&gt;
&lt;br /&gt;
Just in case it is not obvious .... if you start any executable using this command in a terminal window on your Pi, you must leave that session running, or that executable will stop running. &lt;br /&gt;
&lt;br /&gt;
You can start it off directly on your Pi, and then&lt;br /&gt;
*optionally disconnect the keyboard, &lt;br /&gt;
*switch off monitor or TV attached to your Pi, &lt;br /&gt;
*Just ensure you leave Pi on (with that window minimised) so that terminal session continues running.&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;&#039;&#039;&#039;ps -ef | grep -i cumulus | grep -v grep&#039;&#039;&#039;&amp;lt;/code&amp;gt; to see if Cumulus is running or not.&lt;br /&gt;
&lt;br /&gt;
= Operating a web site with uploads from MX engine =&lt;br /&gt;
&lt;br /&gt;
== The standard web pages ==&lt;br /&gt;
&lt;br /&gt;
=== From release 3.10.1 ===&lt;br /&gt;
&lt;br /&gt;
The web pages are a one-off upload from &#039;&#039;&#039;CumulusMX/webfiles&#039;&#039;&#039;.  The data to be shown on these web pages are uploaded from [[:Category:JSON_Files|.json]] files in the [[web_folder]].&lt;br /&gt;
&lt;br /&gt;
Please read [[New_Default_Web_Site_Information|this page]] for more information about styling options and other details.&lt;br /&gt;
&lt;br /&gt;
=== Until release 3.9.7 ===&lt;br /&gt;
&lt;br /&gt;
The styling and library files were a one-off upload from &#039;&#039;&#039;CumulusMX/webfiles&#039;&#039;&#039;. These release use [[Cumulus_template_file|template files]], these are [[Customised_templates#What_is_meant_by_.27Cumulus_processes_templates.27|processed by MX to add the variable data]], and this will create web pages that are uploaded to your web site.&lt;br /&gt;
&lt;br /&gt;
Please read [[Customised_templates]] for further information about the various pages originally provided, and how you could customise them to suit you. &lt;br /&gt;
 &lt;br /&gt;
=== Comparison with legacy Cumulus 1 web pages ===&lt;br /&gt;
&lt;br /&gt;
* Note that any web files, designed for Cumulus 1, cannot be used with MX, for multiple reasons&lt;br /&gt;
** so if moving from Cumulus 1 to MX, delete all your Cumulus 1 files from the &amp;quot;web&amp;quot; and &amp;quot;webfiles&amp;quot; sub-folders, and all files from your web server; then upload files from the new &amp;quot;webfiles&amp;quot; folder. &lt;br /&gt;
* The standard gauges are rather like the stand alone [[SteelSeries Gauges|SteelSeries gauges]] you could optionally add to Cumulus 1, but the MX ones are different.&lt;br /&gt;
** The new default gauges page does not display a graph when you hover over a gauge (Cumulus 1 generated some images that the stand alone Steel Series gauges page could use)&lt;br /&gt;
* The various charts pages for MX rely on MX to generate files with time and value pairs, these are stored in json format, the various web pages use a library package (Highstocks) to draw graphs from those data pairs.&lt;br /&gt;
** (The Trends page provided as standard in Cumulus 1 simply displayed images of graphs uploaded to the web server)&lt;br /&gt;
&lt;br /&gt;
== Alternative ways to obtain web pages ==&lt;br /&gt;
&lt;br /&gt;
You can choose to use some of the alternative web pages available from third parties and described [[:Category:User Contributions|on User Contributions page]].&lt;br /&gt;
&lt;br /&gt;
== Using your own web pages ==&lt;br /&gt;
&lt;br /&gt;
* Of course you can use your own web pages, instead of the standard ones. Assuming they need to include figures that are available as web tags, there are three alternative ways to implement this:&lt;br /&gt;
*# MX can process template files with a HTML structure and those web tags in the structure where values are required just as it does with the standard templates, and MX can upload the resulting web pages  at either the real-time interval, the standard interval, or after end of day. All of this is covered on the [[Customised_templates|Customised templates]] page in this Wiki.&lt;br /&gt;
*# MX can process a file with a string of web tags mirroring the realtime.txt option in MX, and upload the resulting file so your web pages can use JavaScript for a one-off insert of the values or an Ajax routine to update the web page at a fixed interval.&lt;br /&gt;
*# Alternatively, you can use template scripts processed locally by MX that don&#039;t create web pages, but are uploaded by MX at either the real-time interval, the standard interval, or after end of day. These scripts simply initialise script variables with values obtained from web tags. You then independently have a set of web pages resident only on your web server (they don&#039;t exist where you run MX) using a combination of HTML and script content that bring in the script(s) with the variables by the appropriate syntax. All of this is covered on the [[Php_webtags|PHP web tags]] page in this wiki. As it suggests there, you might therefore have several files processed by Cumulus MX at these different intervals, converting the web tags into script variables, and then use AJAX (JavaScript that may use json format to bring in the variables) or PHP (using &amp;lt;tt&amp;gt;&#039;require_once &#039;filename&#039;;&amp;lt;/tt&amp;gt; syntax) to put those variables into a web page.&lt;br /&gt;
&lt;br /&gt;
You may find [[PHP|this wiki page]] useful for understanding more about the different script languages.&lt;br /&gt;
&lt;br /&gt;
=That is enough folks=&lt;br /&gt;
&lt;br /&gt;
If you have read up to here, you now know the basics for using MX on Linux.&lt;br /&gt;
&lt;br /&gt;
The remaining sections are more technical and so you can skip them.&lt;br /&gt;
&lt;br /&gt;
=Technical Extra=&lt;br /&gt;
&lt;br /&gt;
PLEASE SKIP ALL SUBSEQUENT SUB-SECTIONS IF YOU WANT TO AVOID TECHNICAL EXPLANATIONS.&lt;br /&gt;
&lt;br /&gt;
== A very quick introduction to Linux ==&lt;br /&gt;
&lt;br /&gt;
This article is not the place to teach you Linux, you can find books and on-line articles for yourself, but I list here enough for you to understand the instructions used elsewhere in this article.&lt;br /&gt;
&lt;br /&gt;
If you have a Raspberry Pi with a monitor attached, you will see a raspberry icon that you can click to get Graphical User Interface access to many features, including shutdown options.&lt;br /&gt;
&lt;br /&gt;
=== su and sudo ===&lt;br /&gt;
&lt;br /&gt;
There is a command &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; that allows a terminal session to become a super user session with root privileges. If you use that command, without a &#039;&#039;&#039;sudo&#039;&#039;&#039; command in front, you need to type in the password (we changed earlier) when prompted.  if you type &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt;, then you get root privileges without being asked to quote password. All subsequent lines in this terminal session will have a prompt that reminds you that you have root access and do not need to prefix subsequent commands with &amp;quot;sudo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Normally, all terminal sessions will use the default &amp;quot;pi&amp;quot; user, and for individual commands, you will use a &amp;quot;sudo&amp;quot; prefix each time that command needs administrative rights, as this allows a standard Pi user to do tasks that otherwise only work for the root user.&lt;br /&gt;
&lt;br /&gt;
You might use a &amp;quot;sudo&amp;quot; prefix if you need to access a part of the file structure that your user does not have any access to, or where the standard user does not have write (or execute) access. &lt;br /&gt;
&lt;br /&gt;
There are also some commands (like displaying mounted storage) that are not available to a standard user. Here are 3 system commands that in terminal mode will only ever work with this prefix (although if you have installed the version of the Raspberry Pi Operating System that supports a graphical user interface you can also select these actions from a menu):&lt;br /&gt;
*&#039;&#039;&#039;sudo halt&#039;&#039;&#039; = stops any cpu functions, but leaves Pi running; used when you have reached the end of commands you want to do for now&lt;br /&gt;
*&#039;&#039;&#039;sudo poweroff&#039;&#039;&#039; = makes pi do a tidy shutdown and turn off its power; used when you will not be using your Pi for a while&lt;br /&gt;
*&#039;&#039;&#039;sudo reboot&#039;&#039;&#039; (or &amp;quot;sudo reboot -verbose&amp;quot; for diagnostic output during shutdown and reboot) = makes your Pi close down and then reboot; used when you change settings, and after you install new software, to ensure Pi starts with all applications running using the latest settings and latest already installed software&lt;br /&gt;
&lt;br /&gt;
=== ~ and / ===&lt;br /&gt;
&lt;br /&gt;
The tilde symbol &#039;&#039;&#039;~&#039;&#039;&#039; denotes the home directory for the current user.  Sub-directories within the current user&#039;s folder can be identified by &#039;&#039;&#039;~/documents&#039;&#039;&#039; or similar notation. &lt;br /&gt;
&lt;br /&gt;
To reference a folder in root or any other area, the prefix is always &#039;&#039;&#039;/&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are using the RPi OS GUI, it provides a file manager that displays folders and files, and if you have a mouse you can click on an object to see what actions are available.  The file manager has &amp;quot;Home&amp;quot; and &amp;quot;Root&amp;quot; as bookmarks by default, you can bookmark others.  Typically, any new partitions created can also be accessed from bookmarks.  Depending on options you select, there may be icons on the GUI desktop to link to particular folders and clicking on these offers various options including opening them in file manager.&lt;br /&gt;
&lt;br /&gt;
In a terminal environment, to see what files and folders are in the current directory, type &amp;lt;code&amp;gt;dir&amp;lt;/code&amp;gt; for just names or &amp;lt;code&amp;gt;ls&amp;lt;/code&amp;gt; for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== folder commands ===&lt;br /&gt;
&lt;br /&gt;
To make a new folder in the current directory, type &amp;lt;code&amp;gt;sudo mkdir folder_name&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To remove a folder, that has no files in it, type in a particular path, type &amp;lt;code&amp;gt;sudo rmdir /path/directory&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To remove a folder that does have files, and/or sub-folders within it, type tt&amp;gt;sudo rm -r /path/directory&amp;lt;/code&amp;gt;, but remember the contents are gone for ever, so be absolutely sure you have specified the right folder! &lt;br /&gt;
&lt;br /&gt;
To copy folders/files from one directory to another use something like &amp;lt;code&amp;gt;cp -R --update --preserve /home/pi/CumulusMX/backup/daily /media/pi/data/CumulusMX/archive&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sometimes, you have a folder or file in just one place in the file system, but want to be able to access it at a different place (because something expects it in the second place), the syntax is &amp;lt;code&amp;gt;ln -s /path/elsewhere path/pointer_location&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
An example might be &#039;&#039;&#039;ln -s /var/lib/phpliteadmin/diary.db ~/CumulusMX/data/diary.db&#039;&#039;&#039; (phplite admin can only update databases in one folder /var/lib/phpliteadmin, or in older releases in /usr/share/phpliteadmin; while MX expects the file to be in its data folder but is happy with a logical pointer to another folder).&lt;br /&gt;
&lt;br /&gt;
=== chmod ===&lt;br /&gt;
&lt;br /&gt;
When you are attempting any of the actions listed in this article that involve reading, creating, editing, exeduting, or moving, files; you might see an error message generally because of a lack of write (or execute) permissions on an existing file or folder.   Whilst &amp;lt;code&amp;gt;rm filename&amp;lt;/code&amp;gt; will remove a file even if it is write protected, for nano you need to change the file permissions with &amp;lt;code&amp;gt;sudo chmod -R ugo+rw ~/CumulusMX&amp;lt;/code&amp;gt; for modify access to all files in your Cumulus installation (see the syntax below if you want to restrict access).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;chmod&#039;&#039;&#039; command to modify permissions&lt;br /&gt;
* the &#039;&#039;&#039;-R&#039;&#039;&#039; indicates recursive action (i.e. including not just the named folder, but all files within it and all sub-folders, and all files within sub-folders)&lt;br /&gt;
*letters indicating whose permission is being modified&lt;br /&gt;
** &#039;&#039;&#039;u&#039;&#039;&#039; = Owning user (sometimes the owner is the user root, sometimes the owner is the user Pi, for our web pages later we change ownership)&lt;br /&gt;
** &#039;&#039;&#039;g&#039;&#039;&#039; = Group (by default the owning user is also a group, but a group can be defined if you want to give multiple users (with different passwords) the same rights of access)&lt;br /&gt;
** &#039;&#039;&#039;o&#039;&#039;&#039; = Other users (write permission here is needed if for example you are using FTP to move a file from a PC to your Pi, or vice versa)&lt;br /&gt;
* sign for add or remove permissions&lt;br /&gt;
* &#039;&#039;&#039;+&#039;&#039;&#039; = add permission&lt;br /&gt;
* &#039;&#039;&#039;-&#039;&#039;&#039; = remove permission&lt;br /&gt;
*letters indicating what permission is being changed&lt;br /&gt;
** &#039;&#039;&#039;r&#039;&#039;&#039; = read [4]&lt;br /&gt;
** &#039;&#039;&#039;w&#039;&#039;&#039; = write [2]&lt;br /&gt;
** &#039;&#039;&#039;x&#039;&#039;&#039; = execute [1]&lt;br /&gt;
&lt;br /&gt;
Note that as an alternative shorter syntax you can use numbers e.g. &#039;&#039;&#039;666&#039;&#039;&#039; is equivalent to &#039;&#039;&#039;ugo+rw&#039;&#039;&#039;. The first digit in the number relates to &#039;&#039;u&#039;&#039;, the second to &#039;&#039;g&#039;&#039; and the last to &#039;&#039;o&#039;&#039;. The values in [] brackets in list of permissions above are added to derive each digit.  So if you are reading the Cumulus support forum and you see a reference to permissions which includes a string of 3 digits, now you can understand what is meant.&lt;br /&gt;
&lt;br /&gt;
=== editing files ===&lt;br /&gt;
&lt;br /&gt;
*Do remember that file names are case sensitive.&lt;br /&gt;
*If you use the wrong case in a path/file name, it will be treated as a different &amp;quot;new&amp;quot; file.&lt;br /&gt;
*If a file editor does not display content you were expecting, look in case &amp;quot;new file&amp;quot; message appears because you have made a typo in the path/file name.&lt;br /&gt;
&lt;br /&gt;
There are various text editors available on a Pi, &lt;br /&gt;
*if you have a mouse and click on a file, you should see &amp;quot;text editor&amp;quot; listed, that loads &#039;&#039;&#039;Mousepad&#039;&#039;&#039; which has a menubar at the top of its &amp;quot;Windows&amp;quot; like interface.&lt;br /&gt;
*in terminal mode &#039;&#039;&#039;nano&#039;&#039;&#039; is a text editor that by default lists the actions available making it easier for a novice to use. &lt;br /&gt;
*in both the GUI and terminal mode, Geary is a programmer&#039;s editor with lots of useful funtionality&lt;br /&gt;
&lt;br /&gt;
All editors can create a file when a file does not exist and edit (subject to file permissions) an existing file. Use prefix of &#039;sudo&#039; to give you access to any file irrespective of ownership, &#039;&#039;&#039;sudo&#039;&#039;&#039; does not change the actual file permissions, so you might find you can read a file, but not save it after you have done your edit.  &lt;br /&gt;
&lt;br /&gt;
====nano====&lt;br /&gt;
&lt;br /&gt;
The full syntax is &amp;lt;code&amp;gt;sudo nano -B Path_file_name&amp;lt;/code&amp;gt; where the &#039;&#039;&#039;-B&#039;&#039;&#039; means it will create a backup of how the file was before (this can be enabled while in the editor by pressing the control key down and typing B). Alternatively use &#039;&#039;&#039;-C&#039;&#039;&#039; which stores each version in a back-up directory.  If you want to edit from a particular line and column you can use &#039;&#039;&#039;+line.column&#039;&#039;&#039;, and also optionally use &#039;&#039;&#039;-l&#039;&#039;&#039; (lower-case &amp;quot;L&amp;quot;) to display line numbers which might be useful when trying to correct a problem with a log file like [[dayfile.txt]].  If you don&#039;t specify a file name, then nano will create a new file and you will need to specify where to save it before exit.&lt;br /&gt;
&lt;br /&gt;
After typing the nano command you need to specify a filename (it might include a path, see earlier sub-section for use of &#039;&#039;&#039;/&#039;&#039;&#039; and &#039;&#039;&#039;~&#039;&#039;&#039;) and there are examples later in this article, but if you decide to &#039;&#039;host a web site on your Pi&#039;&#039; then you might want to edit its home page with (.html or .php) name like &amp;lt;code&amp;gt;sudo nano /var/www/html/index.php&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
After you have made an alteration to the current contents of the file, various options are shown at the bottom. Here are two key ones:&lt;br /&gt;
*First is &#039;&#039;&#039;^O&#039;&#039;&#039; which is used to save the file whilst staying in the editor, to do this press the control key down and type O. Next it shows the current file name, if you press &#039;&#039;&#039;Enter&#039;&#039;&#039; then that file will be overwritten.&lt;br /&gt;
**it allows you to type over the file name shown. If you choose to save as another file, you will be asked if the new name is correct (type &#039;&#039;&#039;Y&#039;&#039;&#039; to continue saving).&lt;br /&gt;
*Another is &#039;&#039;&#039;^X&#039;&#039;&#039; which means if you press the control key down and type X you get the exit dialogue. If you have not made any edits, or have already saved the file, this just exits the editor. If you have not used control and O to save the file, it asks whether you want to save the edited file (type &#039;&#039;&#039;Y&#039;&#039;&#039;), typing just the Y key lets save continue (any other key stroke exits without saving), then it shows the current file name, if you press &#039;&#039;&#039;Enter&#039;&#039;&#039; then that file will be overwritten.&lt;br /&gt;
&lt;br /&gt;
You might find it useful to type &amp;lt;code&amp;gt;sudo nano /etc/nanorc&amp;lt;/code&amp;gt; as this puts you into the configuration file for nano where you can set back-up, line-numbering, and other options.&lt;br /&gt;
&lt;br /&gt;
====Geany====&lt;br /&gt;
&lt;br /&gt;
This uses a GUI, you can set preferences and do all other actions using either menu selections (use mouse or keyboard) or control sequences (on keyboard).  Once it knows what type of programming language, it can colour up the code; it can show you how many times variable identifiers are used; it can match opening and closing quotes, tags, and brackets; and it can ensure encoding and line terminators are correct.&lt;br /&gt;
&lt;br /&gt;
Line-numbering is an option, so it can be used to edit MX log files, and (as BOM is an encoding option) you can be sure it won&#039;t add unwanted encoding.&lt;br /&gt;
&lt;br /&gt;
== removing an unwanted file ==&lt;br /&gt;
&lt;br /&gt;
You can remove a file with various commands, including &amp;lt;code&amp;gt;sudo rm filename&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== external storage ===&lt;br /&gt;
&lt;br /&gt;
Generally, if you attach USB storage (a disc or a stick), Linux OS distributions will detect any existing partitions (yes a technical term) and allow you to read files stored in them. This applies whether the partition is formatted for Linux or for Microsoft Windows.&lt;br /&gt;
&lt;br /&gt;
However, you may have a brand new, unformatted, drive, or you may want to delete, or add partitions, or to format them as Linux partitions (as these make the input/output significantly more efficient).&lt;br /&gt;
&lt;br /&gt;
You can install software that uses a GUI to make this easy, e.g. &#039;&#039;&#039;gparted&#039;&#039;&#039; [https://gparted.org/ partition editor].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use a terminal session, and lots of commands:&lt;br /&gt;
#connect your external storage&lt;br /&gt;
#type &#039;&#039;&#039;su&#039;&#039;&#039; to gain administrative access&lt;br /&gt;
#enter your RPi password&lt;br /&gt;
#type &#039;&#039;&#039;fdisk -l&#039;&#039;&#039; (this is only available to root user) to see names for all storage your Linux computer can see&lt;br /&gt;
#an external drive will be named something like &#039;&#039;/dev/sd&#039;&#039;&#039;&#039;a&#039;&#039;&#039;&#039;&#039; although that &amp;quot;a&amp;quot; might be &amp;quot;b&amp;quot; or a subsequent letter in alphabet depending on what has already been assigned&lt;br /&gt;
# if &amp;quot;sda&amp;quot; and &amp;quot;sdb&amp;quot; appear, or any others up to &amp;quot;sdz&amp;quot;, the last one will relate to the most recently connected storage&lt;br /&gt;
#if your drive has partitions, then you will see further entries like &#039;&#039;&#039;/dev/sda1&#039;&#039;&#039; and &#039;&#039;/dev/sda2&#039;&#039;.&lt;br /&gt;
#type &#039;&#039;&#039;df&#039;&#039;&#039; to see whether your drive is currently mounted (being used by computer system)&lt;br /&gt;
#if it is mounted, the command to use next is (type this accurately, there is a temptation to type an English word that adds an extra &amp;quot;n&amp;quot;!) &amp;lt;code&amp;gt;umount /dev/sda&amp;lt;/code&amp;gt;, obviously replace the &amp;quot;a&amp;quot; by the appropriate letter seen in the earlier command&lt;br /&gt;
#if the drive does not have a partition, create one using &amp;lt;code&amp;gt;fdisk /dev/sda&amp;lt;/code&amp;gt;, again changing the &amp;quot;a&amp;quot; into whatever letter was seen in response to the first &amp;quot;fdisk&amp;quot; command&lt;br /&gt;
#*&amp;quot;fdisk&amp;quot; is a utility, it will wait for further instructions, follow each with pressing &amp;quot;Enter&amp;quot;&lt;br /&gt;
#*type &#039;&#039;&#039;n&#039;&#039;&#039; as instruction to create a new partition&lt;br /&gt;
#*type &#039;&#039;&#039;p&#039;&#039;&#039; to make this the primary partition on this drive&lt;br /&gt;
#* type &#039;&#039;&#039;1&#039;&#039;&#039; to make this the first partition&lt;br /&gt;
#*accept default offered for first cylinder&lt;br /&gt;
#*accept default offered for last cylinder, if this is only partition, as that ensures the whole disk (apart from partition table) is available for your data&lt;br /&gt;
#*for simplicity, this guidance will not cover the possibility of multiple partitions&lt;br /&gt;
#*type &#039;&#039;&#039;t&#039;&#039;&#039; to say you are specifying the way you want this partition to be specified in partition table&lt;br /&gt;
#*optionally type &#039;&#039;&#039;L&#039;&#039;&#039; to see what file system types are available for the partition table&lt;br /&gt;
#*to select a &amp;quot;Linux&amp;quot; partition, type &#039;&#039;&#039;83&#039;&#039;&#039;&lt;br /&gt;
#*type &#039;&#039;&#039;w&#039;&#039;&#039; to create the partition you have now specified for Linux.&lt;br /&gt;
#Now we have a partition table and a partition on our drive, we can repeat &#039;&#039;&#039;fdisk -l&#039;&#039;&#039; to see the entry now added, it might be &#039;&#039;&#039;/dev/sda1&#039;&#039;&#039;, where again the &amp;quot;a&amp;quot; might be a different letter&lt;br /&gt;
#To format this partition for Linux, we specify &amp;quot;ext4&amp;quot; as the way to format it using &amp;lt;code&amp;gt;mkfs.ext4 /dev/sda1&amp;lt;/code&amp;gt;, again replacing the &amp;quot;a&amp;quot; as required.&lt;br /&gt;
#we need to create a folder within &lt;br /&gt;
#*&amp;quot;/media&amp;quot; for Linux in general&lt;br /&gt;
#*&amp;quot;/media/pi&amp;quot; for Raspberry PI OS&lt;br /&gt;
# As we will learn later, the relevant command (in RPi OS) is &#039;&#039;&#039;mkdir /media/pi/my_short_name&#039;&#039;&#039;, where &amp;quot;my_short_name&amp;quot; is selected by you&lt;br /&gt;
#To mount our partition, we type &amp;lt;code&amp;gt;mount /dev/sda1 /media/pi/my_short_name&amp;lt;/code&amp;gt;, where &amp;quot;sda1&amp;quot; is replaced by &amp;quot;sdb1&amp;quot; or whatever we saw in &#039;&#039;&#039;fdisk -l&#039;&#039;&#039;, and &amp;quot;pi/my_short_name&amp;quot; is replaced by whatever we used in our make directory command.&lt;br /&gt;
#To (optionally) get our partition mounted at boot, we can use an editor (see later) to change the boot instructions, by typing &amp;lt;code&amp;gt;nano /etx/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
#*In the editor, use the down arrow on your keyboard to move to last line, and then type &#039;&#039;&#039;/dev/sda1&#039;&#039;&#039; (change the &amp;quot;a&amp;quot; as necessary), then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;/media/pi/my_short_name&#039;&#039;&#039; (change &amp;quot;pi/my_short_name&amp;quot; to whatever we used in our make directory command), then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;ext4&#039;&#039;&#039; (again matching the format type we  selected earlier), then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;defaults&#039;&#039;&#039;, then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;1&#039;&#039;&#039;, then press &amp;quot;tab&amp;quot;, then finally type &#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
#*save the file (as described later in nano sub-section), hold down control key and press &#039;&#039;&#039;o&#039;&#039; letter key. Press &amp;quot;enter&amp;quot; again to confirm same file name.&lt;br /&gt;
#* exit nano by holding control key and pressing &amp;quot;x&amp;quot; key.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Package Manager – a brief technical aside==&lt;br /&gt;
&lt;br /&gt;
Linux operating systems install software by looking in repositories, and checking a register showing dependencies.  When you ask Linux to install a particular package using “apt”, it also checks if all dependencies of the selected package are already present, and installs any that are missing.&lt;br /&gt;
&lt;br /&gt;
If you look up on-line how to install any software in Linux, it may use “apt-get”, that is an earlier package manager, in general you can use “apt” instead now. &lt;br /&gt;
&lt;br /&gt;
The full differences between “apt” and “apt-get” depends on your Linux flavour, so this technical aside now splits further discussion by Linux flavour.&lt;br /&gt;
&lt;br /&gt;
===Debian as used by Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
“Debian Linux” (and its derivatives such as “Raspberry Pi Operating System”) uses “apt” to mean a ‘’’Package Manager’’’ that can install, update, and remove packages from these computer systems. &lt;br /&gt;
&lt;br /&gt;
For Debian Linux, “apt” is directed at the end-user (it has user friendly features like a staus bar showing progress on a long install or long upgrade, and can produce prompts about what it is doing and can give choices about whether to do individual actions). &lt;br /&gt;
&lt;br /&gt;
There is an alternative “apt-get” which is more powerful, but directed at system level users (those who don’t want to be watching progress and possibly responding to prompts). &lt;br /&gt;
&lt;br /&gt;
As “apt-get” is updated less frequently than “apt”, it may be it will not work with new packages. Put another way “apt-get” may never change what it can do, but “apt” may get modified to do more than it did before.&lt;br /&gt;
&lt;br /&gt;
===Ubuntu===&lt;br /&gt;
&lt;br /&gt;
For Ubuntu only “apt-get” was available up to 2014, when “apt” was added. Both work as described above for Debian. Again “apt” is best to use.&lt;br /&gt;
&lt;br /&gt;
===Mint===&lt;br /&gt;
&lt;br /&gt;
Linux Mint has a different variation. Its “apt” calls its “apt-get” and adds extra features.  So both effectively do the same, but (as with previous flavours) “apt” is best to use.&lt;br /&gt;
&lt;br /&gt;
It is likely that other Linux variants will also vary how these alternative commands differ.&lt;/div&gt;</summary>
		<author><name>Phil23</name></author>
	</entry>
	<entry>
		<id>https://www.cumuluswiki.org/index.php?title=MX_on_Linux&amp;diff=9583</id>
		<title>MX on Linux</title>
		<link rel="alternate" type="text/html" href="https://www.cumuluswiki.org/index.php?title=MX_on_Linux&amp;diff=9583"/>
		<updated>2021-07-25T03:37:42Z</updated>

		<summary type="html">&lt;p&gt;Phil23: /* Add the Mono repository for a Raspberry Pi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:WorkInProgressBanner}}{{Template:Version badge Mx}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This page focuses on aspects of MX that are specific to the Linux operating systems.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you are running MX on on any computer running the Microsoft Windows Operating System, then you should be reading the [[MX on Windows OS]] page instead.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
=Page Content=&lt;br /&gt;
&lt;br /&gt;
This page:&lt;br /&gt;
* describes the options available for installing MX, and the other Cumulus packages&lt;br /&gt;
* describes the pre-requisite &#039;&#039;&#039;MONO&#039;&#039;&#039; software needed to run the various Cumulus executables, (for Raspberry Pi only), how to add the Mono repository to your system, and how to upgrade MONO&lt;br /&gt;
* explains the few key Linux commands it uses&lt;br /&gt;
* describes the administrative interface and instructions for configuring MX&lt;br /&gt;
* it tries to be useful to anyone who has never used MX, and anyone who knows Cumulus, but has not run MX on Linux before&lt;br /&gt;
* describes the various options available to run MX&lt;br /&gt;
* describes the optional parameters you can add when starting MX&lt;br /&gt;
* describes the other executables &lt;br /&gt;
&lt;br /&gt;
There are various related pages to get more information:&lt;br /&gt;
*Go to [[:Category:Terminology]] for links to pages that explain terminology used by Cumulus (some of these need updating for MX)&lt;br /&gt;
*Go to [[:Category:Cumulus MX]] for links to all pages in this Cumulus Wiki that relate specifically to MX&lt;br /&gt;
*[[MX Administrative Interface|Admin interface]] provides information on configuration and web pages for viewing your weather data locally&lt;br /&gt;
*Go to [[:Category:Cumulus Files]] for links to all pages describing the sub-folders and files used by MX&lt;br /&gt;
*If you encounter a problem when running MX, see [[What to do when I have a problem with MX]]&lt;br /&gt;
*The [[Cumulus MX FAQ]] page was created with snippets from the forum, but nobody has yet sorted this out into a useful page or updated it for recent releases&lt;br /&gt;
*If you were using the original (now legacy) Cumulus software, please read [[Migrating_from_Cumulus_1_to_MX]], although that is mostly directed at those using MX on the same Windows PC as they used for Cumulus 1, and was written for an old MX release, it will help you understand configuration differences.&lt;br /&gt;
*If you want to use a script language, you might want to read [[PHP|PHP Hypertext Pre-processor and JavaScript]] page&lt;br /&gt;
&lt;br /&gt;
=Using MX on UNIX-derived Operating Systems=&lt;br /&gt;
&lt;br /&gt;
MX runs on any UNIX-derived operating systems (OS):&lt;br /&gt;
* including those found on Apple Mac computers, &lt;br /&gt;
* and those found on a multitude of devices running Linux. &lt;br /&gt;
&lt;br /&gt;
UNIX is a long established operating system, and both UNIX and its derivatives have good long term compatibility. This means that commands are generally easy to learn and use. Most devices also have a graphical user interface that can do the more straightforward tasks without needing to know all the commands.&lt;br /&gt;
&lt;br /&gt;
==Device Coverage==&lt;br /&gt;
&lt;br /&gt;
Linux is available based on a multitude of different kernels (the building block for the operating system), on a multitude of devices.&lt;br /&gt;
&lt;br /&gt;
It is hoped that contributions to this page will be made by Cumulus users with a range of such devices. The page has been originated by a contributor using the Raspberry Pi Operating System (this is based on Debian, one of the Linux kernels). Where appropriate, this page gives instructions specific to a [[Raspberry Pi computer page|Raspberry Pi computer]].&lt;br /&gt;
&lt;br /&gt;
:Until somebody creates a separate page for Apple Mac computers (that would be a good idea), this page is the closest.&lt;br /&gt;
&lt;br /&gt;
==What do people think about MX on Linux?==&lt;br /&gt;
&lt;br /&gt;
Contributions to the [https://cumulus.hosiene.co.uk/viewforum.php?f=40 Cumulus Support Forum] suggest that:&lt;br /&gt;
*Use on a Raspberry Pi (RPi) computer is very popular&lt;br /&gt;
*In general, people find installing, and running, MX on Linux is easy&lt;br /&gt;
*The few people who do have difficulties are those who have good knowledge of Microsoft systems and feel scared to swap to something different.&lt;br /&gt;
&lt;br /&gt;
Microsoft has had a deliberate policy of being different to traditional computers mostly based on UNIX, and the [[MX_on_Windows_OS|Running Cumulus MX on Microsoft Windows]] page covers those aspects of MX that are specific to Personal Computers running Microsoft&#039;s Windows Operating System. &lt;br /&gt;
&lt;br /&gt;
In the Cumulus support forum, there are many posts from people who are struggling with MX on PCs, as it seems people often find “installing”, and using, MX is more difficult when using Microsoft Windows.&lt;br /&gt;
&lt;br /&gt;
=For those using Raspberry Pi computers=&lt;br /&gt;
&lt;br /&gt;
You have two choices:&lt;br /&gt;
&lt;br /&gt;
CHOICE ONE: ‘’’Create a micro-SD card that has everything on it to load a kernel onto your computer and run MX’’’&lt;br /&gt;
&lt;br /&gt;
The developer has created [[Software#Raspberry_Pi_Image|an image you can download]].&lt;br /&gt;
&lt;br /&gt;
That image contains:&lt;br /&gt;
#Raspberry Pi Lite Operating System as kernel (no graphical user interface, designed for a RPi without keyboard or monitor)&lt;br /&gt;
#Mono-complete package&lt;br /&gt;
#Cumulus MX package&lt;br /&gt;
&lt;br /&gt;
* If you are new to MX, after booting from image, you will need to use the [[MX_Administrative_Interface#Station_Settings|admin interface]] to define station type, your choice of units, and some other settings, before MX can start recording data from the connected weather station.&lt;br /&gt;
* If you are migrating from another computer, after booting from image, you need to add (using an external memory stick or file transfer from your other device to the RPi), the following:&lt;br /&gt;
** (mandatory) [[Cumulus.ini]], &lt;br /&gt;
**(optional) [[strings.ini]], &lt;br /&gt;
**(mandatory) all files from old [[Data_folder|data sub-folder]], &lt;br /&gt;
**and any (optional) files from old Reports sub-folder.&lt;br /&gt;
&lt;br /&gt;
If you want to pursue that approach, please read [[Raspberry_Pi_Image]] page, instead of continuing to read this page.  Obviously, you can return to this page if you want to learn more.&lt;br /&gt;
&lt;br /&gt;
CHOICE TWO: ‘’’Load the software packages individually’’’&lt;br /&gt;
&lt;br /&gt;
Please read on, this page will tell you all you need to know.&lt;br /&gt;
&lt;br /&gt;
= Do you have a Operating System? =&lt;br /&gt;
&lt;br /&gt;
New hardware might come preloaded with an operating system, or might allow you to choose which operating system to install on it.&lt;br /&gt;
&lt;br /&gt;
Please see [[Raspberry Pi computer page]] if you want guidance on choosing which model to buy and how to install an operating system on those computers, so you are ready to install MX.&lt;br /&gt;
&lt;br /&gt;
=Do you know how to install packages?=&lt;br /&gt;
&lt;br /&gt;
If you already know how to install packages, your computer has the pre-installed image, or you have installed MX before, you will want to skip the sub-sections that follow on here, and continue reading at [[#Cumulus packages]].&lt;br /&gt;
&lt;br /&gt;
Otherwise, here is a short technical digression to explain the commands.&lt;br /&gt;
&lt;br /&gt;
==The various components to commands for installation==&lt;br /&gt;
&lt;br /&gt;
Linux computers have a “source list” which references the repositories from which software packages can be installed.&lt;br /&gt;
&lt;br /&gt;
If a particular package can not be found in repositories already in the source list, then another repository can be added to the source list.&lt;br /&gt;
&lt;br /&gt;
===sudo===&lt;br /&gt;
&lt;br /&gt;
By default, a Linux user will log in as a default user with limited rights. For example, on the Raspberry Pi Operating System, there is a single default user, initially called &amp;quot;Pi&amp;quot;, with their home folder that can be referenced as &amp;quot;~&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The initial &amp;quot;sudo&amp;quot; part of many commands gives us super-user (root) rights when executing the instruction that follows.&lt;br /&gt;
&lt;br /&gt;
If we are working away from the folder(s) owned by the default user, we can consider whether we want to change the ownership of these parts of the file system (how to do this for a MX installation is explained later) so that we can access the files with our default user without using &amp;quot;sudo&amp;quot; for file/folder commands.&lt;br /&gt;
&lt;br /&gt;
In some limited cases, it might make sense to just change &amp;quot;read&amp;quot; rights,so that the default user can read a file/folder, but other actions are not possible without using &amp;quot;sudo&amp;quot; prefix. This limits our ability to accidentally delete files that other processes need.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
The second part of our installation commands is “apt” meaning “Advance Package Tool”. In simple terms, it runs the “package manager” used in Linux.  &lt;br /&gt;
&lt;br /&gt;
If you are looking online for a tutorial on how to install packages, you might see “apt-get” or &amp;quot;apt-cache&amp;quot; used in examples they quote. It should be safe to replace these older package managers with &amp;quot;apt&amp;quot;. I have included a little technical explanation at the end of this page if this really worries you.&lt;br /&gt;
&lt;br /&gt;
===install===&lt;br /&gt;
&lt;br /&gt;
The third part of our installation instruction is “install”, which tells our package manager what we are trying to do.&lt;br /&gt;
&lt;br /&gt;
For the record only, here is full list of what can follow “apt”: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:30px&amp;quot; | Instruction following “apt”&lt;br /&gt;
!style=&amp;quot;width:300px&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
|install&lt;br /&gt;
|To install a package and its dependencies&lt;br /&gt;
|-&lt;br /&gt;
|update&lt;br /&gt;
| The &amp;quot;source list&amp;quot; [[#The various components to commands for installation|mentioned earlier]] that references the repositories from which software packages can be installed, needs to be updated periodically so it reflects any changes within those repositories. The instruction &amp;quot;update&amp;quot; is included after &amp;quot;apt&amp;quot; to make sure your computer has up to date information about repositories installed, and to report if these contain packages that can be upgraded&lt;br /&gt;
|-&lt;br /&gt;
|upgrade&lt;br /&gt;
| Once your &amp;quot;source list&amp;quot; is up to date, the instruction &amp;quot;upgrade&amp;quot; can be included after &amp;quot;apt&amp;quot; to download any newer versions now available in repositories, and to replace those packages that are already installed on your computer with those newer versions&lt;br /&gt;
|-&lt;br /&gt;
|autoremove&lt;br /&gt;
| The instruction &amp;quot;autoremove&amp;quot; can be included after &amp;quot;apt&amp;quot; to check all components in the packages you have installed onto your computer, and remove any components that are not needed by the dependencies of the packages you are using. A download for software frequently includes some components specifically for their software to work with particular other optional packages.&lt;br /&gt;
&lt;br /&gt;
When we install mono-complete later, the other packages we install do not need every component that has installed, and “autoremove” can be used to tidy up when all our installations are finished.&lt;br /&gt;
|-&lt;br /&gt;
|remove&lt;br /&gt;
|If you want to remove just one component manually, after &amp;quot;apt&amp;quot;, use “remove” followed by the name of component you no longer want&lt;br /&gt;
|-&lt;br /&gt;
|purge&lt;br /&gt;
| To remove any installed package and delete all related configuration files, after &amp;quot;apt&amp;quot; type &amp;quot;purge&amp;quot; then the name of the package we no longer want&lt;br /&gt;
|-&lt;br /&gt;
|search&lt;br /&gt;
|To search in repositories in source list for a package you specify after “search”&lt;br /&gt;
|-&lt;br /&gt;
|show&lt;br /&gt;
|To show any information available about a package that you name after the “show”&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
&lt;br /&gt;
The basic syntax is either one or two hyphens, followed by one or two letters (each letter has to be a specific case). Various examples will be seen on this page, but here just one is explained here.&lt;br /&gt;
&lt;br /&gt;
If we selected &amp;quot;install&amp;quot; or &amp;quot;upgrade&amp;quot; to follow &amp;quot;apt&amp;quot;, we can add a “-y” flag to signify that we want the install to continue.  Without this flag, the package manager will ask periodically if we want it to continue,  and we have to then respond with a “y” each time.  For example, when we ask to install a package, &amp;quot;apt&amp;quot; will do a search, it will list what components it has found, and output how big their demands are on storage, without &amp;quot;-y&amp;quot; flag, it will then ask (at least once) if it is okay to continue to installing.&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
The final part of the package command is the name of the package or component that we want to install/upgrade/purge/show/remove or search for.&lt;br /&gt;
&lt;br /&gt;
=Install starts here=&lt;br /&gt;
&lt;br /&gt;
If your computer has the pre-installed image, or you have installed MX before, you can skip the sub-sections that follow on here and continue reading at [[#Cumulus packages]].&lt;br /&gt;
&lt;br /&gt;
== Preparing for an install==&lt;br /&gt;
&lt;br /&gt;
Before we do an install of a new package, we typically use this series of commands to ensure our computer is in the best state to work out dependencies of what we are about to install:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt -y upgrade&lt;br /&gt;
sudo apt autoremove&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Each of those can be understood from information in previous section.&lt;br /&gt;
&lt;br /&gt;
If you are installing onto a Pi zero, or similar slow computer, please ensure the size of the swapfile is as big as possible, as the mono-complete we will install is large. In linux, we type &amp;lt;code&amp;gt;free -m&amp;lt;/code&amp;gt; to see our RAM size and our swapfile size.&lt;br /&gt;
&lt;br /&gt;
To change swapfile size on the Raspberry Pi, you need to edit a file &amp;lt;code&amp;gt;sudo nano /etc/dphys-swapfile&amp;lt;/code&amp;gt;.  Move the cursor down line by line until it reaches &#039;&#039;&#039;CONF_SWAPSIZE=100&#039;&#039;&#039;.  That is showing that the swapfile is only 99 mb by default in the Raspberry Pi Operating System. Now move the cursor to the 100, and change it to &amp;quot;512&amp;quot; which is enough for mono even on a Pi zero. Next, stop, and restart the relevant service using &amp;lt;code&amp;gt;sudo /etc/init.d/dphys-swapfile stop &amp;amp;&amp;amp; sudo /etc/init.d/dphys-swapfile start&amp;lt;/code&amp;gt;. That should complete quickly, and we can type &amp;lt;code&amp;gt;free -m&amp;lt;/code&amp;gt; again to see the 99 we saw previously has been replaced by 511.&lt;br /&gt;
&lt;br /&gt;
=== USB HID === &lt;br /&gt;
&lt;br /&gt;
There is one more prerequisite package for MX with some weather station types.&lt;br /&gt;
&lt;br /&gt;
The cross-platform [https://www.nuget.org/packages/HidSharp/ Universal Serial Bus (USB) Human Interface Device (HID) library] used by MX to connect to weather stations that appear as a HID connecting via USB (like Fine Offset and USB connected Oregon Scientific models) calls a package file called &#039;&#039;libudev.so.1&#039;&#039;, so you may need to [[#install|search]] your Linux computer for this file, and [[#install]] it if it is missing. Alternatively, you might just need a symbolic link where MX looks to where the file is.&lt;br /&gt;
&lt;br /&gt;
To check your USB devices, type &amp;lt;code&amp;gt;sudo lsusb -t&amp;lt;/code).  &lt;br /&gt;
&lt;br /&gt;
To check HID, download this [https://cumulus.hosiene.co.uk/download/file.php?id=11414 USB HID test package] and run it.&lt;br /&gt;
&lt;br /&gt;
Optionally read about [https://cumulus.hosiene.co.uk/viewtopic.php?f=39&amp;amp;t=14310&amp;amp;p=111593&amp;amp;hilit=libudev.so.1#p111593 Oregon Scientific] issues.&lt;br /&gt;
&lt;br /&gt;
To read about [https://cumulus.hosiene.co.uk/viewtopic.php?p=107913#p107913 Fine Offset issues and the (file may need to be linked to where MX wants it) file link instructions]&lt;br /&gt;
&lt;br /&gt;
==Changing the Source List==&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;source list&amp;quot; [[#The various components to commands for installation|mentioned earlier]] may not contain all the repositories we need for our installations.&lt;br /&gt;
&lt;br /&gt;
Consequently, type &amp;lt;code&amp;gt;sudo apt search mono-complete&amp;lt;/code&amp;gt;, to find out whether the mono package is available from one of the repositories already in our source list, and if the version available is compatible with MX (Release announcements for MX should specify which versions of Mono will work).  Each of the parts of that command was explained earlier.&lt;br /&gt;
&lt;br /&gt;
If mono-complete is not available (or only available in an older version incompatible with MX), then we have to add a new repository, and the one to add depends on which Linux kernel is used by our Operating System.&lt;br /&gt;
&lt;br /&gt;
There are a number of sub-sections below, please check which applies to you, and only read that one.&lt;br /&gt;
&lt;br /&gt;
===Add the Mono repository for a Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
The two Mono repositories listed here are specific to the 2017 and 2019 releases (respectively) of the operating system for a Raspberry Pi computer.  These are taken from  [https://www.mono-project.com/download/stable/#download-lin-raspbian download-lin-raspbian].&lt;br /&gt;
&lt;br /&gt;
# the first line (in each case) installs a certificate&lt;br /&gt;
# the echo line defines a repository to add to the sources list.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:450px; color:blue&amp;quot; | Raspberry Operating System 9 (stretch) !! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:450px; color:navy&amp;quot; | Raspberry Operating System 10 (buster)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sudo apt install apt-transport-https dirmngr gnupg ca-certificates&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;sudo apt install apt-transport-https dirmngr gnupg ca-certificates&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;echo &amp;quot;deb https://download.mono-project.com/repo/debian stable-raspbianstretch main&amp;quot;&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;echo &amp;quot;deb https://download.mono-project.com/repo/debian stable-raspbianbuster main&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sudo tee /etc/apt/sources.list.d/mono-official-stable.list&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;sudo tee /etc/apt/sources.list.d/mono-official-stable.list&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sudo apt update&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;sudo apt update&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:450px; color:blue&amp;quot; | Raspberry Operating System 9 (stretch)&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width:450px; color:navy&amp;quot; | Raspberry Operating System 10 (buster)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;height:50px;| sudo apt install apt-transport-https dirmngr gnupg ca-certificates&lt;br /&gt;
| sudo apt install apt-transport-https dirmngr gnupg ca-certificates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;height:100px; |&amp;lt;code&amp;gt;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;height:50px;| &amp;lt;nowiki&amp;gt;echo &amp;quot;deb https://download.mono-project.com/repo/debian stable-raspbianstretch main&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;echo &amp;quot;deb https://download.mono-project.com/repo/debian stable-raspbianbuster main&amp;quot;&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;height:50px;|sudo tee /etc/apt/sources.list.d/mono-official-stable.list&lt;br /&gt;
| sudo tee /etc/apt/sources.list.d/mono-official-stable.list&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Add the Mono repository to Ubuntu, Debian, Fedora===&lt;br /&gt;
&lt;br /&gt;
At time of writing, [https://www.mono-project.com/download/stable/#download-lin-ubuntu download-lin-ubuntu], shows the instructions for versions 16, 18, and 20 of Ubuntu.&lt;br /&gt;
&lt;br /&gt;
Equally, [https://www.mono-project.com/download/stable/#download-lin-debian download-lin-debian], gives details for debian, and [https://www.mono-project.com/download/stable/#download-lin-fedora download-lin-fedora] for Fedora.&lt;br /&gt;
&lt;br /&gt;
Others can be found by choosing other tabs on any of those links.&lt;br /&gt;
&lt;br /&gt;
== Installing Mono instruction ==&lt;br /&gt;
&lt;br /&gt;
Now we have the certificate needed, and the repository for mono-complete is added to our source list, we can do the actual install:&lt;br /&gt;
: &amp;lt;code&amp;gt;sudo apt install -y mono-complete&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
The “sudo”, “apt”, “install”, and “-y” have already been explained.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;mono-complete&amp;quot; is the package we want.&lt;br /&gt;
&lt;br /&gt;
:Please note that if you just specify “mono”, you will get ‘’’mono-devel’’’ (the developer edition) that does not include all the components required by each of the Cumulus executables.&lt;br /&gt;
&lt;br /&gt;
Please note that a particular MX build might specify it needs a particular version of Mono.  Hence, although normally you can upgrade a cumulus package without upgrading Mono, sometimes you will need to install Mono again.&lt;br /&gt;
&lt;br /&gt;
The latest release of Mono can always be downloaded from [https://www.mono-project.com/download/stable/#download-lin], follow step 1 there, but in step 2 replace ‘’’mono-devel‘’’ by ‘’’mono-complete’’’&lt;br /&gt;
&lt;br /&gt;
=Cumulus packages=&lt;br /&gt;
&lt;br /&gt;
Note use of plural in section name above, the following sub-sections will install various packages produced by Developer Mark Crossley.  If you are using the [[Software#Cumulus_MX|pre-built disc image]], then (unless the MX release version included in your image is an old one) you should skip the instructions for &amp;quot;CumulusMX&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Handling zip files==&lt;br /&gt;
&lt;br /&gt;
Each release is presented as a zip.&lt;br /&gt;
&lt;br /&gt;
The download and unzip procedure is exactly same on your Linux computer, and on a Windows PC.  So if you have two devices available, you can download on either device, and if it is not the computer you want to install on, you can use a file transfer package to move the files between devices, or use a drive (or even a memory card) with a partition formatted so that you can read it on both devices.  Windows and Linux partitions are formatted in different ways. While it is likely that Linux can read a Microsoft formatted partition, Microsoft Windows can never read a Linux formatted partition.&lt;br /&gt;
&lt;br /&gt;
When your browser saves the zip it might be into a folder called “downloads” on your computer, or you may be able to save into another folder that you prefer (perhaps on a different partition).  Your browser might even remember the folder you used before for files of type zip.&lt;br /&gt;
&lt;br /&gt;
When the download has completed, whatever computer type this is on, mouse click (it might need a right click or a double click depending on settings) on the download file and it should unzip (it may create a folder whose name is taken from the zip file name in the same folder by default, or it may ask you where you want to unzip to).  If you are unable to use a mouse, there should be a keyboard code to use. If you are using a file manager, with a graphical interface, there may be a different way to select the file and unzip it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Where to install all packages?==&lt;br /&gt;
&lt;br /&gt;
For simplicity on this page EXISTING PATH (the contents of this will start with a slash “/”, but not end with a slash) is used to represent any location in the Linux file structure where you decide to install all the Cumulus packages. &lt;br /&gt;
&lt;br /&gt;
The phrase “EXISTING PATH”  is used, because it is most likely you want to create the sub-folder called “/CumulusMX” (note where capital letters must be used) in a part of the Linux file structure that already exists.&lt;br /&gt;
&lt;br /&gt;
It is important to minimise the length of the path name, because this path name has to be passed between various different software languages (and longer paths risk truncation).&lt;br /&gt;
&lt;br /&gt;
* You can create sub-folder called “/CumulusMX” as you unzip a MX release, or you can type &amp;lt;code&amp;gt;sudo mkdir EXISTING PATH/CumulusMX&amp;lt;/code&amp;gt; first (note that EXISTING PATH is explained above and always starts with a slash “/”).&lt;br /&gt;
* By using the phrase EXISTING PATH this advice avoids telling you to install Cumulus where you do not want it:&lt;br /&gt;
*# Many people with a Raspberry Pi, and a little technical understanding, add an external drive to reduce wear on the internal micro-SD card, and keep their Cumulus files away from the drive that holds the operating system.&lt;br /&gt;
*#* This page is not going to get technical by telling you how to create, or mount, Linux partitions on your external drive. If your drive was bought from a Raspberry Pi reseller, they might help you. &lt;br /&gt;
*# Other people using a Raspberry Pi without that technical expertise, might use ‘’’/home/pi’’’ for EXISTING PATH as that is the default folder for the default user (Pi) and can be referenced as &amp;quot;~&amp;quot; in file path instructions they issue (although Cumulus will not understand that shorthand)&lt;br /&gt;
*#* Within that ‘’’/home/pi’’’ folder, the default user has full permissions automatically.&lt;br /&gt;
*# The developer suggests you use ‘’’/opt’’’ for EXISTING PATH (which should be available on any Linux computer).  &lt;br /&gt;
*#* By default, the code Mark provides for installing Cumulus as a service, will run that service as a root user, and the root user has full permissions in /opt (and everywhere else)&lt;br /&gt;
*#* If you do choose a EXISTING PATH outside your home folder, you might want to change the ownership of the &amp;quot;CumulusMX&amp;quot; sub-folder, to the default user (Pi), if so, type &amp;lt;code&amp;gt;sudo chown -R pi: EXISTING PATH/CumulusMX&amp;lt;/code&amp;gt;.  The advantages of that command is you no longer need &amp;quot;sudo&amp;quot; to access the files (however, if you are running MX as a service, you also need to edit the user in the script provided to create the service, so MX does not create files with root ownership - this will be covered later)&lt;br /&gt;
&lt;br /&gt;
==Packages to install==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;We shall install the Cumulus software listed on [[Software]] page&amp;lt;/big&amp;gt;:&lt;br /&gt;
# &#039;&#039;&#039;CumulusMX’’’:&lt;br /&gt;
#* &#039;&#039;&#039;CumulusMX.exe’’’ is written in C#&lt;br /&gt;
#* Download &#039;&#039;&#039;CumulusMX zip file’’’ from [[Software#Latest_build_distribution_download]]&lt;br /&gt;
# [[Software#Create_Missing|&#039;&#039;&#039;Create Missing&#039;&#039;&#039;]]:&lt;br /&gt;
#* &#039;&#039;&#039;CreateMissing.exe&#039;&#039;&#039; is another C# package&lt;br /&gt;
#*  Using &#039;&#039;&#039;CreateMissing.exe&#039;&#039;&#039; is fully documented at [[Calculate_Missing_Values#CreateMissing.exe]] in this Wiki (it will populate missing fields in [[standard log files]] and/or missing lines in [[dayfile.txt]]),  &lt;br /&gt;
#* Simple Instructions for using this executable are on the github page where they are found, you can find the link for that at [[Software#Create_Missing]] in this Wiki.&lt;br /&gt;
# &#039;&#039;&#039;ExportToMySQL&#039;&#039;&#039;&lt;br /&gt;
#*  &#039;&#039;&#039;ExportToMySQL.exe&#039;&#039;&#039; is also written in C#&lt;br /&gt;
#* Download &#039;&#039;&#039;ExportToMySQL.exe&#039;&#039;&#039; package from [[Software#ExportToMySQL]]&lt;br /&gt;
#* &#039;&#039;&#039;ExportToMySQL.exe&#039;&#039;&#039; is not (at the time this was written) documented in this Wiki although [[MX_Administrative_Interface#MySQL_settings]] does describe a similar utility (written by Steve Loft) that was actually included in early MX release downloads.&lt;br /&gt;
&lt;br /&gt;
As at 9 March 2020, there is another utility, &#039;&#039;&#039;CreateRecord&#039;&#039;&#039;, initialised in the Github areas managed by the developer where Cumulus is worked on.  This will, if my understanding is correct, read [[dayfile.txt]] and use that to update the various [[:Category:Ini Files|extreme record files]].  However, at the time of writing this, it is nothing more than a concept that needs to be coded, and (as far as I know) there has been no progress on that utility for at least 4 months.&lt;br /&gt;
&lt;br /&gt;
===Alternative download link for older MX releases===&lt;br /&gt;
&lt;br /&gt;
Skip this sub-section if either you have installed the &amp;quot;pre-built disc image&amp;quot;, or the current MX release is stable (it has been available for a while and nobody has reported any bugs).&lt;br /&gt;
&lt;br /&gt;
Check if posts in the [https://cumulus.hosiene.co.uk/viewforum.php?f=40 Cumulus Support Forum] tell you that the current release of MX has one or more bug(s) that affects one or more aspect(s) of MX that you intend to use. &lt;br /&gt;
&lt;br /&gt;
Remember, it is impossible for the developer to check all the ways in which versatile MX can be used:&lt;br /&gt;
* Different weather station types (the developer only has a Davis),&lt;br /&gt;
* Different computer types (development is mostly on Microsoft Windows), &lt;br /&gt;
* Plus a whole host of optional features, and different external upload sites, (typically each of these optional features are only used by a sub-set of Cumulus users).&lt;br /&gt;
&lt;br /&gt;
Anyway, &#039;&#039;&#039;you can download any earlier build, without the bug&#039;&#039;&#039;, from [https://github.com/cumulusmx/CumulusMX/releases CumulusMX/releases].&lt;br /&gt;
&lt;br /&gt;
You need to ensure that you use the right version of &amp;quot;CreateMissing.exe&amp;quot; and &amp;quot;ExportToMySQL.exe&amp;quot; utilities for the MX release you are running, so if you are using an old MX release, you will need to go directly to the [https://github.com/cumulusmx Cumulus MX github] page, and navigate to the utility of interest, to download an older version of these utilities that matches your older MX.&lt;br /&gt;
&lt;br /&gt;
==Upgrading a Cumulus package==&lt;br /&gt;
&lt;br /&gt;
Upgrading to a new MX release is explained [[Updating_MX_to_new_version|here]], but basically follow instructions above, and install over your existing files.  The alternative is to install in a new folder (or rename the old one), and copy across files not in the release from old location to new location.&lt;br /&gt;
&lt;br /&gt;
== Report and data files to copy across from any previous Cumulus location ==&lt;br /&gt;
&lt;br /&gt;
All the (optional) files in the [[Reports folder]] can be copied across from a previous installation. If your previous installation was not on Linux, see [[#Line terminators in .txt files]]&lt;br /&gt;
&lt;br /&gt;
All the files in the [[data folder]] can also be copied across. If your previous installation was not on Linux, see [[#Line terminators in .txt files]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your previous Cumulus installation was version 1.9.4, or earlier, then you need to do a lot of reading:&lt;br /&gt;
* [[Amending dayfile]] tells you about how MX is far more fussy about the content in [[dayfile.txt]]&lt;br /&gt;
* [[:Category:Ini Files|.ini files]] explains how time-stamps are formatted differently in the extreme tracking files&lt;br /&gt;
* [[Migrating from Cumulus 1 to MX]] gives some advice about differences in settings, but be aware that the way MX handles settings varies by release, and information on the linked page may be out of date&lt;br /&gt;
&lt;br /&gt;
==Configuration Files to copy across from any previous Cumulus installation==&lt;br /&gt;
&lt;br /&gt;
There are two configuration files that are not included in any MX release:&lt;br /&gt;
*[[strings.ini]] (note all lower case) – optional file to customise output&lt;br /&gt;
*[[Cumulus.ini]] (note initial capital, then lower case) – main configuration file&lt;br /&gt;
&lt;br /&gt;
If your old installation was for a relatively recent release, then just copy these files to new installation and optionally skip the next 2 sub-sections.&lt;br /&gt;
&lt;br /&gt;
If you are upgrading from an older release, please read the next 2 sub-sections for advice.&lt;br /&gt;
&lt;br /&gt;
===strings.ini===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is an optional file&#039;&#039;&#039;.  Its [[strings.ini|purpose]] is to allow customisation of some of the outputs from Cumulus. You might want to use customisation to abbreviate (or extend) some outputs, or to change those outputs into another language.&lt;br /&gt;
&lt;br /&gt;
You create a “strings.ini” file by selecting some of the parameters from the [[samplestrings.ini]] file that is included in each MX release, and modifying the value for the listed attributes as you type them (under the same group titles - these are enclosed in [ ] as before). &lt;br /&gt;
&lt;br /&gt;
The sections that appear in &#039;&#039;&#039;samplestrings.ini&#039;&#039;&#039;, and the parameters that appear within a section, changed drastically between Cumulus 1.9.4 and MX.  So be cautious if you try to use a &amp;quot;strings.ini&amp;quot; file originally created by the legacy software, check whether the parameters you used before are still available in the latest &amp;quot;samplestrings.ini&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The content of &amp;quot;samplestrings.ini&amp;quot; is changing as MX is developed. Therefore, your existing “strings.ini” might need to be modified. There is no automatic way to check your “strings.ini” file, if MX does not understand any parameter in this file, it ignores it. Instead, you need to manually check each parameter you have in your “strings.ini” file to see if that parameter is in “samplestring.ini” included in the release you have installed. You may also find new parameters in “samplestring.ini” that you wish to add to your “strings.ini” file to tailor new functionality to your preferences.&lt;br /&gt;
&lt;br /&gt;
===Cumulus.ini===&lt;br /&gt;
&lt;br /&gt;
If your old release was 3.8.0 or later, then copy the [[Cumulus.ini]] file used in that old installation into your new one. The file is growing with lots of new parameters, and the tables on the page I have just linked indicated when parameters were introduced, and where those settings may be changed to make it simple for you to ensure all settings are right for your new release.&lt;br /&gt;
&lt;br /&gt;
If your old release was older that 3.8.0, then you will see [[:Category:Configuration Files|the Configuration Files page]] shows different links for documentation on older &amp;quot;cumulus.ini&amp;quot; files.  Because of those differences, many people prefer to rename their existing “Cumulus.ini” file when upgrading from such an old release, or making an install on a new device. To create a new file, they work through all the settings manually, so that MX can create a fresh file, with them having confidence every setting reflects their preference.  However, you do need to be aware that such older releases included a lot of &amp;quot;read-only&amp;quot; parameters that had to be set manually in the file, you may find some of those parameters are still needed by you, so you will want to edit the new file, with MX stopped, and copy any of those old &amp;quot;read-only&amp;quot; parameters that might not yet be settings you configure within the MX interface (although the number of these is diminishing with each new release).&lt;br /&gt;
&lt;br /&gt;
If you previously used an older release of Cumulus, but in this new installation will be using the latest release (latest is what is normally best, unless it has bugs), you may want to read up on all the changes between your old release and the current release, not just changes that affect the configuration file.&lt;br /&gt;
&lt;br /&gt;
==Moving from Microsoft Windows to Linux==&lt;br /&gt;
&lt;br /&gt;
===Line terminators in .txt files===&lt;br /&gt;
&lt;br /&gt;
If you are a novice to computers, skip this sub-section and the next, go directly to [[#File Names &amp;amp; Paths]]. &lt;br /&gt;
&lt;br /&gt;
You need to have some technical understanding to do an action that might encounter the issues discussed here. For normal MX usage, line terminators do not matter.&lt;br /&gt;
&lt;br /&gt;
If you are moving from Microsoft Windows to Linux, be aware that Microsoft ends each line with two characters (Carriage Return and Line Feed) while Unix/Linux ends each line with a single character (Line Feed). Cumulus can cope with both approaches for existing files, but will create new files correctly for Linux.&lt;br /&gt;
&lt;br /&gt;
If you run your Linux computer in a headless mode, accessing its files by a remote terminal session, be aware that the line terminator used by the remote computer may be applied to files affected by whatever command you do remotely. Equally, running a Cumulus executable (MX or one of the utilities) may create new files with the wrong end of line terminator. The latest releases have been amended to match existing files, when they create a new file to replace an old file (or because that file is missing/corrupted).&lt;br /&gt;
&lt;br /&gt;
If you try to edit a file outside MX, the tool you choose to use might be able to detect that it is getting Microsoft files, and discard the extra end of line character.&lt;br /&gt;
&lt;br /&gt;
However, if you are reading a comma separated value file (such as MX uses for various files) in a script, your script might not detect the end of line encoding:&lt;br /&gt;
* If the script expects the Linus LF, and finds CR LF, then the final field of each CSV line has an invalid character in it, so your script will not be able to understand that field as a numerical value (or time-stamp).&lt;br /&gt;
* If the script expects CR only, and finds CR LF, then the first field of the each line presented to the script (except the first line) starts with a “LF” and the script will not recognise it as a date.&lt;br /&gt;
* If the script expects CR only, but just finds LF, the script will believe the whole file is just one line, and the fields before and after the LF will be treated as a single field so your script will not be able to understand that field as a numerical value (or time-stamp).&lt;br /&gt;
* If the script was written for a Microsoft Windows environment, it will expect CR LF, but might be confused if the end of line is different&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Changing line terminators===&lt;br /&gt;
&lt;br /&gt;
Many editors designed for programmers (they might be described as providing a programming development environment) can change the line ending of every line (either while file is being edited or when file is saved). &lt;br /&gt;
&lt;br /&gt;
‘’’Geany’’’ is a programming development editor provided on some Linux systems including Raspberry Pi, that can do this (&#039;&#039;&#039;Document&#039;&#039;&#039; menu, --&amp;gt;&amp;gt; &#039;&#039;&#039;Select Line Endings&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Notepad++ is another editor available for multiple operating systems (&#039;&#039;&#039;Edit&#039;&#039;&#039; menu --&amp;gt;&amp;gt; &#039;&#039;&#039;EOL conversion&#039;&#039;&#039;).  &lt;br /&gt;
&lt;br /&gt;
Both have capabilities to make such changes on either the single file that has focus, or all loaded files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===File Names &amp;amp; Paths===&lt;br /&gt;
&lt;br /&gt;
Another issue that may be encountered when moving from Windows to Linux is the difference in File Names &amp;amp; Paths.&lt;br /&gt;
Linux file names are Case Sensitive, and the separator is &amp;quot;/&amp;quot; Vs &amp;quot;\&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This could be applicable if you are using Extra Web files.&lt;br /&gt;
&lt;br /&gt;
Here is an example changing the case and the separators: &#039;&#039;Web\extrapageT.htm&#039;&#039; in Windows, changed to read &#039;&#039;&#039;web/extrapageT.htm&#039;&#039;&#039; in Linux.&lt;br /&gt;
&lt;br /&gt;
=Running MX on Linux=&lt;br /&gt;
&lt;br /&gt;
This section explores the optional parameters, and then covers 2 ways to run MX:&lt;br /&gt;
# as a service and &lt;br /&gt;
# interactively with terminal window left open.&lt;br /&gt;
&lt;br /&gt;
== Optional parameters to add to the instruction to run the MX engine ==&lt;br /&gt;
&lt;br /&gt;
This list of parameters covers every parameter, if you are using the latest release skip the historic 3.0.0 sub-sections.&lt;br /&gt;
&lt;br /&gt;
IMPORTANT: The &amp;quot;sudo&amp;quot; prefix shown in code examples for the various parameters can be omitted if the user that is running MX owns the folder &amp;quot;CumulusMX&amp;quot; and all its contents. In the [[#Where to install all packages?|installation notes earlier]] possible locations and ownership issues were mentioned.  That earlier section also defined EXISTING PATH, if that is not mentioned in the code examples, it is assumed you have already issued a &amp;lt;code&amp;gt;cd EXISTING PATH&amp;lt;/code&amp;gt; to be in the right folder for issuing the command.&lt;br /&gt;
&lt;br /&gt;
Note that you &#039;&#039;may&#039;&#039; need to supply your root password after typing any &#039;sudo ...&#039; command line if the instruction changes something set by another package (e.g. changing the locale for MX from the locale set by mono). The system will prompt you for this if it is needed.&lt;br /&gt;
&lt;br /&gt;
=== Parameter for changing Port ===&lt;br /&gt;
&lt;br /&gt;
When Cumulus starts, it will display the URL of the user interface. It runs on port 8998 by default; if this is not suitable for some reason you can over-ride it using the &#039;-port&#039; parameter on the command line, e.g. to use port 9999 instead:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo mono CumulusMX.exe -port 9999&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parameter for changing Locale ===&lt;br /&gt;
&lt;br /&gt;
On Linux and (in particular) OS X, Cumulus MX may not be given the correct locale to use, and you may get the default US locale even if that is not your locale. It will output the local it is using when it starts; if it is not correct, close it down and start it again, this time specifying your locale on the command line, using the -lang parameter . For example, in the UK, on a non-Windows device type:&lt;br /&gt;
:&amp;lt;code&amp;gt;sudo mono CumulusMX.exe -lang en-GB&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other locale examples:  &#039;&#039;&#039;CumulusMX.exe Current culture: English (United States)&#039;&#039;&#039;, &#039;&#039;&#039;CumulusMX.exe -lang de-DE&#039;&#039;&#039;,  &#039;&#039;&#039;CumulusMX.exe -lang el-GR&#039;&#039;&#039; (this is one of the locales that reads numbers with &#039;&#039;&#039;integer,decimal&#039;&#039;&#039; format), &#039;&#039;&#039;CumulusMX.exe -lang nl-NL&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are not sure what value you need to supply for the -lang parameter, there is a list here - http://msdn.microsoft.com/en-gb/library/ee825488%28v=cs.20%29.aspx. You need to supply the code in the first column (&amp;quot;Language Culture Name&amp;quot;) in that list. &lt;br /&gt;
&lt;br /&gt;
Note that this does not affect the language used by Cumulus MX (although it may in the future), it affects the decimal separator and the list separator.&lt;br /&gt;
&lt;br /&gt;
=== Parameter for running as service ===&lt;br /&gt;
&lt;br /&gt;
The parameter syntax is &amp;lt;code&amp;gt;sudo mono CumulusMX.exe -service&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You don&#039;t use this parameter in a terminal or interactive instruction for running MX. Instead it appears within a file that we use to set up for running MX as a service.&lt;br /&gt;
 &lt;br /&gt;
For the latest release, (see [https://cumulus.hosiene.co.uk/viewtopic.php?p=146473#p146473 this later release announcement]:&lt;br /&gt;
#There is a task to do just once to configure the service&lt;br /&gt;
#Find the &#039;&#039;&#039;EXISTING PATH/CumulusMX/MXutils/linux/&#039;&#039;&#039; sub-folder, that might be in home directory and therefore found using &amp;quot;~/CumulusMX/MXutils/linux&amp;quot; as explained elsewhere on this page&lt;br /&gt;
#* At time of typing this, the sub-folder only contains one file, the one we need to edit&lt;br /&gt;
# As described later there is a choice of editors, but you can use &amp;lt;code&amp;gt;sudo nano cumulusmx.service&amp;lt;/code&amp;gt; to edit the service configuration file&lt;br /&gt;
# Within the provided file you should find a [Service] section:&lt;br /&gt;
&amp;lt;pre&amp;gt;[Service]&lt;br /&gt;
User=root&lt;br /&gt;
Group=root&lt;br /&gt;
ExecStart=/usr/bin/mono-service -d:/home/install/CumulusMX CumulusMX.exe -service&lt;br /&gt;
Type=forking&lt;br /&gt;
ExecStopPost=/bin/rm /tmp/CumulusMX.exe.lock&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are some edits needed to that section:&lt;br /&gt;
# Replace &#039;&#039;&#039;User=root&#039;&#039;&#039; if you want the service to run as a different user&lt;br /&gt;
# Edit the line that begins with &#039;&#039;&#039;ExecStart=&#039;&#039;&#039;&lt;br /&gt;
#* The mandatory change is to replace &#039;&#039;&#039;/home/install&#039;&#039;&#039; by what you have selected for EXISTING PATH&lt;br /&gt;
#* An optional change is to add additional parameters after the &#039;&#039;&#039;-service&#039;&#039;&#039; (select from &#039;&#039;&#039;-debug&#039;&#039;&#039;, -locale, -port) as described in sub-sections above&lt;br /&gt;
#save file with a new name &#039;&#039;&#039;cumulusmx_mine.service&#039;&#039;&#039; (using a new name stops it being overwritten when we upgrade MX&lt;br /&gt;
#now copy file to where it is needed to run the service: &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo cp EXISTING_PATH/CumulusMX/MXutils/linux/cumulusmx_mine.service /etc/systemd/system/cumulusmx.service&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how the file might look after the changes:&lt;br /&gt;
&amp;lt;pre&amp;gt;[Unit]&lt;br /&gt;
Description=CumulusMX service&lt;br /&gt;
Documentation=https://cumuluswiki.org/a/Main_Page&lt;br /&gt;
After=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=pi&lt;br /&gt;
Group=pi&lt;br /&gt;
ExecStart=/usr/bin/mono-service -d:/opt/CumulusMX CumulusMX.exe -service -debug&lt;br /&gt;
Type=forking&lt;br /&gt;
ExecStopPost=/bin/rm /tmp/CumulusMX.exe.lock&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up as a service in release 3.8.0 ==&lt;br /&gt;
&lt;br /&gt;
Skip this sub-section for latest release.  &lt;br /&gt;
&lt;br /&gt;
For historic reasons, note the original instructions in the 3.8.0 [https://cumulus.hosiene.co.uk/viewtopic.php?p=145048#p145048 release announcement]:&lt;br /&gt;
# Ensure you are in the folder containing CumulusMX.exe&lt;br /&gt;
# Type &amp;lt;code&amp;gt; mono-service -l:/var/run/cmx.pid CumulusMX.exe -service&amp;lt;/code&amp;gt;&lt;br /&gt;
# (to verify) note this does not allow you to add -port, -debug, -locale parameters&lt;br /&gt;
&lt;br /&gt;
=== Parameter for adding debugging ===&lt;br /&gt;
&lt;br /&gt;
MX has a default level of logging that stores in the [[MXdiags_folder]] folder a log file that shows some of the interaction with the weather station and some of the output actions done as MX runs. A new log is started each time MX is restarted.&lt;br /&gt;
&lt;br /&gt;
If there is a problem, then there is a great benefit in actually increasing the level of detail in these logs; and that is done either within the settings (on recent MX releases this is on &#039;&#039;&#039;Program Settings&#039;&#039;&#039; page of admin interface - please see [[MXdiags_folder]] page for details) or by adding a parameter:  &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo mono CumulusMX.exe -debug&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parameters only applicable to Version 3.0.0 Beta builds of MX ===&lt;br /&gt;
&lt;br /&gt;
The following two parameters cannot be used with MX since it came out of 3.0.0 beta.&lt;br /&gt;
&lt;br /&gt;
==== web sockets ====&lt;br /&gt;
&lt;br /&gt;
Beta builds in MX version 3.0.0 had an optional parameter &amp;lt;code&amp;gt;sudo mono EXISTING PATH/CumulusMX/CumulusMX.exe -wsport nnnn&amp;lt;/code&amp;gt; that determined which port (represented by a 4 digit number &#039;&#039;nnnn&#039;&#039;) was used for &#039;&#039;&#039;Web Sockets&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
That parameter [https://cumulus.hosiene.co.uk/viewtopic.php?f=40&amp;amp;t=17887&amp;amp;p=138815&amp;amp;hilit=sockets#p138815 is now deprecated as Web Sockets in all builds since 3045] use the same port for web sockets as for the HTTP port of the [[MX_Administrative_Interface#The_API_interface|Admin Interface]], see -port parameter described earlier. &lt;br /&gt;
&lt;br /&gt;
==== Debugging of data flow between station and MX====&lt;br /&gt;
&lt;br /&gt;
Use &#039;&#039;&#039;sudo mono CumulusMX.exe -Logging=1&#039;&#039;&#039; (for the station to MX transfers to have increased debugging logging). &lt;br /&gt;
&lt;br /&gt;
Note use of this parameter is now deprecated.&lt;br /&gt;
&lt;br /&gt;
Although this is not mentioned in any release announcements, it appears that on all recent MX releases this effect is incorporated into the &#039;&#039;&#039;-debug&#039;&#039;&#039; parameter described earlier.  Perhaps someone could confirm whether this is true.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running as a service==&lt;br /&gt;
&lt;br /&gt;
The instructions to set up the ability to run MX as a service [[#Parameter for running as service| were given earlier]]. If you want MX to automatically start when your Linux computer is booted, just type &amp;lt;code&amp;gt;sudo systemctl enable cumulusmx&amp;lt;/code&amp;gt; once, and it will be activated on each reboot.&lt;br /&gt;
&lt;br /&gt;
The full set of commands to use with this service are at [[Raspberry_Pi_Image#systemctl_commands|systemctl_commands]],they are not duplicated here, so there is only one place to do any update.&lt;br /&gt;
&lt;br /&gt;
In the [[#Parameter for running as service|earlier instructions]] it was suggested you change the user for the service, if you have done that you can omit the &amp;quot;sudo&amp;quot; in &amp;lt;code&amp;gt;sudo systemctl start cumulusmx&amp;lt;/code&amp;gt; which manually restarts the service.  Equally, you can omit &amp;quot;sudo&amp;quot; from any command that accesses Cumulus files created by the service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running any MX executable with a terminal session left open ==&lt;br /&gt;
&lt;br /&gt;
This is alternative to the running as service as described above.&lt;br /&gt;
&lt;br /&gt;
The simplest instruction to run Cumulus MX  is &amp;lt;code&amp;gt;cd EXISTING PATH/CumulusMX &amp;amp;&amp;amp; sudo mono CumulusMX.exe&amp;lt;/code&amp;gt;.  &lt;br /&gt;
* This is two commands issued together, the first changes the working folder, the second actually starts the main executable&lt;br /&gt;
** To run &amp;quot;Create Missing&amp;quot; or &#039;&#039;&#039;ExportToMySQL&#039;&#039;&#039;, just edit what appears after &amp;quot;mono&amp;quot; to the correct executable name&lt;br /&gt;
* If you have followed advice at [[#Where to install all packages?]], the user you are using will own the &amp;quot;EXISTING PATH/CumulusMX&amp;quot; folder and you can omit the &amp;quot;sudo&amp;quot;.&lt;br /&gt;
* You can add parameters after &amp;quot;CumulusMX.exe&amp;quot;  (select from &#039;&#039;&#039;-debug&#039;&#039;&#039;, -locale, -port) as described in sub-sections above&lt;br /&gt;
&lt;br /&gt;
Just in case it is not obvious .... if you start any executable using this command in a terminal window on your Pi, you must leave that session running, or that executable will stop running. &lt;br /&gt;
&lt;br /&gt;
You can start it off directly on your Pi, and then&lt;br /&gt;
*optionally disconnect the keyboard, &lt;br /&gt;
*switch off monitor or TV attached to your Pi, &lt;br /&gt;
*Just ensure you leave Pi on (with that window minimised) so that terminal session continues running.&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;&#039;&#039;&#039;ps -ef | grep -i cumulus | grep -v grep&#039;&#039;&#039;&amp;lt;/code&amp;gt; to see if Cumulus is running or not.&lt;br /&gt;
&lt;br /&gt;
= Operating a web site with uploads from MX engine =&lt;br /&gt;
&lt;br /&gt;
== The standard web pages ==&lt;br /&gt;
&lt;br /&gt;
=== From release 3.10.1 ===&lt;br /&gt;
&lt;br /&gt;
The web pages are a one-off upload from &#039;&#039;&#039;CumulusMX/webfiles&#039;&#039;&#039;.  The data to be shown on these web pages are uploaded from [[:Category:JSON_Files|.json]] files in the [[web_folder]].&lt;br /&gt;
&lt;br /&gt;
Please read [[New_Default_Web_Site_Information|this page]] for more information about styling options and other details.&lt;br /&gt;
&lt;br /&gt;
=== Until release 3.9.7 ===&lt;br /&gt;
&lt;br /&gt;
The styling and library files were a one-off upload from &#039;&#039;&#039;CumulusMX/webfiles&#039;&#039;&#039;. These release use [[Cumulus_template_file|template files]], these are [[Customised_templates#What_is_meant_by_.27Cumulus_processes_templates.27|processed by MX to add the variable data]], and this will create web pages that are uploaded to your web site.&lt;br /&gt;
&lt;br /&gt;
Please read [[Customised_templates]] for further information about the various pages originally provided, and how you could customise them to suit you. &lt;br /&gt;
 &lt;br /&gt;
=== Comparison with legacy Cumulus 1 web pages ===&lt;br /&gt;
&lt;br /&gt;
* Note that any web files, designed for Cumulus 1, cannot be used with MX, for multiple reasons&lt;br /&gt;
** so if moving from Cumulus 1 to MX, delete all your Cumulus 1 files from the &amp;quot;web&amp;quot; and &amp;quot;webfiles&amp;quot; sub-folders, and all files from your web server; then upload files from the new &amp;quot;webfiles&amp;quot; folder. &lt;br /&gt;
* The standard gauges are rather like the stand alone [[SteelSeries Gauges|SteelSeries gauges]] you could optionally add to Cumulus 1, but the MX ones are different.&lt;br /&gt;
** The new default gauges page does not display a graph when you hover over a gauge (Cumulus 1 generated some images that the stand alone Steel Series gauges page could use)&lt;br /&gt;
* The various charts pages for MX rely on MX to generate files with time and value pairs, these are stored in json format, the various web pages use a library package (Highstocks) to draw graphs from those data pairs.&lt;br /&gt;
** (The Trends page provided as standard in Cumulus 1 simply displayed images of graphs uploaded to the web server)&lt;br /&gt;
&lt;br /&gt;
== Alternative ways to obtain web pages ==&lt;br /&gt;
&lt;br /&gt;
You can choose to use some of the alternative web pages available from third parties and described [[:Category:User Contributions|on User Contributions page]].&lt;br /&gt;
&lt;br /&gt;
== Using your own web pages ==&lt;br /&gt;
&lt;br /&gt;
* Of course you can use your own web pages, instead of the standard ones. Assuming they need to include figures that are available as web tags, there are three alternative ways to implement this:&lt;br /&gt;
*# MX can process template files with a HTML structure and those web tags in the structure where values are required just as it does with the standard templates, and MX can upload the resulting web pages  at either the real-time interval, the standard interval, or after end of day. All of this is covered on the [[Customised_templates|Customised templates]] page in this Wiki.&lt;br /&gt;
*# MX can process a file with a string of web tags mirroring the realtime.txt option in MX, and upload the resulting file so your web pages can use JavaScript for a one-off insert of the values or an Ajax routine to update the web page at a fixed interval.&lt;br /&gt;
*# Alternatively, you can use template scripts processed locally by MX that don&#039;t create web pages, but are uploaded by MX at either the real-time interval, the standard interval, or after end of day. These scripts simply initialise script variables with values obtained from web tags. You then independently have a set of web pages resident only on your web server (they don&#039;t exist where you run MX) using a combination of HTML and script content that bring in the script(s) with the variables by the appropriate syntax. All of this is covered on the [[Php_webtags|PHP web tags]] page in this wiki. As it suggests there, you might therefore have several files processed by Cumulus MX at these different intervals, converting the web tags into script variables, and then use AJAX (JavaScript that may use json format to bring in the variables) or PHP (using &amp;lt;tt&amp;gt;&#039;require_once &#039;filename&#039;;&amp;lt;/tt&amp;gt; syntax) to put those variables into a web page.&lt;br /&gt;
&lt;br /&gt;
You may find [[PHP|this wiki page]] useful for understanding more about the different script languages.&lt;br /&gt;
&lt;br /&gt;
=That is enough folks=&lt;br /&gt;
&lt;br /&gt;
If you have read up to here, you now know the basics for using MX on Linux.&lt;br /&gt;
&lt;br /&gt;
The remaining sections are more technical and so you can skip them.&lt;br /&gt;
&lt;br /&gt;
=Technical Extra=&lt;br /&gt;
&lt;br /&gt;
PLEASE SKIP ALL SUBSEQUENT SUB-SECTIONS IF YOU WANT TO AVOID TECHNICAL EXPLANATIONS.&lt;br /&gt;
&lt;br /&gt;
== A very quick introduction to Linux ==&lt;br /&gt;
&lt;br /&gt;
This article is not the place to teach you Linux, you can find books and on-line articles for yourself, but I list here enough for you to understand the instructions used elsewhere in this article.&lt;br /&gt;
&lt;br /&gt;
If you have a Raspberry Pi with a monitor attached, you will see a raspberry icon that you can click to get Graphical User Interface access to many features, including shutdown options.&lt;br /&gt;
&lt;br /&gt;
=== su and sudo ===&lt;br /&gt;
&lt;br /&gt;
There is a command &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; that allows a terminal session to become a super user session with root privileges. If you use that command, without a &#039;&#039;&#039;sudo&#039;&#039;&#039; command in front, you need to type in the password (we changed earlier) when prompted.  if you type &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt;, then you get root privileges without being asked to quote password. All subsequent lines in this terminal session will have a prompt that reminds you that you have root access and do not need to prefix subsequent commands with &amp;quot;sudo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Normally, all terminal sessions will use the default &amp;quot;pi&amp;quot; user, and for individual commands, you will use a &amp;quot;sudo&amp;quot; prefix each time that command needs administrative rights, as this allows a standard Pi user to do tasks that otherwise only work for the root user.&lt;br /&gt;
&lt;br /&gt;
You might use a &amp;quot;sudo&amp;quot; prefix if you need to access a part of the file structure that your user does not have any access to, or where the standard user does not have write (or execute) access. &lt;br /&gt;
&lt;br /&gt;
There are also some commands (like displaying mounted storage) that are not available to a standard user. Here are 3 system commands that in terminal mode will only ever work with this prefix (although if you have installed the version of the Raspberry Pi Operating System that supports a graphical user interface you can also select these actions from a menu):&lt;br /&gt;
*&#039;&#039;&#039;sudo halt&#039;&#039;&#039; = stops any cpu functions, but leaves Pi running; used when you have reached the end of commands you want to do for now&lt;br /&gt;
*&#039;&#039;&#039;sudo poweroff&#039;&#039;&#039; = makes pi do a tidy shutdown and turn off its power; used when you will not be using your Pi for a while&lt;br /&gt;
*&#039;&#039;&#039;sudo reboot&#039;&#039;&#039; (or &amp;quot;sudo reboot -verbose&amp;quot; for diagnostic output during shutdown and reboot) = makes your Pi close down and then reboot; used when you change settings, and after you install new software, to ensure Pi starts with all applications running using the latest settings and latest already installed software&lt;br /&gt;
&lt;br /&gt;
=== ~ and / ===&lt;br /&gt;
&lt;br /&gt;
The tilde symbol &#039;&#039;&#039;~&#039;&#039;&#039; denotes the home directory for the current user.  Sub-directories within the current user&#039;s folder can be identified by &#039;&#039;&#039;~/documents&#039;&#039;&#039; or similar notation. &lt;br /&gt;
&lt;br /&gt;
To reference a folder in root or any other area, the prefix is always &#039;&#039;&#039;/&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are using the RPi OS GUI, it provides a file manager that displays folders and files, and if you have a mouse you can click on an object to see what actions are available.  The file manager has &amp;quot;Home&amp;quot; and &amp;quot;Root&amp;quot; as bookmarks by default, you can bookmark others.  Typically, any new partitions created can also be accessed from bookmarks.  Depending on options you select, there may be icons on the GUI desktop to link to particular folders and clicking on these offers various options including opening them in file manager.&lt;br /&gt;
&lt;br /&gt;
In a terminal environment, to see what files and folders are in the current directory, type &amp;lt;code&amp;gt;dir&amp;lt;/code&amp;gt; for just names or &amp;lt;code&amp;gt;ls&amp;lt;/code&amp;gt; for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== folder commands ===&lt;br /&gt;
&lt;br /&gt;
To make a new folder in the current directory, type &amp;lt;code&amp;gt;sudo mkdir folder_name&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To remove a folder, that has no files in it, type in a particular path, type &amp;lt;code&amp;gt;sudo rmdir /path/directory&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To remove a folder that does have files, and/or sub-folders within it, type tt&amp;gt;sudo rm -r /path/directory&amp;lt;/code&amp;gt;, but remember the contents are gone for ever, so be absolutely sure you have specified the right folder! &lt;br /&gt;
&lt;br /&gt;
To copy folders/files from one directory to another use something like &amp;lt;code&amp;gt;cp -R --update --preserve /home/pi/CumulusMX/backup/daily /media/pi/data/CumulusMX/archive&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sometimes, you have a folder or file in just one place in the file system, but want to be able to access it at a different place (because something expects it in the second place), the syntax is &amp;lt;code&amp;gt;ln -s /path/elsewhere path/pointer_location&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
An example might be &#039;&#039;&#039;ln -s /var/lib/phpliteadmin/diary.db ~/CumulusMX/data/diary.db&#039;&#039;&#039; (phplite admin can only update databases in one folder /var/lib/phpliteadmin, or in older releases in /usr/share/phpliteadmin; while MX expects the file to be in its data folder but is happy with a logical pointer to another folder).&lt;br /&gt;
&lt;br /&gt;
=== chmod ===&lt;br /&gt;
&lt;br /&gt;
When you are attempting any of the actions listed in this article that involve reading, creating, editing, exeduting, or moving, files; you might see an error message generally because of a lack of write (or execute) permissions on an existing file or folder.   Whilst &amp;lt;code&amp;gt;rm filename&amp;lt;/code&amp;gt; will remove a file even if it is write protected, for nano you need to change the file permissions with &amp;lt;code&amp;gt;sudo chmod -R ugo+rw ~/CumulusMX&amp;lt;/code&amp;gt; for modify access to all files in your Cumulus installation (see the syntax below if you want to restrict access).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;chmod&#039;&#039;&#039; command to modify permissions&lt;br /&gt;
* the &#039;&#039;&#039;-R&#039;&#039;&#039; indicates recursive action (i.e. including not just the named folder, but all files within it and all sub-folders, and all files within sub-folders)&lt;br /&gt;
*letters indicating whose permission is being modified&lt;br /&gt;
** &#039;&#039;&#039;u&#039;&#039;&#039; = Owning user (sometimes the owner is the user root, sometimes the owner is the user Pi, for our web pages later we change ownership)&lt;br /&gt;
** &#039;&#039;&#039;g&#039;&#039;&#039; = Group (by default the owning user is also a group, but a group can be defined if you want to give multiple users (with different passwords) the same rights of access)&lt;br /&gt;
** &#039;&#039;&#039;o&#039;&#039;&#039; = Other users (write permission here is needed if for example you are using FTP to move a file from a PC to your Pi, or vice versa)&lt;br /&gt;
* sign for add or remove permissions&lt;br /&gt;
* &#039;&#039;&#039;+&#039;&#039;&#039; = add permission&lt;br /&gt;
* &#039;&#039;&#039;-&#039;&#039;&#039; = remove permission&lt;br /&gt;
*letters indicating what permission is being changed&lt;br /&gt;
** &#039;&#039;&#039;r&#039;&#039;&#039; = read [4]&lt;br /&gt;
** &#039;&#039;&#039;w&#039;&#039;&#039; = write [2]&lt;br /&gt;
** &#039;&#039;&#039;x&#039;&#039;&#039; = execute [1]&lt;br /&gt;
&lt;br /&gt;
Note that as an alternative shorter syntax you can use numbers e.g. &#039;&#039;&#039;666&#039;&#039;&#039; is equivalent to &#039;&#039;&#039;ugo+rw&#039;&#039;&#039;. The first digit in the number relates to &#039;&#039;u&#039;&#039;, the second to &#039;&#039;g&#039;&#039; and the last to &#039;&#039;o&#039;&#039;. The values in [] brackets in list of permissions above are added to derive each digit.  So if you are reading the Cumulus support forum and you see a reference to permissions which includes a string of 3 digits, now you can understand what is meant.&lt;br /&gt;
&lt;br /&gt;
=== editing files ===&lt;br /&gt;
&lt;br /&gt;
*Do remember that file names are case sensitive.&lt;br /&gt;
*If you use the wrong case in a path/file name, it will be treated as a different &amp;quot;new&amp;quot; file.&lt;br /&gt;
*If a file editor does not display content you were expecting, look in case &amp;quot;new file&amp;quot; message appears because you have made a typo in the path/file name.&lt;br /&gt;
&lt;br /&gt;
There are various text editors available on a Pi, &lt;br /&gt;
*if you have a mouse and click on a file, you should see &amp;quot;text editor&amp;quot; listed, that loads &#039;&#039;&#039;Mousepad&#039;&#039;&#039; which has a menubar at the top of its &amp;quot;Windows&amp;quot; like interface.&lt;br /&gt;
*in terminal mode &#039;&#039;&#039;nano&#039;&#039;&#039; is a text editor that by default lists the actions available making it easier for a novice to use. &lt;br /&gt;
*in both the GUI and terminal mode, Geary is a programmer&#039;s editor with lots of useful funtionality&lt;br /&gt;
&lt;br /&gt;
All editors can create a file when a file does not exist and edit (subject to file permissions) an existing file. Use prefix of &#039;sudo&#039; to give you access to any file irrespective of ownership, &#039;&#039;&#039;sudo&#039;&#039;&#039; does not change the actual file permissions, so you might find you can read a file, but not save it after you have done your edit.  &lt;br /&gt;
&lt;br /&gt;
====nano====&lt;br /&gt;
&lt;br /&gt;
The full syntax is &amp;lt;code&amp;gt;sudo nano -B Path_file_name&amp;lt;/code&amp;gt; where the &#039;&#039;&#039;-B&#039;&#039;&#039; means it will create a backup of how the file was before (this can be enabled while in the editor by pressing the control key down and typing B). Alternatively use &#039;&#039;&#039;-C&#039;&#039;&#039; which stores each version in a back-up directory.  If you want to edit from a particular line and column you can use &#039;&#039;&#039;+line.column&#039;&#039;&#039;, and also optionally use &#039;&#039;&#039;-l&#039;&#039;&#039; (lower-case &amp;quot;L&amp;quot;) to display line numbers which might be useful when trying to correct a problem with a log file like [[dayfile.txt]].  If you don&#039;t specify a file name, then nano will create a new file and you will need to specify where to save it before exit.&lt;br /&gt;
&lt;br /&gt;
After typing the nano command you need to specify a filename (it might include a path, see earlier sub-section for use of &#039;&#039;&#039;/&#039;&#039;&#039; and &#039;&#039;&#039;~&#039;&#039;&#039;) and there are examples later in this article, but if you decide to &#039;&#039;host a web site on your Pi&#039;&#039; then you might want to edit its home page with (.html or .php) name like &amp;lt;code&amp;gt;sudo nano /var/www/html/index.php&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
After you have made an alteration to the current contents of the file, various options are shown at the bottom. Here are two key ones:&lt;br /&gt;
*First is &#039;&#039;&#039;^O&#039;&#039;&#039; which is used to save the file whilst staying in the editor, to do this press the control key down and type O. Next it shows the current file name, if you press &#039;&#039;&#039;Enter&#039;&#039;&#039; then that file will be overwritten.&lt;br /&gt;
**it allows you to type over the file name shown. If you choose to save as another file, you will be asked if the new name is correct (type &#039;&#039;&#039;Y&#039;&#039;&#039; to continue saving).&lt;br /&gt;
*Another is &#039;&#039;&#039;^X&#039;&#039;&#039; which means if you press the control key down and type X you get the exit dialogue. If you have not made any edits, or have already saved the file, this just exits the editor. If you have not used control and O to save the file, it asks whether you want to save the edited file (type &#039;&#039;&#039;Y&#039;&#039;&#039;), typing just the Y key lets save continue (any other key stroke exits without saving), then it shows the current file name, if you press &#039;&#039;&#039;Enter&#039;&#039;&#039; then that file will be overwritten.&lt;br /&gt;
&lt;br /&gt;
You might find it useful to type &amp;lt;code&amp;gt;sudo nano /etc/nanorc&amp;lt;/code&amp;gt; as this puts you into the configuration file for nano where you can set back-up, line-numbering, and other options.&lt;br /&gt;
&lt;br /&gt;
====Geany====&lt;br /&gt;
&lt;br /&gt;
This uses a GUI, you can set preferences and do all other actions using either menu selections (use mouse or keyboard) or control sequences (on keyboard).  Once it knows what type of programming language, it can colour up the code; it can show you how many times variable identifiers are used; it can match opening and closing quotes, tags, and brackets; and it can ensure encoding and line terminators are correct.&lt;br /&gt;
&lt;br /&gt;
Line-numbering is an option, so it can be used to edit MX log files, and (as BOM is an encoding option) you can be sure it won&#039;t add unwanted encoding.&lt;br /&gt;
&lt;br /&gt;
== removing an unwanted file ==&lt;br /&gt;
&lt;br /&gt;
You can remove a file with various commands, including &amp;lt;code&amp;gt;sudo rm filename&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== external storage ===&lt;br /&gt;
&lt;br /&gt;
Generally, if you attach USB storage (a disc or a stick), Linux OS distributions will detect any existing partitions (yes a technical term) and allow you to read files stored in them. This applies whether the partition is formatted for Linux or for Microsoft Windows.&lt;br /&gt;
&lt;br /&gt;
However, you may have a brand new, unformatted, drive, or you may want to delete, or add partitions, or to format them as Linux partitions (as these make the input/output significantly more efficient).&lt;br /&gt;
&lt;br /&gt;
You can install software that uses a GUI to make this easy, e.g. &#039;&#039;&#039;gparted&#039;&#039;&#039; [https://gparted.org/ partition editor].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use a terminal session, and lots of commands:&lt;br /&gt;
#connect your external storage&lt;br /&gt;
#type &#039;&#039;&#039;su&#039;&#039;&#039; to gain administrative access&lt;br /&gt;
#enter your RPi password&lt;br /&gt;
#type &#039;&#039;&#039;fdisk -l&#039;&#039;&#039; (this is only available to root user) to see names for all storage your Linux computer can see&lt;br /&gt;
#an external drive will be named something like &#039;&#039;/dev/sd&#039;&#039;&#039;&#039;a&#039;&#039;&#039;&#039;&#039; although that &amp;quot;a&amp;quot; might be &amp;quot;b&amp;quot; or a subsequent letter in alphabet depending on what has already been assigned&lt;br /&gt;
# if &amp;quot;sda&amp;quot; and &amp;quot;sdb&amp;quot; appear, or any others up to &amp;quot;sdz&amp;quot;, the last one will relate to the most recently connected storage&lt;br /&gt;
#if your drive has partitions, then you will see further entries like &#039;&#039;&#039;/dev/sda1&#039;&#039;&#039; and &#039;&#039;/dev/sda2&#039;&#039;.&lt;br /&gt;
#type &#039;&#039;&#039;df&#039;&#039;&#039; to see whether your drive is currently mounted (being used by computer system)&lt;br /&gt;
#if it is mounted, the command to use next is (type this accurately, there is a temptation to type an English word that adds an extra &amp;quot;n&amp;quot;!) &amp;lt;code&amp;gt;umount /dev/sda&amp;lt;/code&amp;gt;, obviously replace the &amp;quot;a&amp;quot; by the appropriate letter seen in the earlier command&lt;br /&gt;
#if the drive does not have a partition, create one using &amp;lt;code&amp;gt;fdisk /dev/sda&amp;lt;/code&amp;gt;, again changing the &amp;quot;a&amp;quot; into whatever letter was seen in response to the first &amp;quot;fdisk&amp;quot; command&lt;br /&gt;
#*&amp;quot;fdisk&amp;quot; is a utility, it will wait for further instructions, follow each with pressing &amp;quot;Enter&amp;quot;&lt;br /&gt;
#*type &#039;&#039;&#039;n&#039;&#039;&#039; as instruction to create a new partition&lt;br /&gt;
#*type &#039;&#039;&#039;p&#039;&#039;&#039; to make this the primary partition on this drive&lt;br /&gt;
#* type &#039;&#039;&#039;1&#039;&#039;&#039; to make this the first partition&lt;br /&gt;
#*accept default offered for first cylinder&lt;br /&gt;
#*accept default offered for last cylinder, if this is only partition, as that ensures the whole disk (apart from partition table) is available for your data&lt;br /&gt;
#*for simplicity, this guidance will not cover the possibility of multiple partitions&lt;br /&gt;
#*type &#039;&#039;&#039;t&#039;&#039;&#039; to say you are specifying the way you want this partition to be specified in partition table&lt;br /&gt;
#*optionally type &#039;&#039;&#039;L&#039;&#039;&#039; to see what file system types are available for the partition table&lt;br /&gt;
#*to select a &amp;quot;Linux&amp;quot; partition, type &#039;&#039;&#039;83&#039;&#039;&#039;&lt;br /&gt;
#*type &#039;&#039;&#039;w&#039;&#039;&#039; to create the partition you have now specified for Linux.&lt;br /&gt;
#Now we have a partition table and a partition on our drive, we can repeat &#039;&#039;&#039;fdisk -l&#039;&#039;&#039; to see the entry now added, it might be &#039;&#039;&#039;/dev/sda1&#039;&#039;&#039;, where again the &amp;quot;a&amp;quot; might be a different letter&lt;br /&gt;
#To format this partition for Linux, we specify &amp;quot;ext4&amp;quot; as the way to format it using &amp;lt;code&amp;gt;mkfs.ext4 /dev/sda1&amp;lt;/code&amp;gt;, again replacing the &amp;quot;a&amp;quot; as required.&lt;br /&gt;
#we need to create a folder within &lt;br /&gt;
#*&amp;quot;/media&amp;quot; for Linux in general&lt;br /&gt;
#*&amp;quot;/media/pi&amp;quot; for Raspberry PI OS&lt;br /&gt;
# As we will learn later, the relevant command (in RPi OS) is &#039;&#039;&#039;mkdir /media/pi/my_short_name&#039;&#039;&#039;, where &amp;quot;my_short_name&amp;quot; is selected by you&lt;br /&gt;
#To mount our partition, we type &amp;lt;code&amp;gt;mount /dev/sda1 /media/pi/my_short_name&amp;lt;/code&amp;gt;, where &amp;quot;sda1&amp;quot; is replaced by &amp;quot;sdb1&amp;quot; or whatever we saw in &#039;&#039;&#039;fdisk -l&#039;&#039;&#039;, and &amp;quot;pi/my_short_name&amp;quot; is replaced by whatever we used in our make directory command.&lt;br /&gt;
#To (optionally) get our partition mounted at boot, we can use an editor (see later) to change the boot instructions, by typing &amp;lt;code&amp;gt;nano /etx/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
#*In the editor, use the down arrow on your keyboard to move to last line, and then type &#039;&#039;&#039;/dev/sda1&#039;&#039;&#039; (change the &amp;quot;a&amp;quot; as necessary), then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;/media/pi/my_short_name&#039;&#039;&#039; (change &amp;quot;pi/my_short_name&amp;quot; to whatever we used in our make directory command), then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;ext4&#039;&#039;&#039; (again matching the format type we  selected earlier), then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;defaults&#039;&#039;&#039;, then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;1&#039;&#039;&#039;, then press &amp;quot;tab&amp;quot;, then finally type &#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
#*save the file (as described later in nano sub-section), hold down control key and press &#039;&#039;&#039;o&#039;&#039; letter key. Press &amp;quot;enter&amp;quot; again to confirm same file name.&lt;br /&gt;
#* exit nano by holding control key and pressing &amp;quot;x&amp;quot; key.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Package Manager – a brief technical aside==&lt;br /&gt;
&lt;br /&gt;
Linux operating systems install software by looking in repositories, and checking a register showing dependencies.  When you ask Linux to install a particular package using “apt”, it also checks if all dependencies of the selected package are already present, and installs any that are missing.&lt;br /&gt;
&lt;br /&gt;
If you look up on-line how to install any software in Linux, it may use “apt-get”, that is an earlier package manager, in general you can use “apt” instead now. &lt;br /&gt;
&lt;br /&gt;
The full differences between “apt” and “apt-get” depends on your Linux flavour, so this technical aside now splits further discussion by Linux flavour.&lt;br /&gt;
&lt;br /&gt;
===Debian as used by Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
“Debian Linux” (and its derivatives such as “Raspberry Pi Operating System”) uses “apt” to mean a ‘’’Package Manager’’’ that can install, update, and remove packages from these computer systems. &lt;br /&gt;
&lt;br /&gt;
For Debian Linux, “apt” is directed at the end-user (it has user friendly features like a staus bar showing progress on a long install or long upgrade, and can produce prompts about what it is doing and can give choices about whether to do individual actions). &lt;br /&gt;
&lt;br /&gt;
There is an alternative “apt-get” which is more powerful, but directed at system level users (those who don’t want to be watching progress and possibly responding to prompts). &lt;br /&gt;
&lt;br /&gt;
As “apt-get” is updated less frequently than “apt”, it may be it will not work with new packages. Put another way “apt-get” may never change what it can do, but “apt” may get modified to do more than it did before.&lt;br /&gt;
&lt;br /&gt;
===Ubuntu===&lt;br /&gt;
&lt;br /&gt;
For Ubuntu only “apt-get” was available up to 2014, when “apt” was added. Both work as described above for Debian. Again “apt” is best to use.&lt;br /&gt;
&lt;br /&gt;
===Mint===&lt;br /&gt;
&lt;br /&gt;
Linux Mint has a different variation. Its “apt” calls its “apt-get” and adds extra features.  So both effectively do the same, but (as with previous flavours) “apt” is best to use.&lt;br /&gt;
&lt;br /&gt;
It is likely that other Linux variants will also vary how these alternative commands differ.&lt;/div&gt;</summary>
		<author><name>Phil23</name></author>
	</entry>
	<entry>
		<id>https://www.cumuluswiki.org/index.php?title=MX_on_Linux&amp;diff=9509</id>
		<title>MX on Linux</title>
		<link rel="alternate" type="text/html" href="https://www.cumuluswiki.org/index.php?title=MX_on_Linux&amp;diff=9509"/>
		<updated>2021-07-21T20:41:13Z</updated>

		<summary type="html">&lt;p&gt;Phil23: /* Add the Mono repository for a Raspberry Pi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:WorkInProgressBanner}}{{Template:Version badge Mx}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This page focuses on aspects of MX that are specific to the Linux operating systems.’’’&lt;br /&gt;
&lt;br /&gt;
If you are running MX on on any computer running the Microsoft Windows Operating System, then you should be reading the [[MX on Windows OS]] page instead.&lt;br /&gt;
&lt;br /&gt;
=Using MX on UNIX-derived Operating Systems=&lt;br /&gt;
&lt;br /&gt;
MX runs on any UNIX-derived operating systems (OS):&lt;br /&gt;
* including those found on Apple Mac computers, &lt;br /&gt;
* and those found on a multitude of devices running Linux. &lt;br /&gt;
&lt;br /&gt;
UNIX is a long established operating system, and both UNIX and its derivatives have good long term compatibility. This means that commands are generally easy to learn and use. Most devices also have a graphical user interface that can do the more straightforward tasks without needing to know all the commands.&lt;br /&gt;
&lt;br /&gt;
==Device Coverage==&lt;br /&gt;
&lt;br /&gt;
This page is intended to cover all Linux-based devices, but the content here is based on experience of those who have contributed to this page. &lt;br /&gt;
&lt;br /&gt;
Linux is available in a multitude of different kernels, on a multitude of devices, but this Wiki page will largely ignore any technical variations (some included at end of page) and focus on giving some background content to support the basics.&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi Operating System is based on Debian, one of the Linux kernels. Where appropriate, this page gives instructions specific to a [[Raspberry Pi computer page|Raspberry Pi computer]].&lt;br /&gt;
&lt;br /&gt;
If you use a different kernel, or feel that this page inadequately covers what you want to know, can you add sub-sections to this page to ensure it covers the Linux device you use?&lt;br /&gt;
&lt;br /&gt;
:Until somebody creates a separate page for Apple Mac computers (that would be a good idea), this page is the closest.&lt;br /&gt;
&lt;br /&gt;
==What do people think about MX on Linux?==&lt;br /&gt;
&lt;br /&gt;
Contributions to the [https://cumulus.hosiene.co.uk/viewforum.php?f=40 Cumulus Support Forum] suggest that:&lt;br /&gt;
*Use on a Raspberry Pi (RPi) computer is very popular&lt;br /&gt;
*In general, people find installing, and running, MX on Linux is easy&lt;br /&gt;
*The few people who do have difficulties are those who have good knowledge of Microsoft systems and feel scared to swap to something different.&lt;br /&gt;
&lt;br /&gt;
Microsoft has had a deliberate policy of being different, so it is not UNIX-like. The [[MX_on_Windows_OS|Running Cumulus MX on Microsoft Windows]] page covers those aspects of MX that are specific to Personal Computers running Microsoft&#039;s Windows Operating System. &lt;br /&gt;
&lt;br /&gt;
In the Cumulus support forum, there are many posts from people who are struggling with MX on PCs, as it seems people often find “installing”, and using, MX is more difficult when using Microsoft Windows.&lt;br /&gt;
&lt;br /&gt;
=Page Content=&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
This page:&lt;br /&gt;
* describes the options available for installing MX, and the other Cumulus packages&lt;br /&gt;
* describes the pre-requisite &#039;&#039;&#039;MONO&#039;&#039;&#039; software needed to run the various Cumulus executables, (for Raspberry Pi only), how to add the Mono repository to your system, and how to upgrade MONO&lt;br /&gt;
* explains the few key Linux commands it uses&lt;br /&gt;
* describes the administrative interface and instructions for configuring MX&lt;br /&gt;
* it tries to be useful to anyone who has never used MX, and anyone who knows Cumulus, but has not run MX on Linux before&lt;br /&gt;
* describes the various options available to run MX&lt;br /&gt;
* describes the optional parameters you can add when starting MX&lt;br /&gt;
* describes the other executables &lt;br /&gt;
&lt;br /&gt;
There are various related pages to get more information:&lt;br /&gt;
*Go to [[:Category:Terminology]] for links to pages that explain terminology used by Cumulus (some of these need updating for MX)&lt;br /&gt;
*Go to [[:Category:Cumulus MX]] for links to all pages in this Cumulus Wiki that relate specifically to MX&lt;br /&gt;
*[[MX Administrative Interface|Admin interface]] provides information on configuration and web pages for viewing your weather data locally&lt;br /&gt;
*Go to [[:Category:Cumulus Files]] for links to all pages describing the sub-folders and files used by MX&lt;br /&gt;
*If you encounter a problem when running MX, see [[What to do when I have a problem with MX]]&lt;br /&gt;
*The [[Cumulus MX FAQ]] page was created with snippets from the forum, but nobody has yet sorted this out into a useful page or updated it for recent releases&lt;br /&gt;
*If you were using the original (now legacy) Cumulus software, please read [[Migrating_from_Cumulus_1_to_MX]], although that is mostly directed at those using MX on the same Windows PC as they used for Cumulus 1, and was written for an old MX release, it will help you understand configuration differences.&lt;br /&gt;
*If you want to use a script language, you might want to read [[PHP|PHP Hypertext Pre-processor and JavaScript]] page&lt;br /&gt;
&lt;br /&gt;
=For those using Raspberry Pi computers=&lt;br /&gt;
&lt;br /&gt;
You have two choices:&lt;br /&gt;
&lt;br /&gt;
CHOICE ONE: ‘’’Create a micro-SD card that has everything on it to load a kernel onto your computer and run MX’’’&lt;br /&gt;
&lt;br /&gt;
The developer has created [[Software#Raspberry_Pi_Image|an image you can download]].&lt;br /&gt;
&lt;br /&gt;
That image contains:&lt;br /&gt;
#Raspberry Pi Lite Operating System as kernel (no graphical user interface, designed for a RPi without keyboard or monitor)&lt;br /&gt;
#Mono-complete package&lt;br /&gt;
#Cumulus MX package&lt;br /&gt;
&lt;br /&gt;
* If you are new to MX, after booting from image, you will need to use the [[MX_Administrative_Interface#Station_Settings|admin interface]] to define station type, your choice of units, and some other settings, before MX can start recording data from the connected weather station.&lt;br /&gt;
* If you are migrating from another computer, after booting from image, you need to add (using an external memory stick or file transfer from your other device to the RPi), the following:&lt;br /&gt;
** (mandatory) [[Cumulus.ini]], &lt;br /&gt;
**(optional) [[strings.ini]], &lt;br /&gt;
**(mandatory) all files from old [[Data_folder|data sub-folder]], &lt;br /&gt;
**and any (optional) files from old Reports sub-folder.&lt;br /&gt;
&lt;br /&gt;
If you want to pursue that approach, please read [[Raspberry_Pi_Image]] page, instead of continuing to read this page.  Obviously, you can return to this page if you want to learn more.&lt;br /&gt;
&lt;br /&gt;
CHOICE TWO: ‘’’Load the software packages individually’’’&lt;br /&gt;
&lt;br /&gt;
Please read on, this page will tell you all you need to know.&lt;br /&gt;
&lt;br /&gt;
= Do you have a Operating System? =&lt;br /&gt;
&lt;br /&gt;
Is your Linux computer already working? Or does it need an Operating System to be installed?&lt;br /&gt;
&lt;br /&gt;
An operating system is the is is the software that is loaded onto your computer to provide commands and everything else that males a computer work.&lt;br /&gt;
&lt;br /&gt;
Please see [[Raspberry Pi computer page]] if you want guidance on choosing which model to buy and how to install an operating system, so you are ready to install MX.&lt;br /&gt;
&lt;br /&gt;
=Ready to install MX?=&lt;br /&gt;
&lt;br /&gt;
Assuming our Linux computer has a kernel, how do we add packages to our system? We need a short technical digression to explain the command, skip this next section if you already know how to install packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The various components to commands for installation==&lt;br /&gt;
&lt;br /&gt;
Linux computers have a “source list” which references the repositories from which software packages can be installed.&lt;br /&gt;
&lt;br /&gt;
If a particular package can not be found in repositories already in the source list, then another repository can be added to the source list.&lt;br /&gt;
&lt;br /&gt;
===sudo===&lt;br /&gt;
&lt;br /&gt;
The initial &amp;quot;sudo&amp;quot; part of many commands gives us super-user (root) rights when executing the instruction that follows.&lt;br /&gt;
&lt;br /&gt;
You can change the rights in a folder, or for a file, to make this prefix unnecessary outside root access requiring contexts like installation.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
The second part of our installation commands is “apt” meaning “Advance Package Tool”. In simple terms, it runs the “package manager” used in Linux.  &lt;br /&gt;
&lt;br /&gt;
There is a longer technical explanation towards the end of this page, all I will say here is that you might see “apt-get” used in some on-line examples. I suggest you replace “apt” where “apt-get” is seen as generally “apt” is more friendly. Equally, “apt” can replace “apt-cache”, which I won’t explain.&lt;br /&gt;
&lt;br /&gt;
===install===&lt;br /&gt;
&lt;br /&gt;
The third part of our installation instruction is “install”, which tells our package manager what we are trying to do.&lt;br /&gt;
&lt;br /&gt;
For the record only, here is full list of what can follow “apt”: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:30px&amp;quot; | Instruction following “apt”&lt;br /&gt;
!style=&amp;quot;width:300px&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
|install&lt;br /&gt;
|To install a package and its dependencies&lt;br /&gt;
|-&lt;br /&gt;
|update&lt;br /&gt;
|To make sure your computer has up to date information about repositories installed and to report if these contain packages that can be upgraded&lt;br /&gt;
|-&lt;br /&gt;
|upgrade&lt;br /&gt;
|To see which of your packages have newer versions now available in repositories, and to replace those packages with the newer versions&lt;br /&gt;
|-&lt;br /&gt;
|autoremove&lt;br /&gt;
|To check all components in the packages you have installed and remove those components that are not needed by the dependencies of the packages you use.&lt;br /&gt;
&lt;br /&gt;
As an example, when you install mono-complete, there might be components that are never used, and “autoremove” can be used to tidy up when you finish all your installations&lt;br /&gt;
|-&lt;br /&gt;
|remove&lt;br /&gt;
|If you want to remove just one component manually, use “remove” followed by the name of component you no longer want&lt;br /&gt;
|-&lt;br /&gt;
|purge&lt;br /&gt;
|To remove any installed package and delete all related configuration files&lt;br /&gt;
|-&lt;br /&gt;
|search&lt;br /&gt;
|To search in repositories in source list for a package you specify after “search”&lt;br /&gt;
|-&lt;br /&gt;
|show&lt;br /&gt;
|To show any information available about a package that you name after the “show”&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
&lt;br /&gt;
The basic syntax is either one or two hyphens, followed by one or two letters (each letter has to be a specific case). Various examples will be seen on this page, but here just one is explained here.&lt;br /&gt;
&lt;br /&gt;
After the “install” part mentioned above, we can add “-y” to signify that we want the install to continue.  Without this flag, the package manager will ask periodically if we want it to continue,  and we have to then respond with a “y” each time.  For example, when we ask to install a package, &amp;quot;apt&amp;quot; will do a search, it will list what components it has found, and output how big their demands are on storage, without &amp;quot;-y&amp;quot; flag, it will then ask if it is okay to continue to installing.&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
The final part of the installation command is the name of the package or component that we want to install.&lt;br /&gt;
&lt;br /&gt;
== Preparing for an install==&lt;br /&gt;
&lt;br /&gt;
Before we do an install of a new package, we typically use some of these commands to ensure our computer is in the best state to work out dependencies of what we are about to install:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt -y upgrade&lt;br /&gt;
sudo apt autoremove&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each of these can be understood from information in previous section.&lt;br /&gt;
&lt;br /&gt;
= Which software packages will we install?=&lt;br /&gt;
&lt;br /&gt;
If you read all the previous section, it explained Linux has a ‘’’source list’’’ of ‘’’repositories’’’ from which it can load software packages.&lt;br /&gt;
&lt;br /&gt;
# Our first task will be to install the appropriate mono repository, if that is not already in our source list&lt;br /&gt;
# Our second task will install a package called ‘’’mono-complete’’’ from the repository we just installed, (this is needed to run software written in the C# languages)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Changing the Source List==&lt;br /&gt;
&lt;br /&gt;
If you type &amp;lt;code&amp;gt;sudo apt search mono-complete&amp;lt;/code&amp;gt;, you will find out whether the package is available from one of the repositories already in our source list.  Each of the parts of that command was explained earlier.&lt;br /&gt;
&lt;br /&gt;
If mono-complete is not available (or only available in an older version incompatible with MX), then we have to add a new repository, and the one to add depends on which kernel we have, so choose the right sub-section below.&lt;br /&gt;
&lt;br /&gt;
===Add the Mono repository for a Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
The two Mono repositories listed here are specific to the 2017 and 2019 releases (respectively) of the operating system for a Raspberry Pi computer.  These are taken from  [https://www.mono-project.com/download/stable/#download-lin-raspbian].&lt;br /&gt;
&lt;br /&gt;
# the first line (in each case) installs a certificate&lt;br /&gt;
# the echo line defines a repository to add to the sources list.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:450px&amp;quot; | Raspberry Operating System 9 (stretch)&lt;br /&gt;
!style=&amp;quot;width:450px&amp;quot; | Raspberry Operating System 10 (buster)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt install apt-transport-https dirmngr gnupg ca-certificates&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
echo &amp;quot;deb https://download.mono-project.com/repo/debian stable-raspbianstretch main&amp;quot; | sudo tee /etc/apt/sources.list.d/mono-official-stable.list&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt install apt-transport-https dirmngr gnupg ca-certificates&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;deb https://download.mono-project.com/repo/debian stable-raspbianbuster main&amp;quot; | sudo tee /etc/apt/sources.list.d/mono-official-stable.list&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Add the Mono repository to Ubuntu, Debian, Fedora==&lt;br /&gt;
&lt;br /&gt;
At time of writing, [https://www.mono-project.com/download/stable/#download-lin-ubuntu], shows the instructions for versions 16, 18, and 20 of Ubuntu.&lt;br /&gt;
&lt;br /&gt;
Equally, [https://www.mono-project.com/download/stable/#download-lin-debian], gives details for debian, and [https://www.mono-project.com/download/stable/#download-lin-fedora] for Fedora.&lt;br /&gt;
&lt;br /&gt;
Others can be found by choosing other tabs on any of those links.&lt;br /&gt;
&lt;br /&gt;
== Installing Mono instruction ==&lt;br /&gt;
&lt;br /&gt;
Now we have the certificate needed, and the repository for mono-complete is added to our source list, we can do the actual install:&lt;br /&gt;
: &amp;lt;code&amp;gt;sudo apt install -y mono-complete&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
The “sudo”, “apt”, “install”, and “-y” have already been explained.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;mono-complete&amp;quot; is the package we want.&lt;br /&gt;
&lt;br /&gt;
:Please note that if you just specify “mono”, you will get ‘’’mono-devel’’’ (the developer edition) that does not include all the components required by each of the Cumulus executables.&lt;br /&gt;
&lt;br /&gt;
Please note that a particular MX build might specify it needs a particular version of Mono.  Hence, although normally you can upgrade a cumulus package without upgrading Mono, sometimes you will need to install Mono again.&lt;br /&gt;
&lt;br /&gt;
The latest release of Mono can always be downloaded from [https://www.mono-project.com/download/stable/#download-lin], follow step 1 there, but in step 2 replace ‘’’mono-devel‘’’ by ‘’’mono-complete’’’&lt;br /&gt;
&lt;br /&gt;
=Cumulus packages=&lt;br /&gt;
&lt;br /&gt;
Note use of plural in section name above, the following sub-sections will install MX and the other packages already mentioned, all by Developer Mark Crossley.&lt;br /&gt;
&lt;br /&gt;
 Our next task is to install the Cumulus software listed on [[Software]] page:&lt;br /&gt;
# &#039;&#039;&#039;CumulusMX’’’, this is written in C# and we download it from [[Software#Latest_build_distribution_download]]&lt;br /&gt;
# [[Software#Create_Missing|&#039;&#039;&#039;CreateMissing.exe&#039;&#039;&#039;]], another C# package (it will populate missing fields or missing lines in log files),  Simple Instructions for using this executable is on the github page where they are found, again linked from &#039;&#039;&#039;Software&#039;&#039;&#039; page in this Wiki.&lt;br /&gt;
#* Using &#039;&#039;&#039;CreateMissing.exe&#039;&#039;&#039; is fully documented at [[Calculate_Missing_Values#CreateMissing.exe]] in this Wiki.&lt;br /&gt;
# Finally, install ‘’’Export (old data) To a Maria (or other MySQL) database server’’’ package downloaded from [[Software#ExportToMySQL]]&lt;br /&gt;
#* &#039;&#039;&#039;ExportToMySQL.exe&#039;&#039;&#039; is not (at the time this was written) documented in this Wiki although [[MX_Administrative_Interface#MySQL_settings]] does describe a similar utility (written by Steve Loft) that was actually included in early MX release downloads.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Where to install all packages?==&lt;br /&gt;
&lt;br /&gt;
*For simplicity on this page EXISTING PATH is used to represent any location in the Linux file structure where you decide to install Cumulus:&lt;br /&gt;
**Some people install it into ‘’’/home/pi/’’’, the default folder for the default user (Pi), because then the default user has full permissions automatically&lt;br /&gt;
**Mark suggests you install into ‘’’/opt/’’’ which is where other additional software is often installed&lt;br /&gt;
* All the Cumulus packages, should be put into a sub-folder called “CumulusMX” (note where capital letters must be used).&lt;br /&gt;
** You can create that folder as you unzip a MX release, or you can type &amp;lt;code&amp;gt;sudo mkdir EXISTING PATH/CumulusMX&amp;lt;/code&amp;gt; first (note that EXISTING PATH is explained above and always starts with a slash “/”).&lt;br /&gt;
** It is best to change permissions for the &amp;quot;CumulusMX&amp;quot; sub-folder, &amp;lt;code&amp;gt;chmod ugo+rwx CumulusMX&amp;lt;/code&amp;gt; will give full rights to the folder, so that &amp;quot;sudo&amp;quot; is not needed to run an executable there, and you can read/update any file in the folder regardless of which user you have logged in.&lt;br /&gt;
*Many with a Raspberry Pi add an external drive to reduce wear on the internal micro-SD card, and so if they have to reload the kernel  (sometimes called “operating system”), they don’t lose their Cumulus packages and data.&lt;br /&gt;
**This is more complicated in that you might have to create linux partitions on this disc, then mount these partitions, and this page is not the place to get too technical&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Alternative download link for older MX releases==&lt;br /&gt;
&lt;br /&gt;
For completeness, you may have discovered (from posts in the [https://cumulus.hosiene.co.uk/viewforum.php?f=40 Cumulus Support Forum] that the current release of MX has a bug that affects an aspect of MX that you intend to use. Remember, it is impossible for the developer to check all the ways in which versatile MX can be used (different weather station types, different computer types, plus a whole host of features, and different external upload sites, that are only used by a sub-set of people).&lt;br /&gt;
&lt;br /&gt;
In such a case, download any earlier build, without the bug, from [https://github.com/cumulusmx/CumulusMX/releases CumulusMX/releases].&lt;br /&gt;
&lt;br /&gt;
You need to ensure that you use the right version of &amp;quot;CreateMissing.exe&amp;quot; and &amp;quot;ExportToMySQL.exe&amp;quot; utilities for the MX release you are running, so if you are using an old MX release, you will need to go directly to the [https://github.com/cumulusmx Cumulus MX github] page, and navigate to the utility of interest, to download an older version of these utilities.&lt;br /&gt;
&lt;br /&gt;
==Handling zip files==&lt;br /&gt;
&lt;br /&gt;
Each release is presented as a zip.&lt;br /&gt;
&lt;br /&gt;
The download and unzip procedure is exactly same on your Linux computer, as it would be on a Windows PC.  So if you have two devices available, you can download on either device, and if it is not the computer you want to install on, you can use a file transfer package to move the files between devices, or use a drive (or even a memory card) with a partition formatted so that you can read it on both devices.  Windows and Linux partitions are formatted in different ways. While it is likely that Linux can read a Microsoft formatted partition, Microsoft Windows can never read a Linux formatted partition.&lt;br /&gt;
&lt;br /&gt;
When your browser saves the zip it might be into a folder called “downloads” on your computer, or you may be able to save into another folder that you prefer (perhaps on a different partition).  Your browser might even remember the folder you used before for files of type zip.&lt;br /&gt;
&lt;br /&gt;
When the download has completed, whatever computer type this is on, mouse click (it might need a right click or a double click depending on settings) on the download file and it should unzip (it may create a folder whose name is taken from the zip file name in the same folder by default, or it may ask you where you want to unzip to).  If you are unable to use a mouse, there should be a keyboard code to use. If you are using a file manager, with a graphical interface, there may be a different way to select the file and unzip it.&lt;br /&gt;
&lt;br /&gt;
==Where to install MX==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier, you can choose where you install your three Cumulus downloads.  It is important to minimise the length of the path name, because this has to be passed between various different software languages (and longer paths risk truncation). Here I use “EXISTING PATH” (the contents of this will start with a slash “/”, but not end with a slash) to represent whatever path you have selected.&lt;br /&gt;
&lt;br /&gt;
It was also mentioned before that you can create the folder to hold the packages in advance using &amp;lt;code&amp;gt;sudo mkdir EXISTING PATH/CumulusMX&amp;lt;/code&amp;gt;, and you can change its permissions using &amp;lt;code&amp;gt;chmod ugo+rwx CumulusMX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Upgrading a Cumulus package==&lt;br /&gt;
&lt;br /&gt;
Upgrading to a new MX release is explained [[Updating_MX_to_new_version|here]], but basically follow instructions above, and install over your existing files.  The alternative is to install in a new folder (or rename the old one), and copy across files not in the release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration Files to copy across from any previous Cumulus installation==&lt;br /&gt;
&lt;br /&gt;
There are two configuration files that are not included in any MX release:&lt;br /&gt;
*[[strings.ini]] (note all lower case) – optional file to customise output&lt;br /&gt;
*[[Cumulus.ini]] (note initial capital, then lower case) – main configuration file&lt;br /&gt;
&lt;br /&gt;
If your old installation was for a relatively recent release, then just copy these files to new installation and optionally skip the next 2 sub-sections.&lt;br /&gt;
&lt;br /&gt;
If you are upgrading from an older release, please read the next 2 sub-sections for advice.&lt;br /&gt;
&lt;br /&gt;
===strings.ini===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is an optional file&#039;&#039;&#039;.  Its [[strings.ini|purpose]] is to allow customisation of some of the outputs from Cumulus. You might want to use customisation to abbreviate (or extend) some outputs, or to change those outputs into another language.&lt;br /&gt;
&lt;br /&gt;
You create a “strings.ini” file by selecting some of the parameters from the [[samplestrings.ini]] file that is included in each MX release, and modifying the value for the listed attributes.  &lt;br /&gt;
&lt;br /&gt;
The sections that appear in &#039;&#039;&#039;samplestrings.ini&#039;&#039;&#039;, and the parameters that appear within a section, changed drastically between Cumulus 1.9.4 and MX.  They may also be change drastically be one MX release and the next.  Therefore, your existing “strings.ini” might need to be modified.&lt;br /&gt;
&lt;br /&gt;
There is no automatic way to check your “strings.ini” file, if MX does not understand any parameter in this file, it ignores it.&lt;br /&gt;
&lt;br /&gt;
Instead, you need to manually check each parameter you have in your “strings.ini” file to see if that parameter is in “samplestring.ini” of your new install. You may also find parameters in “samplestring.ini” that you need to add to your “strings.ini” file.&lt;br /&gt;
&lt;br /&gt;
===Cumulus.ini===&lt;br /&gt;
&lt;br /&gt;
Since release 3.8.0, many people prefer to omit their existing “Cumulus.ini” file when upgrading from an old release, or making an install on a new device. Instead, they work through all the settings manually, so that MX can create a fresh file, with them having confidence every setting reflects their preference.&lt;br /&gt;
&lt;br /&gt;
If you previously used an older release of Cumulus, but in this new installation will be using the latest release (latest is what is normally best, unless it has bugs), you may want to read up on all the changes between your old release and the current release, not just changes that affect the configuration file.&lt;br /&gt;
&lt;br /&gt;
There were significant changes to “Cumulus.ini” when moving from 1.9.4 to 3.0.0, see [[Cumulus_3_(MX)_beta_documentation]] and [[Migrating_from_Cumulus_1_to_MX]] pages. As described [[Updating_MX_to_new_version|on upgrading advice page]] in this Wiki, moving from 1.9.4 to MX is best done gradually upgrading through releases, as a number of Cumulus files (e.g. [[Amending_dayfile#Date_Separator_in_MX|dayfile.txt]]), and any database tables you are using, may also need adjusting as you progress up through releases, and that is best done at correct in-between releases (see individual MX release announcements in support forum). Documentation for the 1.9.4 &#039;&#039;&#039;cumulus.ini&#039;&#039;&#039; file can be found [[Cumulus.ini_(Cumulus_1)|here]] should you need to work on your old legacy file.&lt;br /&gt;
&lt;br /&gt;
See also the note below relating to File Paths in Windows Vs Linux, as you probably need to edit paths if you did not use Linux before.&lt;br /&gt;
&lt;br /&gt;
There were gradual changes to “Cumulus.ini” as releases went from 3.0.0 to 3.7.0, documentation can be found [[Cumulus.ini (MX_3.0.0_to_3.7.0)| here]] where, hopefully, the changes are made clear. &#039;&#039;Within that range of releases, you should continue to use any existing &#039;&#039;&#039;Cumulus.ini&#039;&#039;&#039; file, as you might lose vital &amp;quot;read-only&amp;quot; parameters by starting a new file.&#039;&#039; As mentioned before, the [[Updating_MX_to_new_version|upgrading advice page]] is the best place to seek advice on which releases to upgrade to which, rather than attempting to directly upgrade to latest release.&lt;br /&gt;
&lt;br /&gt;
The documentation for various later MX releases (covering just 3.8.0 to 3.12.0 at the time this paragraph was last updated) can be found at [[Cumulus.ini]]. &#039;&#039;If you previously used Cumulus 1.x.y, or a release before 3.8.0, please note that there have been &#039;&#039;&#039;major changes&#039;&#039;&#039; to the parameters included in the file. You must proceed with caution if you want to use a file created by an older release as it will lack loads of new parameters that are now mandatory in MX&#039;&#039;. However, [[Cumulus.ini|the configuration file page]] does include advice on (while MX is running) you can automatically update, either an existing file, or to create a new file, the described approach will add all the new parameters (although some will not receive valid values, and others might default away from your preferences).  This automatic approach is easy, but you might want to work through settings to change preferences for any new parameters.&lt;br /&gt;
&lt;br /&gt;
==Folders to copy across from previous Cumulus installations==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you have used Cumulus before&#039;&#039;&#039;, you will be seeking to keep your existing ([[:Category:MX txt Files|.txt]] and extremes [[:Category:Ini Files|.ini]]) files. This means you must transfer the whole [[Data folder|/data]] sub-folder from your old installation to your new installation.  If you use decimal commas, you might want to read what it says on [[:Category:Ini Files|this page]].&lt;br /&gt;
&lt;br /&gt;
If your previous Cumulus installation was version 1.9.4, or earlier, then you need to do a lot of reading:&lt;br /&gt;
* [[Amending dayfile]] tells you about how MX is far more fussy about the content in [[dayfile.txt]]&lt;br /&gt;
* [[:Category:Ini Files|.ini files]] explains how time-stamps are formatted differently in the extreme tracking files&lt;br /&gt;
* [[Migrating from Cumulus 1 to MX]] gives some advice about differences in settings, but be aware that the way MX handles settings varies by release, and information on the linked page may be out of date&lt;br /&gt;
&lt;br /&gt;
If you are using the optional “NOAA report” functionality, you must also transfer the whole [[Reports folder|Reports]] sub-folder.&lt;br /&gt;
&lt;br /&gt;
===Line terminators in these files===&lt;br /&gt;
&lt;br /&gt;
If you are moving from Microsoft Windows to Linux, you need to be aware that Microsoft ends each line with two characters (Carriage Return and Line Feed) while Unix/Linux ends each line with a single character (Line Feed). &lt;br /&gt;
&lt;br /&gt;
The kernel in your Linux computer might be able to detect that it is getting Microsoft files, and discard the extra end of line character.&lt;br /&gt;
&lt;br /&gt;
However, if you are reading that file in a script, it might not detect the end of line encoding. So if that script expects “LF” to terminate each line, when the script is reading the final field of each line, the script will find that final field has an unwanted “CR” in it and not recognise it as a numerical value (or time-stamp). Equally, if the script expects “CR” as line terminator, then the first field of the each line (except the first line) starts with a “LF” and the script will not recognise it as a date (or section name). &lt;br /&gt;
&lt;br /&gt;
In each case, any checking for numerical input might fail, and any attempt to check/extract characters from these fields might fail because their position relative to start/end is changed.&lt;br /&gt;
&lt;br /&gt;
If you run your Linux computer in a headless mode, accessing its files by a remote terminal session, be aware that the line terminator used by the remote computer may be applied to files affected by whatever command you do remotely.&lt;br /&gt;
&lt;br /&gt;
===Changing line terminators===&lt;br /&gt;
&lt;br /&gt;
Many editors designed for programmers (they might be described as providing a programming development environment) can change the line ending of every line (either while file is being edited or when file is saved). &lt;br /&gt;
&lt;br /&gt;
‘’’Geany’’’ is a programming development editor provided on some Linux systems including Raspberry Pi, that can do this (&#039;&#039;&#039;Document&#039;&#039;&#039; menu, --&amp;gt;&amp;gt; &#039;&#039;&#039;Select Line Endings&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Notepad++ is another editor available for multiple operating systems (&#039;&#039;&#039;Edit&#039;&#039;&#039; menu --&amp;gt;&amp;gt; &#039;&#039;&#039;EOL conversion&#039;&#039;&#039;).  &lt;br /&gt;
&lt;br /&gt;
Both have capabilities to make such changes on either the single file that has focus, or all loaded files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===File Names &amp;amp; Paths===&lt;br /&gt;
&lt;br /&gt;
Another issue that may be encountered when moving from Windows to Linux is the difference in File Names &amp;amp; Paths.&lt;br /&gt;
Linux file names are Case Sensitive, and the separator is &amp;quot;/&amp;quot; Vs &amp;quot;\&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This could be applicable if you are using Extra Web files.&lt;br /&gt;
&lt;br /&gt;
So if the ini file reads &lt;br /&gt;
Web\extrapageT.htm in Windows,&lt;br /&gt;
it must be changed to read web/extrapageT.htm in Linux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Running MX on Linux=&lt;br /&gt;
&lt;br /&gt;
This section explores the optional parameters, and then covers 2 ways to run MX:&lt;br /&gt;
# as a service and &lt;br /&gt;
#directly with terminal window left open.&lt;br /&gt;
&lt;br /&gt;
== Optional parameters to add to the instruction to run the MX engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: LemonChiffon;padding:5px; margin:2px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Crystal Clear info.png|40px]] This section does not cover all optional parameters and needs a contributor to update it!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beta builds of MX ===&lt;br /&gt;
&lt;br /&gt;
The following two parameters cannot be used with MX since it came out of 3.0.0 beta.&lt;br /&gt;
&lt;br /&gt;
==== web sockets ====&lt;br /&gt;
&lt;br /&gt;
Beta builds in MX version 3.0.0 had an optional parameter &amp;lt;code&amp;gt;sudo mono CumulusMX.exe -wsport nnnn&amp;lt;/code&amp;gt; that determined which port (represented by a 4 digit number &#039;&#039;nnnn&#039;&#039;) was used for &#039;&#039;&#039;Web Sockets&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
You can omit the &amp;quot;sudo&amp;quot; if you have done the recommended &amp;quot;chmod&amp;quot; described earlier on the folder containing the executable.&lt;br /&gt;
&lt;br /&gt;
That parameter is now deprecated as Web Sockets in all builds since 3045 uses the same port as the rest of the [[MX_Administrative_Interface#The_API_interface|Admin Interface]], see Port parameter below. &lt;br /&gt;
&lt;br /&gt;
==== Debugging of data flow between station and MX====&lt;br /&gt;
&lt;br /&gt;
Use &#039;&#039;&#039;sudo mono CumulusMX.exe -Logging=1&#039;&#039;&#039; (for the station to MX transfers to have increased debugging logging). &lt;br /&gt;
&lt;br /&gt;
Note use of this parameter is now deprecated.&lt;br /&gt;
&lt;br /&gt;
Although this is not mentioned in any release announcements, it appears that on all recent MX releases this effect is incorporated into the &#039;&#039;&#039;-debug&#039;&#039;&#039; parameter.  Perhaps someone could confirm whether this is true.&lt;br /&gt;
&lt;br /&gt;
=== Parameter for changing Port ===&lt;br /&gt;
&lt;br /&gt;
When Cumulus starts, it will display the URL of the user interface. It runs on port 8998 by default; if this is not suitable for some reason you can over-ride it using the &#039;-port&#039; parameter on the command line, e.g. to use port 9999 instead:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo mono CumulusMX.exe -port 9999&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can omit the &amp;quot;sudo&amp;quot; if you have done the recommended &amp;quot;chmod&amp;quot; described earlier on the folder containing the executable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parameter for adding debugging ===&lt;br /&gt;
&lt;br /&gt;
MX has a default level of logging that stores in the [[MXdiags_folder]] folder a log file that shows some of the interaction with the weather station and some of the output actions done as MX runs. A new log is started each time MX is restarted.&lt;br /&gt;
&lt;br /&gt;
If there is a problem, then there is a great benefit in actually increasing the level of detail in these logs; and that is done either within the settings (on recent MX releases this is on &#039;&#039;&#039;Program Settings&#039;&#039;&#039; page of admin interface - please see [[MXdiags_folder]] page for details) or by adding a parameter:  &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo mono CumulusMX.exe -debug&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can omit the &amp;quot;sudo&amp;quot; if you have done the recommended &amp;quot;chmod&amp;quot; described earlier on the folder containing the executable.&lt;br /&gt;
&lt;br /&gt;
Since this parameter is applied when you start MX, it applies all the time MX continues to run. Obviously this log file continues to grow, the longer MX is left running, and if debugging is switched on the file will grow in size must faster. Consequently, the default is not to add the extra debugging information and the settings can be used to switch it off again if you do have it switched on.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parameter for changing Locale ===&lt;br /&gt;
&lt;br /&gt;
On Linux and (in particular) OS X, Cumulus MX may not be given the correct locale to use, and you may get the default US locale even if that is not your locale. It will output the local it is using when it starts; if it is not correct, close it down and start it again, this time specifying your locale on the command line, using the -lang parameter . For example, in the UK, on a non-Windows device type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mono CumulusMX.exe -lang en-GB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can omit the &amp;quot;sudo&amp;quot; if you have done the recommended &amp;quot;chmod&amp;quot; described earlier on the folder containing the executable.&lt;br /&gt;
&lt;br /&gt;
Other local examples:  &#039;&#039;&#039;CumulusMX.exe Current culture: English (United States)&#039;&#039;&#039;, &#039;&#039;&#039;CumulusMX.exe -lang de-DE&#039;&#039;&#039;,  &#039;&#039;&#039;CumulusMX.exe -lang el-GR&#039;&#039;&#039; (this is one of the locales that reads numbers with &#039;&#039;&#039;integer,decimal&#039;&#039;&#039; format), &#039;&#039;&#039;CumulusMX.exe -lang nl-NL&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are not sure what value you need to supply for the -lang parameter, there is a list here - http://msdn.microsoft.com/en-gb/library/ee825488%28v=cs.20%29.aspx. You need to supply the code in the first column (&amp;quot;Language Culture Name&amp;quot;) in that list. &lt;br /&gt;
&lt;br /&gt;
Note that this does not affect the language used by Cumulus MX (although it may in the future), it affects the decimal separator and the list separator.&lt;br /&gt;
&lt;br /&gt;
Note that you &#039;&#039;may&#039;&#039; need to supply your administrator password after typing the &#039;sudo ...&#039; command line. The system will prompt you for this if it is needed.&lt;br /&gt;
&lt;br /&gt;
=== Parameter for running as service ===&lt;br /&gt;
&lt;br /&gt;
Use of this is explained next.  The parameter syntax is &amp;lt;code&amp;gt;sudo mono CumulusMX.exe -service&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up as a service ==&lt;br /&gt;
&lt;br /&gt;
If you have installed MX release 3.8.0 or later, you can set up MX to run as a service.&lt;br /&gt;
&lt;br /&gt;
Original way (more information at [https://cumulus.hosiene.co.uk/viewtopic.php?p=145048#p145048 this release announcement]):&lt;br /&gt;
# Ensure you are in the folder containing CumulusMX.exe&lt;br /&gt;
# Type &amp;lt;code&amp;gt; mono-service -l:/var/run/cmx.pid CumulusMX.exe -service&amp;lt;/code&amp;gt;&lt;br /&gt;
# (to verify) note this does not allow you to add -port, -debug, -locale parameters&lt;br /&gt;
&lt;br /&gt;
A better way (see [https://cumulus.hosiene.co.uk/viewtopic.php?p=146473#p146473 this later release announcement]:&lt;br /&gt;
#There is a task to do just once to configure the service&lt;br /&gt;
#Find the &#039;&#039;&#039;EXISTING PATH/CumulusMX/MXutils/linux/&#039;&#039;&#039; sub-folder, that might be in home directory and therefore found using &amp;quot;~/CumulusMX/MXutils/linux&amp;quot; as explained elsewhere on this page&lt;br /&gt;
#* At time of typing this, the sub-folder only contains one file, the one we need to edit&lt;br /&gt;
# As described later there is a choice of editors, but you can use &amp;lt;code&amp;gt;sudo nano cumulusmx.service&amp;lt;/code&amp;gt; to edit the service configuration file&lt;br /&gt;
# Look for &#039;&#039;&#039;ExecStart=/usr/bin/mono-service -d:&#039;&#039;&#039;&lt;br /&gt;
#* Replace the path that follows the above text with the path to your CumulusMX.exe, add the &#039;&#039;&#039;-service&#039;&#039;&#039; and optionally add any other parameter (e.g. &#039;&#039;&#039;-debug&#039;&#039;&#039;, -locale, -port) as described in sub-sections above.&lt;br /&gt;
#save file&lt;br /&gt;
#now copy file &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo cp EXISTING_PATH/CumulusMX/MXutils/linux/cumulusmx.service /etc/systemd/system/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you upgrade to a new release, the file in EXISTING PATH will be overwritten, but the critical file in &amp;quot;/etc/sytemd/system&amp;quot; will not be affected.&lt;br /&gt;
&lt;br /&gt;
==Running as a service==&lt;br /&gt;
&lt;br /&gt;
If you want MX to automatically start when your Linux computer is booted, just type &amp;lt;code&amp;gt;sudo systemctl enable cumulusmx&amp;lt;/code&amp;gt; once, and it will be activated on each reboot.&lt;br /&gt;
&lt;br /&gt;
To manually start MX as a service, (such as after any MX upgrade to a new release, or when you want to first run it), simply type &amp;lt;code&amp;gt;sudo systemctl start cumulusmx&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;systemctl status cumulusmx.service&amp;lt;/code&amp;gt; in a terminal session to see status of Cumulus service&lt;br /&gt;
&lt;br /&gt;
The full set of commands is at [[Raspberry_Pi_Image#systemctl_commands|systemctl_commands]]&lt;br /&gt;
&lt;br /&gt;
== Running with a terminal session left open ==&lt;br /&gt;
&lt;br /&gt;
This is alternative to the running as service as described above.&lt;br /&gt;
&lt;br /&gt;
Whichever operating system you are using, to run MX requires an instruction that changes to the directory (EXISTING PATH) where it is installed (the instruction below is assuming it is in the standard Pi user home directory, the change directory command will be different if you have installed it elsewhere), and then starting the executable (using mono in the instruction below that applies to any non-Windows operating system). You may wish to add [[Cumulus_MX#Optional_parameters_to_add_to_the_instruction_to_run_the_MX_engine|Optional_parameters]].&lt;br /&gt;
&lt;br /&gt;
The simplest instruction to run Cumulus MX  is &amp;lt;code&amp;gt;cd EXISTING PATH/CumulusMX &amp;amp;&amp;amp; sudo mono CumulusMX.exe&amp;lt;/code&amp;gt;.  Just in case it is not obvious .... if you start MX using this command in a terminal window on your Pi, you must leave that session running, then MX will continue to run. &lt;br /&gt;
&lt;br /&gt;
You can start it off directly on your Pi, and then&lt;br /&gt;
*optionally disconnect the keyboard, &lt;br /&gt;
*switch off monitor or TV attached to your Pi, &lt;br /&gt;
*Just ensure you leave Pi on (with that window minimised) so that terminal session continues running.&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;&#039;&#039;&#039;ps -ef | grep -i cumulus | grep -v grep&#039;&#039;&#039;&amp;lt;/code&amp;gt; to see if Cumulus is running or not.&lt;br /&gt;
&lt;br /&gt;
= Operating a web site with uploads from MX engine =&lt;br /&gt;
&lt;br /&gt;
== The standard web pages ==&lt;br /&gt;
&lt;br /&gt;
=== From release 3.10.1 ===&lt;br /&gt;
&lt;br /&gt;
The web pages are a one-off upload from &#039;&#039;&#039;CumulusMX/webfiles&#039;&#039;&#039;.  The data to be shown on these web pages are uploaded from [[:Category:JSON_Files|.json]] files in the [[web_folder]].&lt;br /&gt;
&lt;br /&gt;
Please read [[New_Default_Web_Site_Information|this page]] for more information about styling options and other details.&lt;br /&gt;
&lt;br /&gt;
=== Until release 3.9.7 ===&lt;br /&gt;
&lt;br /&gt;
The styling and library files were a one-off upload from &#039;&#039;&#039;CumulusMX/webfiles&#039;&#039;&#039;. These release use [[Cumulus_template_file|template files]], these are [[Customised_templates#What_is_meant_by_.27Cumulus_processes_templates.27|processed by MX to add the variable data]], and this will create web pages that are uploaded to your web site.&lt;br /&gt;
&lt;br /&gt;
Please read [[Customised_templates]] for further information about the various pages provided, and how you can customise them to suit you. &lt;br /&gt;
 &lt;br /&gt;
=== Comparison with legacy Cumulus 1 web pages ===&lt;br /&gt;
&lt;br /&gt;
* Note that the MX web files are not the same as the ones for Cumulus 1, &lt;br /&gt;
** so if moving from Cumulus 1 to MX, delete all your Cumulus 1 files from the &amp;quot;web&amp;quot; and &amp;quot;webfiles&amp;quot; sub-folders, and all files from your web server; then upload files from the new &amp;quot;webfiles&amp;quot; folder. &lt;br /&gt;
* The standard gauges are now the SteelSeries gauges. The default gauges page does not display a graph when you hover over a gauge (as happened when you added the stand-alone Steel Series gauges to Cumulus 1).&lt;br /&gt;
* The trends web page in Cumulus 1 relied on that software generating graphs as images. &lt;br /&gt;
** In MX, the software generates files with time and value pairs, these are stored in json format, the trends page then uses a library package (Highstocks) to draw graphs from those data pairs.&lt;br /&gt;
&lt;br /&gt;
== Alternative ways to obtain web pages ==&lt;br /&gt;
&lt;br /&gt;
You can choose to use some of the alternative web pages available from third parties and described [[:Category:User Contributions|on User Contributions page]].&lt;br /&gt;
&lt;br /&gt;
== Using your own web pages ==&lt;br /&gt;
&lt;br /&gt;
* Of course you can use your own web pages, instead of the standard ones. Assuming they need to include figures that are available as web tags, there are three alternative ways to implement this:&lt;br /&gt;
*# MX can process template files with a HTML structure and those web tags in the structure where values are required just as it does with the standard templates, and MX can upload the resulting web pages  at either the real-time interval, the standard interval, or after end of day. All of this is covered on the [[Customised_templates|Customised templates]] page in this Wiki.&lt;br /&gt;
*# MX can process a file with a string of web tags mirroring the realtime.txt option in MX, and upload the resulting file so your web pages can use JavaScript for a one-off insert of the values or an Ajax routine to update the web page at a fixed interval.&lt;br /&gt;
*# Alternatively, you can use template scripts processed locally by MX that don&#039;t create web pages, but are uploaded by MX at either the real-time interval, the standard interval, or after end of day. These scripts simply initialise script variables with values obtained from web tags. You then independently have a set of web pages resident only on your web server (they don&#039;t exist where you run MX) using a combination of HTML and script content that bring in the script(s) with the variables by the appropriate syntax. All of this is covered on the [[Php_webtags|PHP web tags]] page in this wiki. As it suggests there, you might therefore have several files processed by Cumulus MX at these different intervals, converting the web tags into script variables, and then use AJAX (JavaScript that may use json format to bring in the variables) or PHP (using &amp;lt;tt&amp;gt;&#039;require_once &#039;filename&#039;;&amp;lt;/tt&amp;gt; syntax) to put those variables into a web page.&lt;br /&gt;
&lt;br /&gt;
You may find [[PHP|this wiki page]] useful for understanding more about the different script languages.&lt;br /&gt;
&lt;br /&gt;
=That is enough folks=&lt;br /&gt;
&lt;br /&gt;
If you have read up to here, you now know the basics for using MX on Linux.&lt;br /&gt;
&lt;br /&gt;
The remaining sections are more technical and so you can skip them.&lt;br /&gt;
&lt;br /&gt;
=Technical Extra=&lt;br /&gt;
&lt;br /&gt;
PLEASE SKIP ALL SUBSEQUENT SUB-SECTIONS IF YOU WANT TO AVOID TECHNICAL EXPLANATIONS.&lt;br /&gt;
&lt;br /&gt;
== A very quick introduction to Linux ==&lt;br /&gt;
&lt;br /&gt;
This article is not the place to teach you Linux, you can find books and on-line articles for yourself, but I list here enough for you to understand the instructions used elsewhere in this article.&lt;br /&gt;
&lt;br /&gt;
If you have a Raspberry Pi with a monitor attached, you will see a raspberry icon that you can click to get Graphical User Interface access to many features, including shutdown options.&lt;br /&gt;
&lt;br /&gt;
=== su and sudo ===&lt;br /&gt;
&lt;br /&gt;
There is a command &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; that allows a terminal session to become a super user session with root privileges. If you use that command, without a &#039;&#039;&#039;sudo&#039;&#039;&#039; command in front, you need to type in the password (we changed earlier) when prompted.  if you type &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt;, then you get root privileges without being asked to quote password. All subsequent lines in this terminal session will have a prompt that reminds you that you have root access and do not need to prefix subsequent commands with &amp;quot;sudo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Normally, all terminal sessions will use the default &amp;quot;pi&amp;quot; user, and for individual commands, you will use a &amp;quot;sudo&amp;quot; prefix each time that command needs administrative rights, as this allows a standard Pi user to do tasks that otherwise only work for the root user.&lt;br /&gt;
&lt;br /&gt;
You might use a &amp;quot;sudo&amp;quot; prefix if you need to access a part of the file structure that your user does not have any access to, or where the standard user does not have write (or execute) access. &lt;br /&gt;
&lt;br /&gt;
There are also some commands (like displaying mounted storage) that are not available to a standard user. Here are 3 system commands that in terminal mode will only ever work with this prefix (although if you have installed the version of the Raspberry Pi Operating System that supports a graphical user interface you can also select these actions from a menu):&lt;br /&gt;
*&#039;&#039;&#039;sudo halt&#039;&#039;&#039; = stops any cpu functions, but leaves Pi running; used when you have reached the end of commands you want to do for now&lt;br /&gt;
*&#039;&#039;&#039;sudo poweroff&#039;&#039;&#039; = makes pi do a tidy shutdown and turn off its power; used when you will not be using your Pi for a while&lt;br /&gt;
*&#039;&#039;&#039;sudo reboot&#039;&#039;&#039; (or &amp;quot;sudo reboot -verbose&amp;quot; for diagnostic output during shutdown and reboot) = makes your Pi close down and then reboot; used when you change settings, and after you install new software, to ensure Pi starts with all applications running using the latest settings and latest already installed software&lt;br /&gt;
&lt;br /&gt;
=== ~ and / ===&lt;br /&gt;
&lt;br /&gt;
The tilde symbol &#039;&#039;&#039;~&#039;&#039;&#039; denotes the home directory for the current user.  Sub-directories within the current user&#039;s folder can be identified by &#039;&#039;&#039;~/documents&#039;&#039;&#039; or similar notation. &lt;br /&gt;
&lt;br /&gt;
To reference a folder in root or any other area, the prefix is always &#039;&#039;&#039;/&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are using the RPi OS GUI, it provides a file manager that displays folders and files, and if you have a mouse you can click on an object to see what actions are available.  The file manager has &amp;quot;Home&amp;quot; and &amp;quot;Root&amp;quot; as bookmarks by default, you can bookmark others.  Typically, any new partitions created can also be accessed from bookmarks.  Depending on options you select, there may be icons on the GUI desktop to link to particular folders and clicking on these offers various options including opening them in file manager.&lt;br /&gt;
&lt;br /&gt;
In a terminal environment, to see what files and folders are in the current directory, type &amp;lt;code&amp;gt;dir&amp;lt;/code&amp;gt; for just names or &amp;lt;code&amp;gt;ls&amp;lt;/code&amp;gt; for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== folder commands ===&lt;br /&gt;
&lt;br /&gt;
To make a new folder in the current directory, type &amp;lt;code&amp;gt;sudo mkdir folder_name&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To remove a folder, that has no files in it, type in a particular path, type &amp;lt;code&amp;gt;sudo rmdir /path/directory&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To remove a folder that does have files, and/or sub-folders within it, type tt&amp;gt;sudo rm -r /path/directory&amp;lt;/code&amp;gt;, but remember the contents are gone for ever, so be absolutely sure you have specified the right folder! &lt;br /&gt;
&lt;br /&gt;
To copy folders/files from one directory to another use something like &amp;lt;code&amp;gt;cp -R --update --preserve /home/pi/CumulusMX/backup/daily /media/pi/data/CumulusMX/archive&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sometimes, you have a folder or file in just one place in the file system, but want to be able to access it at a different place (because something expects it in the second place), the syntax is &amp;lt;code&amp;gt;ln -s /path/elsewhere path/pointer_location&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
An example might be &#039;&#039;&#039;ln -s /var/lib/phpliteadmin/diary.db ~/CumulusMX/data/diary.db&#039;&#039;&#039; (phplite admin can only update databases in one folder /var/lib/phpliteadmin, or in older releases in /usr/share/phpliteadmin; while MX expects the file to be in its data folder but is happy with a logical pointer to another folder).&lt;br /&gt;
&lt;br /&gt;
=== chmod ===&lt;br /&gt;
&lt;br /&gt;
When you are attempting any of the actions listed in this article that involve reading, creating, editing, exeduting, or moving, files; you might see an error message generally because of a lack of write (or execute) permissions on an existing file or folder.   Whilst &amp;lt;code&amp;gt;rm filename&amp;lt;/code&amp;gt; will remove a file even if it is write protected, for nano you need to change the file permissions with &amp;lt;code&amp;gt;sudo chmod -R ugo+rw ~/CumulusMX&amp;lt;/code&amp;gt; for modify access to all files in your Cumulus installation (see the syntax below if you want to restrict access).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;chmod&#039;&#039;&#039; command to modify permissions&lt;br /&gt;
* the &#039;&#039;&#039;-R&#039;&#039;&#039; indicates recursive action (i.e. including not just the named folder, but all files within it and all sub-folders, and all files within sub-folders)&lt;br /&gt;
*letters indicating whose permission is being modified&lt;br /&gt;
** &#039;&#039;&#039;u&#039;&#039;&#039; = Owning user (sometimes the owner is the user root, sometimes the owner is the user Pi, for our web pages later we change ownership)&lt;br /&gt;
** &#039;&#039;&#039;g&#039;&#039;&#039; = Group (by default the owning user is also a group, but a group can be defined if you want to give multiple users (with different passwords) the same rights of access)&lt;br /&gt;
** &#039;&#039;&#039;o&#039;&#039;&#039; = Other users (write permission here is needed if for example you are using FTP to move a file from a PC to your Pi, or vice versa)&lt;br /&gt;
* sign for add or remove permissions&lt;br /&gt;
* &#039;&#039;&#039;+&#039;&#039;&#039; = add permission&lt;br /&gt;
* &#039;&#039;&#039;-&#039;&#039;&#039; = remove permission&lt;br /&gt;
*letters indicating what permission is being changed&lt;br /&gt;
** &#039;&#039;&#039;r&#039;&#039;&#039; = read [4]&lt;br /&gt;
** &#039;&#039;&#039;w&#039;&#039;&#039; = write [2]&lt;br /&gt;
** &#039;&#039;&#039;x&#039;&#039;&#039; = execute [1]&lt;br /&gt;
&lt;br /&gt;
Note that as an alternative shorter syntax you can use numbers e.g. &#039;&#039;&#039;666&#039;&#039;&#039; is equivalent to &#039;&#039;&#039;ugo+rw&#039;&#039;&#039;. The first digit in the number relates to &#039;&#039;u&#039;&#039;, the second to &#039;&#039;g&#039;&#039; and the last to &#039;&#039;o&#039;&#039;. The values in [] brackets in list of permissions above are added to derive each digit.  So if you are reading the Cumulus support forum and you see a reference to permissions which includes a string of 3 digits, now you can understand what is meant.&lt;br /&gt;
&lt;br /&gt;
=== editing files ===&lt;br /&gt;
&lt;br /&gt;
*Do remember that file names are case sensitive.&lt;br /&gt;
*If you use the wrong case in a path/file name, it will be treated as a different &amp;quot;new&amp;quot; file.&lt;br /&gt;
*If a file editor does not display content you were expecting, look in case &amp;quot;new file&amp;quot; message appears because you have made a typo in the path/file name.&lt;br /&gt;
&lt;br /&gt;
There are various text editors available on a Pi, &lt;br /&gt;
*if you have a mouse and click on a file, you should see &amp;quot;text editor&amp;quot; listed, that loads &#039;&#039;&#039;Mousepad&#039;&#039;&#039; which has a menubar at the top of its &amp;quot;Windows&amp;quot; like interface.&lt;br /&gt;
*in terminal mode &#039;&#039;&#039;nano&#039;&#039;&#039; is a text editor that by default lists the actions available making it easier for a novice to use. &lt;br /&gt;
*in both the GUI and terminal mode, Geary is a programmer&#039;s editor with lots of useful funtionality&lt;br /&gt;
&lt;br /&gt;
All editors can create a file when a file does not exist and edit (subject to file permissions) an existing file. Use prefix of &#039;sudo&#039; to give you access to any file irrespective of ownership, &#039;&#039;&#039;sudo&#039;&#039;&#039; does not change the actual file permissions, so you might find you can read a file, but not save it after you have done your edit.  &lt;br /&gt;
&lt;br /&gt;
====nano====&lt;br /&gt;
&lt;br /&gt;
The full syntax is &amp;lt;code&amp;gt;sudo nano -B Path_file_name&amp;lt;/code&amp;gt; where the &#039;&#039;&#039;-B&#039;&#039;&#039; means it will create a backup of how the file was before (this can be enabled while in the editor by pressing the control key down and typing B). Alternatively use &#039;&#039;&#039;-C&#039;&#039;&#039; which stores each version in a back-up directory.  If you want to edit from a particular line and column you can use &#039;&#039;&#039;+line.column&#039;&#039;&#039;, and also optionally use &#039;&#039;&#039;-l&#039;&#039;&#039; (lower-case &amp;quot;L&amp;quot;) to display line numbers which might be useful when trying to correct a problem with a log file like [[dayfile.txt]].  If you don&#039;t specify a file name, then nano will create a new file and you will need to specify where to save it before exit.&lt;br /&gt;
&lt;br /&gt;
After typing the nano command you need to specify a filename (it might include a path, see earlier sub-section for use of &#039;&#039;&#039;/&#039;&#039;&#039; and &#039;&#039;&#039;~&#039;&#039;&#039;) and there are examples later in this article, but if you decide to &#039;&#039;host a web site on your Pi&#039;&#039; then you might want to edit its home page with (.html or .php) name like &amp;lt;code&amp;gt;sudo nano /var/www/html/index.php&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
After you have made an alteration to the current contents of the file, various options are shown at the bottom. Here are two key ones:&lt;br /&gt;
*First is &#039;&#039;&#039;^O&#039;&#039;&#039; which is used to save the file whilst staying in the editor, to do this press the control key down and type O. Next it shows the current file name, if you press &#039;&#039;&#039;Enter&#039;&#039;&#039; then that file will be overwritten.&lt;br /&gt;
**it allows you to type over the file name shown. If you choose to save as another file, you will be asked if the new name is correct (type &#039;&#039;&#039;Y&#039;&#039;&#039; to continue saving).&lt;br /&gt;
*Another is &#039;&#039;&#039;^X&#039;&#039;&#039; which means if you press the control key down and type X you get the exit dialogue. If you have not made any edits, or have already saved the file, this just exits the editor. If you have not used control and O to save the file, it asks whether you want to save the edited file (type &#039;&#039;&#039;Y&#039;&#039;&#039;), typing just the Y key lets save continue (any other key stroke exits without saving), then it shows the current file name, if you press &#039;&#039;&#039;Enter&#039;&#039;&#039; then that file will be overwritten.&lt;br /&gt;
&lt;br /&gt;
You might find it useful to type &amp;lt;code&amp;gt;sudo nano /etc/nanorc&amp;lt;/code&amp;gt; as this puts you into the configuration file for nano where you can set back-up, line-numbering, and other options.&lt;br /&gt;
&lt;br /&gt;
====Geany====&lt;br /&gt;
&lt;br /&gt;
This uses a GUI, you can set preferences and do all other actions using either menu selections (use mouse or keyboard) or control sequences (on keyboard).  Once it knows what type of programming language, it can colour up the code; it can show you how many times variable identifiers are used; it can match opening and closing quotes, tags, and brackets; and it can ensure encoding and line terminators are correct.&lt;br /&gt;
&lt;br /&gt;
Line-numbering is an option, so it can be used to edit MX log files, and (as BOM is an encoding option) you can be sure it won&#039;t add unwanted encoding.&lt;br /&gt;
&lt;br /&gt;
== removing an unwanted file ==&lt;br /&gt;
&lt;br /&gt;
You can remove a file with various commands, including &amp;lt;code&amp;gt;sudo rm filename&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== external storage ===&lt;br /&gt;
&lt;br /&gt;
Generally, if you attach USB storage (a disc or a stick), Linux OS distributions will detect any existing partitions (yes a technical term) and allow you to read files stored in them. This applies whether the partition is formatted for Linux or for Microsoft Windows.&lt;br /&gt;
&lt;br /&gt;
However, you may have a brand new, unformatted, drive, or you may want to delete, or add partitions, or to format them as Linux partitions (as these make the input/output significantly more efficient).&lt;br /&gt;
&lt;br /&gt;
You can install software that uses a GUI to make this easy, e.g. &#039;&#039;&#039;gparted&#039;&#039;&#039; [https://gparted.org/ partition editor].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use a terminal session, and lots of commands:&lt;br /&gt;
#connect your external storage&lt;br /&gt;
#type &#039;&#039;&#039;su&#039;&#039;&#039; to gain administrative access&lt;br /&gt;
#enter your RPi password&lt;br /&gt;
#type &#039;&#039;&#039;fdisk -l&#039;&#039;&#039; (this is only available to root user) to see names for all storage your Linux computer can see&lt;br /&gt;
#an external drive will be named something like &#039;&#039;/dev/sd&#039;&#039;&#039;&#039;a&#039;&#039;&#039;&#039;&#039; although that &amp;quot;a&amp;quot; might be &amp;quot;b&amp;quot; or a subsequent letter in alphabet depending on what has already been assigned&lt;br /&gt;
# if &amp;quot;sda&amp;quot; and &amp;quot;sdb&amp;quot; appear, or any others up to &amp;quot;sdz&amp;quot;, the last one will relate to the most recently connected storage&lt;br /&gt;
#if your drive has partitions, then you will see further entries like &#039;&#039;&#039;/dev/sda1&#039;&#039;&#039; and &#039;&#039;/dev/sda2&#039;&#039;.&lt;br /&gt;
#type &#039;&#039;&#039;df&#039;&#039;&#039; to see whether your drive is currently mounted (being used by computer system)&lt;br /&gt;
#if it is mounted, the command to use next is (type this accurately, there is a temptation to type an English word that adds an extra &amp;quot;n&amp;quot;!) &amp;lt;code&amp;gt;umount /dev/sda&amp;lt;/code&amp;gt;, obviously replace the &amp;quot;a&amp;quot; by the appropriate letter seen in the earlier command&lt;br /&gt;
#if the drive does not have a partition, create one using &amp;lt;code&amp;gt;fdisk /dev/sda&amp;lt;/code&amp;gt;, again changing the &amp;quot;a&amp;quot; into whatever letter was seen in response to the first &amp;quot;fdisk&amp;quot; command&lt;br /&gt;
#*&amp;quot;fdisk&amp;quot; is a utility, it will wait for further instructions, follow each with pressing &amp;quot;Enter&amp;quot;&lt;br /&gt;
#*type &#039;&#039;&#039;n&#039;&#039;&#039; as instruction to create a new partition&lt;br /&gt;
#*type &#039;&#039;&#039;p&#039;&#039;&#039; to make this the primary partition on this drive&lt;br /&gt;
#* type &#039;&#039;&#039;1&#039;&#039;&#039; to make this the first partition&lt;br /&gt;
#*accept default offered for first cylinder&lt;br /&gt;
#*accept default offered for last cylinder, if this is only partition, as that ensures the whole disk (apart from partition table) is available for your data&lt;br /&gt;
#*for simplicity, this guidance will not cover the possibility of multiple partitions&lt;br /&gt;
#*type &#039;&#039;&#039;t&#039;&#039;&#039; to say you are specifying the way you want this partition to be specified in partition table&lt;br /&gt;
#*optionally type &#039;&#039;&#039;L&#039;&#039;&#039; to see what file system types are available for the partition table&lt;br /&gt;
#*to select a &amp;quot;Linux&amp;quot; partition, type &#039;&#039;&#039;83&#039;&#039;&#039;&lt;br /&gt;
#*type &#039;&#039;&#039;w&#039;&#039;&#039; to create the partition you have now specified for Linux.&lt;br /&gt;
#Now we have a partition table and a partition on our drive, we can repeat &#039;&#039;&#039;fdisk -l&#039;&#039;&#039; to see the entry now added, it might be &#039;&#039;&#039;/dev/sda1&#039;&#039;&#039;, where again the &amp;quot;a&amp;quot; might be a different letter&lt;br /&gt;
#To format this partition for Linux, we specify &amp;quot;ext4&amp;quot; as the way to format it using &amp;lt;code&amp;gt;mkfs.ext4 /dev/sda1&amp;lt;/code&amp;gt;, again replacing the &amp;quot;a&amp;quot; as required.&lt;br /&gt;
#we need to create a folder within &lt;br /&gt;
#*&amp;quot;/media&amp;quot; for Linux in general&lt;br /&gt;
#*&amp;quot;/media/pi&amp;quot; for Raspberry PI OS&lt;br /&gt;
# As we will learn later, the relevant command (in RPi OS) is &#039;&#039;&#039;mkdir /media/pi/my_short_name&#039;&#039;&#039;, where &amp;quot;my_short_name&amp;quot; is selected by you&lt;br /&gt;
#To mount our partition, we type &amp;lt;code&amp;gt;mount /dev/sda1 /media/pi/my_short_name&amp;lt;/code&amp;gt;, where &amp;quot;sda1&amp;quot; is replaced by &amp;quot;sdb1&amp;quot; or whatever we saw in &#039;&#039;&#039;fdisk -l&#039;&#039;&#039;, and &amp;quot;pi/my_short_name&amp;quot; is replaced by whatever we used in our make directory command.&lt;br /&gt;
#To (optionally) get our partition mounted at boot, we can use an editor (see later) to change the boot instructions, by typing &amp;lt;code&amp;gt;nano /etx/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
#*In the editor, use the down arrow on your keyboard to move to last line, and then type &#039;&#039;&#039;/dev/sda1&#039;&#039;&#039; (change the &amp;quot;a&amp;quot; as necessary), then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;/media/pi/my_short_name&#039;&#039;&#039; (change &amp;quot;pi/my_short_name&amp;quot; to whatever we used in our make directory command), then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;ext4&#039;&#039;&#039; (again matching the format type we  selected earlier), then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;defaults&#039;&#039;&#039;, then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;1&#039;&#039;&#039;, then press &amp;quot;tab&amp;quot;, then finally type &#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
#*save the file (as described later in nano sub-section), hold down control key and press &#039;&#039;&#039;o&#039;&#039; letter key. Press &amp;quot;enter&amp;quot; again to confirm same file name.&lt;br /&gt;
#* exit nano by holding control key and pressing &amp;quot;x&amp;quot; key.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Package Manager – a brief technical aside==&lt;br /&gt;
&lt;br /&gt;
Linux operating systems install software by looking in repositories, and checking a register showing dependencies.  When you ask Linux to install a particular package using “apt”, it also checks if all dependencies of the selected package are already present, and installs any that are missing.&lt;br /&gt;
&lt;br /&gt;
If you look up on-line how to install any software in Linux, it may use “apt-get”, that is an earlier package manager, in general you can use “apt” instead now. &lt;br /&gt;
&lt;br /&gt;
The full differences between “apt” and “apt-get” depends on your Linux flavour, so this technical aside now splits further discussion by Linux flavour.&lt;br /&gt;
&lt;br /&gt;
===Debian as used by Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
“Debian Linux” (and its derivatives such as “Raspberry Pi Operating System”) uses “apt” to mean a ‘’’Package Manager’’’ that can install, update, and remove packages from these computer systems. &lt;br /&gt;
&lt;br /&gt;
For Debian Linux, “apt” is directed at the end-user (it has user friendly features like a staus bar showing progress on a long install or long upgrade, and can produce prompts about what it is doing and can give choices about whether to do individual actions). &lt;br /&gt;
&lt;br /&gt;
There is an alternative “apt-get” which is more powerful, but directed at system level users (those who don’t want to be watching progress and possibly responding to prompts). &lt;br /&gt;
&lt;br /&gt;
As “apt-get” is updated less frequently than “apt”, it may be it will not work with new packages. Put another way “apt-get” may never change what it can do, but “apt” may get modified to do more than it did before.&lt;br /&gt;
&lt;br /&gt;
===Ubuntu===&lt;br /&gt;
&lt;br /&gt;
For Ubuntu only “apt-get” was available up to 2014, when “apt” was added. Both work as described above for Debian. Again “apt” is best to use.&lt;br /&gt;
&lt;br /&gt;
===Mint===&lt;br /&gt;
&lt;br /&gt;
Linux Mint has a different variation. Its “apt” calls its “apt-get” and adds extra features.  So both effectively do the same, but (as with previous flavours) “apt” is best to use.&lt;br /&gt;
&lt;br /&gt;
It is likely that other Linux variants will also vary how these alternative commands differ.&lt;/div&gt;</summary>
		<author><name>Phil23</name></author>
	</entry>
	<entry>
		<id>https://www.cumuluswiki.org/index.php?title=MX_on_Linux&amp;diff=9378</id>
		<title>MX on Linux</title>
		<link rel="alternate" type="text/html" href="https://www.cumuluswiki.org/index.php?title=MX_on_Linux&amp;diff=9378"/>
		<updated>2021-07-09T01:07:02Z</updated>

		<summary type="html">&lt;p&gt;Phil23: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:WorkInProgressBanner}}{{Template:Version badge Mx}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This page focuses on aspects of MX that are specific to the Linux operating systems.’’’&lt;br /&gt;
&lt;br /&gt;
If you are running MX on on any computer running the Microsoft Windows Operating System, then you should be reading the [[MX on Windows OS]] page instead.&lt;br /&gt;
&lt;br /&gt;
=Using MX on UNIX-derived Operating Systems=&lt;br /&gt;
&lt;br /&gt;
MX runs on any UNIX-derived operating systems (OS):&lt;br /&gt;
* including those found on Apple Mac computers, &lt;br /&gt;
* and those found on a multitude of devices running Linux. &lt;br /&gt;
&lt;br /&gt;
UNIX is a long established operating system, and both UNIX and its derivatives have good long term compatibility. This means that commands are generally easy to learn and use. Most devices also have a graphical user interface that can do the more straightforward tasks without needing to know all the commands.&lt;br /&gt;
&lt;br /&gt;
==Device Coverage==&lt;br /&gt;
&lt;br /&gt;
This page is intended to cover all Linux-based devices, but the content here is based on experience of those who have contributed to this page. &lt;br /&gt;
&lt;br /&gt;
Linux is available in a multitude of different kernels, on a multitude of devices, but this Wiki page will largely ignore any technical variations (some included at end of page) and focus on giving some background content to support the basics.&lt;br /&gt;
&lt;br /&gt;
The Raspberry Pi Operating System is based on Debian, one of the Linux kernels. Where appropriate, this page gives instructions specific to a [[Raspberry Pi computer page|Raspberry Pi computer]].&lt;br /&gt;
&lt;br /&gt;
If you use a different kernel, or feel that this page inadequately covers what you want to know, can you add sub-sections to this page to ensure it covers the Linux device you use?&lt;br /&gt;
&lt;br /&gt;
:Until somebody creates a separate page for Apple Mac computers (that would be a good idea), this page is the closest.&lt;br /&gt;
&lt;br /&gt;
==What do people think about MX on Linux?==&lt;br /&gt;
&lt;br /&gt;
Contributions to the [https://cumulus.hosiene.co.uk/viewforum.php?f=40 Cumulus Support Forum] suggest that:&lt;br /&gt;
*Use on a Raspberry Pi (RPi) computer is very popular&lt;br /&gt;
*In general, people find installing, and running, MX on Linux is easy&lt;br /&gt;
*The few people who do have difficulties are those who have good knowledge of Microsoft systems and feel scared to swap to something different.&lt;br /&gt;
&lt;br /&gt;
Microsoft has had a deliberate policy of being different, so it is not UNIX-like. The [[MX_on_Windows_OS|Running Cumulus MX on Microsoft Windows]] page covers those aspects of MX that are specific to Personal Computers running Microsoft&#039;s Windows Operating System. &lt;br /&gt;
&lt;br /&gt;
In the Cumulus support forum, there are many posts from people who are struggling with MX on PCs, as it seems people often find “installing”, and using, MX is more difficult when using Microsoft Windows.&lt;br /&gt;
&lt;br /&gt;
=Page Content=&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
This page:&lt;br /&gt;
* describes the options available for installing MX, and the other Cumulus packages&lt;br /&gt;
* describes the pre-requisite &#039;&#039;&#039;MONO&#039;&#039;&#039; software needed to run the various Cumulus executables, (for Raspberry Pi only), how to add the Mono repository to your system, and how to upgrade MONO&lt;br /&gt;
* explains the few key Linux commands it uses&lt;br /&gt;
* describes the administrative interface and instructions for configuring MX&lt;br /&gt;
* it tries to be useful to anyone who has never used MX, and anyone who knows Cumulus, but has not run MX on Linux before&lt;br /&gt;
* describes the various options available to run MX&lt;br /&gt;
* describes the optional parameters you can add when starting MX&lt;br /&gt;
* describes the other executables &lt;br /&gt;
&lt;br /&gt;
There are various related pages to get more information:&lt;br /&gt;
*Go to [[:Category:Terminology]] for links to pages that explain terminology used by Cumulus (some of these need updating for MX)&lt;br /&gt;
*Go to [[:Category:Cumulus MX]] for links to all pages in this Cumulus Wiki that relate specifically to MX&lt;br /&gt;
*[[MX Administrative Interface|Admin interface]] provides information on configuration and web pages for viewing your weather data locally&lt;br /&gt;
*Go to [[:Category:Cumulus Files]] for links to all pages describing the sub-folders and files used by MX&lt;br /&gt;
*If you encounter a problem when running MX, see [[What to do when I have a problem with MX]]&lt;br /&gt;
*The [[Cumulus MX FAQ]] page was created with snippets from the forum, but nobody has yet sorted this out into a useful page or updated it for recent releases&lt;br /&gt;
*If you were using the original (now legacy) Cumulus software, please read [[Migrating_from_Cumulus_1_to_MX]], although that is mostly directed at those using MX on the same Windows PC as they used for Cumulus 1, and was written for an old MX release, it will help you understand configuration differences.&lt;br /&gt;
*If you want to use a script language, you might want to read [[PHP|PHP Hypertext Pre-processor and JavaScript]] page&lt;br /&gt;
&lt;br /&gt;
=For those using Raspberry Pi computers=&lt;br /&gt;
&lt;br /&gt;
You have two choices:&lt;br /&gt;
&lt;br /&gt;
CHOICE ONE: ‘’’Create a micro-SD card that has everything on it to load a kernel onto your computer and run MX’’’&lt;br /&gt;
&lt;br /&gt;
The developer has created [[Software#Raspberry_Pi_Image|an image you can download]].&lt;br /&gt;
&lt;br /&gt;
That image contains:&lt;br /&gt;
#Raspberry Pi Lite Operating System as kernel (no graphical user interface, designed for a RPi without keyboard or monitor)&lt;br /&gt;
#Mono-complete package&lt;br /&gt;
#Cumulus MX package&lt;br /&gt;
&lt;br /&gt;
* If you are new to MX, after booting from image, you will need to use the [[MX_Administrative_Interface#Station_Settings|admin interface]] to define station type, your choice of units, and some other settings, before MX can start recording data from the connected weather station.&lt;br /&gt;
* If you are migrating from another computer, after booting from image, you need to add (using an external memory stick or file transfer from your other device to the RPi), the following:&lt;br /&gt;
** (mandatory) [[Cumulus.ini]], &lt;br /&gt;
**(optional) [[strings.ini]], &lt;br /&gt;
**(mandatory) all files from old [[Data_folder|data sub-folder]], &lt;br /&gt;
**and any (optional) files from old Reports sub-folder.&lt;br /&gt;
&lt;br /&gt;
If you want to pursue that approach, please read [[Raspberry_Pi_Image]] page, instead of continuing to read this page.  Obviously, you can return to this page if you want to learn more.&lt;br /&gt;
&lt;br /&gt;
CHOICE TWO: ‘’’Load the software packages individually’’’&lt;br /&gt;
&lt;br /&gt;
Please read on, this page will tell you all you need to know.&lt;br /&gt;
&lt;br /&gt;
= Do you have a Operating System? =&lt;br /&gt;
&lt;br /&gt;
Is your Linux computer already working? Or does it need an Operating System to be installed?&lt;br /&gt;
&lt;br /&gt;
An operating system is the is is the software that is loaded onto your computer to provide commands and everything else that males a computer work.&lt;br /&gt;
&lt;br /&gt;
Please see [[Raspberry Pi computer page]] if you want guidance on choosing which model to buy and how to install an operating system, so you are ready to install MX.&lt;br /&gt;
&lt;br /&gt;
=Ready to install MX?=&lt;br /&gt;
&lt;br /&gt;
Assuming our Linux computer has a kernel, how do we add packages to our system? We need a short technical digression to explain the command, skip this next section if you already know how to install packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The various components to commands for installation==&lt;br /&gt;
&lt;br /&gt;
Linux computers have a “source list” which references the repositories from which software packages can be installed.&lt;br /&gt;
&lt;br /&gt;
If a particular package can not be found in repositories already in the source list, then another repository can be added to the source list.&lt;br /&gt;
&lt;br /&gt;
===sudo===&lt;br /&gt;
&lt;br /&gt;
The initial &amp;quot;sudo&amp;quot; part of many commands gives us super-user (root) rights when executing the instruction that follows.&lt;br /&gt;
&lt;br /&gt;
You can change the rights in a folder, or for a file, to make this prefix unnecessary outside root access requiring contexts like installation.&lt;br /&gt;
&lt;br /&gt;
===apt===&lt;br /&gt;
&lt;br /&gt;
The second part of our installation commands is “apt” meaning “Advance Package Tool”. In simple terms, it runs the “package manager” used in Linux.  &lt;br /&gt;
&lt;br /&gt;
There is a longer technical explanation towards the end of this page, all I will say here is that you might see “apt-get” used in some on-line examples. I suggest you replace “apt” where “apt-get” is seen as generally “apt” is more friendly. Equally, “apt” can replace “apt-cache”, which I won’t explain.&lt;br /&gt;
&lt;br /&gt;
===install===&lt;br /&gt;
&lt;br /&gt;
The third part of our installation instruction is “install”, which tells our package manager what we are trying to do.&lt;br /&gt;
&lt;br /&gt;
For the record only, here is full list of what can follow “apt”: &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:30px&amp;quot; | Instruction following “apt”&lt;br /&gt;
!style=&amp;quot;width:300px&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
|install&lt;br /&gt;
|To install a package and its dependencies&lt;br /&gt;
|-&lt;br /&gt;
|update&lt;br /&gt;
|To make sure your computer has up to date information about repositories installed and to report if these contain packages that can be upgraded&lt;br /&gt;
|-&lt;br /&gt;
|upgrade&lt;br /&gt;
|To see which of your packages have newer versions now available in repositories, and to replace those packages with the newer versions&lt;br /&gt;
|-&lt;br /&gt;
|autoremove&lt;br /&gt;
|To check all components in the packages you have installed and remove those components that are not needed by the dependencies of the packages you use.&lt;br /&gt;
&lt;br /&gt;
As an example, when you install mono-complete, there might be components that are never used, and “autoremove” can be used to tidy up when you finish all your installations&lt;br /&gt;
|-&lt;br /&gt;
|remove&lt;br /&gt;
|If you want to remove just one component manually, use “remove” followed by the name of component you no longer want&lt;br /&gt;
|-&lt;br /&gt;
|purge&lt;br /&gt;
|To remove any installed package and delete all related configuration files&lt;br /&gt;
|-&lt;br /&gt;
|search&lt;br /&gt;
|To search in repositories in source list for a package you specify after “search”&lt;br /&gt;
|-&lt;br /&gt;
|show&lt;br /&gt;
|To show any information available about a package that you name after the “show”&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Flags ===&lt;br /&gt;
&lt;br /&gt;
The basic syntax is either one or two hyphens, followed by one or two letters (each letter has to be a specific case). Various examples will be seen on this page, but here just one is explained here.&lt;br /&gt;
&lt;br /&gt;
After the “install” part mentioned above, we can add “-y” to signify that we want the install to continue.  Without this flag, the package manager will ask periodically if we want it to continue,  and we have to then respond with a “y” each time.  For example, when we ask to install a package, &amp;quot;apt&amp;quot; will do a search, it will list what components it has found, and output how big their demands are on storage, without &amp;quot;-y&amp;quot; flag, it will then ask if it is okay to continue to installing.&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
The final part of the installation command is the name of the package or component that we want to install.&lt;br /&gt;
&lt;br /&gt;
== Preparing for an install==&lt;br /&gt;
&lt;br /&gt;
Before we do an install of a new package, we typically use some of these commands to ensure our computer is in the best state to work out dependencies of what we are about to install:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt -y upgrade&lt;br /&gt;
sudo apt autoremove&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each of these can be understood from information in previous section.&lt;br /&gt;
&lt;br /&gt;
= Which software packages will we install?=&lt;br /&gt;
&lt;br /&gt;
If you read all the previous section, it explained Linux has a ‘’’source list’’’ of ‘’’repositories’’’ from which it can load software packages.&lt;br /&gt;
&lt;br /&gt;
# Our first task will be to install the appropriate mono repository, if that is not already in our source list&lt;br /&gt;
# Our second task will install a package called ‘’’mono-complete’’’ from the repository we just installed, (this is needed to run software written in the C# languages)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Changing the Source List==&lt;br /&gt;
&lt;br /&gt;
If you type &amp;lt;code&amp;gt;sudo apt search mono-complete&amp;lt;/code&amp;gt;, you will find out whether the package is available from one of the repositories already in our source list.  Each of the parts of that command was explained earlier.&lt;br /&gt;
&lt;br /&gt;
If mono-complete is not available (or only available in an older version incompatible with MX), then we have to add a new repository, and the one to add depends on which kernel we have, so choose the right sub-section below.&lt;br /&gt;
&lt;br /&gt;
===Add the Mono repository for a Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
The two Mono repositories listed here are specific to the 2017 and 2019 releases (respectively) of the operating system for a Raspberry Pi computer.  These are taken from  [https://www.mono-project.com/download/stable/#download-lin-raspbian].&lt;br /&gt;
&lt;br /&gt;
# the first line (in each case) installs a certificate&lt;br /&gt;
# the echo line defines a repository to add to the sources list.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:300px&amp;quot; | Raspberry Operating System 9 (stretch)&lt;br /&gt;
!style=&amp;quot;width:300px&amp;quot; | Raspberry Operating System 10 (buster)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;sudo apt install apt-transport-https dirmngr gnupg ca-certificates&lt;br /&gt;
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF&lt;br /&gt;
echo &amp;quot;deb https://download.mono-project.com/repo/debian stable-raspbianstretch main&amp;quot; | sudo tee /etc/apt/sources.list.d/mono-official-stable.list&lt;br /&gt;
&amp;lt;/code&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;sudo apt install apt-transport-https dirmngr gnupg ca-certificates&lt;br /&gt;
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF&lt;br /&gt;
echo &amp;quot;deb https://download.mono-project.com/repo/debian stable-raspbianbuster main&amp;quot; | sudo tee /etc/apt/sources.list.d/mono-official-stable.list&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Add the Mono repository to Ubuntu, Debian, Fedora==&lt;br /&gt;
&lt;br /&gt;
At time of writing, [https://www.mono-project.com/download/stable/#download-lin-ubuntu], shows the instructions for versions 16, 18, and 20 of Ubuntu.&lt;br /&gt;
&lt;br /&gt;
Equally, [https://www.mono-project.com/download/stable/#download-lin-debian], gives details for debian, and [https://www.mono-project.com/download/stable/#download-lin-fedora] for Fedora.&lt;br /&gt;
&lt;br /&gt;
Others can be found by choosing other tabs on any of those links.&lt;br /&gt;
&lt;br /&gt;
== Installing Mono instruction ==&lt;br /&gt;
&lt;br /&gt;
Now we have the certificate needed, and the repository for mono-complete is added to our source list, we can do the actual install:&lt;br /&gt;
: &amp;lt;code&amp;gt;sudo apt install -y mono-complete&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
The “sudo”, “apt”, “install”, and “-y” have already been explained.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;mono-complete&amp;quot; is the package we want.&lt;br /&gt;
&lt;br /&gt;
:Please note that if you just specify “mono”, you will get ‘’’mono-devel’’’ (the developer edition) that does not include all the components required by each of the Cumulus executables.&lt;br /&gt;
&lt;br /&gt;
Please note that a particular MX build might specify it needs a particular version of Mono.  Hence, although normally you can upgrade a cumulus package without upgrading Mono, sometimes you will need to install Mono again.&lt;br /&gt;
&lt;br /&gt;
The latest release of Mono can always be downloaded from [https://www.mono-project.com/download/stable/#download-lin], follow step 1 there, but in step 2 replace ‘’’mono-devel‘’’ by ‘’’mono-complete’’’&lt;br /&gt;
&lt;br /&gt;
=Cumulus packages=&lt;br /&gt;
&lt;br /&gt;
Note use of plural in section name above, the following sub-sections will install MX and the other packages already mentioned, all by Developer Mark Crossley.&lt;br /&gt;
&lt;br /&gt;
 Our next task is to install the Cumulus software listed on [[Software]] page:&lt;br /&gt;
# &#039;&#039;&#039;CumulusMX’’’, this is written in C# and we download it from [[Software#Latest_build_distribution_download]]&lt;br /&gt;
# [[Software#Create_Missing|&#039;&#039;&#039;CreateMissing.exe&#039;&#039;&#039;]], another C# package (it will populate missing fields or missing lines in log files),  Simple Instructions for using this executable is on the github page where they are found, again linked from &#039;&#039;&#039;Software&#039;&#039;&#039; page in this Wiki.&lt;br /&gt;
#* Using &#039;&#039;&#039;CreateMissing.exe&#039;&#039;&#039; is fully documented at [[Calculate_Missing_Values#CreateMissing.exe]] in this Wiki.&lt;br /&gt;
# Finally, install ‘’’Export (old data) To a Maria (or other MySQL) database server’’’ package downloaded from [[Software#ExportToMySQL]]&lt;br /&gt;
#* &#039;&#039;&#039;ExportToMySQL.exe&#039;&#039;&#039; is not (at the time this was written) documented in this Wiki although [[MX_Administrative_Interface#MySQL_settings]] does describe a similar utility (written by Steve Loft) that was actually included in early MX release downloads.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Where to install all packages?==&lt;br /&gt;
&lt;br /&gt;
*For simplicity on this page EXISTING PATH is used to represent any location in the Linux file structure where you decide to install Cumulus:&lt;br /&gt;
**Some people install it into ‘’’/home/pi/’’’, the default folder for the default user (Pi), because then the default user has full permissions automatically&lt;br /&gt;
**Mark suggests you install into ‘’’/opt/’’’ which is where other additional software is often installed&lt;br /&gt;
* All the Cumulus packages, should be put into a sub-folder called “CumulusMX” (note where capital letters must be used).&lt;br /&gt;
** You can create that folder as you unzip a MX release, or you can type &amp;lt;code&amp;gt;sudo mkdir EXISTING PATH/CumulusMX&amp;lt;/code&amp;gt; first (note that EXISTING PATH is explained above and always starts with a slash “/”).&lt;br /&gt;
** It is best to change permissions for the &amp;quot;CumulusMX&amp;quot; sub-folder, &amp;lt;code&amp;gt;chmod ugo+rwx CumulusMX&amp;lt;/code&amp;gt; will give full rights to the folder, so that &amp;quot;sudo&amp;quot; is not needed to run an executable there, and you can read/update any file in the folder regardless of which user you have logged in.&lt;br /&gt;
*Many with a Raspberry Pi add an external drive to reduce wear on the internal micro-SD card, and so if they have to reload the kernel  (sometimes called “operating system”), they don’t lose their Cumulus packages and data.&lt;br /&gt;
**This is more complicated in that you might have to create linux partitions on this disc, then mount these partitions, and this page is not the place to get too technical&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Alternative download link for older MX releases==&lt;br /&gt;
&lt;br /&gt;
For completeness, you may have discovered (from posts in the [https://cumulus.hosiene.co.uk/viewforum.php?f=40 Cumulus Support Forum] that the current release of MX has a bug that affects an aspect of MX that you intend to use. Remember, it is impossible for the developer to check all the ways in which versatile MX can be used (different weather station types, different computer types, plus a whole host of features, and different external upload sites, that are only used by a sub-set of people).&lt;br /&gt;
&lt;br /&gt;
In such a case, download any earlier build, without the bug, from [https://github.com/cumulusmx/CumulusMX/releases CumulusMX/releases].&lt;br /&gt;
&lt;br /&gt;
You need to ensure that you use the right version of &amp;quot;CreateMissing.exe&amp;quot; and &amp;quot;ExportToMySQL.exe&amp;quot; utilities for the MX release you are running, so if you are using an old MX release, you will need to go directly to the [https://github.com/cumulusmx Cumulus MX github] page, and navigate to the utility of interest, to download an older version of these utilities.&lt;br /&gt;
&lt;br /&gt;
==Handling zip files==&lt;br /&gt;
&lt;br /&gt;
Each release is presented as a zip.&lt;br /&gt;
&lt;br /&gt;
The download and unzip procedure is exactly same on your Linux computer, as it would be on a Windows PC.  So if you have two devices available, you can download on either device, and if it is not the computer you want to install on, you can use a file transfer package to move the files between devices, or use a drive (or even a memory card) with a partition formatted so that you can read it on both devices.  Windows and Linux partitions are formatted in different ways. While it is likely that Linux can read a Microsoft formatted partition, Microsoft Windows can never read a Linux formatted partition.&lt;br /&gt;
&lt;br /&gt;
When your browser saves the zip it might be into a folder called “downloads” on your computer, or you may be able to save into another folder that you prefer (perhaps on a different partition).  Your browser might even remember the folder you used before for files of type zip.&lt;br /&gt;
&lt;br /&gt;
When the download has completed, whatever computer type this is on, mouse click (it might need a right click or a double click depending on settings) on the download file and it should unzip (it may create a folder whose name is taken from the zip file name in the same folder by default, or it may ask you where you want to unzip to).  If you are unable to use a mouse, there should be a keyboard code to use. If you are using a file manager, with a graphical interface, there may be a different way to select the file and unzip it.&lt;br /&gt;
&lt;br /&gt;
==Where to install MX==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier, you can choose where you install your three Cumulus downloads.  It is important to minimise the length of the path name, because this has to be passed between various different software languages (and longer paths risk truncation). Here I use “EXISTING PATH” (the contents of this will start with a slash “/”, but not end with a slash) to represent whatever path you have selected.&lt;br /&gt;
&lt;br /&gt;
It was also mentioned before that you can create the folder to hold the packages in advance using &amp;lt;code&amp;gt;sudo mkdir EXISTING PATH/CumulusMX&amp;lt;/code&amp;gt;, and you can change its permissions using &amp;lt;code&amp;gt;chmod ugo+rwx CumulusMX&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Upgrading a Cumulus package==&lt;br /&gt;
&lt;br /&gt;
Upgrading to a new MX release is explained [[Updating_MX_to_new_version|here]], but basically follow instructions above, and install over your existing files.  The alternative is to install in a new folder (or rename the old one), and copy across files not in the release.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration Files to copy across from any previous Cumulus installation==&lt;br /&gt;
&lt;br /&gt;
There are two configuration files that are not included in any MX release:&lt;br /&gt;
*[[strings.ini]] (note all lower case) – optional file to customise output&lt;br /&gt;
*[[Cumulus.ini]] (note initial capital, then lower case) – main configuration file&lt;br /&gt;
&lt;br /&gt;
If your old installation was for a relatively recent release, then just copy these files to new installation and optionally skip the next 2 sub-sections.&lt;br /&gt;
&lt;br /&gt;
If you are upgrading from an older release, please read the next 2 sub-sections for advice.&lt;br /&gt;
&lt;br /&gt;
===strings.ini===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This is an optional file&#039;&#039;&#039;.  Its [[strings.ini|purpose]] is to allow customisation of some of the outputs from Cumulus. You might want to use customisation to abbreviate (or extend) some outputs, or to change those outputs into another language.&lt;br /&gt;
&lt;br /&gt;
You create a “strings.ini” file by selecting some of the parameters from the [[samplestrings.ini]] file that is included in each MX release, and modifying the value for the listed attributes.  &lt;br /&gt;
&lt;br /&gt;
The sections that appear in &#039;&#039;&#039;samplestrings.ini&#039;&#039;&#039;, and the parameters that appear within a section, changed drastically between Cumulus 1.9.4 and MX.  They may also be change drastically be one MX release and the next.  Therefore, your existing “strings.ini” might need to be modified.&lt;br /&gt;
&lt;br /&gt;
There is no automatic way to check your “strings.ini” file, if MX does not understand any parameter in this file, it ignores it.&lt;br /&gt;
&lt;br /&gt;
Instead, you need to manually check each parameter you have in your “strings.ini” file to see if that parameter is in “samplestring.ini” of your new install. You may also find parameters in “samplestring.ini” that you need to add to your “strings.ini” file.&lt;br /&gt;
&lt;br /&gt;
===Cumulus.ini===&lt;br /&gt;
&lt;br /&gt;
Some people prefer to omit their existing “Cumulus.ini” file from their new install. Instead, they work through all the settings manually, so that MX can create a fresh file, with them having confidence every setting reflects their preference.&lt;br /&gt;
&lt;br /&gt;
If you previously used an older release of Cumulus, but in this new installation will be using the latest release, you may want to read up on all the changes.&lt;br /&gt;
&lt;br /&gt;
There were significant changes to “Cumulus.ini” when moving from 1.9.4 to 3.0.0, see [[Cumulus_3_(MX)_beta_documentation]] and [[Migrating_from_Cumulus_1_to_MX]] pages. Documentation for the 1.9.4 file can be found [[Cumulus.ini_(Cumulus_1)|here]].&lt;br /&gt;
&lt;br /&gt;
There were gradual changes to “Cumulus.ini” as releases went from 3.0.0 to 3.7.0, documentation can be found [[Cumulus.ini (MX_3.0.0_to_3.7.0)| here]] where the changes are made clear.&lt;br /&gt;
&lt;br /&gt;
The documentation for the latest MX release can be found at [[Cumulus.ini]], note that it does include advice on (while MX is running) you can automatically update the file.  This automatic approach is easy, but you might want to work through settings to change preferences for any new parameters.&lt;br /&gt;
&lt;br /&gt;
See also the note below relating to File Paths in Windows Vs Linux.&lt;br /&gt;
&lt;br /&gt;
==Folders to copy across from previous Cumulus installations==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you have used Cumulus before&#039;&#039;&#039;, you will be seeking to keep your existing ([[:Category:MX txt Files|.txt]] and extremes [[:Category:Ini Files|.ini]]) files. This means you must transfer the whole [[Data folder|/data]] sub-folder from your old installation to your new installation.  If you use decimal commas, you might want to read what it says on [[:Category:Ini Files|this page]].&lt;br /&gt;
&lt;br /&gt;
If your previous Cumulus installation was version 1.9.4, or earlier, then you need to do a lot of reading:&lt;br /&gt;
* [[Amending dayfile]] tells you about how MX is far more fussy about the content in [[dayfile.txt]]&lt;br /&gt;
* [[:Category:Ini Files|.ini files]] explains how time-stamps are formatted differently in the extreme tracking files&lt;br /&gt;
* [[Migrating from Cumulus 1 to MX]] gives some advice about differences in settings, but be aware that the way MX handles settings varies by release, and information on the linked page may be out of date&lt;br /&gt;
&lt;br /&gt;
If you are using the optional “NOAA report” functionality, you must also transfer the whole [[Reports folder|Reports]] sub-folder.&lt;br /&gt;
&lt;br /&gt;
===Line terminators in these files===&lt;br /&gt;
&lt;br /&gt;
If you are moving from Microsoft Windows to Linux, you need to be aware that Microsoft ends each line with two characters (Carriage Return and Line Feed) while Unix/Linux ends each line with a single character (Line Feed). &lt;br /&gt;
&lt;br /&gt;
The kernel in your Linux computer might be able to detect that it is getting Microsoft files, and discard the extra end of line character.&lt;br /&gt;
&lt;br /&gt;
However, if you are reading that file in a script, it might not detect the end of line encoding. So if that script expects “LF” to terminate each line, when the script is reading the final field of each line, the script will find that final field has an unwanted “CR” in it and not recognise it as a numerical value (or time-stamp). Equally, if the script expects “CR” as line terminator, then the first field of the each line (except the first line) starts with a “LF” and the script will not recognise it as a date (or section name). &lt;br /&gt;
&lt;br /&gt;
In each case, any checking for numerical input might fail, and any attempt to check/extract characters from these fields might fail because their position relative to start/end is changed.&lt;br /&gt;
&lt;br /&gt;
If you run your Linux computer in a headless mode, accessing its files by a remote terminal session, be aware that the line terminator used by the remote computer may be applied to files affected by whatever command you do remotely.&lt;br /&gt;
&lt;br /&gt;
===Changing line terminators===&lt;br /&gt;
&lt;br /&gt;
Many editors designed for programmers (they might be described as providing a programming development environment) can change the line ending of every line (either while file is being edited or when file is saved). &lt;br /&gt;
&lt;br /&gt;
‘’’Geany’’’ is a programming development editor provided on some Linux systems including Raspberry Pi, that can do this (&#039;&#039;&#039;Document&#039;&#039;&#039; menu, --&amp;gt;&amp;gt; &#039;&#039;&#039;Select Line Endings&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
Notepad++ is another editor available for multiple operating systems (&#039;&#039;&#039;Edit&#039;&#039;&#039; menu --&amp;gt;&amp;gt; &#039;&#039;&#039;EOL conversion&#039;&#039;&#039;).  &lt;br /&gt;
&lt;br /&gt;
Both have capabilities to make such changes on either the single file that has focus, or all loaded files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===File Names &amp;amp; Paths===&lt;br /&gt;
&lt;br /&gt;
Another issue that may be encountered when moving from Windows to Linux is the difference in File Names &amp;amp; Paths.&lt;br /&gt;
Linux file names are Case Sensitive, and the separator is &amp;quot;/&amp;quot; Vs &amp;quot;\&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This could be applicable if you are using Extra Web files.&lt;br /&gt;
&lt;br /&gt;
So if the ini file reads &lt;br /&gt;
Web\extrapageT.htm in Windows,&lt;br /&gt;
it must be changed to read web/extrapageT.htm in Linux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Running MX on Linux=&lt;br /&gt;
&lt;br /&gt;
This section explores the optional parameters, and then covers 2 ways to run MX:&lt;br /&gt;
# as a service and &lt;br /&gt;
#directly with terminal window left open.&lt;br /&gt;
&lt;br /&gt;
== Optional parameters to add to the instruction to run the MX engine ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: LemonChiffon;padding:5px; margin:2px;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Crystal Clear info.png|40px]] This section does not cover all optional parameters and needs a contributor to update it!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beta builds of MX ===&lt;br /&gt;
&lt;br /&gt;
The following two parameters cannot be used with MX since it came out of 3.0.0 beta.&lt;br /&gt;
&lt;br /&gt;
==== web sockets ====&lt;br /&gt;
&lt;br /&gt;
Beta builds in MX version 3.0.0 had an optional parameter &amp;lt;code&amp;gt;sudo mono CumulusMX.exe -wsport nnnn&amp;lt;/code&amp;gt; that determined which port (represented by a 4 digit number &#039;&#039;nnnn&#039;&#039;) was used for &#039;&#039;&#039;Web Sockets&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
You can omit the &amp;quot;sudo&amp;quot; if you have done the recommended &amp;quot;chmod&amp;quot; described earlier on the folder containing the executable.&lt;br /&gt;
&lt;br /&gt;
That parameter is now deprecated as Web Sockets in all builds since 3045 uses the same port as the rest of the [[MX_Administrative_Interface#The_API_interface|Admin Interface]], see Port parameter below. &lt;br /&gt;
&lt;br /&gt;
==== Debugging of data flow between station and MX====&lt;br /&gt;
&lt;br /&gt;
Use &#039;&#039;&#039;sudo mono CumulusMX.exe -Logging=1&#039;&#039;&#039; (for the station to MX transfers to have increased debugging logging). &lt;br /&gt;
&lt;br /&gt;
Note use of this parameter is now deprecated.&lt;br /&gt;
&lt;br /&gt;
Although this is not mentioned in any release announcements, it appears that on all recent MX releases this effect is incorporated into the &#039;&#039;&#039;-debug&#039;&#039;&#039; parameter.  Perhaps someone could confirm whether this is true.&lt;br /&gt;
&lt;br /&gt;
=== Parameter for changing Port ===&lt;br /&gt;
&lt;br /&gt;
When Cumulus starts, it will display the URL of the user interface. It runs on port 8998 by default; if this is not suitable for some reason you can over-ride it using the &#039;-port&#039; parameter on the command line, e.g. to use port 9999 instead:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo mono CumulusMX.exe -port 9999&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can omit the &amp;quot;sudo&amp;quot; if you have done the recommended &amp;quot;chmod&amp;quot; described earlier on the folder containing the executable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parameter for adding debugging ===&lt;br /&gt;
&lt;br /&gt;
MX has a default level of logging that stores in the [[MXdiags_folder]] folder a log file that shows some of the interaction with the weather station and some of the output actions done as MX runs. A new log is started each time MX is restarted.&lt;br /&gt;
&lt;br /&gt;
If there is a problem, then there is a great benefit in actually increasing the level of detail in these logs; and that is done either within the settings (on recent MX releases this is on &#039;&#039;&#039;Program Settings&#039;&#039;&#039; page of admin interface - please see [[MXdiags_folder]] page for details) or by adding a parameter:  &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo mono CumulusMX.exe -debug&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can omit the &amp;quot;sudo&amp;quot; if you have done the recommended &amp;quot;chmod&amp;quot; described earlier on the folder containing the executable.&lt;br /&gt;
&lt;br /&gt;
Since this parameter is applied when you start MX, it applies all the time MX continues to run. Obviously this log file continues to grow, the longer MX is left running, and if debugging is switched on the file will grow in size must faster. Consequently, the default is not to add the extra debugging information and the settings can be used to switch it off again if you do have it switched on.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Parameter for changing Locale ===&lt;br /&gt;
&lt;br /&gt;
On Linux and (in particular) OS X, Cumulus MX may not be given the correct locale to use, and you may get the default US locale even if that is not your locale. It will output the local it is using when it starts; if it is not correct, close it down and start it again, this time specifying your locale on the command line, using the -lang parameter . For example, in the UK, on a non-Windows device type:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mono CumulusMX.exe -lang en-GB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can omit the &amp;quot;sudo&amp;quot; if you have done the recommended &amp;quot;chmod&amp;quot; described earlier on the folder containing the executable.&lt;br /&gt;
&lt;br /&gt;
Other local examples:  &#039;&#039;&#039;CumulusMX.exe Current culture: English (United States)&#039;&#039;&#039;, &#039;&#039;&#039;CumulusMX.exe -lang de-DE&#039;&#039;&#039;,  &#039;&#039;&#039;CumulusMX.exe -lang el-GR&#039;&#039;&#039; (this is one of the locales that reads numbers with &#039;&#039;&#039;integer,decimal&#039;&#039;&#039; format), &#039;&#039;&#039;CumulusMX.exe -lang nl-NL&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are not sure what value you need to supply for the -lang parameter, there is a list here - http://msdn.microsoft.com/en-gb/library/ee825488%28v=cs.20%29.aspx. You need to supply the code in the first column (&amp;quot;Language Culture Name&amp;quot;) in that list. &lt;br /&gt;
&lt;br /&gt;
Note that this does not affect the language used by Cumulus MX (although it may in the future), it affects the decimal separator and the list separator.&lt;br /&gt;
&lt;br /&gt;
Note that you &#039;&#039;may&#039;&#039; need to supply your administrator password after typing the &#039;sudo ...&#039; command line. The system will prompt you for this if it is needed.&lt;br /&gt;
&lt;br /&gt;
=== Parameter for running as service ===&lt;br /&gt;
&lt;br /&gt;
Use of this is explained next.  The parameter syntax is &amp;lt;code&amp;gt;sudo mono CumulusMX.exe -service&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up as a service ==&lt;br /&gt;
&lt;br /&gt;
If you have installed MX release 3.8.0 or later, you can set up MX to run as a service.&lt;br /&gt;
&lt;br /&gt;
Original way (more information at [https://cumulus.hosiene.co.uk/viewtopic.php?p=145048#p145048 this release announcement]):&lt;br /&gt;
# Ensure you are in the folder containing CumulusMX.exe&lt;br /&gt;
# Type &amp;lt;code&amp;gt; mono-service -l:/var/run/cmx.pid CumulusMX.exe -service&amp;lt;/code&amp;gt;&lt;br /&gt;
# (to verify) note this does not allow you to add -port, -debug, -locale parameters&lt;br /&gt;
&lt;br /&gt;
A better way (see [https://cumulus.hosiene.co.uk/viewtopic.php?p=146473#p146473 this later release announcement]:&lt;br /&gt;
#There is a task to do just once to configure the service&lt;br /&gt;
#Find the &#039;&#039;&#039;EXISTING PATH/CumulusMX/MXutils/linux/&#039;&#039;&#039; sub-folder, that might be in home directory and therefore found using &amp;quot;~/CumulusMX/MXutils/linux&amp;quot; as explained elsewhere on this page&lt;br /&gt;
#* At time of typing this, the sub-folder only contains one file, the one we need to edit&lt;br /&gt;
# As described later there is a choice of editors, but you can use &amp;lt;code&amp;gt;sudo nano cumulusmx.service&amp;lt;/code&amp;gt; to edit the service configuration file&lt;br /&gt;
# Look for &#039;&#039;&#039;ExecStart=/usr/bin/mono-service -d:&#039;&#039;&#039;&lt;br /&gt;
#* Replace the path that follows the above text with the path to your CumulusMX.exe, add the &#039;&#039;&#039;-service&#039;&#039;&#039; and optionally add any other parameter (e.g. &#039;&#039;&#039;-debug&#039;&#039;&#039;, -locale, -port) as described in sub-sections above.&lt;br /&gt;
#save file&lt;br /&gt;
#now copy file &lt;br /&gt;
:&amp;lt;code&amp;gt;sudo cp EXISTING_PATH/CumulusMX/MXutils/linux/cumulusmx.service /etc/systemd/system/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you upgrade to a new release, the file in EXISTING PATH will be overwritten, but the critical file in &amp;quot;/etc/sytemd/system&amp;quot; will not be affected.&lt;br /&gt;
&lt;br /&gt;
==Running as a service==&lt;br /&gt;
&lt;br /&gt;
If you want MX to automatically start when your Linux computer is booted, just type &amp;lt;code&amp;gt;sudo systemctl enable cumulusmx&amp;lt;/code&amp;gt; once, and it will be activated on each reboot.&lt;br /&gt;
&lt;br /&gt;
To manually start MX as a service, (such as after any MX upgrade to a new release, or when you want to first run it), simply type &amp;lt;code&amp;gt;sudo systemctl start cumulusmx&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;systemctl status cumulusmx.service&amp;lt;/code&amp;gt; in a terminal session to see status of Cumulus service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running with a terminal session left open ==&lt;br /&gt;
&lt;br /&gt;
This is alternative to the running as service as described above.&lt;br /&gt;
&lt;br /&gt;
Whichever operating system you are using, to run MX requires an instruction that changes to the directory (EXISTING PATH) where it is installed (the instruction below is assuming it is in the standard Pi user home directory, the change directory command will be different if you have installed it elsewhere), and then starting the executable (using mono in the instruction below that applies to any non-Windows operating system). You may wish to add [[Cumulus_MX#Optional_parameters_to_add_to_the_instruction_to_run_the_MX_engine|Optional_parameters]].&lt;br /&gt;
&lt;br /&gt;
The simplest instruction to run Cumulus MX  is &amp;lt;code&amp;gt;cd EXISTING PATH/CumulusMX &amp;amp;&amp;amp; sudo mono CumulusMX.exe&amp;lt;/code&amp;gt;.  Just in case it is not obvious .... if you start MX using this command in a terminal window on your Pi, you must leave that session running, then MX will continue to run. &lt;br /&gt;
&lt;br /&gt;
You can start it off directly on your Pi, and then&lt;br /&gt;
*optionally disconnect the keyboard, &lt;br /&gt;
*switch off monitor or TV attached to your Pi, &lt;br /&gt;
*Just ensure you leave Pi on (with that window minimised) so that terminal session continues running.&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;&#039;&#039;&#039;ps -ef | grep -i cumulus | grep -v grep&#039;&#039;&#039;&amp;lt;/code&amp;gt; to see if Cumulus is running or not.&lt;br /&gt;
&lt;br /&gt;
= Operating a web site with uploads from MX engine =&lt;br /&gt;
&lt;br /&gt;
== The standard web pages ==&lt;br /&gt;
&lt;br /&gt;
=== From release 3.10.1 ===&lt;br /&gt;
&lt;br /&gt;
The web pages are a one-off upload from &#039;&#039;&#039;CumulusMX/webfiles&#039;&#039;&#039;.  The data to be shown on these web pages are uploaded from [[:Category:JSON_Files|.json]] files in the [[web_folder]].&lt;br /&gt;
&lt;br /&gt;
Please read [[New_Default_Web_Site_Information|this page]] for more information about styling options and other details.&lt;br /&gt;
&lt;br /&gt;
=== Until release 3.9.7 ===&lt;br /&gt;
&lt;br /&gt;
The styling and library files were a one-off upload from &#039;&#039;&#039;CumulusMX/webfiles&#039;&#039;&#039;. These release use [[Cumulus_template_file|template files]], these are [[Customised_templates#What_is_meant_by_.27Cumulus_processes_templates.27|processed by MX to add the variable data]], and this will create web pages that are uploaded to your web site.&lt;br /&gt;
&lt;br /&gt;
Please read [[Customised_templates]] for further information about the various pages provided, and how you can customise them to suit you. &lt;br /&gt;
 &lt;br /&gt;
=== Comparison with legacy Cumulus 1 web pages ===&lt;br /&gt;
&lt;br /&gt;
* Note that the MX web files are not the same as the ones for Cumulus 1, &lt;br /&gt;
** so if moving from Cumulus 1 to MX, delete all your Cumulus 1 files from the &amp;quot;web&amp;quot; and &amp;quot;webfiles&amp;quot; sub-folders, and all files from your web server; then upload files from the new &amp;quot;webfiles&amp;quot; folder. &lt;br /&gt;
* The standard gauges are now the SteelSeries gauges. The default gauges page does not display a graph when you hover over a gauge (as happened when you added the stand-alone Steel Series gauges to Cumulus 1).&lt;br /&gt;
* The trends web page in Cumulus 1 relied on that software generating graphs as images. &lt;br /&gt;
** In MX, the software generates files with time and value pairs, these are stored in json format, the trends page then uses a library package (Highstocks) to draw graphs from those data pairs.&lt;br /&gt;
&lt;br /&gt;
== Alternative ways to obtain web pages ==&lt;br /&gt;
&lt;br /&gt;
You can choose to use some of the alternative web pages available from third parties and described [[:Category:User Contributions|on User Contributions page]].&lt;br /&gt;
&lt;br /&gt;
== Using your own web pages ==&lt;br /&gt;
&lt;br /&gt;
* Of course you can use your own web pages, instead of the standard ones. Assuming they need to include figures that are available as web tags, there are three alternative ways to implement this:&lt;br /&gt;
*# MX can process template files with a HTML structure and those web tags in the structure where values are required just as it does with the standard templates, and MX can upload the resulting web pages  at either the real-time interval, the standard interval, or after end of day. All of this is covered on the [[Customised_templates|Customised templates]] page in this Wiki.&lt;br /&gt;
*# MX can process a file with a string of web tags mirroring the realtime.txt option in MX, and upload the resulting file so your web pages can use JavaScript for a one-off insert of the values or an Ajax routine to update the web page at a fixed interval.&lt;br /&gt;
*# Alternatively, you can use template scripts processed locally by MX that don&#039;t create web pages, but are uploaded by MX at either the real-time interval, the standard interval, or after end of day. These scripts simply initialise script variables with values obtained from web tags. You then independently have a set of web pages resident only on your web server (they don&#039;t exist where you run MX) using a combination of HTML and script content that bring in the script(s) with the variables by the appropriate syntax. All of this is covered on the [[Php_webtags|PHP web tags]] page in this wiki. As it suggests there, you might therefore have several files processed by Cumulus MX at these different intervals, converting the web tags into script variables, and then use AJAX (JavaScript that may use json format to bring in the variables) or PHP (using &amp;lt;tt&amp;gt;&#039;require_once &#039;filename&#039;;&amp;lt;/tt&amp;gt; syntax) to put those variables into a web page.&lt;br /&gt;
&lt;br /&gt;
You may find [[PHP|this wiki page]] useful for understanding more about the different script languages.&lt;br /&gt;
&lt;br /&gt;
=That is enough folks=&lt;br /&gt;
&lt;br /&gt;
If you have read up to here, you now know the basics for using MX on Linux.&lt;br /&gt;
&lt;br /&gt;
The remaining sections are more technical and so you can skip them.&lt;br /&gt;
&lt;br /&gt;
=Technical Extra=&lt;br /&gt;
&lt;br /&gt;
PLEASE SKIP ALL SUBSEQUENT SUB-SECTIONS IF YOU WANT TO AVOID TECHNICAL EXPLANATIONS.&lt;br /&gt;
&lt;br /&gt;
== A very quick introduction to Linux ==&lt;br /&gt;
&lt;br /&gt;
This article is not the place to teach you Linux, you can find books and on-line articles for yourself, but I list here enough for you to understand the instructions used elsewhere in this article.&lt;br /&gt;
&lt;br /&gt;
If you have a Raspberry Pi with a monitor attached, you will see a raspberry icon that you can click to get Graphical User Interface access to many features, including shutdown options.&lt;br /&gt;
&lt;br /&gt;
=== su and sudo ===&lt;br /&gt;
&lt;br /&gt;
There is a command &amp;lt;code&amp;gt;su&amp;lt;/code&amp;gt; that allows a terminal session to become a super user session with root privileges. If you use that command, without a &#039;&#039;&#039;sudo&#039;&#039;&#039; command in front, you need to type in the password (we changed earlier) when prompted.  if you type &amp;lt;code&amp;gt;sudo su&amp;lt;/code&amp;gt;, then you get root privileges without being asked to quote password. All subsequent lines in this terminal session will have a prompt that reminds you that you have root access and do not need to prefix subsequent commands with &amp;quot;sudo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Normally, all terminal sessions will use the default &amp;quot;pi&amp;quot; user, and for individual commands, you will use a &amp;quot;sudo&amp;quot; prefix each time that command needs administrative rights, as this allows a standard Pi user to do tasks that otherwise only work for the root user.&lt;br /&gt;
&lt;br /&gt;
You might use a &amp;quot;sudo&amp;quot; prefix if you need to access a part of the file structure that your user does not have any access to, or where the standard user does not have write (or execute) access. &lt;br /&gt;
&lt;br /&gt;
There are also some commands (like displaying mounted storage) that are not available to a standard user. Here are 3 system commands that in terminal mode will only ever work with this prefix (although if you have installed the version of the Raspberry Pi Operating System that supports a graphical user interface you can also select these actions from a menu):&lt;br /&gt;
*&#039;&#039;&#039;sudo halt&#039;&#039;&#039; = stops any cpu functions, but leaves Pi running; used when you have reached the end of commands you want to do for now&lt;br /&gt;
*&#039;&#039;&#039;sudo poweroff&#039;&#039;&#039; = makes pi do a tidy shutdown and turn off its power; used when you will not be using your Pi for a while&lt;br /&gt;
*&#039;&#039;&#039;sudo reboot&#039;&#039;&#039; (or &amp;quot;sudo reboot -verbose&amp;quot; for diagnostic output during shutdown and reboot) = makes your Pi close down and then reboot; used when you change settings, and after you install new software, to ensure Pi starts with all applications running using the latest settings and latest already installed software&lt;br /&gt;
&lt;br /&gt;
=== ~ and / ===&lt;br /&gt;
&lt;br /&gt;
The tilde symbol &#039;&#039;&#039;~&#039;&#039;&#039; denotes the home directory for the current user.  Sub-directories within the current user&#039;s folder can be identified by &#039;&#039;&#039;~/documents&#039;&#039;&#039; or similar notation. &lt;br /&gt;
&lt;br /&gt;
To reference a folder in root or any other area, the prefix is always &#039;&#039;&#039;/&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If you are using the RPi OS GUI, it provides a file manager that displays folders and files, and if you have a mouse you can click on an object to see what actions are available.  The file manager has &amp;quot;Home&amp;quot; and &amp;quot;Root&amp;quot; as bookmarks by default, you can bookmark others.  Typically, any new partitions created can also be accessed from bookmarks.  Depending on options you select, there may be icons on the GUI desktop to link to particular folders and clicking on these offers various options including opening them in file manager.&lt;br /&gt;
&lt;br /&gt;
In a terminal environment, to see what files and folders are in the current directory, type &amp;lt;code&amp;gt;dir&amp;lt;/code&amp;gt; for just names or &amp;lt;code&amp;gt;ls&amp;lt;/code&amp;gt; for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== folder commands ===&lt;br /&gt;
&lt;br /&gt;
To make a new folder in the current directory, type &amp;lt;code&amp;gt;sudo mkdir folder_name&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To remove a folder, that has no files in it, type in a particular path, type &amp;lt;code&amp;gt;sudo rmdir /path/directory&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To remove a folder that does have files, and/or sub-folders within it, type tt&amp;gt;sudo rm -r /path/directory&amp;lt;/code&amp;gt;, but remember the contents are gone for ever, so be absolutely sure you have specified the right folder! &lt;br /&gt;
&lt;br /&gt;
To copy folders/files from one directory to another use something like &amp;lt;code&amp;gt;cp -R --update --preserve /home/pi/CumulusMX/backup/daily /media/pi/data/CumulusMX/archive&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sometimes, you have a folder or file in just one place in the file system, but want to be able to access it at a different place (because something expects it in the second place), the syntax is &amp;lt;code&amp;gt;ln -s /path/elsewhere path/pointer_location&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
An example might be &#039;&#039;&#039;ln -s /var/lib/phpliteadmin/diary.db ~/CumulusMX/data/diary.db&#039;&#039;&#039; (phplite admin can only update databases in one folder /var/lib/phpliteadmin, or in older releases in /usr/share/phpliteadmin; while MX expects the file to be in its data folder but is happy with a logical pointer to another folder).&lt;br /&gt;
&lt;br /&gt;
=== chmod ===&lt;br /&gt;
&lt;br /&gt;
When you are attempting any of the actions listed in this article that involve reading, creating, editing, exeduting, or moving, files; you might see an error message generally because of a lack of write (or execute) permissions on an existing file or folder.   Whilst &amp;lt;code&amp;gt;rm filename&amp;lt;/code&amp;gt; will remove a file even if it is write protected, for nano you need to change the file permissions with &amp;lt;code&amp;gt;sudo chmod -R ugo+rw ~/CumulusMX&amp;lt;/code&amp;gt; for modify access to all files in your Cumulus installation (see the syntax below if you want to restrict access).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;chmod&#039;&#039;&#039; command to modify permissions&lt;br /&gt;
* the &#039;&#039;&#039;-R&#039;&#039;&#039; indicates recursive action (i.e. including not just the named folder, but all files within it and all sub-folders, and all files within sub-folders)&lt;br /&gt;
*letters indicating whose permission is being modified&lt;br /&gt;
** &#039;&#039;&#039;u&#039;&#039;&#039; = Owning user (sometimes the owner is the user root, sometimes the owner is the user Pi, for our web pages later we change ownership)&lt;br /&gt;
** &#039;&#039;&#039;g&#039;&#039;&#039; = Group (by default the owning user is also a group, but a group can be defined if you want to give multiple users (with different passwords) the same rights of access)&lt;br /&gt;
** &#039;&#039;&#039;o&#039;&#039;&#039; = Other users (write permission here is needed if for example you are using FTP to move a file from a PC to your Pi, or vice versa)&lt;br /&gt;
* sign for add or remove permissions&lt;br /&gt;
* &#039;&#039;&#039;+&#039;&#039;&#039; = add permission&lt;br /&gt;
* &#039;&#039;&#039;-&#039;&#039;&#039; = remove permission&lt;br /&gt;
*letters indicating what permission is being changed&lt;br /&gt;
** &#039;&#039;&#039;r&#039;&#039;&#039; = read [4]&lt;br /&gt;
** &#039;&#039;&#039;w&#039;&#039;&#039; = write [2]&lt;br /&gt;
** &#039;&#039;&#039;x&#039;&#039;&#039; = execute [1]&lt;br /&gt;
&lt;br /&gt;
Note that as an alternative shorter syntax you can use numbers e.g. &#039;&#039;&#039;666&#039;&#039;&#039; is equivalent to &#039;&#039;&#039;ugo+rw&#039;&#039;&#039;. The first digit in the number relates to &#039;&#039;u&#039;&#039;, the second to &#039;&#039;g&#039;&#039; and the last to &#039;&#039;o&#039;&#039;. The values in [] brackets in list of permissions above are added to derive each digit.  So if you are reading the Cumulus support forum and you see a reference to permissions which includes a string of 3 digits, now you can understand what is meant.&lt;br /&gt;
&lt;br /&gt;
=== editing files ===&lt;br /&gt;
&lt;br /&gt;
*Do remember that file names are case sensitive.&lt;br /&gt;
*If you use the wrong case in a path/file name, it will be treated as a different &amp;quot;new&amp;quot; file.&lt;br /&gt;
*If a file editor does not display content you were expecting, look in case &amp;quot;new file&amp;quot; message appears because you have made a typo in the path/file name.&lt;br /&gt;
&lt;br /&gt;
There are various text editors available on a Pi, &lt;br /&gt;
*if you have a mouse and click on a file, you should see &amp;quot;text editor&amp;quot; listed, that loads &#039;&#039;&#039;Mousepad&#039;&#039;&#039; which has a menubar at the top of its &amp;quot;Windows&amp;quot; like interface.&lt;br /&gt;
*in terminal mode &#039;&#039;&#039;nano&#039;&#039;&#039; is a text editor that by default lists the actions available making it easier for a novice to use. &lt;br /&gt;
*in both the GUI and terminal mode, Geary is a programmer&#039;s editor with lots of useful funtionality&lt;br /&gt;
&lt;br /&gt;
All editors can create a file when a file does not exist and edit (subject to file permissions) an existing file. Use prefix of &#039;sudo&#039; to give you access to any file irrespective of ownership, &#039;&#039;&#039;sudo&#039;&#039;&#039; does not change the actual file permissions, so you might find you can read a file, but not save it after you have done your edit.  &lt;br /&gt;
&lt;br /&gt;
====nano====&lt;br /&gt;
&lt;br /&gt;
The full syntax is &amp;lt;code&amp;gt;sudo nano -B Path_file_name&amp;lt;/code&amp;gt; where the &#039;&#039;&#039;-B&#039;&#039;&#039; means it will create a backup of how the file was before (this can be enabled while in the editor by pressing the control key down and typing B). Alternatively use &#039;&#039;&#039;-C&#039;&#039;&#039; which stores each version in a back-up directory.  If you want to edit from a particular line and column you can use &#039;&#039;&#039;+line.column&#039;&#039;&#039;, and also optionally use &#039;&#039;&#039;-l&#039;&#039;&#039; (lower-case &amp;quot;L&amp;quot;) to display line numbers which might be useful when trying to correct a problem with a log file like [[dayfile.txt]].  If you don&#039;t specify a file name, then nano will create a new file and you will need to specify where to save it before exit.&lt;br /&gt;
&lt;br /&gt;
After typing the nano command you need to specify a filename (it might include a path, see earlier sub-section for use of &#039;&#039;&#039;/&#039;&#039;&#039; and &#039;&#039;&#039;~&#039;&#039;&#039;) and there are examples later in this article, but if you decide to &#039;&#039;host a web site on your Pi&#039;&#039; then you might want to edit its home page with (.html or .php) name like &amp;lt;code&amp;gt;sudo nano /var/www/html/index.php&amp;lt;/code&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
After you have made an alteration to the current contents of the file, various options are shown at the bottom. Here are two key ones:&lt;br /&gt;
*First is &#039;&#039;&#039;^O&#039;&#039;&#039; which is used to save the file whilst staying in the editor, to do this press the control key down and type O. Next it shows the current file name, if you press &#039;&#039;&#039;Enter&#039;&#039;&#039; then that file will be overwritten.&lt;br /&gt;
**it allows you to type over the file name shown. If you choose to save as another file, you will be asked if the new name is correct (type &#039;&#039;&#039;Y&#039;&#039;&#039; to continue saving).&lt;br /&gt;
*Another is &#039;&#039;&#039;^X&#039;&#039;&#039; which means if you press the control key down and type X you get the exit dialogue. If you have not made any edits, or have already saved the file, this just exits the editor. If you have not used control and O to save the file, it asks whether you want to save the edited file (type &#039;&#039;&#039;Y&#039;&#039;&#039;), typing just the Y key lets save continue (any other key stroke exits without saving), then it shows the current file name, if you press &#039;&#039;&#039;Enter&#039;&#039;&#039; then that file will be overwritten.&lt;br /&gt;
&lt;br /&gt;
You might find it useful to type &amp;lt;code&amp;gt;sudo nano /etc/nanorc&amp;lt;/code&amp;gt; as this puts you into the configuration file for nano where you can set back-up, line-numbering, and other options.&lt;br /&gt;
&lt;br /&gt;
====Geany====&lt;br /&gt;
&lt;br /&gt;
This uses a GUI, you can set preferences and do all other actions using either menu selections (use mouse or keyboard) or control sequences (on keyboard).  Once it knows what type of programming language, it can colour up the code; it can show you how many times variable identifiers are used; it can match opening and closing quotes, tags, and brackets; and it can ensure encoding and line terminators are correct.&lt;br /&gt;
&lt;br /&gt;
Line-numbering is an option, so it can be used to edit MX log files, and (as BOM is an encoding option) you can be sure it won&#039;t add unwanted encoding.&lt;br /&gt;
&lt;br /&gt;
== removing an unwanted file ==&lt;br /&gt;
&lt;br /&gt;
You can remove a file with various commands, including &amp;lt;code&amp;gt;sudo rm filename&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== external storage ===&lt;br /&gt;
&lt;br /&gt;
Generally, if you attach USB storage (a disc or a stick), Linux OS distributions will detect any existing partitions (yes a technical term) and allow you to read files stored in them. This applies whether the partition is formatted for Linux or for Microsoft Windows.&lt;br /&gt;
&lt;br /&gt;
However, you may have a brand new, unformatted, drive, or you may want to delete, or add partitions, or to format them as Linux partitions (as these make the input/output significantly more efficient).&lt;br /&gt;
&lt;br /&gt;
You can install software that uses a GUI to make this easy, e.g. &#039;&#039;&#039;gparted&#039;&#039;&#039; [https://gparted.org/ partition editor].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can use a terminal session, and lots of commands:&lt;br /&gt;
#connect your external storage&lt;br /&gt;
#type &#039;&#039;&#039;su&#039;&#039;&#039; to gain administrative access&lt;br /&gt;
#enter your RPi password&lt;br /&gt;
#type &#039;&#039;&#039;fdisk -l&#039;&#039;&#039; (this is only available to root user) to see names for all storage your Linux computer can see&lt;br /&gt;
#an external drive will be named something like &#039;&#039;/dev/sd&#039;&#039;&#039;&#039;a&#039;&#039;&#039;&#039;&#039; although that &amp;quot;a&amp;quot; might be &amp;quot;b&amp;quot; or a subsequent letter in alphabet depending on what has already been assigned&lt;br /&gt;
# if &amp;quot;sda&amp;quot; and &amp;quot;sdb&amp;quot; appear, or any others up to &amp;quot;sdz&amp;quot;, the last one will relate to the most recently connected storage&lt;br /&gt;
#if your drive has partitions, then you will see further entries like &#039;&#039;&#039;/dev/sda1&#039;&#039;&#039; and &#039;&#039;/dev/sda2&#039;&#039;.&lt;br /&gt;
#type &#039;&#039;&#039;df&#039;&#039;&#039; to see whether your drive is currently mounted (being used by computer system)&lt;br /&gt;
#if it is mounted, the command to use next is (type this accurately, there is a temptation to type an English word that adds an extra &amp;quot;n&amp;quot;!) &amp;lt;code&amp;gt;umount /dev/sda&amp;lt;/code&amp;gt;, obviously replace the &amp;quot;a&amp;quot; by the appropriate letter seen in the earlier command&lt;br /&gt;
#if the drive does not have a partition, create one using &amp;lt;code&amp;gt;fdisk /dev/sda&amp;lt;/code&amp;gt;, again changing the &amp;quot;a&amp;quot; into whatever letter was seen in response to the first &amp;quot;fdisk&amp;quot; command&lt;br /&gt;
#*&amp;quot;fdisk&amp;quot; is a utility, it will wait for further instructions, follow each with pressing &amp;quot;Enter&amp;quot;&lt;br /&gt;
#*type &#039;&#039;&#039;n&#039;&#039;&#039; as instruction to create a new partition&lt;br /&gt;
#*type &#039;&#039;&#039;p&#039;&#039;&#039; to make this the primary partition on this drive&lt;br /&gt;
#* type &#039;&#039;&#039;1&#039;&#039;&#039; to make this the first partition&lt;br /&gt;
#*accept default offered for first cylinder&lt;br /&gt;
#*accept default offered for last cylinder, if this is only partition, as that ensures the whole disk (apart from partition table) is available for your data&lt;br /&gt;
#*for simplicity, this guidance will not cover the possibility of multiple partitions&lt;br /&gt;
#*type &#039;&#039;&#039;t&#039;&#039;&#039; to say you are specifying the way you want this partition to be specified in partition table&lt;br /&gt;
#*optionally type &#039;&#039;&#039;L&#039;&#039;&#039; to see what file system types are available for the partition table&lt;br /&gt;
#*to select a &amp;quot;Linux&amp;quot; partition, type &#039;&#039;&#039;83&#039;&#039;&#039;&lt;br /&gt;
#*type &#039;&#039;&#039;w&#039;&#039;&#039; to create the partition you have now specified for Linux.&lt;br /&gt;
#Now we have a partition table and a partition on our drive, we can repeat &#039;&#039;&#039;fdisk -l&#039;&#039;&#039; to see the entry now added, it might be &#039;&#039;&#039;/dev/sda1&#039;&#039;&#039;, where again the &amp;quot;a&amp;quot; might be a different letter&lt;br /&gt;
#To format this partition for Linux, we specify &amp;quot;ext4&amp;quot; as the way to format it using &amp;lt;code&amp;gt;mkfs.ext4 /dev/sda1&amp;lt;/code&amp;gt;, again replacing the &amp;quot;a&amp;quot; as required.&lt;br /&gt;
#we need to create a folder within &lt;br /&gt;
#*&amp;quot;/media&amp;quot; for Linux in general&lt;br /&gt;
#*&amp;quot;/media/pi&amp;quot; for Raspberry PI OS&lt;br /&gt;
# As we will learn later, the relevant command (in RPi OS) is &#039;&#039;&#039;mkdir /media/pi/my_short_name&#039;&#039;&#039;, where &amp;quot;my_short_name&amp;quot; is selected by you&lt;br /&gt;
#To mount our partition, we type &amp;lt;code&amp;gt;mount /dev/sda1 /media/pi/my_short_name&amp;lt;/code&amp;gt;, where &amp;quot;sda1&amp;quot; is replaced by &amp;quot;sdb1&amp;quot; or whatever we saw in &#039;&#039;&#039;fdisk -l&#039;&#039;&#039;, and &amp;quot;pi/my_short_name&amp;quot; is replaced by whatever we used in our make directory command.&lt;br /&gt;
#To (optionally) get our partition mounted at boot, we can use an editor (see later) to change the boot instructions, by typing &amp;lt;code&amp;gt;nano /etx/fstab&amp;lt;/code&amp;gt;&lt;br /&gt;
#*In the editor, use the down arrow on your keyboard to move to last line, and then type &#039;&#039;&#039;/dev/sda1&#039;&#039;&#039; (change the &amp;quot;a&amp;quot; as necessary), then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;/media/pi/my_short_name&#039;&#039;&#039; (change &amp;quot;pi/my_short_name&amp;quot; to whatever we used in our make directory command), then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;ext4&#039;&#039;&#039; (again matching the format type we  selected earlier), then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;defaults&#039;&#039;&#039;, then press &amp;quot;tab&amp;quot;, then type &#039;&#039;&#039;1&#039;&#039;&#039;, then press &amp;quot;tab&amp;quot;, then finally type &#039;&#039;&#039;2&#039;&#039;&#039;&lt;br /&gt;
#*save the file (as described later in nano sub-section), hold down control key and press &#039;&#039;&#039;o&#039;&#039; letter key. Press &amp;quot;enter&amp;quot; again to confirm same file name.&lt;br /&gt;
#* exit nano by holding control key and pressing &amp;quot;x&amp;quot; key.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Package Manager – a brief technical aside==&lt;br /&gt;
&lt;br /&gt;
Linux operating systems install software by looking in repositories, and checking a register showing dependencies.  When you ask Linux to install a particular package using “apt”, it also checks if all dependencies of the selected package are already present, and installs any that are missing.&lt;br /&gt;
&lt;br /&gt;
If you look up on-line how to install any software in Linux, it may use “apt-get”, that is an earlier package manager, in general you can use “apt” instead now. &lt;br /&gt;
&lt;br /&gt;
The full differences between “apt” and “apt-get” depends on your Linux flavour, so this technical aside now splits further discussion by Linux flavour.&lt;br /&gt;
&lt;br /&gt;
===Debian as used by Raspberry Pi===&lt;br /&gt;
&lt;br /&gt;
“Debian Linux” (and its derivatives such as “Raspberry Pi Operating System”) uses “apt” to mean a ‘’’Package Manager’’’ that can install, update, and remove packages from these computer systems. &lt;br /&gt;
&lt;br /&gt;
For Debian Linux, “apt” is directed at the end-user (it has user friendly features like a staus bar showing progress on a long install or long upgrade, and can produce prompts about what it is doing and can give choices about whether to do individual actions). &lt;br /&gt;
&lt;br /&gt;
There is an alternative “apt-get” which is more powerful, but directed at system level users (those who don’t want to be watching progress and possibly responding to prompts). &lt;br /&gt;
&lt;br /&gt;
As “apt-get” is updated less frequently than “apt”, it may be it will not work with new packages. Put another way “apt-get” may never change what it can do, but “apt” may get modified to do more than it did before.&lt;br /&gt;
&lt;br /&gt;
===Ubuntu===&lt;br /&gt;
&lt;br /&gt;
For Ubuntu only “apt-get” was available up to 2014, when “apt” was added. Both work as described above for Debian. Again “apt” is best to use.&lt;br /&gt;
&lt;br /&gt;
===Mint===&lt;br /&gt;
&lt;br /&gt;
Linux Mint has a different variation. Its “apt” calls its “apt-get” and adds extra features.  So both effectively do the same, but (as with previous flavours) “apt” is best to use.&lt;br /&gt;
&lt;br /&gt;
It is likely that other Linux variants will also vary how these alternative commands differ.&lt;/div&gt;</summary>
		<author><name>Phil23</name></author>
	</entry>
	<entry>
		<id>https://www.cumuluswiki.org/index.php?title=Raspberry_Pi_Image&amp;diff=9283</id>
		<title>Raspberry Pi Image</title>
		<link rel="alternate" type="text/html" href="https://www.cumuluswiki.org/index.php?title=Raspberry_Pi_Image&amp;diff=9283"/>
		<updated>2021-06-18T23:07:57Z</updated>

		<summary type="html">&lt;p&gt;Phil23: /* Starting Cumulus MX from the command line */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using the pre-built Raspberry Pi Image ==&lt;br /&gt;
We have created an customised version of the Raspberry Pi Lite image with Cumulus MX pre-installed and ready to go.&lt;br /&gt;
&lt;br /&gt;
This is designed to be what is called a &amp;quot;headless&amp;quot; installation, that is to be run on a Raspberry Pi without a monitor or keyboard attached to it. As such the image does not contain a Graphical User Interface (GUI), it is a command line only installation. It is possible to add the GUI later if you want it.&lt;br /&gt;
&lt;br /&gt;
=== Pre-Installation Steps ===&lt;br /&gt;
You will need:&lt;br /&gt;
* A suitable SD card for your Raspberry Pi&lt;br /&gt;
:A minimum size of 16GB is recommended. Be sure to buy a good quality card.&lt;br /&gt;
:You can use an SSD instead if preferred [with the minor complication that in a later step you will need non-WiFi access to the Raspberry Pi (keyboard and monitor, or SSH over ethernet) as you cannot enter the WiFi details from a Windows PC to the linux SSD due to the different file system used]&lt;br /&gt;
* An image installer to copy the image file to the SD card&lt;br /&gt;
:The [https://www.raspberrypi.org/documentation/installation/installing-images/ Raspberry Pi site] has a list of suitable software for your operating system. Scroll down to &amp;quot;Writing the image&amp;quot;.&amp;lt;br /&amp;gt;&lt;br /&gt;
: This guide uses Raspberry Pi Imager&lt;br /&gt;
* The image file to install&lt;br /&gt;
:Download the latest image file from the [[Software#Current_Release|Software Download page]].&lt;br /&gt;
* An SSH terminal program to configure your Raspberry Pi&lt;br /&gt;
: For Windows we recommend using [https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html PuTTY]&lt;br /&gt;
* A file transfer program - though you will not need this right away, you will need it at some point. The main uses will be...&lt;br /&gt;
:* Copying Cumulus MX updates to your Raspberry Pi&lt;br /&gt;
:* Extracting the diagnostic files from Cumulus MX if this go wrong&lt;br /&gt;
:* Setting up a web site&amp;lt;br /&amp;gt;&lt;br /&gt;
:A popular program for Windows is [https://winscp.net/eng/download.php WinSCP]&lt;br /&gt;
&lt;br /&gt;
=== Installing the Image ===&lt;br /&gt;
This installation was performed on a Windows computer using the [https://www.raspberrypi.org/downloads/ Raspberry Pi Imager v1.4] software&lt;br /&gt;
[[File:PiImager-01.png|none]]&lt;br /&gt;
* Insert your blank SD card into your computer - if not blank whatever is on the card will be erased.&lt;br /&gt;
* Start Raspberry Pi Imager&lt;br /&gt;
:* Click the CHOOSE OS button, scroll down to the bottom of the list and select &#039;&#039;&#039;Use custom&#039;&#039;&#039;&lt;br /&gt;
:*; [[File:PiImager-02.png|none]]&lt;br /&gt;
:* Browse to the location of the OS Image zip file you downloaded - do not unzip it&lt;br /&gt;
:* Click CHOOSE SD CARD, and select the SD card from the Device dropdown - check you have the correct drive selected!&lt;br /&gt;
:*; [[File:PiImager-04.png|none]]&lt;br /&gt;
:* Click the WRITE button. Writing the image will take a few minutes&lt;br /&gt;
:* Once the image has finished been written, you can close Raspberry Pi Imager&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;OPTIONAL&#039;&#039;&#039;&#039;&#039; - If you wish to connect your Pi to the network using WiFi from the first boot, then you will need to follow these additional steps.&lt;br /&gt;
*;Note. If you connect via an cabled network, you can always configure the WiFi later using the command line&lt;br /&gt;
:* Eject your SD card from your computer and re-insert it&lt;br /&gt;
:* Locate the SD drive in File Explorer.&lt;br /&gt;
:* On the SD drive edit a file called &#039;&#039;&#039;wpa_supplicant.conf.txt&#039;&#039;&#039; with a text editor and...&lt;br /&gt;
::* Change the country code to match your location - eg. US, GB, FR etc&lt;br /&gt;
::* Set the ssid to match your WiFi id&lt;br /&gt;
::* Set the psk to your WiFi password&lt;br /&gt;
:* Save the file, and then rename it to &#039;&#039;&#039;wpa_supplicant.conf&#039;&#039;&#039; - i.e. remove the .txt filename extension&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
* Eject the SD card from your computer. Insert it into your Raspberry Pi and power up.&lt;br /&gt;
&lt;br /&gt;
=== First Boot ===&lt;br /&gt;
* Connect the Pi to your wired network if you did not configure the WiFi as per the steps above.&lt;br /&gt;
* Power on the Pi.&lt;br /&gt;
* Now wait 5 minutes. The first boot will be resizing your disk and optionally configuring your WiFi&lt;br /&gt;
* Start your browser and see if you can connect to this URL: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://cumulusmx:8998&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
:* If you can great - you should now see the Cumulus MX console&lt;br /&gt;
:* If not, then you will have to find out the Raspberry Pi&#039;s IP address from your router. Then try connecting to this URL: &#039;&#039;&#039;http://&amp;lt;ip_address&amp;gt;:8998&#039;&#039;&#039; (example: &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://192.168.1.123:8998&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039; where the numbers before :8998 are those for YOUR Raspberry Pi from YOUR router). It just depends on your router whether it allows use of the name (cumulusmx) or requires the IP address.&lt;br /&gt;
&lt;br /&gt;
=== Verify your SSH Connection ===&lt;br /&gt;
* Fire up your SSH Client - we use PuTTY here&lt;br /&gt;
:* Enter the hostname as &amp;quot;cumulusmx&amp;quot;, and check the protocol is set to SSH. Then open the connection.&amp;lt;br /&amp;gt;&lt;br /&gt;
: (As before, you may need to enter the Pi&#039;s IP address instead of the hostname if that does not work)&lt;br /&gt;
:*; [[File:PuTTY-01.png|none]]&lt;br /&gt;
* You will have the accept the SSH key the first time you connect&lt;br /&gt;
* Enter the username &amp;quot;pi&amp;quot; and password &amp;quot;raspberry&amp;quot; - these are the default Raspberry Pi username credentials&lt;br /&gt;
* When you login it will display a warning about you using the default password and ask you to change it&lt;br /&gt;
:* Use the &#039;&#039;&#039;passwd&#039;&#039;&#039; command to do this now...&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;pi@cumulusmx:~ $ passwd&lt;br /&gt;
Changing password for pi.&lt;br /&gt;
Current password: &lt;br /&gt;
New password: &lt;br /&gt;
Retype new password: &lt;br /&gt;
passwd: password updated successfully&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* It&#039;s a good idea to check/configure your RPi for your locale and timezone settings.  The default is for en_UK UTF-8 locale and GMT timezone. Use &#039;&#039;&#039;sudo raspi-config&#039;&#039;&#039; 5. Localization Options, L1 Locale (select en_US ISO-8851-1 for USA if needed) and L2 Timezone (select the appropriate timezone), then &#039;&#039;&#039;sudo reboot&#039;&#039;&#039; if needed to engage the new settings.&lt;br /&gt;
* Check the status of the Cumulus MX service with the command &#039;&#039;&#039;sudo systemctl status cumulusmx&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
: You will get some information back, the important bit to note is the line starting &#039;&#039;&#039;Active:&#039;&#039;&#039;, it should say &#039;&#039;&#039;active (running)&#039;&#039;&#039;&lt;br /&gt;
* You can leave the SSH session open, you will need it again soon...&lt;br /&gt;
&lt;br /&gt;
=== Configure Cumulus MX ===&lt;br /&gt;
Now it is time to configure Cumulus MX for your station.&lt;br /&gt;
* Start your browser and connect to the same URL as before - &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://cumulusmx:8998&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039; or &#039;&#039;&#039;http://&amp;lt;ip_address&amp;gt;:8998&#039;&#039;&#039;&lt;br /&gt;
* From the menu select &#039;&#039;&#039;Settings | Station Settings&#039;&#039;&#039;, then follow &#039;&#039;&#039;[https://cumuluswiki.org/a/Cumulus.ini#Cumulus_MX this guide for configuring your station].&#039;&#039;&#039;&lt;br /&gt;
* Once your have completed all the settings for for station, and successfully saved them, Cumulus MX will need to be restarted.&lt;br /&gt;
* Back in your SSH session, send the command &#039;&#039;&#039;sudo systemctl stop cumulusmx&#039;&#039;&#039;, this stops the Cumulus MX service.&lt;br /&gt;
* Wait a few seconds, then enter the command &#039;&#039;&#039;sudo systemctl start cumulusmx&#039;&#039;&#039;, this starts the Cumulus MX service again.&lt;br /&gt;
* Back to your browser and check that URL - &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://cumulusmx:8998&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039; or &#039;&#039;&#039;http://&amp;lt;ip_address&amp;gt;:8998&#039;&#039;&#039; - again. If all is well, the default dashboard page should start showing the data from your weather station.&lt;br /&gt;
:* If it does, congratulations, you have successfully started recording your weather data&lt;br /&gt;
:* If it doesn&#039;t, then check back over this process carefully for any mistakes or omissions you may have made.&lt;br /&gt;
:* If you cannot resolve the problem, then ask for [https://cumulus.hosiene.co.uk/ help on the forum]&lt;br /&gt;
&lt;br /&gt;
== Additional Steps ==&lt;br /&gt;
&#039;&#039;To be expanded&#039;&#039;&lt;br /&gt;
* Configuring WiFi from SSH&lt;br /&gt;
* Stopping Cumulus MX starting up when the Pi boots&lt;br /&gt;
* Give your Pi a fixed IP address&lt;br /&gt;
:* Add a DHCP reservation&lt;br /&gt;
:* Assign a static IP address&lt;br /&gt;
:If you need to use a fixed IP address for your Raspberry Pi, there are 2 methods&lt;br /&gt;
&lt;br /&gt;
1. Adjust your router settings to always assign the same IP address. This facility has different names on different brands of router, look for a section named DHCP. You may be able to choose the IP address (possibly within or possibly outside the range assigned by DHCP), or you may only be allowed to choose &#039;always assign the address it currently has&#039;. You may need to know the MAC address of the Raspberry PI, but if so that will likely be displayed alongside the current connection.&lt;br /&gt;
&lt;br /&gt;
2. Adjust Raspberry Pi settings to always request the the same fixed address. This is less reliable, because your router may have assigned the requested address to a different device since the Pi was last active. To do this you have to edit this file: « &#039;&#039;&#039;/etc/network/interfaces&#039;&#039;&#039; »&lt;br /&gt;
:For Ethernet connection a line specifying port &#039;&#039;&#039;eth0&#039;&#039;&#039; is needed to describe your ethernet configuration, as the example below. For a wireless connection, it needs similar with &#039;&#039;&#039;wlan0&#039;&#039;&#039;:&lt;br /&gt;
 allow-hotplug eth0&lt;br /&gt;
 iface eth0 inet static&lt;br /&gt;
  address 192.168.11.100&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  gateway 192.168.11.1&lt;br /&gt;
  dns-domain example.com&lt;br /&gt;
  dns-nameservers 192.168.11.1&lt;br /&gt;
&#039;&#039;The line &amp;quot;dns-domain example.com&amp;quot; is optional&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:You could have also to edit an other file, for dns configuration.&lt;br /&gt;
:see file «&#039;&#039;&#039;/etc/resolv.conf&#039;&#039;&#039;» to insert these lines:&lt;br /&gt;
 nameserver 192.168.11.1&lt;br /&gt;
 domain example.com&lt;br /&gt;
&#039;&#039;Again, the line &amp;quot;domain example.com&amp;quot; is optional&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Information ==&lt;br /&gt;
=== Install location ===&lt;br /&gt;
In this image Cumulus MX is installed into &#039;&#039;&#039;/opt/CumulusMX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Image Customisations ===&lt;br /&gt;
* Based on the &#039;Lite&#039; version of the Raspberry Pi OS (ie the graphical desktop GUI is not included; it can be added later if you want it)&lt;br /&gt;
* Full install of Mono&lt;br /&gt;
* Update of all packages&lt;br /&gt;
* Install of Cumulus MX&lt;br /&gt;
* Set Cumulus MX to auto-start&lt;br /&gt;
* Enable SSH service&lt;br /&gt;
* Disable IPv6&lt;br /&gt;
* Set hostname to &amp;quot;cumulusmx&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== systemctl commands ===&lt;br /&gt;
You can use the following commands to control Cumulus MX...&lt;br /&gt;
: To start Cumulus:&lt;br /&gt;
 sudo systemctl start cumulusmx&lt;br /&gt;
: To stop Cumulus:&lt;br /&gt;
 sudo systemctl stop cumulusmx&lt;br /&gt;
: To check if Cumulus is running:&lt;br /&gt;
 sudo systemctl status cumulusmx&lt;br /&gt;
: To restart Cumulus:&lt;br /&gt;
 sudo systemctl restart cumulusmx&lt;br /&gt;
: To make Cumulus start at system boot time:&lt;br /&gt;
 sudo systemctl enable cumulusmx&lt;br /&gt;
: To stop Cumulus starting at boot time:&lt;br /&gt;
 sudo systemctl disable cumulusmx&lt;br /&gt;
&lt;br /&gt;
=== Starting Cumulus MX from the command line ===&lt;br /&gt;
You may want to start Cumulus from the command line for diagnostic purposes, you can still do this...&lt;br /&gt;
&lt;br /&gt;
First make sure the Cumulus MX service is stopped&lt;br /&gt;
 sudo systemctl stop cumulusmx&lt;br /&gt;
&lt;br /&gt;
Then path to the Cumulus folder and start it&amp;lt;br&amp;gt;&lt;br /&gt;
(Noting it is case sensitive).&lt;br /&gt;
 cd /opt/CumulusMX&lt;br /&gt;
 sudo mono CumulusMX.exe&lt;br /&gt;
&lt;br /&gt;
=== Symbolic Links ===&lt;br /&gt;
The image contains a number of precreated symbolic links for Cumulus MX files such as realtime.txt and the standard website tmp files. These links divert these files to a memory disk to reduce wear on your SD card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build Creation Notes ==&lt;br /&gt;
* Installed Raspberry Pi Buster Lite (August 2020)&lt;br /&gt;
* Enabled SSH&lt;br /&gt;
* Installed latest updates - apt update/upgrade&lt;br /&gt;
* Installed latest Mono complete stable version (6.12)&lt;br /&gt;
* Clean up apt - apt autoremove&lt;br /&gt;
* Changed hostname to &amp;quot;cumulusmx&amp;quot;&lt;br /&gt;
* Edited cumulusmx.service and copied to /etc/systemd/system&lt;br /&gt;
* Disabled mono-xsp4 service - update-rc.d mono-xsp4 disable&lt;br /&gt;
* Copied CMX to /opt/CumulusMX folder&lt;br /&gt;
* Created symbolic links for temp files to /run/cumulusmx&lt;br /&gt;
&lt;br /&gt;
The following commands are useful in creating the image file (created on Debian).&lt;br /&gt;
&lt;br /&gt;
Create image file from SD card - sdb, may be sdc etc.&lt;br /&gt;
 dd if=/dev/sdb of=/home/&amp;lt;username&amp;gt;/rpi.img bs=1M&lt;br /&gt;
&lt;br /&gt;
Shrink the image file.&amp;lt;br /&amp;gt;&lt;br /&gt;
Download pishrink from:&lt;br /&gt;
 wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh&lt;br /&gt;
Then run it...&lt;br /&gt;
 pishrink.sh /home/&amp;lt;username&amp;gt;/rpi.img /home/&amp;lt;username&amp;gt;/rpi2.img&lt;br /&gt;
&lt;br /&gt;
Disable IPv6&amp;lt;br /&amp;gt;&lt;br /&gt;
Edit /etc/systctl.conf&amp;lt;br /&amp;gt;&lt;br /&gt;
Add line...&lt;br /&gt;
 net.ipv6.conf.all.disable_ipv6 = 1&lt;/div&gt;</summary>
		<author><name>Phil23</name></author>
	</entry>
	<entry>
		<id>https://www.cumuluswiki.org/index.php?title=Category:User_Contributions&amp;diff=4611</id>
		<title>Category:User Contributions</title>
		<link rel="alternate" type="text/html" href="https://www.cumuluswiki.org/index.php?title=Category:User_Contributions&amp;diff=4611"/>
		<updated>2019-12-31T23:56:20Z</updated>

		<summary type="html">&lt;p&gt;Phil23: /* User contributions to Cumulus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= User contributions to Cumulus =&lt;br /&gt;
&lt;br /&gt;
Files and add-ons contributed by Cumulus users. the following links will take you to web sites or forum threads, where you can read about and download the item.&lt;br /&gt;
&lt;br /&gt;
*[[WeatherConsole]] Text-based ‘live’ weather display for a web site&lt;br /&gt;
*[https://cumulus.hosiene.co.uk/viewtopic.php?f=4&amp;amp;amp;t=2144 Cumulus Realtime Gadget]  A Windows desktop gadget&lt;br /&gt;
*[[ICumulus_for_iPhone]]  An iPhone friendly web interface&lt;br /&gt;
*[http://www.screenlets.org/index.php/Sunbird Sunbird – Ubuntu Screenlet] A ‘Screenlet’ for Ubuntu Linux&lt;br /&gt;
*[https://cumulus.hosiene.co.uk/viewtopic.php?f=14&amp;amp;amp;t=832 XHTML 1.1 compliant Ajax framework]  Ajax XML HTML webserver frameset that displays dynamic realtime data on your web pages&lt;br /&gt;
*[[Toolbox]] Cumulus Toolbox contains a variety of extra features to enhance the power of Cumulus by providing a number of automated processes&lt;br /&gt;
*[http://meteoduquebec.com/ Météo du Québec] Traduction et adaptation française de Cumulus Icônes, librairies et Modules exclusifs à Cumulus Forum de discussion en français. Ouvert à la francophonie!&lt;br /&gt;
*[http://saratoga-weather.org/wxtemplates/index.php AJAX/PHP Multilingual Website Templates]  A set of configurable templates to create a full ‘real time’ web site.&lt;br /&gt;
*[http://weatherbyyou.com/ Weather by You!]  Alternative web site templates for use with Cumulus, many different styles.&lt;br /&gt;
*[https://play.google.com/store/apps/details?id=com.gmail.theocapps.homeweather Home Weather Station] An Android app for displaying Cumulus data.&lt;br /&gt;
*[https://weather34.com/homeweatherstation/ Weather34 Dashboard] by Brian Underdown. A clean, attractive template for displaying Cumulus data using realtime.txt. You can read more about this in the [https://cumulus.hosiene.co.uk/viewtopic.php?f=14&amp;amp;amp;t=15136 forum]. Download the official latest Cumulus version here: [[HomeWeatherStationTemplate|Home Weather Station Template light and dark themes]]&lt;br /&gt;
*[https://cumulus.hosiene.co.uk/viewtopic.php?f=14&amp;amp;t=11397 Yet Another Dayfile Reader]  PHP Dayfile Reader with Monthly &amp;amp; Seasonal Display&lt;br /&gt;
*[https://cumulus.hosiene.co.uk/viewtopic.php?f=14&amp;amp;t=17573 Cumulusutils] Generates a Fire Weather page Plus much more. See the linked Forum Post for full details.&lt;/div&gt;</summary>
		<author><name>Phil23</name></author>
	</entry>
	<entry>
		<id>https://www.cumuluswiki.org/index.php?title=Cumulus_Users&amp;diff=4605</id>
		<title>Cumulus Users</title>
		<link rel="alternate" type="text/html" href="https://www.cumuluswiki.org/index.php?title=Cumulus_Users&amp;diff=4605"/>
		<updated>2019-12-27T23:52:20Z</updated>

		<summary type="html">&lt;p&gt;Phil23: Add site to User List&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Cumulus Users&#039;&#039;&#039; is a list of sites powered by [[About Cumulus|Cumulus]]. &lt;br /&gt;
&lt;br /&gt;
Users are grouped by geographical region and by country. &lt;br /&gt;
&lt;br /&gt;
These tables were created showing all users having no webcam, but as sites checked they will be updated to indicate if they have not webcam, or if the webcam link is still pointing to the default Sanday webcam. &lt;br /&gt;
&lt;br /&gt;
== Users &amp;amp;amp; Locations  ==&lt;br /&gt;
&lt;br /&gt;
=== Africa ===&lt;br /&gt;
&lt;br /&gt;
==== South Africa ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://dieterlubbe.dyndns.org Sonneglans, Johannesburg, Gauteng]&lt;br /&gt;
| Nil&lt;br /&gt;
| [https://www.google.co.za/maps/place/38+Witdoring+Rd,+Randburg,+2188/@-26.0730892,27.9666189,515m/data=!3m1!1e3!4m5!3m4!1s0x1e9575b26defe91b:0x7725a044cff7f3f8!8m2!3d-26.0730099!4d27.9676835]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Asia ===&lt;br /&gt;
&lt;br /&gt;
==== Japan ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://multibox727.com/weather Lake Hamana,Kosai Shizuoka]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=34.722232,137.529945&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@34.722232,137.529945]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Europe ===&lt;br /&gt;
&lt;br /&gt;
==== Austria ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://wetter.eile.at Vienna]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=48.22544,16.34036&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@48.22544,16.34036]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Belgium ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://users.skynet.be/fa843465 Heulebrug Knokke-Heist weather station]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=51.330277777778,3.2438888888889&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@51.330277777778,3.2438888888889]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.weerstation-maarkedal.be/ Maarkedal]&lt;br /&gt;
| Nil&lt;br /&gt;
| [https://www.google.co.uk/maps/place/Maarkedal,+Belgium/@50.7975098,-0.8376771,6z/data=!4m2!3m1!1s0x47c3057d00e37a49:0x1b8092cb903c0d2b]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Bulgaria ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.jerbils.info/saratoga/wxindex.php Zlatina]&lt;br /&gt;
| Yes&lt;br /&gt;
| [https://www.google.co.uk/maps/place/Zlatina,+Bulgaria/@43.2370974,22.9293192,6z/data=!4m2!3m1!1s0x40a5bce1e991abab:0xa00a014cd0e4e20]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Czech Republic ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://meteo.amut.net Amut.NET]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=49.30543137,4.16422367&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@49.30543137,4.16422367]&lt;br /&gt;
|-&lt;br /&gt;
| [http://meteostanice.wrp.cz/ Holice]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=50.0875,15.996944444444&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@50.0875,15.996944444444]&lt;br /&gt;
|-&lt;br /&gt;
| [http://pocasi.ok5aw.cz/meteo/ Nova Paka]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=50.4970450,15.5063000&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@50.4970450,15.5063000]&lt;br /&gt;
|-&lt;br /&gt;
| [http://meteo.ponik.net Plzeň - Radčice]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=49.764333,13.325533&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@49.764333,13.325533]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.sudislav.cz/meteo/ Sudislav nad Orlicí]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=49.987222222222,16.319722222222&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@49.987222222222,16.319722222222]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Denmark  ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User &lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam &lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.baekgaarden.eu/weather/ Baekgaarden Weather] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=55.205,10.300833333333&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@55.205,10.300833333333]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.ibtest.dk/cumulus/ Gilleleje] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=56.083888888889,12.3180555555556&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@56.083888888889,12.3180555555556]&lt;br /&gt;
|-&lt;br /&gt;
| [http://home1.stofanet.dk/korsholm53/weather Hals Golf Klub-Korsholm] &lt;br /&gt;
| Yes &lt;br /&gt;
| [http://maps.google.com/maps?sll=56.995,10.3225&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@56.995,10.3225]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.kvistgaardvejr.dk Kvistgaard] &lt;br /&gt;
| Default &lt;br /&gt;
| [http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=55.99224+12.490421&amp;amp;aq=&amp;amp;sll=55.991145,12.490575&amp;amp;sspn=0.007261,0.020084&amp;amp;g=55.99+12.49&amp;amp;ie=UTF8&amp;amp;ll=55.998381,12.524414&amp;amp;spn=14.912068,57.875977&amp;amp;z=5]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Finland ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.netikka.net/mpa Helsingby weather]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=63.024444444444,21.803333333333&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@63.024444444444,21.803333333333]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.kolumbus.fi/chivaario/weather/index.htm Järvenpää-Isokytö Weather]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=60.483055555556,25.1125&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@60.483055555556,25.1125]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.karsaa.com/cumulus/ Kärsämäki Sääasema]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=63.973333333333,25.741666666667&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@63.973333333333,25.741666666667]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== France ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.meteo-caylus.fr/index.htm Caylus Météo]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=44.248888888889,1.8066666666667&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@44.248888888889,1.8066666666667]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.franceability.eu/weather/ Lapeyrouse]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.co.uk/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=Lapeyrouse&amp;amp;sll=53.800651,-4.064941&amp;amp;sspn=19.196147,49.570312&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Lapeyrouse,+Puy-de-D%C3%B4me,+Auvergne,+France&amp;amp;ll=46.225453,2.878418&amp;amp;spn=11.203207,24.785156&amp;amp;z=6]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.del-rio.net/cumulus/CumulusRealtime.html Rue des Myosotis à Lille]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=50.613611111111,3.0422222222222&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@50.613611111111,3.0422222222222]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Greece ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://weather.magla.gr Agios Dimitrios - Athens]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=37.933888888889,23.741666666667&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@37.933888888889,23.741666666667]&lt;br /&gt;
|-&lt;br /&gt;
| [http://alepochori.meteoclub.gr Alepochori - Megara]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=38.057198,23.254829&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@38.057198,23.254829]&lt;br /&gt;
|-&lt;br /&gt;
| [http://chalandri.meteoclub.gr Chalandri - Athens]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=38.053611111111,24.331944444444&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@38.053611111111,24.331944444444]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.metar.gr/ws/chios/ Chios weather]&lt;br /&gt;
| Default&lt;br /&gt;
| [http://maps.google.com/maps?sll=38.3725,-26.130833333333&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@38.3725,-26.130833333333]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.galaxidion.gr/meteo Galaxidi]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=38.37711,22.38342&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@38.37711,22.38342]&lt;br /&gt;
|-&lt;br /&gt;
| [http://larisa.meteoclub.gr Larisa]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=39.625277777778,22.411388888889&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@39.625277777778,22.411388888889]&lt;br /&gt;
|-&lt;br /&gt;
| [http://marathonas.meteoclub.gr Marathonas - Athens]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=38.116944444444,23.989166666667&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@38.116944444444,23.989166666667]&lt;br /&gt;
|-&lt;br /&gt;
| [http://nikaia.meteoclub.gr Nikaia - Perivolaki]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=37.9675,23.656388888889&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@37.9675,23.656388888889]&lt;br /&gt;
|-&lt;br /&gt;
| [http://pireas.meteoclub.gr Pireas]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=37.953333333333,23.630555555556&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@37.953333333333,23.630555555556]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Italy ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://sbonweb.altervista.org/meteo/index.htm Albizzate, VA]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=45.725555555556,8.7958333333333&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@45.725555555556,8.7958333333333]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Lithuania ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://noway.lt/weather Vilnius]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=54.703888888889,25.227777777778&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@54.703888888889,25.227777777778]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Netherlands ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.goetweer.nl Andelst, Overbetuwe]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=51.9075,5.7306&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@51.9075,5.7306]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.apeldoornmeteo.nl/ Apeldoorn]&lt;br /&gt;
| Yes&lt;br /&gt;
| [https://www.google.co.uk/maps/place/Apeldoorn,+Netherlands/@52.2114039,1.4973809,6z/data=!4m2!3m1!1s0x47c7b8284d1487cb:0x400de5a8d1e65b0]&lt;br /&gt;
|-&lt;br /&gt;
| [http://77.169.67.221/ Boelenslaan]&lt;br /&gt;
| No&lt;br /&gt;
| [https://www.google.com/maps/place/53%C2%B005&#039;34.4%22N+6%C2%B004&#039;12.4%22E/@53.0929032,1.5876727,6z/data=!4m2!3m1!1s0x0:0x0]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.meteozusterhof.nl Weerstation Zusterhof Leiden]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=52.1541,4.49081&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@52.1541,4.49081]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Norway  ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable FCK__ShowTableBorders&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 350px;&amp;quot; | User &lt;br /&gt;
! style=&amp;quot;width: 100px;&amp;quot; | Webcam &lt;br /&gt;
! style=&amp;quot;width: 100px;&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://jmsweb.no/weather Hunstad, Bodø, Norge] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=67.280555555556,14.548611111111&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@67.280555555556,14.548611111111]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.jaed.no/weather Follebu, Gausdal] &lt;br /&gt;
| No &lt;br /&gt;
| [http://maps.google.com/maps?sll=61.21055555555,10.2783333333333&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@61.21055555555,10.2783333333333]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.linesoy.com/trollskaret/ Trollskaret, Linesøya] &lt;br /&gt;
| No &lt;br /&gt;
| [http://maps.google.com/maps?sll=64.017,9.890&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@64.017,9.890]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Poland ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://zielona10.pl/ Piaseczno]&lt;br /&gt;
| Nil&lt;br /&gt;
| [https://www.google.co.uk/maps/place/Piaseczno,+Poland/@52.0733894,18.7759485,7z/data=!4m7!1m4!3m3!1s0x0:0x0!2zNTLCsDA0JzI2LjAiTiAyMcKwMDInMzQuMCJF!3b1!3m1!1s0x47192e390fc40201:0x88c75a9c7e7a1bf5]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [http://meteo.sokolowsko.pl Sokolowsko PL]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=50.68501663,16.22915268&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@50.68501663,16.22915268]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.meteo-sulejowek.ugu.pl Sulejówek near Warsaw]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=52.244166666667,21.28&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@52.244166666667,21.28]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Slovenia ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://home.amis.net/magerls/vreme/current.html Dobrava, Slovenske Konjice]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=46.351388888889,15.401111111111&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@46.351388888889,15.401111111111]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Spain ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.wheelocknet.net/cumulus/now.htm L&#039;Estartit - Illes Medes]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=42.054829392751,3.19638848304748&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@42.054829392751,3.19638848304748]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.meteotortosa.cat MeteoTortosa]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=40.83,0.53&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@40.83,0.53]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.vipapi.com/meteoc/index.htm Palma - Sa Indioteria]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=39.611991,2.675093&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@39.611991,2.675093]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Sweden ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.anglaberga.se/vws/weather/index.htm Änglaberga, Scania]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=56.054444444444,13.082777777778&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@56.054444444444,13.082777777778]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.kagevader.se/index.php Kåge väder]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=64.833611111111,20.981666666667&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@64.833611111111,20.981666666667]&lt;br /&gt;
|-&lt;br /&gt;
| [http://home.swipnet.se/gubbfot Lilla Foss Munkedal]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=58.475278,11.670278&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@58.475278,11.670278]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.sm3ode.se/weather SM3ODE Bollnäs]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=61.364444444444,16.393888888889&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@61.364444444444,16.393888888889]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Switzerland ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://meteo.cavagnago.ch/index.php?p=main&amp;amp;l=en Cavagnago, Ticino]&lt;br /&gt;
| No&lt;br /&gt;
| [http://maps.google.co.uk/maps?q=N+46%C2%B0+24&#039;+48%22+E+08%C2%B0+52&#039;+50%22&amp;amp;hl=en&amp;amp;ie=UTF8&amp;amp;ll=46.413333,8.880556&amp;amp;spn=18.672678,42.626953&amp;amp;sll=46.416667,8.883333&amp;amp;sspn=0.03645,0.083256&amp;amp;t=v&amp;amp;z=5]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.urs-ingold.ch/cumulus/index.htm Löhliwetter Sumiswald]&lt;br /&gt;
| Default&lt;br /&gt;
| [http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=%2B47%C2%B0+2&#039;+8.02%22,+%2B7%C2%B0+44&#039;+43.43%22&amp;amp;sll=48.980217,8.635254&amp;amp;sspn=4.82396,10.447998&amp;amp;ie=UTF8&amp;amp;ll=47.035571,7.745278&amp;amp;spn=10.01812,20.895996&amp;amp;z=6]&lt;br /&gt;
|-&lt;br /&gt;
| [http://Wetter.Fun-Car-Team.ch CH-4316 Hellikon Wetter]&lt;br /&gt;
| Default&lt;br /&gt;
| [http://maps.google.com/maps?sll=47.506111111111,7.9275&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@47.506111111111,7.9275]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== United Kingdom and Ireland  ====&lt;br /&gt;
&lt;br /&gt;
===== Channel Islands =====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://mu0zvv.co.uk/weather/ St Sampsons, Guernsey]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.co.uk/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=St.+Sampson,+Guernsey&amp;amp;sll=49.479279,-2.520332&amp;amp;sspn=0.073834,0.154324&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=St+Sampson,+Guernsey,+United+Kingdom&amp;amp;ll=49.482401,-2.515869&amp;amp;spn=4.725593,9.876709&amp;amp;z=7]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== England  =====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 350px;&amp;quot; | User &lt;br /&gt;
! style=&amp;quot;width: 100px;&amp;quot; | Webcam &lt;br /&gt;
! style=&amp;quot;width: 100px;&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://wx.species5618.net/ Abbeymead Gloucester] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.co.uk/maps?hl=en&amp;amp;ie=UTF8&amp;amp;ll=51.850687,-2.197506&amp;amp;spn=0.000845,0.001725&amp;amp;t=h&amp;amp;z=19]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.affetside.org.uk/weather/index.htm AffetsideWX] &lt;br /&gt;
| Yes &lt;br /&gt;
| [http://maps.google.co.uk/maps?hl=en&amp;amp;ie=UTF8&amp;amp;ll=53.618964,-2.371405&amp;amp;spn=0.000845,0.001725&amp;amp;t=h&amp;amp;z=19]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.nelsonm.plus.com/weather/index.htm Audley Weather] &lt;br /&gt;
| Yes &lt;br /&gt;
| [http://maps.google.com/maps?sll=53.055,-2.3008333333333&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@53.055,-2.3008333333333]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.glyn.me/weather Banbury Weather] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=52.056666666667,-1.3575&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@52.056666666667,-1.3575]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.mecol.co.uk/weather Blakedown, Worcs] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=52.402576,-2.174656&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@52.402576,-2.174656]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.vivatek.co.uk/Cumulus Blagdon, Somerset] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=51.32316,-2.70424&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@51.32316,-2.70424]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.bramptonweather.co.uk/cumulus/ Brampton Weather] &lt;br /&gt;
| Yes &lt;br /&gt;
| [http://maps.google.com/maps?sll=54.93514,-2.734957&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@54.93514,-2.734957]&lt;br /&gt;
|-&lt;br /&gt;
| [http://branksomeweather.co.uk/ Branksome, Dorset] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=50.728055555556,-1.9125&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@50.72795,-1.91250]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.bredfield.org.uk/weather Bredfield, Woodbridge, Suffolk] &lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=52.12972,1.31323&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@52.12972,1.31323]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.weather.globalict.org.uk Broadwey, Dorset] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.co.uk/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=broadwey&amp;amp;sll=53.800651,-4.064941&amp;amp;sspn=19.175733,39.506836&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Broadwey,+Weymouth,+Dorset,+United+Kingdom&amp;amp;ll=50.649847,-2.471115&amp;amp;spn=0.160217,0.308647&amp;amp;t=k&amp;amp;z=12]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.keleven.co.uk/weather Burstwick] &lt;br /&gt;
| Default &lt;br /&gt;
| [http://maps.google.com/maps?sll=53.733333333333,-0.133611111111111&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@53.733333333333,-0.133611111111111]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.craythorneweather.info Craythorne] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=52.840277777778,-1.6347222222222&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@52.840277777778,-1.6347222222222]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.ttnt.co.uk/weather/ Farlington, Hants.] &lt;br /&gt;
| Yes &lt;br /&gt;
| [http://maps.google.com/maps?sll=50.84722,-1.025&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@50.84722,-1.025]&lt;br /&gt;
|-&lt;br /&gt;
| [http://myweb.tiscali.co.uk/m1byt/weather Garforth] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=53.4739,-1.2243&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@53.4739,-1.2243]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.furball.co.uk/weatherlive Greenford, West London] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=51.554444444444,-0.32777777777778&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@51.554444444444,-0.32777777777778]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.glossover.co.uk/weather Hastings, E. Sussex] &lt;br /&gt;
| No &lt;br /&gt;
| [http://maps.google.com/maps?sll=50.882947,0.562545&amp;amp;z=18&amp;amp;t=h&amp;amp;q=TN37Weather%20(Cumulus%20User)@50.882947,0.561700]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rainlater.co.uk/ High Wycombe, Buckinghamshire] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=51.638333333333,-0.77666666666667&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@51.638333333333,-0.77666666666667]&lt;br /&gt;
|-&lt;br /&gt;
| [http://weather.mountpleasanthouse.uk/ Hoarwithy, the Wye valley, Herefordshire] &lt;br /&gt;
| Yes&lt;br /&gt;
| [https://www.google.co.uk/maps/place/Hoarwithy,+Hereford,+Herefordshire+HR2/@51.9614681,-7.1429188,6z/data=!4m2!3m1!1s0x4871b4f2a9f38bb5:0x9e49f54705503300]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [http://grid1.co.uk/weather/ Kettering UK] &lt;br /&gt;
| Yes &lt;br /&gt;
| [http://maps.google.com/maps?sll=52.391666666667,-0.73888888888889&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@52.391666666667,-0.73888888888889]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.stewpott.com/weather Kirkstall, Leeds, West Riding of Yorkshire] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=53.810833333333,-1.5847222222222&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@53.810833333333,-1.5847222222222]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.laindonweather.co.uk Laindon, South Essex] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=51.577222222222,0.41861111111111&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@51.577222222222,0.41861111111111]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.ecats.co.uk/weather Long Melford Station, Suffolk] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=52.066666666667,-0.71666666666667&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@52.066666666667,-0.71666666666667]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.whatstheweatherlike.co.uk Milcombe Weather] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=52.009444444444,-1.4027777777778&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@52.009444444444,-1.4027777777778]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.zen55853.zen.co.uk/camera/coffee_1.htm Mobberley, Cheshire] &lt;br /&gt;
| Yes &lt;br /&gt;
| [http://maps.google.com/maps?sll=53.313888888889,-2.330556&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@53.313888888889,-2.330556]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.newton-poppleford-weather.co.uk Newton Poppleford, Devon] &lt;br /&gt;
| [http://www.newton-poppleford-weather.co.uk/wxwebcam.php Yes] &lt;br /&gt;
| [http://maps.google.com/maps?sll=50.70189285,-3.30849957&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@52.955833333333,-1.31361111]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.twelvehouses.co.uk New Stanton, Derbyshire] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=52.955833333333,-1.31361111&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@52.955833333333,-1.31361111]&lt;br /&gt;
|-&lt;br /&gt;
| [http://queensbury-weather.org.uk/ Queensbury, West Yorkshire] &lt;br /&gt;
| Nil &lt;br /&gt;
| [https://www.google.co.uk/maps/place/53%C2%B046&#039;12.1%22N+1%C2%B049&#039;43.4%22W/@53.7700271,-4.0699329,7z/data=!4m2!3m1!1s0x0:0x0]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.warman.org.uk/weatherhome.htm Rippingale Lincolnshire] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=52.836,-0.377&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@52.836,-0.377]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.thanetweather.co.uk/weather/index.htm Saint Peters Broadstairs Kent] &lt;br /&gt;
| Default &lt;br /&gt;
| [http://maps.google.com/maps?sll=51.366666666667,1.4166666666667&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@51.366666666667,1.4166666666667]&lt;br /&gt;
|-&lt;br /&gt;
| Sheffield City Council - Emergency Services &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=53.2154,+-1.2760&amp;amp;sll=53.210145,-1.381531&amp;amp;sspn=2.368803,4.850464&amp;amp;ie=UTF8&amp;amp;ll=53.215492,-1.276501&amp;amp;spn=2.368439,4.850464&amp;amp;z=8]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.shotwicksailing.org/weather/ Shotwick Lake] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=53.243611111111,-3.03&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@53.243611111111,-3.03]&lt;br /&gt;
|-&lt;br /&gt;
| [http://skegnessweather.info Skegness Weather] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=53.153611111111,0.32805555555556&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@53.153611111111,0.32805555555556]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.dmjsystems.co.uk/weather/ Somerset, Mendip Hills] &lt;br /&gt;
| Nil &lt;br /&gt;
| [https://www.google.co.uk/maps/place/Mendip+Hills,+Wells,+Somerset+BA5/@51.2974926,-4.9708037,7z/data=!4m2!3m1!1s0x487221c9e834a6cf:0xa591c9f318940667]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.stella-maris.org.uk/wx.phtml  Stella Maris - Broadstairs] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=51.363333333333,1.4402777777778&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@51.363333333333,1.4402777777778]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.users.waitrose.com/~g4mix/weather Swanton Farm, Dover, Kent] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=51.1575,1.4138&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@51.1575,1.4138]&lt;br /&gt;
|-&lt;br /&gt;
| [http://home.btconnect.com/kophill/ Summertown, Oxford] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.co.uk/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=summertown,+uk&amp;amp;sll=35.434799,-87.312791&amp;amp;sspn=0.86828,1.234589&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Summertown,+Sandford-on-Thames,+Oxfordshire,+United+Kingdom&amp;amp;ll=51.77008,-1.262559&amp;amp;spn=2.63791,4.938354&amp;amp;z=8]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.warehamwx.co.uk/cumulus Wareham, Dorset]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=50.6866666666666667,-2.1127777777777778&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@50.6866666666666667,-2.1127777777777778]&lt;br /&gt;
|-&lt;br /&gt;
| [http://weather.wilmslowastro.com Wilmslow, Cheshire] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=53.325125,-2.24263&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@53.325125,-2.24263]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.woodfordwellsweather.co.uk Woodford Wells Essex] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=51.613055555556,0.023333333333333&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@51.613055555556,0.023333333333333]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.worsley-weather.co.uk Worsley, Manchester] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=53.524444444444,-2.3858333333333&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@53.524444444444,-2.3858333333333]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Northern Ireland =====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.darkmoon.org.uk/weather Bangor]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=54.6341666666666667,-5.6716666666666667&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@54.6341666666666667,-5.6716666666666667]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Scotland  =====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User &lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam &lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.southqueensferryweather.co.uk/ Edinburgh (South Queensferry) ] &lt;br /&gt;
| Yes &lt;br /&gt;
| [http://maps.google.co.uk/maps?q=55.990827,-3.413867&amp;amp;hl=en&amp;amp;ll=55.986092,-3.405762&amp;amp;spn=1.88368,7.761841&amp;amp;t=h&amp;amp;z=8]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.floodaction.org.uk/blog/weather/ Freuchie, Fife - Freuchie Mill] &lt;br /&gt;
| [http://www.floodaction.org.uk/blog/webcam/ Yes] &lt;br /&gt;
| [http://maps.google.com/maps?sll=56.2463,-3.1475&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@56.2463,-3.1475]&lt;br /&gt;
|-&lt;br /&gt;
| [http://kippfordWeather.uk Kippford, Dumfries &amp;amp; Galloway] &lt;br /&gt;
| No&lt;br /&gt;
| [https://www.google.co.uk/maps/place/Kippford,+Dalbeattie,+Dumfries+and+Galloway+DG5/@54.8800492,-6.056103,7z/data=!4m2!3m1!1s0x4862db154667d8c3:0x1c650d52b9f9be36]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.knaven-weather.co.uk Knaven, Aberdeenshire] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=57.471388888889,-2.184448&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@57.471388888889,-2.184448]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.sanday.org.uk/weather Orkney Isles - Sandaysoft] &lt;br /&gt;
| Yes &lt;br /&gt;
| [http://maps.google.com/maps?sll=59.2425,-2.5877777777778&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@59.2425,-2.5877777777778]&lt;br /&gt;
|-&lt;br /&gt;
| [http://weather.penicuik.org/ Penicuik, Midlothian] &lt;br /&gt;
| No&lt;br /&gt;
| [https://www.google.com/maps/place/55%C2%B050&#039;02.8%22N+3%C2%B012&#039;12.6%22W/@55.8334412,-4.3304793,7.99z/data=!4m2!3m1!1s0x0:0x0]&lt;br /&gt;
|-&lt;br /&gt;
| [http://ken555.plus.com/weather/index.htm Pitmedden, Aberdeenshire] &lt;br /&gt;
| [http://ken555.plus.com/index.html Yes] &lt;br /&gt;
| [http://maps.google.com/maps?sll=57.33889,-2.184167&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@57.33889,-2.184167]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.stirlingweather.co.uk Stirling, Stirlingshire] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?&amp;amp;sll=56.1165,-3.9550&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@56.1165,-3.9550]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Wales =====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.hosiene.co.uk/weather/ Ystrad, Rhondda Cynon Taff] &lt;br /&gt;
| Nil &lt;br /&gt;
| [https://www.google.co.uk/maps/@51.6480374,-3.4804831,15z]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.llandudno.eu.pn Llandudno]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=53.316666666667,-3.8333333333333&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@53.316666666667,-3.8333333333333]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.aqsj01.dsl.pipex.com/weather Llantwit Fardre]&lt;br /&gt;
| Default&lt;br /&gt;
| [http://maps.google.com/maps?sll=51.553333333333,-3.3344444444444&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@51.553333333333,-3.3344444444444]&lt;br /&gt;
|-&lt;br /&gt;
| [http://nusc.co.uk/weather/index.htm Newport Uskmouth Sailing Club]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.co.uk/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=newport&amp;amp;aq=&amp;amp;sll=53.800651,-4.064941&amp;amp;sspn=17.235515,41.484375&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Newport,+United+Kingdom&amp;amp;ll=52.321911,-4.020996&amp;amp;spn=8.896784,29.11377&amp;amp;z=6]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.bblist.co.uk/weather/ Vale of Glamorgan]&lt;br /&gt;
| Default&lt;br /&gt;
| [http://maps.google.com/maps?sll=51.469167,-3.432222&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@51.469167,-3.432222]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.moelycrio.co.uk Moelycrio]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=53.2,-3.2&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@53.2,-3.2]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.winterman.org.uk/weather Spittal Weather - Pembrokeshire]&lt;br /&gt;
| Default&lt;br /&gt;
| [http://maps.google.com/maps?sll=51.871666666667,-4.9380555555556&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@51.871666666667,-4.9380555555556]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== North America ===&lt;br /&gt;
&lt;br /&gt;
==== Canada ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.genisim.com/weather/index.htm Jonquiere Quebec - GeniSim]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=48.435277777778,-71.200277777778&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@48.435277777778,-71.200277777778]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.komokaweather.com/ Komoka, ON]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;q=Komoka,+Middlesex+Centre,+Middlesex+County,+Ontario,+Canada&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=50.777825,79.013672&amp;amp;ie=UTF8&amp;amp;cd=1&amp;amp;geocode=FeRWjwIdQGMl-w&amp;amp;split=0&amp;amp;hq=&amp;amp;hnear=Komoka,+Middlesex+Centre,+Middlesex+County,+Ontario,+Canada&amp;amp;ll=42.948324,-81.43584&amp;amp;spn=5.918291,9.876709&amp;amp;t=h&amp;amp;z=7]&lt;br /&gt;
|-&lt;br /&gt;
| [http://pages.videotron.com/meteo/ Lévis, QC]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=Levis,+Quebec,+Canada&amp;amp;aq=0&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=50.910968,78.486328&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=L%C3%A9vis,+Desjardins,+Quebec,+Canada&amp;amp;ll=46.800059,-71.630859&amp;amp;spn=42.037232,111.972656&amp;amp;t=h&amp;amp;z=4]&lt;br /&gt;
|-&lt;br /&gt;
| [http://weather.bpsmicro.com Newmanville (Ottawa), ON]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=44.928055555556,-75.75777777778&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@44.928055555556,-75.75777777778]&lt;br /&gt;
|-&lt;br /&gt;
| [http://meteo.spudman.ca Quebec City]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=46.889444,-71.193611&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@46.889444,-71.193611]&lt;br /&gt;
|-&lt;br /&gt;
| [http://members.shaw.ca/seabreeze3/meteo Saanichton, British Columbia]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=48.59188,-123.40015&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@48.59188,-123.40015]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== United States ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://berkland.net Arlington, VA]&lt;br /&gt;
| No&lt;br /&gt;
| [http://maps.google.co.uk/maps?q=38.88,+-77.102222&amp;amp;hl=en&amp;amp;ll=38.88,-77.102222&amp;amp;spn=12.016521,21.533203&amp;amp;sll=57.746995,-4.687341&amp;amp;sspn=8.25173,21.533203&amp;amp;t=v&amp;amp;z=6]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.tigerdenweb.com/tigerdenwx/ Aurora, Colorado]&lt;br /&gt;
| No&lt;br /&gt;
| [https://www.google.co.uk/maps/place/Aurora,+CO,+USA/@39.6887508,-122.6165289,4z/data=!4m2!3m1!1s0x876c588622ba2b9b:0x8441e0688ba2e678]&lt;br /&gt;
|-&lt;br /&gt;
| [http://branfordwx.com/cumulus/index.htm Branford, CT]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=41.276111,-72.828333&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@41.276111,-72.828333]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.jandanet.com/weather/cumulus/ Cloverville - Fruitport Township, MI]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=43.190555555556,-86.165277777778&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@43.190555555556,-86.165277777778]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.kd0bik.com/denwx/ Denver, CO]&lt;br /&gt;
| Default&lt;br /&gt;
| [http://maps.google.com/maps?sll=39.634166666667,-104.88972222222&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@39.634166666667,-104.88972222222]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.chucksweather.com/cumulus Glendive, Montana - Chucks Weather]&lt;br /&gt;
| Default&lt;br /&gt;
| [http://maps.google.com/maps?sll=47.119722222222,-104.70314789&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@47.119722222222,-104.70314789]&lt;br /&gt;
|-&lt;br /&gt;
| [http://cumulus.tnetweather.com Mesa, AZ - TNETWeather]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=33.40231,-111.8831&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@33.40231,-111.8831]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.moutoncoveweather.com/ Mouton Cove, Abbeville, LA]&lt;br /&gt;
| [http://www.moutoncoveweather.com/webcam.php Yes]&lt;br /&gt;
| [http://maps.google.com/maps?sll=37.95645,86.572266&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@37.956457,86.572266]&lt;br /&gt;
|-&lt;br /&gt;
| [http://robsweather.no-ip.org/cumulusweb/index.htm Moraine, OH]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=39.691388888889,-84.206111111111&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@39.691388888889,-84.206111111111]&lt;br /&gt;
|-&lt;br /&gt;
| [http://dantinconsulting.com Prospect, KY - Timber Ridge Weather]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=38.33235,-85.61603&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@38.33235,-85.61603]&lt;br /&gt;
|-&lt;br /&gt;
| [http://weather.ejmj.net Reklaw, Texas]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=31.84348611,-94.96843888&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@31.84348611,-94.96843888]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.royalmountainresources.com/weather Royal Mountain, Bailey, CO]&lt;br /&gt;
| No&lt;br /&gt;
| [http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=Bailey,+CO,+United+States&amp;amp;sll=39.3173,-105.331421&amp;amp;sspn=2.813262,4.674683&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Bailey,+Park,+Colorado&amp;amp;ll=39.419221,-105.46875&amp;amp;spn=11.231107,18.69873&amp;amp;z=6]&lt;br /&gt;
|-&lt;br /&gt;
| [http://smlweather.com/cumulus/index.htm Smith Mountain Lake, VA]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=37.1526,-79.678&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@37.1526,-79.678]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Oceania ===&lt;br /&gt;
&lt;br /&gt;
==== Australia ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.brisbaneliveweather.com Brisbane, QLD]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=-27.294606,152.933897&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-27.294606,152.933897]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.sedgleymanor.com/wx Bunbury, WA]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=-33.37861,115.65194&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-33.37861,115.65194]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.users.on.net/~mpaton/weather/ Bushland Beach, Qld]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=-19.198055555556,146.676111&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-19.198055555556,146.676111]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.azer.com.au/weather_carrum/ Carrum, Victoria]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.co.uk/maps?q=Carrum,+Victoria&amp;amp;hl=en&amp;amp;ll=-38.076027,145.123199&amp;amp;spn=12.151038,21.533203&amp;amp;sll=-33.708009,150.974708&amp;amp;sspn=25.579176,43.066406&amp;amp;t=v&amp;amp;hnear=Carrum+Victoria,+Australia&amp;amp;z=6]&lt;br /&gt;
|-&lt;br /&gt;
| [http://members.ozemail.com.au/~storerfamily/weather/ Crafers, SA]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=-34.989444,138.727778&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-34.989444,138.727778]&lt;br /&gt;
|-&lt;br /&gt;
| [http://weather.inverellit.com/ Inverell, NSW]&lt;br /&gt;
| Yes&lt;br /&gt;
| [https://www.google.com/maps/place/Ross+St,+Inverell+NSW+2360/@-29.7732835,151.1194221,17z/data=!3m1!4b1!4m5!3m4!1s0x6ba1f7461c668835:0x86b3447dd776ecb8!8m2!3d-29.7732835!4d151.1216108]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.azer.com.au/weather/ Langwarrin, Victoria]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.co.uk/maps?q=Langwarrin,+victoria&amp;amp;hl=en&amp;amp;ll=-33.708009,150.974708&amp;amp;spn=25.579176,43.066406&amp;amp;sll=57.746995,-4.687341&amp;amp;sspn=8.25173,21.533203&amp;amp;t=v&amp;amp;hnear=Langwarrin+Victoria,+Australia&amp;amp;z=5]&lt;br /&gt;
|-&lt;br /&gt;
| [http://users.tpg.com.au/howesij/weather/index.htm Nomads Weather - Ferny Grove, QLD]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=-27.395833333333,152.91861111111&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-27.395833333333,152.91861111111]&lt;br /&gt;
|-&lt;br /&gt;
| [http://weather.gktnet.com North Bayswater, Victoria]&lt;br /&gt;
| No&lt;br /&gt;
| [http://maps.google.com/maps?sll=-37.823611111111,145.29638888889&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-37.823611111111,145.29638888889]&lt;br /&gt;
|-&lt;br /&gt;
| [http://members.westnet.com.au/paul.anderson/weather/ Perth]&lt;br /&gt;
| No&lt;br /&gt;
| [http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=perth,+australia&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=45.822921,85.166016&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Perth+Western+Australia,+Australia&amp;amp;ll=-31.952162,115.400391&amp;amp;spn=45.595762,118.652344&amp;amp;z=4]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.users.on.net/~rolf/cumulus/ Rosetta, Glenorchy, Tasmania]&lt;br /&gt;
| Yes&lt;br /&gt;
| [https://goo.gl/maps/SMxemgd5bxS2]&lt;br /&gt;
|-&lt;br /&gt;
| [http://tonyf.customer.netspace.net.au/weather/ Sale, Gippsland, Victoria]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.co.uk/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=-38.1008+147.075556&amp;amp;sll=-35.029996,130.605469&amp;amp;sspn=0.18161,0.452156&amp;amp;ie=UTF8&amp;amp;ll=-38.134557,138.779297&amp;amp;spn=44.181081,115.751953&amp;amp;t=h&amp;amp;z=4]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=I3099STR2 Strathewen, Melbourne]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=-37.523,145.281&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-37.523,145.281]&lt;br /&gt;
|-&lt;br /&gt;
| [https://southfranklinweather.com  South Franklin, Huon Valley, Tasmania]&lt;br /&gt;
| Yes&lt;br /&gt;
| [https://www.google.co.uk/maps/place/43%C2%B007&#039;17.8%22S+146%C2%B059&#039;20.9%22E/@-43.121605,111.1297573,3z/data=!4m2!3m1!1s0x0:0x0]&lt;br /&gt;
|-&lt;br /&gt;
| [http://weather.gkt.net.au/ Wyndham Vale, VIC]&lt;br /&gt;
| No&lt;br /&gt;
| [http://maps.google.com/maps?sll=-37.896988,144.616897&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-37.896988,144.616897]&lt;br /&gt;
|-&lt;br /&gt;
| [http://users.on.net/~freespirit/weather Fern Tree, Tas]&lt;br /&gt;
| No&lt;br /&gt;
| [http://maps.google.com.au/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=fern+tree+tasmania&amp;amp;sll=-25.335448,135.745076&amp;amp;sspn=56.198906,79.013672&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Fern+Tree+Tasmania&amp;amp;ll=-42.92334,147.260742&amp;amp;spn=0.011486,0.01929&amp;amp;t=h&amp;amp;z=16]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Indonesia  ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User &lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam &lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.ubudweather.com/ Ubud, Bali] &lt;br /&gt;
| No &lt;br /&gt;
| [https://www.google.com/maps/place/8%C2%B031&#039;40.5%22S+115%C2%B015&#039;00.1%22E/@-8.5279162,114.1294222,8z/data=!4m2!3m1!1s0x0:0x0?hl=en]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== New Zealand  ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User &lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam &lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.janter.co.nz/weather/index.htm Farm Cove, Auckland] &lt;br /&gt;
| Yes &lt;br /&gt;
| [https://www.google.com/maps/place/36%C2%B032&#039;03.5%22S+174%C2%B032&#039;03.5%22E/@-36.5342957,172.2930836,7z/data=!4m2!3m1!1s0x0:0x0]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.silveracorn.nz/weather/index.php Royal Oak, Auckland] &lt;br /&gt;
| No &lt;br /&gt;
| [https://www.google.com/maps/place/36%C2%B032&#039;03.5%22S+174%C2%B032&#039;03.5%22E/@-36.909691,174.771256,7z/data=!4m2!3m1!1s0x0:0x0]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wairoaweather.net/frasertown/index.htm Frasertown, Hawkes Bay] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=-38.965818666666,177.40800977777&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-38.965818666666,177.40800977777]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.gabbie.nz/ Hamilton] &lt;br /&gt;
| No &lt;br /&gt;
| [http://www.google.co.uk/maps/dir//-37.7948899,175.2711855/@-37.7985524,175.2673231,3z]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wairoaweather.net/gisborne-west/index.php Gisborne West, Poverty Bay] &lt;br /&gt;
| Nil &lt;br /&gt;
| [https://www.google.com/maps/place/38%C2%B023&#039;07.8%22S+177%C2%B035&#039;35.2%22E/@-38.3854958,173.1106727,6z/data=!4m2!3m1!1s0x0:0x0]&lt;br /&gt;
|-&lt;br /&gt;
| [http://nzpws.net/mahia/index.htm Mahia Heights, Northern Hawkes Bay ] &lt;br /&gt;
| Nil &lt;br /&gt;
| [https://www.google.com/maps/place/39%C2%B003&#039;06.8%22S+177%C2%B031&#039;26.8%22E/@-39.0518958,173.0335206,6z/data=!4m2!3m1!1s0x0:0x0]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [http://homepages.xnet.co.nz/~wheels/weather/ Otatara, Invercargill - Wayne&#039;s Weather] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=-46.431667,168.292222&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-46.431667,168.292222]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=IMANAWAT1 Palmerston North] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=-40.352222222222,175.635&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-40.352222222222,175.635]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.pare361.co.nz Paremoremo, Auckland] &lt;br /&gt;
| Yes &lt;br /&gt;
| [http://maps.google.com/maps?sll=-36.7575,174.665&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-36.7575,174.665]&lt;br /&gt;
|-&lt;br /&gt;
| [http://wairoa.net/weather/index.htm Wairoa, Northern Hawkes Bay Weather Live] &lt;br /&gt;
| Yes &lt;br /&gt;
| [http://maps.google.com/maps?sll=-39.045166022222,177.42639166667&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-39.045166022222,177.42639166667]&lt;br /&gt;
|-&lt;br /&gt;
| [http://nzpws.net/gisborne/index.htm Whataupoko, Gisborne Weather] &lt;br /&gt;
| Nil &lt;br /&gt;
| [https://www.google.com/maps/place/38%C2%B023&#039;31.6%22S+178%C2%B001&#039;15.6%22E/@-38.3920958,175.7797836,7z/data=!4m2!3m1!1s0x0:0x0]&lt;br /&gt;
|-&lt;br /&gt;
| [http://weather.magnumimports.co.nz Whitemans Valley Upper Hutt] &lt;br /&gt;
| Nil &lt;br /&gt;
| [http://maps.google.com/maps?sll=-41.1971658635502,175.027792405373&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-41.1971658635502,175.027792405373]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== South America ===&lt;br /&gt;
&lt;br /&gt;
==== Argentina ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:350px&amp;quot; | User&lt;br /&gt;
! style=&amp;quot;width:100px&amp;quot; | Webcam&lt;br /&gt;
! style=&amp;quot;Width:100px&amp;quot; | Map&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.meteobaires.webcindario.com Bellavista, Provincia de Buenos Aires]&lt;br /&gt;
| Yes&lt;br /&gt;
| [http://maps.google.com/maps?sll=-34.553055555556,-58.696388888889&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-34.553055555556,-58.696388888889]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.arecoclima.com.ar Buenos Aires - Areco747 Weather Station]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=-34.2442,-59.4763&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-34.2442,-59.4763]&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.viapatagonica.com.ar/clima/ Via Patagonica]&lt;br /&gt;
| Nil&lt;br /&gt;
| [http://maps.google.com/maps?sll=-47.750277777778,-65.893888888889&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-47.750277777778,-65.893888888889]&lt;br /&gt;
|-&lt;br /&gt;
| [http://cipometeo.webcindario.com/ estacion cipolletii privada tiempo]&lt;br /&gt;
| Default&lt;br /&gt;
| [http://maps.google.com/maps?sll=-38.937,-67.979&amp;amp;z=18&amp;amp;t=h&amp;amp;q=Cumulus%20User@-38.937,-67.979]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Further Additions ==&lt;br /&gt;
&lt;br /&gt;
Your Username &amp;amp;amp; Location can be added to this list by Contacting [[User:Daj]] or if you are a registered user, editing this page yourself. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; &#039;&#039;The links to the location have the user latitude and longitude in them twice, once for centreing the map, the second time for the marker location. These are given in decimal degrees. +ve for Northern latitudes and Eastern longitudes, -ve for Southern latitudes and Western longitudes. Use the co-ordinates you have entered into your Cumulus Station configuration.&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Phil23</name></author>
	</entry>
</feed>