{"id":21043,"date":"2024-05-13T17:22:34","date_gmt":"2024-05-13T15:22:34","guid":{"rendered":"https:\/\/chochol.io\/smart-home\/ogn-receiver-installation-and-configuration-on-raspberry-pi\/"},"modified":"2025-08-25T14:51:12","modified_gmt":"2025-08-25T12:51:12","slug":"ogn-receiver-installation-and-configuration-on-raspberry-pi","status":"publish","type":"post","link":"https:\/\/chochol.io\/en\/hardware\/ogn-receiver-installation-and-configuration-on-raspberry-pi\/","title":{"rendered":"OGN: Receiver installation and configuration on Raspberry Pi"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"21043\" class=\"elementor elementor-21043 elementor-20998\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5d12005 e-flex e-con-boxed e-con e-parent\" data-id=\"5d12005\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c8f95a2 elementor-toc--minimized-on-tablet elementor-widget elementor-widget-table-of-contents\" data-id=\"c8f95a2\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;exclude_headings_by_selector&quot;:[],&quot;no_headings_message&quot;:&quot;No headings were found on this page.&quot;,&quot;headings_by_tags&quot;:[&quot;h2&quot;,&quot;h3&quot;,&quot;h4&quot;,&quot;h5&quot;,&quot;h6&quot;],&quot;marker_view&quot;:&quot;numbers&quot;,&quot;minimize_box&quot;:&quot;yes&quot;,&quot;minimized_on&quot;:&quot;tablet&quot;,&quot;hierarchical_view&quot;:&quot;yes&quot;,&quot;min_height&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"table-of-contents.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-toc__header\">\n\t\t\t\t\t\t<div class=\"elementor-toc__header-title\">\n\t\t\t\tTable of Contents\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--expand\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__c8f95a2\" aria-expanded=\"true\" aria-label=\"Open table of contents\"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-chevron-down\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"><\/path><\/svg><\/div>\n\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--collapse\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__c8f95a2\" aria-expanded=\"true\" aria-label=\"Close table of contents\"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-chevron-up\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"><\/path><\/svg><\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<div id=\"elementor-toc__c8f95a2\" class=\"elementor-toc__body\">\n\t\t\t<div class=\"elementor-toc__spinner-container\">\n\t\t\t\t<svg class=\"elementor-toc__spinner eicon-animation-spin e-font-icon-svg e-eicon-loading\" aria-hidden=\"true\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M500 975V858C696 858 858 696 858 500S696 142 500 142 142 304 142 500H25C25 237 238 25 500 25S975 237 975 500 763 975 500 975Z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ab91e45 elementor-widget elementor-widget-text-editor\" data-id=\"ab91e45\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Hello!<\/h2><p>Welcome to the next part of our guide to monitoring air traffic using minicomputers! In previous articles, we have discussed configuring the ADS-B antenna on both Raspberry Pi and Synology devices. Today we will focus on another important aspect of airspace monitoring \u2013 the OGN (Open Glider Network) system.<\/p><p>The perceptive reader may notice that the configuration of the OGN system has a lot in common with previous projects described in our blog. As with ADS-B, we will need a suitable receiver to read and interpret signals transmitted by aircraft. If you haven\u2019t yet had a chance to read our previous articles, I encourage you to read them:<\/p><ul><li>\ud83d\udc49 <a href=\"https:\/\/chochol.io\/en\/hardware\/ads-b-receiver-installation-and-configuration-on-synology-nas\/\" target=\"_new\" rel=\"noreferrer\">Description of ADS-B antenna configuration on Raspberry Pi<\/a> and \ud83d\udc49 <a href=\"https:\/\/chochol.io\/en\/hardware\/ads-b-receiver-installation-and-configuration-on-synology-nas\/\" rel=\"noreferrer\">Description of ADS-B antenna configuration on Synology devices<\/a>.<\/li><\/ul><p>Now that we have some experience in air traffic monitoring with minicomputers, it\u2019s time to delve into the world of OGN. Ready for the next part of this exciting journey? Here we go!<\/p><h2>Introduction<\/h2><h3>What is the Open Glider Network?<\/h3><p><img fetchpriority=\"high\" decoding=\"async\" class=\"size-full wp-image-21004 alignleft\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/ogn-logo-256x256-1.png\" alt=\"Open Glider Network, Logo\" width=\"256\" height=\"256\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/ogn-logo-256x256-1.png 256w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/ogn-logo-256x256-1-150x150.png 150w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/ogn-logo-256x256-1-60x60.png 60w\" sizes=\"(max-width: 256px) 100vw, 256px\" \/><a href=\"http:\/\/wiki.glidernet.org\/\" target=\"_blank\" rel=\"noopener\">The Open Glider Network (OGN)<\/a> is an air traffic monitoring platform that enables real-time tracking of aircraft and provides an approach warning system for ultralight aircraft, gliders and other small aircraft. OGN was created by the aviation enthusiast community, with the main goal of enhancing airspace safety by making aircraft location and traffic data available to pilots, air traffic controllers and other interested users.<\/p><p>The OGN system uses a global network of radio receivers to monitor the position and speed of aircraft, among other things. using FLARM technology. The data is transferred to a central platform, where it is processed and made available to users through an interactive map and air traffic analysis tools.<\/p><p>With OGN, pilots can track the positions of other aircraft in the area, enabling them to avoid collisions and make informed decisions during flight. In addition, the OGN system can also be used to monitor aeronautical activity at airports, control airspace during air competitions, and support search and rescue operations and other aviation safety activities.<\/p><h3>What is a Raspberry Pi?<\/h3><p><img decoding=\"async\" class=\"alignleft size-full wp-image-20753\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Projekt-bez-nazwy-3.png\" sizes=\"(max-width: 250px) 100vw, 250px\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Projekt-bez-nazwy-3.png 250w, https:\/\/chochol.io\/wp-content\/smush-webp\/2024\/04\/Projekt-bez-nazwy-3-150x150.png.webp 150w, https:\/\/chochol.io\/wp-content\/smush-webp\/2024\/04\/Projekt-bez-nazwy-3-60x60.png.webp 60w\" alt=\"Raspberry Pi, Logo\" width=\"250\" height=\"250\" \/><\/p><p><strong>Raspberry Pi<\/strong> is a family of single-board computers (SBCs) created by the Raspberry Pi Foundation, a non-profit organization based in the United Kingdom. The first Raspberry Pi model appeared on the market in 2012. Since then, the series has continued to evolve, delivering newer and more advanced capabilities at an affordable price.<\/p><p>The Raspberry Pi is used for a variety of purposes, from educational to hobbyist to professional, as an inexpensive and compact computer. It takes the form of a small board with a built-in processor, RAM, input\/output (GPIO) ports, USB ports, an Ethernet port, and often with built-in Wi-Fi and Bluetooth modules.<\/p><p>Although the Raspberry Pi is not equivalent to traditional desktop computers in terms of performance, it offers enough computing power for a wide range of applications, such as learning programming, creating IoT (Internet of Things) projects, home servers, monitoring systems and more.<\/p><p>All Raspberry Pi models run on open-source software, usually based on a Linux operating system such as Raspberry Pi OS (formerly known as Raspbian), although other operating systems such as Windows 10 IoT Core can also be run on them. Thanks to its popularity, the Raspberry Pi has become an essential tool for hobbyists, students, developers and even some professionals in various fields of computer science and electronics.<\/p><h2>Preparation<\/h2><p>Before installing an OGN system, it\u2019s a good idea to make solid preparations. Here is a more extensive description of what was needed based on my own setup.<\/p><h3>Location<\/h3><p>When setting up an OGN receiving system using a Raspberry Pi, keep in mind the importance of a suitable place to install the antenna. Here are some tips that you may find helpful.<\/p><ul><li><strong>Antenna location:<\/strong> Choose a location that provides free access for the antenna to the open sky. Make sure that the antenna will not be obscured by obstacles \u2013 such as trees, buildings or other objects;<\/li><li><strong>Avoid interference:<\/strong> Place the antenna away from devices that generate electromagnetic interference, which could affect the quality of received signals;<\/li><li><strong>Wiring safety:<\/strong> Ensure safe routing of cables from the antenna to the receiver, avoiding potential sources of damage. Protect your cabling from bad weather;<\/li><li><strong>Optimum height:<\/strong> Try to place the antenna at an optimal height to minimize terrain interference and improve the range of received signals;<\/li><\/ul><h3>Paperwork for the use of the roof in housing buildings<\/h3><p>When planning to install an antenna on the roof of a housing building, it is necessary to comply with the formalities of the construction law, especially when dealing with a building covered by a community or cooperative.<\/p><h4>Make sure that the following steps have been taken<\/h4><p>Therefore, the following steps must be taken to erect the mast and antenna on the roof:<\/p><ul><li><strong>Community or Cooperative Consent:<\/strong> Before proceeding with the installation, it is important to obtain the approval of the community or housing cooperative board. Typically, the roofs of apartment buildings are considered common areas, and decisions on their use require the approval of the housing community.<\/li><li><strong>Construction Law:<\/strong> You should check the construction law to find out if installing an antenna on the roof requires any special permits or approvals. In some cases, depending on the type of antenna and the planned installation, additional paperwork may be required.<\/li><li><strong>Contract and Liability:<\/strong> The community or cooperative may also require the signing of a contract, which will specify the terms of use of the roof, rights and obligations related to the installation of the antenna. It is also worth discussing issues related to possible damage to the roof or other building components during installation.<\/li><li><strong>Structure Safety:<\/strong> Regardless of the purpose of the antenna installation, the mast should be sturdy and safe. Make sure it meets all safety standards to avoid possible damage or accidents.<\/li><li><strong>Notification to the Housing Community:<\/strong> Before starting work, it is important to inform neighbors and residents about the planned installation, and to listen to their concerns or objections, if any. Cooperation with residents can help reach an agreement on the installation of the antenna.<\/li><\/ul><h3>Required equipment and components<\/h3><p>In my case, in order for me to start receiving any information sent by aircraft, it was necessary to have:<\/p><h4>Hardware<\/h4><ul><li><a href=\"https:\/\/amzn.to\/3UGZIPP\" target=\"_blank\" rel=\"noopener\">Raspberry Pi 5 8GB RAM<\/a>,<\/li><li><a href=\"https:\/\/amzn.to\/4dBykLU\" target=\"_blank\" rel=\"noopener\">Waveshare PoE HAT<\/a>,<ul><li>Due to the fact that one network cable is routed to the roof, I decided to power the Raspberry Pi over PoE using the <a href=\"https:\/\/www.dipol.com.pl\/zasilanie_poe_-standard_ieee_802_3af_oraz_ieee_802_3at_bib746.htm\" target=\"_blank\" rel=\"noopener\">802.3af<\/a> standard;<\/li><li>It is powered by <a href=\"https:\/\/mikrotik.com\/product\/rb5009upr_s_in\" target=\"_blank\" rel=\"noopener\">Mikrotik RB5009UPr+S+IN<\/a> router;<\/li><\/ul><\/li><li><a href=\"https:\/\/amzn.to\/4bF6zjT\" target=\"_blank\" rel=\"noopener\">SDR receiver<\/a> that covers the 868 MHz frequency with its range,<\/li><li><a href=\"https:\/\/amzn.to\/3K069Zq\" target=\"_blank\" rel=\"noopener\">Antenna<\/a> optimized for operation at 868 MHz,<\/li><li><a href=\"https:\/\/www.westerndigital.com\/pl-pl\/products\/memory-cards\/wd-purple-microsd?sku=WDD032G1P0C\" target=\"_blank\" rel=\"noopener\">WD Purple memory card<\/a> with a capacity of 32GB.<ul><li>The choice of a card from Western Digital is intended to ensure greater reliability and durability. In your solution, you can use other manufacturers of memory cards designed for video surveillance \u2013 they have longer durability and higher TBW (Total Bytes Written).<\/li><\/ul><\/li><\/ul><h4>A few words about memory cards<\/h4><p>In the hardware section, I elaborate on the components used. One important aspect is the memory card, which is important for stable operation of the Raspberry Pi, especially if it is used for a long time and works 24\/7.<\/p><p>There are several reasons why a cheap microSD card may not be suitable for a Raspberry Pi running for a long time. Here are some factual reasons:<\/p><ol><li><p><strong>Durability:<\/strong> low-cost microSD cards are usually not designed for heavy continuous use over long periods of time. 24\/7 operation can lead to faster wear and failure of the memory card. In contrast, cards such as <a href=\"https:\/\/documents.westerndigital.com\/content\/dam\/doc-library\/pl_pl\/assets\/public\/western-digital\/product\/embedded-flash\/surveillance-wd-purple-microSD\/product-brief-wd-purple-sc-qd101-ultra-endurance-microsd.pdf\" target=\"_blank\" rel=\"noopener\">WD Purple<\/a> and <a href=\"https:\/\/www.kingston.com\/pl\/memory-cards\/industrial-grade-microsd-uhs-i-u3\" target=\"_blank\" rel=\"noopener\">Kingston Industrial<\/a> are specifically designed for continuous use, which indicate their durability;<\/p><\/li><li><p><strong>Weather resistance:<\/strong> Raspberry Pi, which works 24\/7, can be exposed to various weather conditions, such as temperature changes and humidity. Cheap microSD cards may be less resistant to these conditions, which can lead to failures. Industrial cards often have better weather resistance parameters, guaranteeing reliability in a variety of conditions.<\/p><\/li><\/ol><h4>Mounting method<\/h4><p>It is worth noting that the antenna for OGN can be mounted on the mast from a satellite dish, if we do not have another place available for its placement. However, it is advisable to arrange the installation to avoid overloading the mast from the satellite dish and not to create a kind of \u201cChristmas tree\u201d.<\/p><p>Therefore, if possible, consider installing a separate antenna mount or mast specifically designed for antenna installation. Such a procedure will not only ensure stable placement of the antenna, but also allow easier management of the installation and ensure future flexibility. With an additional bracket or mast, you will have the ability to install other antennas in the future, which can be useful for system expansion or additional communication needs.<\/p><p>In the case of installing an antenna on the roof of a residential building \u2013 below I describe the additional components that in my case were necessary for the installation of antennas (three antennas are currently installed: ADS-B, Airband and Open Glider Network).<\/p><h4>Additional equipment<\/h4><ul><li><a href=\"https:\/\/www.dipol.com.pl\/maszt_balastowy_bezinwazyjny_mbw-1200_E8741.htm\" target=\"_blank\" rel=\"noopener\">Non-invasive ballast mast<\/a> with a height of 1.2 m;<\/li><li><a href=\"https:\/\/www.dipol.com.pl\/szafka_hermetyczna_signal_cctv_210-230-145_ip66_R90601.htm\" target=\"_blank\" rel=\"noopener\">Hermetic box<\/a> for mounting on the pole of a pole without invasion;<\/li><li><a href=\"https:\/\/www.obi.pl\/cegly-i-pustaki\/bloczek-betonowy-fundamentowy-38-cm-x-24-cm-x-12-cm\/p\/5453659\" target=\"_blank\" rel=\"noopener\">Concrete blocks<\/a> for the load of a non-invasive mast;<\/li><li><a href=\"https:\/\/www.leroymerlin.pl\/produkty\/urzadzanie-wnetrz\/dywany-wycieraczki-chodniki\/wycieraczki\/wycieraczka-zewnetrzna-alfa-100-x-50-cm-gumowa-czarna-42050715.html\" target=\"_blank\" rel=\"noopener\">Rubber wiper<\/a>, on which the non-invasive mast will be placed.<\/li><\/ul><h3>Software<\/h3><p>To make our receiver work effectively, we will use the Raspberry Pi OS Lite operating system, devoid of a desktop environment. On the other hand, we will give it commands over SSH.<\/p><p>For Microsoft Windows operating system I recommend <a href=\"https:\/\/www.putty.org\/\" target=\"_blank\" rel=\"noopener\">PuTTY<\/a>, while for Apple macOS operating systems I recommend <a href=\"https:\/\/termius.com\/\" target=\"_blank\" rel=\"noopener\">Termius<\/a>.<\/p><p>As the software for sharing OGN data to a central data aggregator, we will use files from the developers of the Open Glider Network. I will describe the installation steps below, following the instructions provided from the manufacturer \u2013 and experience.<\/p><p>Use the <a href=\"https:\/\/chat.openai.com\/c\/link\" target=\"_new\" rel=\"noopener\">official installer<\/a> to install Raspberry Pi OS Lite on your device.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5993390 elementor-widget elementor-widget-image\" data-id=\"5993390\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/2015-09_OGN_FunctionArchitecture.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"OGN, Function Architecture\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MjEwMTMsInVybCI6Imh0dHBzOlwvXC9jaG9jaG9sLmlvXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI0XC8wNVwvMjAxNS0wOV9PR05fRnVuY3Rpb25BcmNoaXRlY3R1cmUucG5nIn0%3D\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"768\" height=\"543\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/2015-09_OGN_FunctionArchitecture-768x543.png\" class=\"attachment-medium_large size-medium_large wp-image-21013\" alt=\"GN and Flightradar24 data servers with Receiver A\/B\/C linked to aircraft under obstacles, via Internet.\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/2015-09_OGN_FunctionArchitecture-768x543.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/2015-09_OGN_FunctionArchitecture-300x212.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/2015-09_OGN_FunctionArchitecture-1024x724.png 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/2015-09_OGN_FunctionArchitecture-1536x1086.png 1536w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/2015-09_OGN_FunctionArchitecture-2048x1448.png 2048w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-24213a8 e-flex e-con-boxed e-con e-parent\" data-id=\"24213a8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-60a2d4d elementor-widget elementor-widget-text-editor\" data-id=\"60a2d4d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Collecting the location parameters of our receiver<\/h3><p>In order to properly configure the receiver, it is necessary to collect precise data on its location. Here is the key information you need to obtain:<\/p><ul><li><strong>Antenna height (above sea level)<\/strong><ul><li>For this information, visit <a href=\"https:\/\/www.freemaptools.com\/elevation-finder.htm\" target=\"_new\" rel=\"noopener\">https:\/\/www.freemaptools.com\/elevation-finder.htm<\/a>. Move the pin closer to the exact location of the antenna, and then consider the distance from the ground level where the antenna is installed.<\/li><\/ul><\/li><li><strong>Latitude and longitude of the antenna<\/strong><ul><li>To get this information, visit <a href=\"https:\/\/www.gps-coordinates.net\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.gps-coordinates.net<\/a> or <a href=\"https:\/\/maps.google.com\/\" target=\"_blank\" rel=\"noopener\">https:\/\/maps.google.com<\/a>, zoom in to the exact location of the antenna and click to get the exact latitude and longitude data. Alternatively, you can use a handy GPS.<\/li><\/ul><\/li><\/ul><p>Providing precise location data is a key step in the effective configuration of an OGN receiver. Be sure to enter this information with the utmost accuracy to ensure effective system operation and provide reliable air traffic data.<\/p><h2>Step 1 \u2013 Installing the antenna on the roof<\/h2><p>When installing an antenna on the roof of a house or multi-family building, there are a few general rules to follow. On the roof of the house, ensure that the antenna is stably mounted (I described above).<\/p><p>In the case of a multifamily building, it is worthwhile to use the technical channel where cables run between floors. In this case, you should add your cable to the existing infrastructure, and it should be clearly marked who is responsible for the cable.<\/p><p>When installing an antenna on the roof of a building, it is also important to pay attention to fire safety features, such as a sealing compound, such as the one available from <a href=\"https:\/\/www.hilti.pl\/c\/CLS_FIRESTOP_PROTECTION_7131\/CLS_FIRESTOP_SEALANTS_SPRAY_7131\/r1169913?CHA_PACKAGING=Nab%C3%B3j&CHD_WEIGHT_PM=0.45%20kg&combo_content=11d3b65d3c3a67667b1f5628a14afec7&itemCode=378247\" target=\"_blank\" rel=\"noopener\">HILTI products<\/a>. If there is a fireproof membrane between floors, it may be necessary to supplement it with sealant on our side. The sealing material is designed to protect the space from smoke and fire penetration in the event of a fire, which is important for maintaining the integrity of the building\u2019s fire protection system.<\/p><h2>Step 2 \u2013 Installing the operating system on the Raspberry Pi<\/h2><ul><li>Raspberry Pi Device: Select <strong>Raspberry Pi 5<\/strong> <em>(or Raspberry Pi 4 \u2013 depending on what you have)<\/em>,<\/li><li>Operating System: Select R<strong>aspberry Pi OS<\/strong> (other) and then <strong>Raspberry Pi OS Lite (64-bit)<\/strong>,<\/li><li>Storage: select your <strong>storage media<\/strong> that you have connected to your computer,<\/li><li>Then click <strong>Next<\/strong>,<\/li><\/ul><p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-808\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Screenshot-2023-12-26-at-14.03.47.png\" sizes=\"(max-width: 792px) 100vw, 792px\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Screenshot-2023-12-26-at-14.03.47.png 792w, https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Screenshot-2023-12-26-at-14.03.47-300x223.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Screenshot-2023-12-26-at-14.03.47-768x572.png 768w\" alt=\"Raspberry Pi Imager\" width=\"792\" height=\"590\" \/><\/p><ul><li>When the <strong>Use OS customization<\/strong> information prompt appears, click <strong>Edit settings<\/strong>,<\/li><li>For macOS computers \u2013 When you see the next prompt stating <em>Would you like to prefill the wifi password from the system keychain<\/em>, select <strong>No<\/strong>.<\/li><li>When the operating system customization window opens, go to the <strong>General<\/strong> tab and complete it with the following parameters:<ul><li>Check <strong>Set hostname<\/strong> and type: rpi01<\/li><li>Check <strong>Set username and password<\/strong> and type:<ul><li>Username: <strong>pi<\/strong><\/li><li>Password: <strong>Set your own password<\/strong><\/li><\/ul><\/li><li>Check <strong>Set locale settings<\/strong>, then set:<ul><li>Time zone: <strong>Europe\/Warsaw<\/strong>,<\/li><li>Keyboard layout: <strong>us<\/strong>.<\/li><\/ul><\/li><\/ul><\/li><li>Go to the next <strong>Services<\/strong> tab and check <strong>Enable SSH<\/strong>, leaving <strong>Use password authentication<\/strong>.<\/li><li>To save your settings, click <strong>Save<\/strong>.<\/li><li>Then return to the previous <strong>Use OS customization<\/strong> window and click <strong>Yes<\/strong> to apply the modifications you made.<\/li><li>A warning window will pop up informing you that all the data on the memory card will be erased permanently. Confirm this action. At this point, the Imager tool will format the card and install the operating system on it with the modifications made.<\/li><\/ul><p>For information on the changes made to the operating system for the ARM64 platform, <a href=\"https:\/\/downloads.raspberrypi.com\/raspios_lite_arm64\/release_notes.txt\" target=\"_blank\" rel=\"noopener\">click here<\/a>.<\/p><h2>Step 3 \u2013 Configure the operating system on the Raspberry Pi<\/h2><p>Once the installation process is complete, insert the memory card into the Raspberry Pi. Then connect them to the power supply and to the router or switch using a network cable terminated with an RJ45 connector.<\/p><p>The system update is sufficient to continue the configuration process. Regular updates not only ensure security, but also enable you to take advantage of the latest features and fixes, which translates into smooth and efficient operation. Before you proceed with further configuration, it\u2019s a good idea to make sure the software on the Raspberry Pi OS is up to date.<\/p><p>In addition, in the process, we will deactivate the Wi-Fi and Bluetooth functions.<\/p><h3>System and package updates<\/h3><ul><li>Launch PuTTY (Windows OS) or Termius (macOS), then connect to your device,<\/li><li>Enter the following command to update the package list and install available updates:<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-766128b elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"766128b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-766128b\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>sudo apt-get update && sudo apt-get upgrade -y<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_766128b = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_766128b();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_766128b );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-22e1034 elementor-widget elementor-widget-text-editor\" data-id=\"22e1034\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Deactivation of Wi-Fi and Bluetooth<\/h3><p>The deactivation of the Wi-Fi and Bluetooth module is aimed at minimizing possible interference in the radio environment and saving energy resources.<\/p><p>To disable Wi-Fi and Bluetooth, we can do it in two ways:<\/p><ul><li><strong>Method 1:<\/strong> Via <strong>rfkill<\/strong><ul><li>To use the <strong>rfkill<\/strong> command, make sure the tool is installed. If not, install them with the following command:<\/li><\/ul><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dfca626 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"dfca626\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-dfca626\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>sudo apt-get update && sudo apt-get install rfkill<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_dfca626 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_dfca626();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_dfca626 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bef9f4a elementor-widget elementor-widget-text-editor\" data-id=\"bef9f4a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>Then execute the following commands:<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d5ede55 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"d5ede55\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-d5ede55\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code># Wi-Fi deactivation\nsudo rfkill block wifi\n\n# Bluetooth deactivation\nsudo rfkill block bluetooth<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_d5ede55 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_d5ede55();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_d5ede55 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f21e102 elementor-widget elementor-widget-text-editor\" data-id=\"f21e102\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li><strong>Method 2:<\/strong> By editing the configuration\n<ul>\n<li>In the configuration file <strong>\/boot\/config.txt<\/strong>, add the necessary lines to disable Wi-Fi and Bluetooth.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-66c87ba elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"66c87ba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-66c87ba\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code># Wi-Fi deactivation\nsudo echo &quot;dtoverlay=disable-wifi&quot; | sudo tee -a \/boot\/config.txt\n\n# Bluetooth deactivation\nsudo echo &quot;dtoverlay=disable-bt&quot; | sudo tee -a \/boot\/config.txt<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_66c87ba = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_66c87ba();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_66c87ba );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f168972 elementor-widget elementor-widget-text-editor\" data-id=\"f168972\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>After installing the tool or making changes to the configuration file, it is recommended to restart the Raspberry Pi:<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9af461b elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"9af461b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-9af461b\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers\"data-previewers=\"\"><code>sudo reboot<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_9af461b = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_9af461b();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_9af461b );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-35d34fb elementor-widget elementor-widget-text-editor\" data-id=\"35d34fb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Fixed IP address on LAN via DHCP Reservation<\/h3><p>For home labs, where complex network structures are not often necessary, the <strong>DHCP Reservation<\/strong> option provides a simple and effective tool for managing fixed IP addresses for key devices.<\/p><p>The process of configuring IP address reservation in the DHCP server may vary depending on the router manufacturer. The following is a general description of this process, and for the purposes of our configuration, we assume that our device has been assigned an IP address reservation of <strong>192.168.100.10<\/strong>.<\/p><ul><li>Logging into the <strong>router\u2019s administrative interface<\/strong>:<ul><li>Enter the router\u2019s administrative interface via a web browser,<\/li><li>Log in to your administrative account,<\/li><\/ul><\/li><li>Finding the <strong>DHCP<\/strong> section:<ul><li>In the router\u2019s interface, find the section related to <strong>DHCP<\/strong> or <strong>LAN Settings<\/strong>,<\/li><\/ul><\/li><li>Selecting <strong>DHCP Reservation<\/strong>:<ul><li>In the <strong>DHCP<\/strong> section, look for an option related to IP address reservation,<\/li><\/ul><\/li><li>Adding reservations:<ul><li>In the case of <strong>TP-Link, Netgear or Asus<\/strong> etc.:<ul><li>Select <strong>DHCP Reservation<\/strong> or a similar option,<\/li><li>Add a new reservation, specifying the device\u2019s <strong>MAC address<\/strong> a<strong>nd assigned IP address<\/strong> (e.g. 192.168.100.10)<\/li><\/ul><\/li><li>In the case of <strong>MikroTik<\/strong>:<ul><li>Go to the <strong>IP > DHCP Server<\/strong>,<\/li><li>In the <strong>Leases<\/strong> tab, find your device,<\/li><li><strong>Double-click<\/strong> on the selected device,<\/li><li>In the DHCP Lease window of the selected device, click <strong>Copy<\/strong>,<\/li><li>In the New DHCP Lease window, <strong>set your desired<\/strong> IP address, then save the configuration by clicking <strong>Apply<\/strong> and then <strong>OK<\/strong>.<\/li><\/ul><\/li><\/ul><\/li><li><strong>Restart the device<\/strong> and wait for the Raspberry Pi to get a new IP address.<\/li><\/ul><h3>Change of SDR serial number<\/h3><p>Most RTL-SDR devices are shipped with identical serial numbers. If more than one SDR device is present on our system, this can result in potential confusion. To avoid such a situation, it is recommended to assign SDR serial numbers that are consistent with the frequencies on which these devices operate and receive messages.<\/p><p>You can read more about this process in a separate guide that <a href=\"https:\/\/chochol.io\/en\/hardware\/how-to-change-rtl-sdr-dongle-serial-number-on-linux\/\">I wrote here. \ud83d\udc49 Look into it.<\/a><\/p><p>For the purposes of this guide, we assume that the SDR used to receive OGN (868 MHz) will have the serial number <strong>00868000<\/strong>.<\/p><h2>Step 4 \u2013 Configure software from Open Glider Network on Raspberry Pi<\/h2><p>Here are step-by-step instructions for installing the necessary OGN packages and software on your system:<\/p><ul><li>Start the terminal on your Raspberry Pi device.<\/li><li>Install a package that supports RTL-SDR modules. Rather, it should already be present in newer distributions.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-00c7404 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"00c7404\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-00c7404\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>sudo apt-get install rtl-sdr<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_00c7404 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_00c7404();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_00c7404 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0c61a3f elementor-widget elementor-widget-text-editor\" data-id=\"0c61a3f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>Enter the following command to install the necessary libraries and tools:<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4325219 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"4325219\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-4325219\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>sudo apt-get -y install libconfig9 libjpeg-dev libfftw3-dev lynx ntpdate ntp<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_4325219 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_4325219();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_4325219 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-11cee4c elementor-widget elementor-widget-text-editor\" data-id=\"11cee4c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>Then download and extract the JPEG library sources:<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d21df50 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"d21df50\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-d21df50\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>wget -qO- http:\/\/www.ijg.org\/files\/jpegsrc.v8d.tar.gz | tar -xz ; cd jpeg-8d\/<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_d21df50 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_d21df50();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_d21df50 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6b034f8 elementor-widget elementor-widget-text-editor\" data-id=\"6b034f8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>Configure the JPEG library for compilation on Raspberry Pi devices:<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7a696a1 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"7a696a1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-7a696a1\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>.\/configure --libdir=\/usr\/lib\/ --build=aarch64-unknown-linux-gnu\n<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_7a696a1 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_7a696a1();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_7a696a1 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b7d0ba6 elementor-widget elementor-widget-text-editor\" data-id=\"b7d0ba6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>Compile and install the JPEG library by running the following command:<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b69fc34 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"b69fc34\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-b69fc34\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>make && sudo make install<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_b69fc34 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_b69fc34();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_b69fc34 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8acf6ad elementor-widget elementor-widget-text-editor\" data-id=\"8acf6ad\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>Optionally, to clean up the working directory after the JPEG library installation, do:<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e1229ff elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"e1229ff\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-e1229ff\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>cd .. ; rm -fr jpeg-8d\/<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_e1229ff = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_e1229ff();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_e1229ff );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bcb4aeb elementor-widget elementor-widget-text-editor\" data-id=\"bcb4aeb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>\n<p>Finally, download and unzip the current version of OGN software for ARM64 devices:<\/p>\n<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-775d35c elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"775d35c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-775d35c\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>wget -qO- http:\/\/download.glidernet.org\/arm64\/rtlsdr-ogn-bin-arm64-latest.tgz | tar -xz<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_775d35c = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_775d35c();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_775d35c );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-eeb61bf elementor-widget elementor-widget-text-editor\" data-id=\"eeb61bf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>Navigate to the directory where the OGN software is located by running the command:<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-de466d6 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"de466d6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-de466d6\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>cd rtlsdr-ogn<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_de466d6 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_de466d6();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_de466d6 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a784577 elementor-widget elementor-widget-text-editor\" data-id=\"a784577\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>Create a file that will be used for communication between processes by executing the following command:\n<ul>\n<li>This step involves creating a special \u201cpipe\u201d file, which is used for communication between processes.<\/li>\n<li>In OGN software version 0.2.2, the processes of radio signal reception (rf-reception) and data decoding are separate processes.<\/li>\n<li>To allow them to communicate with each other, this fifo file is used.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-21b6777 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"21b6777\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-21b6777\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>mkfifo ogn-rf.fifo<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_21b6777 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_21b6777();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_21b6777 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-02e4760 elementor-widget elementor-widget-text-editor\" data-id=\"02e4760\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>SDR receiver tuning<\/h3><h4>Explanation<\/h4><p>This step involves tuning the receiver to the appropriate radio frequency so that OGN protocol-compliant signals can be received. Since the frequency of signals that are used by gliders and other small aircraft is 868 MHz, it is necessary for the receiver to operate at this frequency.<\/p><p>In practice, the crystal used in low-cost SDR devices may have some inaccuracy, which means that signals may be received slightly at the wrong frequency. To correct this inaccuracy, the receiver must be measured and tuned. This indicates the step where you use the <strong>gsm_scan <\/strong> tool to measure the frequency correction of the crystal in the receiver and adjust its settings to get the most accurate reception of signals.<\/p><h4>Actions<\/h4><ul><li>Connect the SDR receiver to the Raspberry Pi,<\/li><li>Connect the antenna to the SDR receiver;<\/li><li>Execute the following command:<ul><li>If you are in North America, add -gsm-850 to the gsm_scan command.<\/li><li>If you have more than one SDR receiver connected to your device, specify which device you want to use by adding \u2013device NUMBER to the gsm_scan command.<\/li><\/ul><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-04a9899 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"04a9899\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-04a9899\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>cd rtlsdr-ogn\n.\/gsm_scan --ppm 50 --gain 20<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_04a9899 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_04a9899();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_04a9899 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3463ad5 elementor-widget elementor-widget-text-editor\" data-id=\"3463ad5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h4>Recommendations<\/h4><ul><li>The tool should receive GSM channels and measure frequency equalization.<\/li><li>Choose a frequency with a strong GSM channel, ideally with one or two adjacent channels.<\/li><li>Adjust the gain (\u2013gain) and crystal correction (\u2013ppm) to best receive as many channels as possible with correct correction.<ul><li>Avoid too much amplification, as GSM signals are strong.<\/li><\/ul><\/li><li>Standard silver dongles from rtl-sdr.com need a small crystal correction, usually close to 0 ppm.<\/li><li>The scan results are displayed on the terminal screen and include information about:<ul><li>The frequency range that was scanned.<\/li><li>Sampling frequencies.<\/li><li>SDR device information, such as reception frequency and sampling rate.<\/li><li>Receiver gain levels.<\/li><li>Crystal frequency correction (ppm) for individual frequencies.<\/li><li>Information about the receiver crystal\u2019s frequency correction and any crystal oscillations during heating.<\/li><\/ul><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-38c1f47 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"38c1f47\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-38c1f47\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-php line-numbers\"data-previewers=\"\"><code>Frequency = 920.000MHz..960.200MHz 2.000MHz step, 20 scans\nSampling rate    =    2000000Hz =    2.000MHz\n0.250sec per scan\nFFT: 1024 bins, 1953.1Hz\/bin, 0.256ms\/slide\nFound Fitipower FC0012 tuner\nExact sample rate is: 2000000.052982 Hz\nRTLSDR::Open(2,940100000,2000000) => Generic RTL2832U OEM,  940.100 MHz, 2.000 Msps\nRTLSDR::Gain[5] =  -9.9  -4.0  +7.1 +17.9 +19.2 [dB]\nOpen(2, 940100000, 2000000) OK\nTuner crystal correction set to 0 ppm\nTuner gain set to 25.0 dB (device reports 19.2 dB)\n\n920.600MHz:  +40.9dB: +70.77 +70.72 +70.68 +70.68 [ppm]\n921.200MHz:  +55.6dB: +11.08 +11.10 +11.06 +11.12 +11.13 +11.12 [ppm]\n923.600MHz:  +33.7dB: +11.10 +10.90 +11.14 [ppm]\n925.400MHz:  +48.0dB: +11.09 +11.12 +11.20 +11.15 +11.12 [ppm]\n925.600MHz:  +53.3dB: +11.14 +11.12 +11.16 +11.10 +11.19 [ppm]\n929.800MHz:  +41.4dB: +10.95 +10.88 +10.93 +11.09 +11.22 [ppm]\n930.000MHz:  +42.3dB: +11.15 +11.00 +10.89 +10.80 [ppm]\n936.400MHz:  +54.0dB: +10.76 +10.74 +10.78 +10.74 +10.74 +10.78 [ppm]\n937.200MHz:  +40.4dB: +10.70 +10.76 +10.66 +10.79 +11.36 +10.63 [ppm]\n938.800MHz:  +48.2dB: +10.97 +11.01 +11.05 +11.06 +11.00 [ppm]\n939.200MHz:  +51.2dB: +11.02 +11.07 +10.99 +11.07 +11.03 [ppm]\n939.400MHz:  +45.5dB: +10.94 +11.04 +11.11 +11.10 +11.13 +11.03 [ppm]\n941.400MHz:  +47.6dB: +10.82 +11.04 +10.96 +10.86 +10.81 [ppm]\n941.800MHz:  +48.9dB: +10.90 +10.80 +10.91 +10.90 +10.89 +10.90 [ppm]\n[FC0012] no valid PLL combination found for 949106250 Hz!\n[FC0012] no valid PLL combination found for 951103125 Hz!\n[FC0012] no valid PLL combination found for 953100000 Hz!\n[FC0012] no valid PLL combination found for 955096875 Hz!\n[FC0012] no valid PLL combination found for 957093750 Hz!\n[FC0012] no valid PLL combination found for 959090625 Hz!\nReceiver Xtal correction = 0+11.004 = +11.004 (0.115) ppm [55]\nNote: when the receiver warms up the Xtal may drift 5-10ppm<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_38c1f47 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_38c1f47();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_38c1f47 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-16da636 elementor-widget elementor-widget-text-editor\" data-id=\"16da636\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul><li>Based on the measurement, we came up with 11 ppm as a value we can use for further configuration.<\/li><\/ul><h3>Height conversion file<\/h3><p>The file WW15MGH.DAC is a file used to convert the height above the ellipsoid to the height above the geoid, that is, the Mean Sea Level (MSL).<\/p><p>The height above the ellipsoid is the vertical distance from a point on the Earth\u2019s surface to a reference ellipsoid, which is an ideal model of the Earth\u2019s shape. In turn, the height above the geoid is the vertical distance from a point on the Earth\u2019s surface to the geoid, which is the reference model of the Earth\u2019s gravitational potential field. The height above the geoid is more useful in practice because it refers to the actual height above sea level.<\/p><p>The file WW15MGH.DAC contains geoid data, which is used to convert the height above the ellipsoid to height above the geoid. With this file, it is possible to obtain more accurate height measurements, which are useful in various applications such as aerial navigation, surveying, geophysics and other fields where accurate height measurements are important.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b0d829b elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"b0d829b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-b0d829b\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>cd rtlsdr-ogn\nsource getEGM.sh<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_b0d829b = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_b0d829b();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_b0d829b );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0194b86 elementor-widget elementor-widget-text-editor\" data-id=\"0194b86\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Configuration file<\/h3><ul><li>Located in the rtlsdr-ogn directory, rename the file named Template.conf so that the name matches the location of your receiver (e.g. EPWA.conf).<\/li><li>If you are not in the rtlsdr-ogn directory, go to it first.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-31e890d elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"31e890d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-31e890d\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>cd rtlsdr-ogn\ncp Template.conf EPWA.conf<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_31e890d = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_31e890d();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_31e890d );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-474c14a elementor-widget elementor-widget-text-editor\" data-id=\"474c14a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>Then edit the file to configure the receiver, entering the crystal correction, GSM frequency for calibration, geographic location and APRS name.<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-add55e5 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"add55e5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-add55e5\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>nano EPWA.conf<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_add55e5 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_add55e5();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_add55e5 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fffb13e elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"fffb13e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-fffb13e\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-php line-numbers\"data-previewers=\"\"><code>RF:\n{ \n  FreqCorr = +11;          # [ppm] big black\/blue R820T(2) sticks have 40-80ppm correction factors, measure it with gsm_scan\n                           # sticks with TCXO: silver\/orange have near zero frequency correction and you can ommit this parameter\n  SampleRate = 2.0;        # [MHz] 1.0 or 2.0MHz, a bit more CPU is needed to run 2MHz but if you want to capture PilotAware you need it\n  Device = 2;\n  DeviceSerial = 00868000;\n\n                           # You can ommit the whole GSM section for sticks with TCXO\n  GSM:                     # for frequency calibration based on GSM signals\n  { CenterFreq  = 938.4;   # [MHz] find the best GSM frequency with gsm_scan\n    Gain        =  25.0;   # [dB]  RF input gain, you normally don&#039;t need the full gain\n  } ;\n\n  OGN:\n  { CenterFreq = 868.8;    # [MHz] with 868.8MHz and 2MHz bandwidth you can capture all systems: FLARM\/OGN\/FANET\/PilotAware\n    Gain       =  20;    # [dB]  Normally use full gain, unless intermodulation occurs of you run with an LNA, then you need to find best value\n  } ;\n\n} ;\n\nDemodulator:             # this section can be ommited as the defaults are reasonable\n{ ScanMargin = 30.0;     # [kHz] frequency tolerance for reception, most signals should normally be +\/-15kHz but some are more off frequency\n  DetectSNR  = 11.0;     # [dB]  detection threshold for FLARM\/OGN\n} ;\n\nPosition:\n{ Latitude   =   +XX.XXXXX; # [deg] Antenna coordinates\n  Longitude  =    +YY.YYYYY; # [deg]\n  Altitude   =        XXX.X; # [m]   Altitude AMSL (not critical)\n} ;                        \n\nAPRS:\n{  Call = &quot;EPWA&quot;;     # APRS callsign (max. 9 characters) set you own name: airfield ID or locaiion name\n                         # Please refer to http:\/\/wiki.glidernet.org\/receiver-naming-convention\n} ;<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_fffb13e = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_fffb13e();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_fffb13e );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9ca89d2 elementor-widget elementor-widget-text-editor\" data-id=\"9ca89d2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Autostart service<\/h3><ul><li>Install the required packages by running the following commands:<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2c26e3c elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"2c26e3c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-2c26e3c\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>sudo apt-get -y install procserv telnet <\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_2c26e3c = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_2c26e3c();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_2c26e3c );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a4b3584 elementor-widget elementor-widget-text-editor\" data-id=\"a4b3584\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>Download the initialization file for the service and configure it by executing:<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f5f7613 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"f5f7613\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-f5f7613\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>sudo wget http:\/\/download.glidernet.org\/common\/service\/rtlsdr-ogn -O \/etc\/init.d\/rtlsdr-ogn\nsudo wget http:\/\/download.glidernet.org\/common\/service\/rtlsdr-ogn.conf -O \/etc\/rtlsdr-ogn.conf\nsudo chmod +x \/etc\/init.d\/rtlsdr-ogn<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_f5f7613 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_f5f7613();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_f5f7613 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4900a18 elementor-widget elementor-widget-text-editor\" data-id=\"4900a18\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>Add the service to the autostart at system startup by executing:<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ddc91c6 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"ddc91c6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-ddc91c6\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>sudo update-rc.d rtlsdr-ogn defaults<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_ddc91c6 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_ddc91c6();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_ddc91c6 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0046a33 elementor-widget elementor-widget-text-editor\" data-id=\"0046a33\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>Update the rtlsdr-ogn.conf configuration file, replacing SampleConfigurationFileNameToChange.conf with the name of your conmfiguration file and pi with your username (if it was changed later by you), by executing:<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8a96179 elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"8a96179\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-8a96179\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>sudo nano \/etc\/rtlsdr-ogn.conf<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_8a96179 = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_8a96179();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_8a96179 );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-07ab46f elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"07ab46f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-07ab46f\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-php line-numbers\"data-previewers=\"\"><code>#shellbox configuration file\n#Starts commands inside a &quot;box&quot; with a telnet-like server.\n#Contact the shell with: telnet <hostname> <port>\n#Syntax:\n#port  user     directory                 command       args\n50000  pi \/home\/pi\/rtlsdr-ogn    .\/ogn-rf     SampleConfigurationFileNameToChange.conf\n50001  pi \/home\/pi\/rtlsdr-ogn    .\/ogn-decode SampleConfigurationFileNameToChange.conf<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_07ab46f = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_07ab46f();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_07ab46f );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b65f8c7 elementor-widget elementor-widget-text-editor\" data-id=\"b65f8c7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>After modification, the file should look as follows:<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7a0040d elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"7a0040d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-7a0040d\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-php line-numbers copy-to-clipboard\"data-previewers=\"\"><code>#shellbox configuration file\n#Starts commands inside a &quot;box&quot; with a telnet-like server.\n#Contact the shell with: telnet <hostname> <port>\n#Syntax:\n#port  user     directory                 command       args\n50000  pi \/home\/pi\/rtlsdr-ogn    .\/ogn-rf     EPWA.conf\n50001  pi \/home\/pi\/rtlsdr-ogn    .\/ogn-decode EPWA.conf<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_7a0040d = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_7a0040d();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_7a0040d );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6d848da elementor-widget elementor-widget-text-editor\" data-id=\"6d848da\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Step 5 \u2013 Launch the OGN service<\/h2><ul><li>Start the service by performing:<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9de990d elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"9de990d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-9de990d\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>sudo service rtlsdr-ogn start<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_9de990d = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_9de990d();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_9de990d );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-224ee6f elementor-widget elementor-widget-text-editor\" data-id=\"224ee6f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Maintenance activities<\/h3><p>These commands allow you to access your receiver\u2019s console in real time, which can be useful for monitoring receiver performance and analyzing data during operation.<\/p><ul><li>To view information about the decoding process, do:<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7398eae elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"7398eae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-7398eae\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>telnet localhost 50000<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_7398eae = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_7398eae();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_7398eae );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ab167f6 elementor-widget elementor-widget-text-editor\" data-id=\"ab167f6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul>\n<li>To view information on APRS data traffic, perform:<\/li>\n<\/ul>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3256c1a elementor-widget elementor-widget-mdp-coder-elementor\" data-id=\"3256c1a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"mdp-coder-elementor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <!-- Start Coder for Elementor WordPress Plugin -->\n        <div\n            id=\"mdp-coder-3256c1a\"\n            class=\"mdp-coder-elementor-box\"\n            data-theme=\"mdp-theme-material-dark\"\n            data-dark-theme=\"mdp-theme-material-dark\"\n        >\n            \n                <pre class=\"language-bash line-numbers copy-to-clipboard\"data-previewers=\"\"><code>telnet localhost 50001<\/code><\/pre>\n                    <\/div>\n                <script>\n            \"use strict\";\n\n            \/** Handler when the DOM is fully loaded. *\/\n            let callback_3256c1a = function() {\n\n                \/** Set theme for coder widget. *\/\n                function setTheme() {\n\n                    \/** Foreach Code Widget. *\/\n                    let coderBoxes = document.querySelectorAll( '.mdp-coder-elementor-box' );\n\n                    for ( let coderBox of coderBoxes ) {\n\n                        let lightTheme = coderBox.dataset.theme;\n                        let darkTheme = coderBox.dataset.darkTheme;\n\n                        coderBox.className = '';\n                        if ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + darkTheme;\n\n                        } else {\n\n                            coderBox.className = 'mdp-coder-elementor-box ' + lightTheme;\n\n                        }\n\n                    }\n\n                }\n                setTheme();\n\n\n                \/** Watch for changes color-scheme. *\/\n                window.matchMedia(\"(prefers-color-scheme: dark)\").addListener( function() {\n                    setTheme();\n                } );\n\n                \n                if ( typeof Prism !== 'undefined' ) {\n\n                    Prism.plugins.autoloader.languages_path = 'https:\/\/chochol.io\/wp-content\/plugins\/coder-elementor\/js\/prism\/components\/';\n                    Prism.highlightAll();\n                    Prism.fileHighlight();\n\n                }\n\n                \n            };\n\n            if (\n                document.readyState === \"complete\" ||\n                ( document.readyState !== \"loading\" && !document.documentElement.doScroll )\n            ) {\n                callback_3256c1a();\n            } else {\n                document.addEventListener( \"DOMContentLoaded\", callback_3256c1a );\n            }\n\n        <\/script>\n                <!-- End Coder for Elementor WordPress Plugin -->\n\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2efe527 elementor-widget elementor-widget-text-editor\" data-id=\"2efe527\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Step 6 \u2013 Add your receiver information to the Glidernet Wiki<\/h2><p>To complete the setup, don\u2019t forget to add information about your new receiver to the <a href=\"http:\/\/wiki.glidernet.org\/list-of-receivers\" target=\"_blank\" rel=\"noopener\">Glidernet Wiki<\/a>. By entering information about your receiver, you help the OGN community identify and monitor new receivers and create a consistent source of information for network users. Go to the Glidernet Wiki and add information about your receiver, including its location, configuration, specifications and other relevant details. This will allow other users to use information about your receiver to improve the OGN network.<\/p><p>If you have additional questions about the setup, <strong>go ahead and leave a comment under this article<\/strong> or <a href=\"https:\/\/chochol.io\/en\/contact\/\">contact me directly<\/a>. I will be happy to answer any concerns and help solve any problems. Your questions can help improve this guide for other users.<\/p><h2>Additional sources and information<\/h2><p>Thank you for reaching this point. For further exploration and more information, I recommend checking out the links below. They are valuable sources that were used in the development of this guide.<\/p><ul><li>OGN Glidernet.org, Map. <a href=\"https:\/\/live.glidernet.org\/\" target=\"_blank\" rel=\"noopener\">https:\/\/live.glidernet.org\/<\/a><\/li><li>OGN Glidernet.org, Receiver Installation. <a href=\"http:\/\/wiki.glidernet.org\/ogn-receiver-installation\" target=\"_blank\" rel=\"noopener\">http:\/\/wiki.glidernet.org\/ogn-receiver-installation<\/a><\/li><li>Wikipedia, Open Glider Network. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Open_Glider_Network\" target=\"_blank\" rel=\"noopener\">https:\/\/en.wikipedia.org\/wiki\/Open_Glider_Network<\/a><\/li><li>OGN Project. <a href=\"https:\/\/www.glidernet.org\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.glidernet.org\/<\/a><\/li><li>SP7PKI, OGN Network. <a href=\"http:\/\/sp7pki.iq24.pl\/default.asp?grupa=3538&temat=436368\" target=\"_blank\" rel=\"noopener\">http:\/\/sp7pki.iq24.pl\/default.asp?grupa=3538&temat=436368<\/a><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ee4488b e-flex e-con-boxed e-con e-parent\" data-id=\"ee4488b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-20844 elementor-grid-3 elementor-grid-tablet-2 elementor-grid-mobile-1 elementor-posts--thumbnail-top elementor-card-shadow-yes elementor-posts__hover-gradient elementor-widget elementor-widget-global elementor-global-20844 elementor-widget-posts\" data-id=\"20844\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;cards_row_gap&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;cards_columns&quot;:&quot;3&quot;,&quot;cards_columns_tablet&quot;:&quot;2&quot;,&quot;cards_columns_mobile&quot;:&quot;1&quot;,&quot;cards_row_gap_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;cards_row_gap_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"posts.cards\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-posts-container elementor-posts elementor-posts--skin-cards elementor-grid\" role=\"list\">\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-1145 post type-post status-publish format-standard has-post-thumbnail hentry category-software tag-authentik tag-synology tag-traccar\" role=\"listitem\">\n\t\t\t<div class=\"elementor-post__card\">\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/chochol.io\/en\/software\/authentik-single-sign-on-configuration-for-traccar\/\" tabindex=\"-1\" target=\"_blank\"><div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"157\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Traccar-Docker-na-Synology-2-300x157.png\" class=\"attachment-medium size-medium wp-image-1018\" alt=\"Traccar web interface mockup with database icon, network server graphic, and radio signal symbol\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Traccar-Docker-na-Synology-2-300x157.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Traccar-Docker-na-Synology-2-1024x535.png 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Traccar-Docker-na-Synology-2-768x401.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Traccar-Docker-na-Synology-2-1536x802.png 1536w, https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Traccar-Docker-na-Synology-2.png 1651w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div><\/a>\n\t\t\t\t<div class=\"elementor-post__badge\">Software<\/div>\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<span class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/chochol.io\/en\/software\/authentik-single-sign-on-configuration-for-traccar\/\">\n\t\t\t\tAuthentik: Single Sign-On Configuration for Traccar\t\t\t<\/a>\n\t\t<\/span>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>Take benefit of Traccar\u2019s single sign-on. A simple way to manage users. See how easy it is to control access.<\/p>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-1125 post type-post status-publish format-standard has-post-thumbnail hentry category-software tag-docker tag-docker-compose tag-nginx-proxy-manager tag-portainer tag-traccar\" role=\"listitem\">\n\t\t\t<div class=\"elementor-post__card\">\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/chochol.io\/en\/software\/traccar-docker-installation-guide-on-synology\/\" tabindex=\"-1\" target=\"_blank\"><div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"157\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Traccar-Docker-na-Synology-300x157.png\" class=\"attachment-medium size-medium wp-image-990\" alt=\"Synology map interface with network transfer arrow, file icon, and sound cone symbol on a blurred phone screen\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Traccar-Docker-na-Synology-300x157.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Traccar-Docker-na-Synology-1024x535.png 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Traccar-Docker-na-Synology-768x401.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Traccar-Docker-na-Synology-1536x802.png 1536w, https:\/\/chochol.io\/wp-content\/uploads\/2023\/12\/Traccar-Docker-na-Synology.png 1651w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div><\/a>\n\t\t\t\t<div class=\"elementor-post__badge\">Software<\/div>\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<span class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/chochol.io\/en\/software\/traccar-docker-installation-guide-on-synology\/\">\n\t\t\t\tTraccar: Docker installation guide on Synology\t\t\t<\/a>\n\t\t<\/span>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>Step-by-step guide: Installing Traccar on Synology using Docker. Effective vehicle tracking on your own server.<\/p>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-21043 post type-post status-publish format-standard has-post-thumbnail hentry category-hardware tag-diy tag-iot tag-raspberry-pi\" role=\"listitem\">\n\t\t\t<div class=\"elementor-post__card\">\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/chochol.io\/en\/hardware\/ogn-receiver-installation-and-configuration-on-raspberry-pi\/\" tabindex=\"-1\" target=\"_blank\"><div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"169\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Okladka-artykulow-Chochol.io_-4-300x169.png\" class=\"attachment-medium size-medium wp-image-21001\" alt=\"Glidernet.org map interface with RG logo and GN marker icons over a blurred geographic map and legend panel\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Okladka-artykulow-Chochol.io_-4-300x169.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Okladka-artykulow-Chochol.io_-4-1024x576.png 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Okladka-artykulow-Chochol.io_-4-768x432.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Okladka-artykulow-Chochol.io_-4-1536x864.png 1536w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/05\/Okladka-artykulow-Chochol.io_-4.png 1920w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div><\/a>\n\t\t\t\t<div class=\"elementor-post__badge\">Hardware<\/div>\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<span class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/chochol.io\/en\/hardware\/ogn-receiver-installation-and-configuration-on-raspberry-pi\/\">\n\t\t\t\tOGN: Receiver installation and configuration on Raspberry Pi\t\t\t<\/a>\n\t\t<\/span>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>A simple guide to installing and configuring an OGN receiver on a Raspberry Pi for air traffic monitoring. Watch air traffic.<\/p>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-20563 post type-post status-publish format-standard has-post-thumbnail hentry category-hardware tag-ads-b tag-raspberry-pi\" role=\"listitem\">\n\t\t\t<div class=\"elementor-post__card\">\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/chochol.io\/en\/hardware\/how-to-change-rtl-sdr-dongle-serial-number-on-linux\/\" tabindex=\"-1\" target=\"_blank\"><div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"169\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-4-300x169.png\" class=\"attachment-medium size-medium wp-image-20537\" alt=\"RTL-SDR V4 USB radio receiver module with SMA antenna connector over blurred SDR UI screenshot\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-4-300x169.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-4-1024x576.png 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-4-768x432.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-4-1536x864.png 1536w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/04\/Okladka-artykulow-Chochol.io_-4.png 1920w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div><\/a>\n\t\t\t\t<div class=\"elementor-post__badge\">Hardware<\/div>\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<span class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/chochol.io\/en\/hardware\/how-to-change-rtl-sdr-dongle-serial-number-on-linux\/\">\n\t\t\t\tHow to change RTL-SDR dongle serial number on Linux\t\t\t<\/a>\n\t\t<\/span>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>Discover simple instruction for changing the serial number of an RTL-SDR dongle on Linux. A step-by-step guide through the modification process.<\/p>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-1432 post type-post status-publish format-standard has-post-thumbnail hentry category-computer-networking tag-docker tag-docker-compose tag-portainer tag-synology\" role=\"listitem\">\n\t\t\t<div class=\"elementor-post__card\">\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/chochol.io\/en\/computer-networking\/unifi-controller-in-docker-migrating-to-unifi-network-application\/\" tabindex=\"-1\" target=\"_blank\"><div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"169\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io_-2-300x169.png\" class=\"attachment-medium size-medium wp-image-1367\" alt=\"Blue square with white U-shaped symbol and small right cutout over blurred audio-editing software UI\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io_-2-300x169.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io_-2-1024x576.png 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io_-2-768x432.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io_-2-1536x864.png 1536w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io_-2.png 1920w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div><\/a>\n\t\t\t\t<div class=\"elementor-post__badge\">Computer networking<\/div>\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<span class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/chochol.io\/en\/computer-networking\/unifi-controller-in-docker-migrating-to-unifi-network-application\/\">\n\t\t\t\tUniFi Controller in Docker: Migrating to UniFi Network Application\t\t\t<\/a>\n\t\t<\/span>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>UniFi Controller: Discover step-by-step how to successfully migrate to Network Application using Docker Compose.<\/p>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/article>\n\t\t\t\t<article class=\"elementor-post elementor-grid-item post-1672 post type-post status-publish format-standard has-post-thumbnail hentry category-computer-networking tag-mikrotik\" role=\"listitem\">\n\t\t\t<div class=\"elementor-post__card\">\n\t\t\t\t<a class=\"elementor-post__thumbnail__link\" href=\"https:\/\/chochol.io\/en\/computer-networking\/how-to-configure-a-leox-gpon-ont-module-on-a-mikrotik-router\/\" tabindex=\"-1\" target=\"_blank\"><div class=\"elementor-post__thumbnail\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"169\" src=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-3-300x169.png\" class=\"attachment-medium size-medium wp-image-1626\" alt=\"Network router with green and yellow Ethernet cables, server rack ports, and wireless icon overlay\" srcset=\"https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-3-300x169.png 300w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-3-1024x576.png 1024w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-3-768x432.png 768w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-3-1536x864.png 1536w, https:\/\/chochol.io\/wp-content\/uploads\/2024\/01\/Okladka-artykulow-Chochol.io-3.png 1920w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div><\/a>\n\t\t\t\t<div class=\"elementor-post__badge\">Computer networking<\/div>\n\t\t\t\t<div class=\"elementor-post__text\">\n\t\t\t\t<span class=\"elementor-post__title\">\n\t\t\t<a href=\"https:\/\/chochol.io\/en\/computer-networking\/how-to-configure-a-leox-gpon-ont-module-on-a-mikrotik-router\/\">\n\t\t\t\tHow to configure a Leox GPON ONT module on a Mikrotik router\t\t\t<\/a>\n\t\t<\/span>\n\t\t\t\t<div class=\"elementor-post__excerpt\">\n\t\t\t<p>Step-by-step guide on how to configure Leox LXT-010S-H GPON ONT module on Mikrotik RB5009 router, instead of ONT module from Orange.<\/p>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/article>\n\t\t\t\t<\/div>\n\t\t\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>A simple guide to installing and configuring an OGN receiver on a Raspberry Pi for air traffic monitoring. Watch air traffic.<\/p>\n","protected":false},"author":1,"featured_media":21001,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[94],"tags":[136,141,117],"class_list":["post-21043","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hardware","tag-diy","tag-iot","tag-raspberry-pi"],"_links":{"self":[{"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/posts\/21043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/comments?post=21043"}],"version-history":[{"count":0,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/posts\/21043\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/media\/21001"}],"wp:attachment":[{"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/media?parent=21043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/categories?post=21043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chochol.io\/en\/wp-json\/wp\/v2\/tags?post=21043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}