1 line
28 KiB
JSON
Executable File
1 line
28 KiB
JSON
Executable File
{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Documentation","text":"<p>Artemis is a software designed to assist radio frequency (RF) signal identification and storage. It simplifies real-time spectrum analysis by leveraging one of the most extensive and community-driven databases, containing nearly 500 recognized signals. This comprehensive software solution allows users to collect RF signals with specific parameters such as frequency, bandwidth, modulation, etc. Users can also store spectrum waterfalls, audio samples, and all types of documents for future reference. Artemis provides a robust platform to manage a wide range of RF data with precision and ease.</p>"},{"location":"acf_analysis/","title":"Autocorrelation Function (ACF)","text":""},{"location":"acf_analysis/#theoretical-introduction","title":"Theoretical Introduction","text":"<p>Correlation functions are valuable mathematical tools utilized across various scientific disciplines, including engineering, physics, and chemistry. The cross-correlation function, commonly defined as a sliding inner (dot) product, quantifies the similarity between two signals as a function of a temporal shift applied to one of them:</p> \\[ \\left[ k*l \\right]\\equiv \\int_{-\\infty}^{+\\infty}k^{*}(t)l(t+\\tau)dt \\] <p>where \\(k\\) and \\(l\\) are two general non-discrete functions without discontinuity, \\(k^{*}\\) is the complex conjugate of \\(k\\) and \\(\\tau\\) is the lag (time delay for signal analysis). This representation is closely related to the convolution theorem by the following relationship:</p> \\[ k(t)*l(t)\\equiv k^{*}(-t)*l(t) \\] <p>In our case, the signal must be compared with itself to identify periodic patterns or detect anomalous high degrees of similarity within a given time interval. To achieve this objective, we can employ the Autocorrelation Function (ACF), which is essentially the cross-correlation of a signal with itself, where \\(k(t)=l(t)\\). The following equation defines the ACF, derived from a straightforward modification of the initial equation:</p> \\[ \\left[ k*k \\right](\\tau)\\equiv \\int_{-\\infty}^{+\\infty}k^{*}(t)k(t+\\tau)dt \\] <p>Within a discrete data set composed by \\(Y(t)\\) records we can easily calculate autocorrelation from:</p> \\[ \\rho_{\\tau}=\\frac{\\sum_{i=1}^{N-\\tau}(Y_i-\\bar{Y})(Y_{i+\\tau}-\\bar{Y})}{\\sum_{i=1}^{N}(Y_i-\\bar{Y})^2} \\] <p>where \\(Y_{i+\u03c4}\\) is a lagged data by \\(\u03c4\\) of \\(Y_i\\) and \\(\\bar{Y}\\) is the average value of the original data set. Entire denominator is used to keep the normalization condition, indeed \u03c1\u03c4 can assume a value between -1 (exact anticorrelation) and +1 (exact correlation). A complete correlation can be only achieved with a perfect overlap of the analyzed function with it self; the simple way to verify that is when \\(\u03c4=0\\)</p> <p></p>"},{"location":"acf_analysis/#example-acf-analysis","title":"Example: ACF Analysis","text":""},{"location":"acf_analysis/#stanag-4285","title":"STANAG 4285","text":"<p>The first example will be a NATO standard known as STANAG 4285. You can download a .wav sample from HERE. We start to collect some information about the structure of this signal: a good starting point is the official declassified NATO document dated 1989. The main frame structure can be found at Annex A-3/5 with a graphical view at Annex A-7, also reported below:</p> <ul> <li>STANAG 4285 (i)</li> <li>STANAG 4285 A-3</li> <li>STANAG 4285 A-4</li> <li>STANAG 4285 A-5</li> <li>STANAG 4285 A-7</li> </ul> <p>Summary</p> <ul> <li>1 x 80 bits of synchronization pattern</li> <li>4 x 32 bits of data</li> <li>3 x 16 bits of reference</li> </ul> <p>Therefore, a full sequence will be composed as the sum of all symbols reported above: 256 symbols recursively transmitted at the ratio of 2400 bauds means a redundancy of 106.66 ms. To analyze an unknown signal I strongly recommend Signal Analyzer (SA). SA is actually one of the most valuable and priceless software available by Sergey Makarov (\u041c\u0430\u043a\u0430\u0440\u043e\u0432 \u0421\u0435\u0440\u0433\u0435\u0439 \u041c\u0438\u0445\u0430\u0439\u043b\u043e\u0432\u0438\u0447, sadly passed away on 29 May 2012) and it used to perform several tests on data sample coded as .wav or .mp3 file. The signal waterfall is reported below:</p> <p></p> <p>When an Autocorrelation function is applied on selected data frame (see above), the result shows a clear recursive pattern with a gap of 106.244 ms between every peak as expected. An ACF refinement can be done into WaveForm windows where we can also notice an identical structure as reported by the specifications</p> <p> </p> <p>Summary</p> <ol> <li>Synchronization pattern is composed by \\(2400*33.013E-3=79.2\\simeq 80\\) symbols</li> <li>Data group contain \\(2400*13.348E-3=32.0=32\\) symbols</li> <li>Reference sequence is formed by \\(2400*6.674E-3=16.02\\simeq 16\\) symbols</li> </ol>"},{"location":"build_package/","title":"Build Package","text":"<p>Building a distributable package with an executable for Artemis creates a practical solution for end-users, as they can run the application without needing to interact with the terminal and they can easily share the application as a stand-alone package.</p>"},{"location":"build_package/#requirements","title":"Requirements","text":"<ul> <li>Python (3.11 or higher)</li> </ul> <p>Info</p> <p>We assume that Python is already installed on the system and the Artemis source code has been downloaded and extracted. If these prerequisites are not met, please follow steps 1 to 3 in the run from source section.</p> <p>Cross-Compilation</p> <p>To generate standalone packages, an operating system that matches the target OS must be used, as Nuitka does not support cross-compilation. For example: you cannot build binaries on Windows that work on Linux or macOS.</p>"},{"location":"build_package/#windows","title":"Windows","text":""},{"location":"build_package/#procedure","title":"Procedure","text":"<ol> <li> <p>Open a PowerShell terminal in the main Artemis folder and execute the following command to start the build process:</p> <pre><code>.\\building\\Windows\\build_windows.ps1\n</code></pre> </li> <li> <p>Wait for the build process to complete. This may take a few minutes depending on your system's performance. Once the process finishes, check the <code>artemis.dist/</code> directory: it will contain the stand-alone software with the <code>artemis.exe</code> executable.</p> </li> </ol>"},{"location":"build_package/#linux","title":"Linux","text":""},{"location":"build_package/#procedure_1","title":"Procedure","text":"<ol> <li> <p>Open a terminal in the main Artemis folder and execute the following command to start the build process: <pre><code>. ./building/Linux/build_linux.sh\n</code></pre></p> </li> <li> <p>Wait for the build process to complete. This may take a few minutes depending on your system's performance. Once the process finishes, check the <code>artemis.dist/</code> directory: it will contain the stand-alone software with the <code>app.bin</code> executable.</p> </li> <li>If you wish to create a shortcut, follows the procedure in the installation section</li> </ol>"},{"location":"build_package/#mac-os","title":"Mac OS","text":"<p>Warning</p> <p>The support for the macOS compiled version of the program is temporarily limited due to a lack of machines for extensive testing. Feel free to contribute by reporting any issues you encounter by opening an Issue.</p>"},{"location":"build_package/#procedure_2","title":"Procedure","text":"<ol> <li>Open a terminal in the main Artemis folder and execute the following command to start the build process: <pre><code>. ./building/macOS/build_macos.sh\n</code></pre></li> </ol>"},{"location":"contribute/","title":"Contribute","text":"<p>Artemis is an open source project an every contribution, no matter how small, is valuable and greatly appreciated. Don't worry about getting everything perfect, we are happy to work with you on your contribution and help you along the way. This guide will help you get started by outlining various ways you can contribute.</p> <ul> <li> <p> Spot a bug?</p> <p>Open an issue (or pull request) and let us know the problem you faced (or you're working on)</p> <p> Open an Issue</p> </li> <li> <p> Fork the repository</p> <p>Create your own copy of the codebase that you can modify and submit pull requests from.</p> <p> Fork the repo</p> </li> <li> <p> Ideas?</p> <p>Idea for a new feature? Open an issue on the project's GitHub repository to describe your proposal in detail.</p> <p> Open an Issue</p> </li> <li> <p> Spreading the word!</p> <p>Do you like Artemis? Don't forgeto to share it with your network and your friends!</p> </li> </ul>"},{"location":"credits/","title":"License & Credits","text":""},{"location":"credits/#license","title":"License","text":"<p>Artemis is maintained by Marco Dalla Tiezza and released under the GPLv3 license.</p>"},{"location":"credits/#credits","title":"Credits","text":"<ul> <li>Marco Dalla Tiezza - Artemis I-II-IV developer, DB parsing, Website</li> <li>Alessandro Ceccato - Artemis III lead developer</li> <li>Paolo Romani (IZ1MLL) - Lead \u03b2 Tester, RF specialist</li> <li>Carl Colena - Sigidwiki admin, \u03b2 Tester, Signals expert</li> <li>Marco Bortoli - macOS deployment, \u03b2 Tester</li> <li>Eric Wiessner (KI7POL) - ARM port (Raspberry Pi3B+ and Pi4B)</li> <li>Pierpaolo Pravatto - Wiki page, \u03b2 Tester</li> <li>Francesco Capostagno, Luca, Pietro - \u03b2 Tester</li> </ul>"},{"location":"credits/#donators","title":"Donators","text":"<ul> <li>Eric Hahn</li> <li>Alan Lawrence</li> <li>Diego Gil Fernandez</li> <li>Torsten Teichert</li> <li>Charles Preston</li> <li>Brad Hein</li> <li>Paolo Romani</li> <li>Michelle Corbani</li> <li>Martin van Duinen</li> <li>Valentino Zardi</li> <li>Emmanuel Fabre</li> <li>Oscar Nilsson</li> <li>Pierre Declercq</li> <li>Detlef Jahn</li> <li>Oliver Schellenberg</li> <li>Stephane Imbertone</li> <li>Roel Ketelaars</li> <li>Timothy Ehrhart</li> <li>George Mager</li> <li>Gerhard Amon</li> <li>Gerald Schmidt</li> <li>Carlos Rocha</li> <li>Joshua Frohberg</li> <li>Bill Riches</li> <li>Jeffrey Krehbiel</li> <li>\u0412\u043e\u043b\u043e\u0434\u0438\u043c\u0438\u0440 \u0411\u0430\u0433\u043c\u0435\u0442</li> <li>Philip Hamlin</li> <li>David Davies</li> <li>Nigel P. Lawrence</li> <li>Marco Rissi (PP5ZX)</li> <li>Martin van Duinen</li> <li>Alex Diamantopulo</li> <li>Joseph Winter</li> <li>Mark Bender</li> <li>Rolf Gerhardt</li> <li>Denese Harris</li> <li>Benjamin Steele</li> <li>Alexander Irmscher</li> <li>Jonathan Chang</li> <li>Torsten Lipke</li> <li>Massimo Petrantoni</li> <li>William Arcand</li> <li>Jon Carp</li> <li>Robert Crone</li> <li>William Houston</li> <li>Richard Quasne</li> <li>Tom Krugliakov</li> <li>Francisco Neira Basso</li> <li>Alistair Macrae</li> <li>Kevin Arburn</li> <li>Marek Bar\u0142\u00f3g</li> <li>Gabriel Gl\u00f6smann</li> <li>Corbin Williams</li> <li>Ton Machielsen</li> <li>Ivan Rancic</li> <li>Alipio Fernandez</li> <li>Matt Eisele</li> <li>Martin Dudel</li> <li>Harald Geier</li> </ul>"},{"location":"db_acf/","title":"ACF","text":"<p>The table contains 4 columns explained below.</p> <p>Example</p> <p>A technical explanation on how autocorrelation function works along with a practical example is reported HERE</p>"},{"location":"db_acf/#acf_id","title":"ACF_ID","text":"<p><code>INTEGER</code> </p> <p>This is a unique identification number for each entry that is assigned during the creation of a new ACF. It is auto-incrementing and is not replaced in the event of deletion.</p>"},{"location":"db_acf/#sig_id","title":"SIG_ID","text":"<p><code>INTEGER</code> </p> <p>This is a direct reference to the specific signal associated with the ACF. It links to the primary key of the Signals table that holds detailed information about the signals.</p>"},{"location":"db_acf/#value","title":"VALUE","text":"<p><code>FLOAT</code></p> <p>The autocorrelation time expressed in ms.</p>"},{"location":"db_acf/#description","title":"DESCRIPTION","text":"<p><code>TEXT</code></p> <p>The short description is used to explain the details about the autocorrelation value, e.g. <code>Frame</code>, <code>Superframe</code>, etc.</p>"},{"location":"db_bandwidth/","title":"Bandwidth","text":"<p>The table contains 4 columns explained below.</p>"},{"location":"db_bandwidth/#band_id","title":"BAND_ID","text":"<p><code>INTEGER</code> </p> <p>This is a unique identification number for each entry that is assigned during the creation of a new bandwidth. It is auto-incrementing and is not replaced in the event of deletion.</p>"},{"location":"db_bandwidth/#sig_id","title":"SIG_ID","text":"<p><code>INTEGER</code> </p> <p>This is a direct reference to the specific signal associated with the bandwidth. It links to the primary key of the Signals table that holds detailed information about the signals.</p>"},{"location":"db_bandwidth/#value","title":"VALUE","text":"<p><code>INTEGER</code></p> <p>The bandwidth in Hz expressed as an integer.</p>"},{"location":"db_bandwidth/#description","title":"DESCRIPTION","text":"<p><code>TEXT</code></p> <p>The short description is used to explain the purpose of the bandwidth and any other useful details.</p>"},{"location":"db_cat_label/","title":"Category Label","text":"<p>This table contains only the name of the category/tag. The table contains 2 columns explained below.</p>"},{"location":"db_cat_label/#clb_id","title":"CLB_ID","text":"<p><code>INTEGER</code> </p> <p>This is a unique identification number for each entry that is assigned during the creation of a new category tag. It is auto-incrementing and is not replaced in the event of deletion.</p>"},{"location":"db_cat_label/#value","title":"VALUE","text":"<p><code>TEXT</code></p> <p>The name of the category/tag expressed as a string.</p>"},{"location":"db_category/","title":"Category","text":"<p>The primary function of this table is to facilitate the classification of the signal by assigning it to its appropriate family or category. Can be used with any tag. The table contains 3 columns explained below.</p>"},{"location":"db_category/#cat_id","title":"CAT_ID","text":"<p><code>INTEGER</code> </p> <p>This is a unique identification number for each entry that is assigned during the creation of a new category/tag. It is auto-incrementing and is not replaced in the event of deletion.</p>"},{"location":"db_category/#sig_id","title":"SIG_ID","text":"<p><code>INTEGER</code> </p> <p>This is a direct reference to the specific signal associated with the category. It links to the primary key of the Signals table that holds detailed information about the signals.</p>"},{"location":"db_category/#clb_id","title":"CLB_ID","text":"<p><code>INTEGER</code> </p> <p>This is a direct reference to the specific category label associated with the category. It links to the primary key of the Category Label table that holds the name of the category.</p>"},{"location":"db_frequency/","title":"Frequency","text":"<p>The table contains 4 columns explained below.</p>"},{"location":"db_frequency/#freq_id","title":"FREQ_ID","text":"<p><code>INTEGER</code> </p> <p>This is a unique identification number for each entry that is assigned during the creation of a new frequency. It is auto-incrementing and is not replaced in the event of deletion.</p>"},{"location":"db_frequency/#sig_id","title":"SIG_ID","text":"<p><code>INTEGER</code> </p> <p>This is a direct reference to the specific signal associated with the frequency. It links to the primary key of the Signals table that holds detailed information about the signals.</p>"},{"location":"db_frequency/#value","title":"VALUE","text":"<p><code>INTEGER</code></p> <p>The freqeuncy in Hz expressed as an integer.</p>"},{"location":"db_frequency/#description","title":"DESCRIPTION","text":"<p><code>TEXT</code></p> <p>The short description is used to explain the purpose of the bandwidth and any other useful details.</p>"},{"location":"db_info/","title":"Info","text":"<p>This is the database meta table and contains 4 columns explained below.</p>"},{"location":"db_info/#name","title":"NAME","text":"<p><code>TEXT</code></p> <p>This is the name of the database.</p>"},{"location":"db_info/#data","title":"DATA","text":"<p><code>TEXT</code></p> <p>The creation date when the database has been initialised.</p>"},{"location":"db_info/#version","title":"VERSION","text":"<p><code>INTEGER</code></p> <p>A simple integer to denote the database version.</p>"},{"location":"db_info/#editable","title":"EDITABLE","text":"<p><code>INTEGER</code></p> <p>This field should serve as a writing protection on the database.</p> <ul> <li>0: read-only database</li> <li>1: database can be edited with no restrictions</li> </ul> <p>Experimental</p> <p>This feature is experimental and not yet implemented.</p>"},{"location":"db_location/","title":"Location","text":"<p>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 (like <code>Worldwide</code>). The table contains 4 columns explained below.</p>"},{"location":"db_location/#loc_id","title":"LOC_ID","text":"<p><code>INTEGER</code> </p> <p>This is a unique identification number for each entry that is assigned during the creation of a new location. It is auto-incrementing and is not replaced in the event of deletion.</p>"},{"location":"db_location/#sig_id","title":"SIG_ID","text":"<p><code>INTEGER</code> </p> <p>This is a direct reference to the specific signal associated with the location. It links to the primary key of the Signals table that holds detailed information about the signals.</p>"},{"location":"db_location/#value","title":"VALUE","text":"<p><code>TEXT</code></p> <p>The location expressed as a string.</p>"},{"location":"db_location/#description","title":"DESCRIPTION","text":"<p><code>TEXT</code></p> <p>The short description is used to explain further details about the location.</p>"},{"location":"db_mode/","title":"Mode","text":"<p>This field reports the way how a signals has been decoded during the reception. The table contains 4 columns explained below.</p>"},{"location":"db_mode/#mod_id","title":"MOD_ID","text":"<p><code>INTEGER</code> </p> <p>This is a unique identification number for each entry that is assigned during the creation of a new mode. It is auto-incrementing and is not replaced in the event of deletion.</p>"},{"location":"db_mode/#sig_id","title":"SIG_ID","text":"<p><code>INTEGER</code> </p> <p>This is a direct reference to the specific signal associated with the modulation. It links to the primary key of the Signals table that holds detailed information about the signals.</p>"},{"location":"db_mode/#value","title":"VALUE","text":"<p><code>TEXT</code></p> <p>The mode expressed as a string.</p>"},{"location":"db_mode/#description","title":"DESCRIPTION","text":"<p><code>TEXT</code></p> <p>The short description is used to explain the purpose of the mode and any other useful details.</p>"},{"location":"db_modulation/","title":"Modulation","text":"<p>Modulation refers to the method by which information is encoded into the main signal (carrier). This process involves altering various properties of the carrier signal, such as amplitude, frequency, or phase. Multiple modulation techniques can be employed, and a TX station has the capability to utilize different modulation schemes. The table contains 4 columns explained below.</p>"},{"location":"db_modulation/#mdl_id","title":"MDL_ID","text":"<p><code>INTEGER</code> </p> <p>This is a unique identification number for each entry that is assigned during the creation of a new modulation. It is auto-incrementing and is not replaced in the event of deletion.</p>"},{"location":"db_modulation/#sig_id","title":"SIG_ID","text":"<p><code>INTEGER</code> </p> <p>This is a direct reference to the specific signal associated with the modulation. It links to the primary key of the Signals table that holds detailed information about the signals.</p>"},{"location":"db_modulation/#value","title":"VALUE","text":"<p><code>TEXT</code></p> <p>The modulation expressed as a string.</p>"},{"location":"db_modulation/#description","title":"DESCRIPTION","text":"<p><code>TEXT</code></p> <p>The short description is used to explain the purpose of the modulation and any other useful details.</p>"},{"location":"db_overview/","title":"Database","text":"<p>With the release of Artemis 4, we have made a significant upgrade in our data management system by transitioning from a CSV file to a full relational SQL database. This change brings a multitude of advantages that enhance the efficiency, scalability, and reliability of our system. In the following sections, we will explore, table by table, the structure of the new database.</p> <p></p>"},{"location":"db_signals/","title":"Signals","text":"<p>This is the main table and contains 4 columns explained below.</p>"},{"location":"db_signals/#sig_id","title":"SIG_ID","text":"<p><code>INTEGER</code> </p> <p>This is a unique identification number for each entry that is assigned during the creation of a signal. It is auto-incrementing and is not replaced in the event of signal deletion.</p>"},{"location":"db_signals/#name","title":"NAME","text":"<p><code>TEXT</code></p> <p>The name of the signal. A simple string that describes in short the analyzed signal. Special characters are allowed.</p>"},{"location":"db_signals/#description","title":"DESCRIPTION","text":"<p><code>TEXT</code></p> <p>The short description is used to explain the purpose of the signal and some other useful details.</p> <p>Tip</p> <p>The DESCRIPTION field supports Markdown, a simple markup language for creating rich text using plain text. Headers, emphasis, lists, links, code blocks and many more features for advanced text formtting. Markdown Basic Syntax </p>"},{"location":"db_signals/#url","title":"URL","text":"<p><code>TEXT</code></p> <p>The sigidwiki (SigID) URL of the selected signal. This is a direct connection to the online database where further details of the signal are collected.</p> <p>Info</p> <p>Internal Use Only This field is for the SigID database and not intended for user viewing or editing. Personal URLs can be stored in the signal description.</p>"},{"location":"installation/","title":"Installation","text":"<p>Requirements:</p> <ul> <li>Windows 8 or later</li> <li>Linux Ubuntu 20.04+ / Mint 20+ / Fedora 32+ and many other</li> <li>macOS 11+ (Big Sur or later)</li> </ul>"},{"location":"installation/#windows","title":"Windows","text":"<p>Just download the installer and follow the guided procedure to complete the installation process.</p>"},{"location":"installation/#linux","title":"Linux","text":"<p>Download and extract the tarball archive in a folder of your choice and run the executable <code>app.bin</code>.</p>"},{"location":"installation/#create-a-shortcut","title":"Create a Shortcut","text":"<ol> <li> <p>To create a direct shortcut (in the main menu) launch the bash script in the terminal with the command:</p> <pre><code>. create_shortcut.sh\n</code></pre> </li> </ol> <p>This script will:</p> <ul> <li>Set the correct read/write privileges of the Artemis folder</li> <li>Create the artemis.desktop file (shortcut) in /home/$USER/.local/share/applications</li> <li>Move the Artemis icon file to /usr/share/icons</li> </ul>"},{"location":"installation/#mac-os","title":"Mac OS","text":"<p>The support for the macOS compiled version of the program is temporarily limited due to a lack of machines for extensive testing. To use Artemis on a macOS device, you have the following options:</p> <ul> <li>Run the program directly from the source: Follow the instructions provided in this chapter to launch the program from the source code.</li> <li>Compile the Artemis 4 binaries on your machine: In this case, you can contribute by reporting any issues you encounter by opening an Issue.</li> <li>Use the last available compiled version (3.2.1): Although this version is no longer officially supported, it remains available for use.</li> </ul>"},{"location":"run_from_source/","title":"Run from source code","text":"<p>Running Artemis directly from the source code using the Python interpreter is considered the most reliable and least problematic method. This approach ensures maximum compatibility and reduces the likelihood of encountering runtime issues. However, it is also the less practical option, as it requires the use of the terminal for the execution.</p>"},{"location":"run_from_source/#requirements","title":"Requirements","text":"<ul> <li>Python (3.11 or higher)</li> </ul>"},{"location":"run_from_source/#procedure","title":"Procedure","text":"<ol> <li> <p>Download and install Python (3.11 or higher) from the official website. Be sure to select the flag <code>Add Python 3.x to PATH</code> during the first part of the installation.</p> </li> <li> <p>Download Artemis source code from the latest release in the GitHub repository.</p> </li> <li> <p>Extract the downloaded archive.</p> </li> <li> <p>Open the terminal in Artemis folder and install the required Python libraries with PIP: <pre><code>pip install -r requirements.txt --user\n</code></pre></p> </li> <li> <p>Launch Artemis: <pre><code>python app.py\n</code></pre></p> </li> </ol> <p>Note for Developers</p> <p>Whenever modifications are made to any .qml file or any assets (such as images, icons, etc.), it is essential to recompile the resource.py file to ensure that the changes are reflected in the application. To achieve this, execute the following command: <pre><code>pyside6-rcc ./artemis.qrc -o artemis/resources.py\n</code></pre></p>"},{"location":"sigid/","title":"SigID Wiki Database","text":"<p>Artemis serves as a valuable resource for both personal signal collection and leveraging a vast repository of pre-identified signals. This software application allows users to curate their own collections, but its true strength lies in its integration with a comprehensive database of known signals. This database is directly sourced from the Signal Identification Wiki, an open-source resource collaboratively maintained by a global community of radio enthusiasts.</p> <p>Database Revision</p> <p>For quality control purposes, the database undergoes a rigorous review process before integration into Artemis. This review adheres to established guidelines (DIANA crawler, not yet released), ensuring the accuracy and completeness of the information presented to users. The specifics of this review process are outlined in the following section.</p>"},{"location":"sigid/#modulation","title":"Modulation","text":"<p>A good practise (reported also on ) is to write the primary type of modulation (if known) and not all the possible variants. A practical example is reported on Signal Identification Wiki: there is no need to write 8-PSK or QPSK, PSK is enough. The Artemis SigID database is provided without any modulation variants included. The recognized modulations are listed below:</p>"},{"location":"sigid/#analog","title":"Analog","text":"<ul> <li>AM: Amplitude Modulation</li> <li>FM: Frequency Modulation</li> <li>PM: Phase Modulation</li> <li>LSB: Lower Sideband</li> <li>USB: Upper Sideband</li> <li>VSB: Vestigial Sideband</li> <li>CW: Continuous Wave</li> </ul>"},{"location":"sigid/#digital","title":"Digital","text":"<ul> <li>QAM: Quadrature Amplitude Modulation</li> <li>PSK: Phase-Shift Keying</li> <li>FSK: Frequency-Shift Keying</li> <li>ASK: Amplitude-Shift Keying</li> <li>MSK: Minimum-Shift Keying</li> <li>IFK: Incremental Frequency Keying</li> <li>OOK: On-Off Keying</li> <li>FDM: Frequency-Division Multiplexing</li> <li>BOC: Binary Offset Carrier Modulation</li> <li>CDMA: Code Division Multiple Access</li> <li>TDMA: Time Division Multiple Access</li> <li>FBMC: Filter Bank Multi Carrier</li> <li>UFMC: Universal Filtered Multi Carrier</li> <li>PCM: Pulse Code Modulation</li> <li>PPM: Pulse Position Modulation</li> <li>FMCW: Frequency-Modulated Continuous Wave</li> <li>Pulse: Pulse</li> </ul>"},{"location":"sigid/#spread-spectrum","title":"Spread Spectrum","text":"<ul> <li>CSS: Chirp Spread Spectrum</li> <li>DSSS: Direct Sequence Spread Spectrum</li> <li>FHSS: Frequency Hopping Spread Spectrum</li> <li>THSS: Time Hopping Spread Spectrum</li> </ul>"},{"location":"sigid/#locations","title":"Locations","text":"<p>Locations are either countries or special token (<code>Worldwide</code>, <code>Europe</code>, etc.) . Precise location of the TX station, towns and cities are converted to their respective countries.</p>"}]} |