From 9e92bf02653e138899f586016a193305915118c6 Mon Sep 17 00:00:00 2001 From: Marco Date: Thu, 4 Jul 2019 23:31:47 +0200 Subject: [PATCH] Added documentation --- README.md | 191 +++++++++++++++++++++++++++++ documentation/ArtemisLogoSmall.png | Bin 0 -> 16841 bytes documentation/apple.png | Bin 0 -> 9116 bytes documentation/linux.png | Bin 0 -> 18358 bytes documentation/win.png | Bin 0 -> 6818 bytes 5 files changed, 191 insertions(+) create mode 100644 README.md create mode 100644 documentation/ArtemisLogoSmall.png create mode 100644 documentation/apple.png create mode 100644 documentation/linux.png create mode 100644 documentation/win.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..0a04063 --- /dev/null +++ b/README.md @@ -0,0 +1,191 @@ + + +# ARTEMIS 3 ![LICENSE](https://img.shields.io/github/license/AresValley/Artemis.svg?style=flat-square) ![ISSUE](https://img.shields.io/github/issues/AresValley/Artemis.svg?style=flat-square) ![LANGUAGE](https://img.shields.io/github/languages/top/AresValley/Artemis.svg?style=flat-square) + +*Radio Signals Recognition Manual* + +## ARTEMIS. In a nutshell. + +In short, ARTEMIS is a signals hunter software and a useful aid for radio listeners! The analysis of real-time spectra (from your SDR, for instance is made simple: you can take advantage using one of the largest RF signal database (with over 370 records). Compare several signals properties (such as frequency, bandwidth, modulation, etc.) and verify what you are searching for through a waterfall/audio sample. A collection of filters allows you to narrow your search, making the identification of unknown signals, odd buzzes or weird noises way easier. + +## Table of contents + + - [Installation](#installation) + - [Run from binary](#Run-from-binary) + - [Run from source code](#Run-from-source-code-OS-independent) + - [Run using deploy script](#Run-using-deploy-script) + - [Windows](#Windows) + - [Linux](#Linux) + - [MacOS](#MacOS) + - [Database](#database) + - [Syntax](#syntax) + - [Multiple Items fields (Location, Modulation)](#multiple-items-fields-location-modulation) + - [Themes](#themes) + - [License](#license) + - [Thanks](#thanks) + +## Installation +The power of the new Artemis is the native multi-environment capability. To achieve this point, the entire code has been written in python. The procedure of Artemis 3 deployment is very similar among the different main operative systems (Windows, Linux or MacOS) but, in principle, any OS capable of running python scripts has all the necessary features to run Artemis smoothly. + +## Run from binary +**If you don't know what you want or you are not sure where to look, this is for you.** + +Basically, this is the easiest, smooth, and clean way to run Artemis 3. Python 3.7 and the libraries are not required because they are already contained into the bundle. +For more information, follow the main page of Artemis 3: https://aresvalley.com/artemis/ (detailed documentation at the end of the main page) + +## Run from source code (OS independent) +Run the software from the source code with the Python interpreter is the simplest and natural way to run Artemis 3. The main drawback: this is not the most convenient or fast way to launch the software. Requirements: +- Python 3 (>3.7) +- Pandas>=0.24.2 +- Certifi>=2019.6.16 +- Aiohttp>=3.5.4 +- Urllib3>=1.25.3 +- Pygame>=1.9.6 +- QtAwesome>=0.5.7 +- PyQt5==5.12.2 + +1. Download and install Python 3 (> 3.7) from the official website (https://www.python.org/downloads/). Be sure to select the flag `Add Python 3.x to PATH` during the first part of the installation. + +2. Install the necessary Python libraries with PIP. Open a console in Artemis/requirements folder and type: + +``` +pip install -r requirements.txt --user +``` + +3. After that launch the software in the Artemis folder with: + +``` +python3 artemis.py +``` + +## Run using deploy script + + + +> ### Windows: +> +> 1. Windows don't offer a native version of Python. Download and install Python 3 (> 3.7) from the official website (https://www.python.org/downloads/). Be sure to select the flag `Add Python 3.x to PATH` during the first part of the installation. To verify the correct installation of Python open a CMD terminal (Open the **run** windows with **Win+R** and type **cmd**) and check the version of the just installed python 3 with: +> ``` +> python --version +> ``` +> 2. Use the `clone or download` button (https://github.com/AresValley/Artemis/archive/master.zip) to download the source code of Artemis 3. +> 3. Extract the .zip and place Artemis folder where you prefer. The code must always be accompanied by a `themes` folder. +> 4. To install the necessary libraries open the `Artemis/deploy/Windows` folder. Run (with a double click) the script `deploy_win.bat`. The script will: +> +> * Set the correct read/write privileges for Artemis folder. The main folder **must have the reading/writing permission** to download the Signals Database. +> * Install the required Python 3 libraries with pip3. +> * Generate a .pyw file (script launcher without console), and it will create a shortcut on the desktop. + + + + +> ### Linux: +> +> 1. Linux already offers a native version of python on board. Please verify the presence of Python 3 and check the version (> 3.7) opening a terminal and typing: +> ``` +> python --version +> ``` +> If, for some reasons python, it is not present in your system follow the specific instructions to install it on your distro. For the common Linux OS: +> * **Ubuntu**, **Mint**: `sudo apt-get install python3.7` +> * **Fedora**: `sudo dnf install python37` +> 2. Use the `clone or download` button (https://github.com/AresValley/Artemis/archive/master.zip) to download the source code of Artemis 3. +> 3. Extract the .zip where you like (use `unzip Artemis-master.zip`). The code must always be accompanied by a `themes` folder. +> 4. To install the necessary libraries open the `Artemis/deploy/Linux` folder. Run the script `deploy_linux.sh` typing in a terminal: +> ``` +> cd PATH / TO / ARTEMIS / FOLDER /deploy/Linux +> sh deploy_linux.sh +> ``` +> +> 5. Follow the terminal instructions. At the end, you will find a shortcut to Artemis 3 in the main menu. The script `deploy_linux.sh` will: +> +> * Set the correct read/write privileges for Artemis folder. The main folder **must have the reading/writing permission** to download the Signals Database. +> * Install the required Python 3 libraries with pip3. +> * Generate a .desktop file (script launcher without console) in `$HOME/.local/share/applications` and it will copy the .svg Artemis icon in `/usr/share/icons/`. + + + + +> ### MacOS: +> +> 1. To Be Completed... + +## Database + +The database (db.csv) is directly extracted from sigidwiki.com with a DB parser and reworked to a standard format defined as follow. Artemis DB is a human-readable csv file where the delimiter is the character `*` (Asterisk, Unicode: U+002A). The new entry (separation between signals) is the End Of Line (EOL) escape sequence `\n`. Every signal is directly connected to spectra and audio sample stored in **Spectra** and **Audio** folders, respectively. Every signal is composed of 12 columns: + +| Column | Description | Unit of Measurement | Multiple Items | Type| +| :-: | :-: | :-: | :-: | :-: | +| 1 | Signal name | - | - | string | +| 2 | Freq. Lower Limit | Hz | - | integer | +| 3 | Freq. Upper Limit | Hz | - | integer | +| 4 | Mode | - | - | string | +| 5 | Band. Lower Limit | Hz | - | integer | +| 6 | Band. Upper Limit | Hz | - | integer | +| 7 | Location | - | ✔ | string | +| 8 | sigidwiki URL | - | - | string | +| 9 | Description | - | - | string | +| 10 | Modulation | - | ✔ | string | +| 11 | ID Code | - | - | integer | +| 12 | Auto-correlation function | ms | - | string | + +### Syntax + +1. **Signal Name**: The name of the signal. A simple string that describes in short the analyzed signal. Special characters are allowed (except the main delimiter `*`). +2. **Frequency (Lower Limit)**: The frequency lower bound expressed in Hertz. +3. **Frequency (Upper Limit)**: The same as above but this express the frequency upper bound of the received signal. + + * In the case of a single frequency transmitter/service the **Freq. Lower Limit** and the **Freq. Upper Limit** must be coincident (same value) + * Transmission with different protocols must be added in two or more distinct entry. **DO NOT USE** the same signal page to add different transmission protocols (with different frequencies, bandwidth, modes,...). For example, NOAA-19 satellite transimit images and data with two different protocols: + + * APT (Analog): 137.1000 MHz - 137.3125 MHz + * HRPT (Digital): 1698 MHz - 1707 MHz + + Add two separate entry (APT and HRPT) with the correct Lower and Upper bound frequency. **DO NOT ADD** a single signal entry with a Freq. Lower Bound of 137.100 MHz and the Upper Bound of 1707 MHz. + +4. **Mode**: This field reports the way how a signals has been decoded during the reception. +5. **Bandwidth (Lower Limit)**: As reported above for frequency (points 2 and 3). Also here the value is reported in Hz. +6. **Bandwidth (Upper Limit)**: As reported above for frequency (points 2 and 3). +7. **Location**: This is the location where the signal is distributed/received. Avoid the usage of the precise location of the TX station or very small town (very rare). It's a good habit to use nations/continents or special location (worldwide). +8. **sigidiwki URL**: The sigidwiki URL of the selected signal. This is a direct connection to the online database where further details of the signal are collected. +9. **Description**: The short description is used to explain the purpose of the signal and some other useful details. +10. **Modulation**: The modulation is the way how the information have been encoded into the main signal (carrier). Several modification of the properties (Amplitude, Frequecy, ...) are possible and a tx station could transmit with different modulations. +11. **ID Code**: The category code, known as ID Code, is a sequence of 0/1 and its main purpose is to assign the signal to their families/categories. It's formed by 17 digits: + + |1|2|3|4|5|6|7|8|9|10| + |:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:| + | Military | Radar | Active | Inactive | HAM | Commercial | Aviation | Marine | Analogue | Digital| + + |11|12|13|14|15|16|17| + |:-:|:-:|:-:|:-:|:-:|:-:|:-:| + | Trunked | Utility | Sat | Navigation | Interfering | Number Stations | Time Signal | + +12. **Auto-correlation funtion (ACF)**: The ACF is an awesome discriminator when the signal is composed of redundant pattern that continouosly repeats. It is reported in **ms**. An extended description with an example signal analysis is available here: https://aresvalley.com/documentation/ + +### Multiple Items fields (Location, Modulation) +The necessity to manage a multiple Location/Modulation search pushed us to implement a fictitious 'secondary delimiter' chosen to be the `;` character. For instance: + +``` +Band. Upper Limit * Location 1 ; Location 2 ; ... * sigidwiki URL +``` +or +``` +Description * Modulation 1 ; Modulation 2 ; ... * ID Code +``` + +## Themes +The only folder with the pre-built package is the `themes` one. In this way the themes are fully customizable and you can add your own. New themes (in the `themes` folder) will appear automatically in the main menu and the last used theme will be saved as the favorite one (a restart of Artemis will use the last used theme). + +## License +This program (ARTEMIS 3, 2014-2019) is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with this program. If not, see: www.gnu.org/licenses + +## Thanks +* **Marco D.T.** - *Artemis I-II programmer, DB parsing, Website* +* **Alessandro C.** - *Artemis III lead programmer* +* **Paolo R. (IZ1MLL)** - *Lead β Tester, RF specialist* +* **Carl C.** - *Sigidwiki admin, β Tester, Signals expert* +* **Marco B.** - *macOS deployment, β Tester* +* **Francesco C., Pierpaolo P., Luca XYZ, Paolo XYZ, Daniele XYZ** - *β Tester* diff --git a/documentation/ArtemisLogoSmall.png b/documentation/ArtemisLogoSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..c0b3802c609d099244ea927eb7b2e2ce841ee7b8 GIT binary patch literal 16841 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 r{4@Q literal 0 HcmV?d00001 diff --git a/documentation/apple.png b/documentation/apple.png new file mode 100644 index 0000000000000000000000000000000000000000..c3ada4cb7a048bdb7a79ae0e2c3c1bb793010c00 GIT binary patch literal 9116 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 literal 0 HcmV?d00001 diff --git a/documentation/win.png b/documentation/win.png new file mode 100644 index 0000000000000000000000000000000000000000..0b03a459e95c537859dbe7536fd1cb493ed61742 GIT binary patch literal 6818 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 evEr@tExz{g)Z+Q_@sr#CBH_*L%xX+L