$$\   $$\  $$$$$$\ $$$$$$$$\ $$$$$$$$\  $$$$$$\  
$$$\  $$ |$$  __$$\\__$$  __|$$  _____|$$  __$$\ 
$$$$\ $$ |$$ /  $$ |  $$ |   $$ |      $$ /  \__|
$$ $$\$$ |$$ |  $$ |  $$ |   $$$$$\    \$$$$$$\  
$$ \$$$$ |$$ |  $$ |  $$ |   $$  __|    \____$$\ 
$$ |\$$$ |$$ |  $$ |  $$ |   $$ |      $$\   $$ |
$$ | \$$ | $$$$$$  |  $$ |   $$$$$$$$\ \$$$$$$  |
\__|  \__| \______/   \__|   \________| \______/ 
        
------------------------------------------------------------
HOME | TOR | GITHUB | NOTES | ABOUT | CONTACT | LOGIN
------------------------------------------------------------

    +--------------------+-------------+---------------------+------+---------+    
    | TOUCHTUNES_JUKEBOX | KESTREL_BLE | CHEMION_LED_GLASSES | MATH | IRIDIUM |    
+-+--------------------+-------------+--------+------------+----+-+---------+-+
| DUMPING_NRF51822_FIRMWARE | YAESU_VX-7R_RPi | UNIPAGER POCSAG | MMDVM_GM300 |
+---------------------------+-----------------+-----------------+-------------+
            
            
███╗   ███╗ ██████╗ ████████╗ ██████╗      ██████╗ ███╗   ███╗██████╗  ██████╗  ██████╗      ██╗  ██████╗ ███╗   ███╗██████╗ ██╗  ██╗ ██████╗ 
████╗ ████║██╔═══██╗╚══██╔══╝██╔═══██╗    ██╔════╝ ████╗ ████║╚════██╗██╔═████╗██╔═████╗    ██╔╝ ██╔════╝ ████╗ ████║╚════██╗██║  ██║██╔═████╗
██╔████╔██║██║   ██║   ██║   ██║   ██║    ██║  ███╗██╔████╔██║ █████╔╝██║██╔██║██║██╔██║   ██╔╝  ██║  ███╗██╔████╔██║ █████╔╝███████║██║██╔██║
██║╚██╔╝██║██║   ██║   ██║   ██║   ██║    ██║   ██║██║╚██╔╝██║ ╚═══██╗████╔╝██║████╔╝██║  ██╔╝   ██║   ██║██║╚██╔╝██║ ╚═══██╗╚════██║████╔╝██║
██║ ╚═╝ ██║╚██████╔╝   ██║   ╚██████╔╝    ╚██████╔╝██║ ╚═╝ ██║██████╔╝╚██████╔╝╚██████╔╝ ██╔╝    ╚██████╔╝██║ ╚═╝ ██║██████╔╝     ██║╚██████╔╝
╚═╝     ╚═╝ ╚═════╝    ╚═╝    ╚═════╝      ╚═════╝ ╚═╝     ╚═╝╚═════╝  ╚═════╝  ╚═════╝  ╚═╝      ╚═════╝ ╚═╝     ╚═╝╚═════╝      ╚═╝ ╚═════╝ 
                                                                                                                                              
            ██████╗  ██████╗  ██████╗███████╗ █████╗  ██████╗     ██╗   ██╗███╗   ██╗██╗██████╗  █████╗  ██████╗ ███████╗██████╗              
            ██╔══██╗██╔═══██╗██╔════╝██╔════╝██╔══██╗██╔════╝     ██║   ██║████╗  ██║██║██╔══██╗██╔══██╗██╔════╝ ██╔════╝██╔══██╗             
            ██████╔╝██║   ██║██║     ███████╗███████║██║  ███╗    ██║   ██║██╔██╗ ██║██║██████╔╝███████║██║  ███╗█████╗  ██████╔╝             
            ██╔═══╝ ██║   ██║██║     ╚════██║██╔══██║██║   ██║    ██║   ██║██║╚██╗██║██║██╔═══╝ ██╔══██║██║   ██║██╔══╝  ██╔══██╗             
            ██║     ╚██████╔╝╚██████╗███████║██║  ██║╚██████╔╝    ╚██████╔╝██║ ╚████║██║██║     ██║  ██║╚██████╔╝███████╗██║  ██║             
            ╚═╝      ╚═════╝  ╚═════╝╚══════╝╚═╝  ╚═╝ ╚═════╝      ╚═════╝ ╚═╝  ╚═══╝╚═╝╚═╝     ╚═╝  ╚═╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝             
 
                                                        
//=====< 2021-09-07T01:33:49+00:00 >===============================================\\
||                                                                                 ||
||     Was geht ab? :3                                                             ||
||                                                                                 ||
||     == INTRO ==                                                                 ||
||                                                                                 ||
||     I have a soft spot for tech that went out of style, especially tech I       ||
||     never had the privilege to use outside of work. POCSAG pagers, love them    ||
||     or hate themcan still be found used by medical and emergency responders.    ||
||     Cellphones may have made the use case of Pagers not as appealing to the     ||
||     general public however there is growing popularity with POCSAG Pagers in    ||
||     the Ham community.                                                          ||
||                                                                                 ||
||     DAPNET (Decentralized Amateur Paging Network) is a network operated by      ||
||     amateur radio nerds out of Germany. It consists of a decentralized server   ||
||     cluster feeding paging data to distributed transmitters (The thing we are   ||
||     building today). The most used frequency is 439.9875MHz however you can     ||
||     (legally) do this on other frequencies if you chose. It’s preferred to      ||
||     keep this all on the same frequency because it benefits other DAPNET users  ||
||     so they don’t need to reprogram their pagers when changing locations.       ||
||     HOWEVER, it’s more important to not walk on other transmitters so           ||
||     you’ll need to see what frequencies are free first before blasting other    ||
||     people off the net.                                                         ||
||                                                                                 ||
||     I first started using DAPNET with my Pi-Star (MMDVM) however being a 0.01w  ||
||     transmitter I wanted a little more range. DAPNET has transmitter controller ||
||     called UniPager which you can use with a RPi to control a 9k6 capable radio ||
||     (Moto GM300/GM340 for this write up). This application ties the RPi’s GPIO  ||
||     with your target radio’s PTT and you can pipe the data to the radio using   ||
||     the RPi’s audio jack. Below are the guides I used to complete this build    ||
||     however there where some differences when I tried this with the Motorola    ||
||     GM300.                                                                      ||
||                                                                                 ||
||     >>> Transmitter with 9600 Baud Data Transceiver                             ||
||     >>> UniPager Installation                                                   ||
||                                                                                 ||
||     You’ll need to register with DAPNET before you can use their service which  ||
||     requires a amateur license. To register you’ll have to submit a ticket via  ||
||     their support page. More information about how to register can be found on  ||
||     their Wiki page which can be found in the link below.                       ||
||                                                                                 ||
||     >>> DAPNET Wiki                                                             ||
||                                                                                 ||
||                                                                                 ||
||     == UNIPAGER ==                                                              ||
||                                                                                 ||
||     The link above has a more complete guide on installing UniPager however     ||
||     here’s what I did to install it on my Rpi.                                  ||
||                                                                                 ||
||   █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█   ||
||   █ $ sudo nano /etc/apt/sources.list.d/unipager.list                       █░░ ||
||   █                                                                         █░░ ||
||   █        // Add these to unipager.list                                    █░░ ||
||   █        deb http://db0sda.ampr.org/debian unipager main                  █░░ ||
||   █        deb-src http://db0sda.ampr.org/debian unipager main              █░░ ||
||   █                                                                         █░░ ||
||   █ $ wget -O - http://db0sda.ampr.org/debian/rwth-afu.key |                █░░ ||
||   █   sudo apt-key add -                                                    █░░ ||
||   █                                                                         █░░ ||
||   █ $ sudo apt-get update                                                   █░░ ||
||   █                                                                         █░░ ||
||   █ $ sudo apt-get install unipager                                         █░░ ||
||   █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█░░ ||
||     ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ||
||                                                                                 ||
||     After installing UniPager you’ll need to configure the RPi’s audio level    ||
||     so it’s at 100%. Use can use alsamixer via the terminal to accomplish       ||
||     this.                                                                       ||
||                                                                                 ||
||   █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█   ||
||   █ $ alsamixer                // Increase Audio Out to 100%, hit Esc key   █░░ ||
||   █                            // to exit                                   █░░ ||
||   █                                                                         █░░ ||
||   █ $ sudo alsactl store       // Save Audio Settings                       █░░ ||
||   █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█░░ ||
||     ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ||
||                                                                                 ||
||     After installing UniPager it should automatically be running in the         ||
||     background as a service. It comes with a Web UI (RPi’s port 8073) which     ||
||     you can use to configure your transmitter. Open up your favorite web        ||
||     browser and enter in the RPI’s IP address and port 8073                     ||
||     (Ex. 192.168.1.20:8073). Below is the settings I used for the Motorola      ||
||     GM300/GM340                                                                 ||
||                                                                                 ||
||     -> Configuration                                                            ||
||          * Transmitter: Audio                                                   ||
||          * Master IP: dapnet.afu.rwth-aachen.de                                 ||
||          * Port: 43434                                                          ||
||          * Callsign: (Your Callsign)                                            ||
||          * Auth Key: (Your Auth Key)                                            ||
||     -> Audio Config                                                             ||
||          * ALSA device: default                                                 ||
||          * Audio Level: 79                                                      ||
||          * Inverted: (GM300 => Unselected) (GM340 => Selected)                  ||
||          * TX Delay (ms): 5                                                     ||
||     -> PTT Config                                                               ||
||          * PTT Method: GPIO                                                     ||
||          * GPIO Pin: 0                                                          ||
||          * Inverted: (Unselected)                                               ||
||                                                                                 ||
||     IMG: UniPager Web UI Config                                                 ||
||                                                                                 ||
||     NOTE: Settings for the GM340 are the same except Inverted is selected.      ||
||                                                                                 ||
||                                                                                 ||
||     == MOTOROLA GM300 CONFIG ==                                                 ||
||                                                                                 ||
||     I’m not going to lie, this next step is going to be a huge pain in the ass. ||
||     Yes, the GM300 is a solid sub $100 25w UHF mobile radio however it was      ||
||     built during the 90’s and the programming software requires MS-DOS.         ||
||     To make matters more complicated the serial timing used to send and         ||
||     receive data from radio to computer is CPU based. In short, if your         ||
||     computer is too fast you’re out of luck and you’ll be out of sync with the  ||
||     radio. The good news is that you can use DOSBox to run the software and     ||
||     slow down the CPU’s cycle rate to make it work. Below is the guide I used   ||
||     to make this work. Just a heads up it’s still finicky and may not be        ||
||     consistent.                                                                 ||
||                                                                                 ||
||     >>> Motorola Radius GM300 Programming                                       ||
||                                                                                 ||
||     Not all USB to serial cables are built the same and you may have limited    ||
||     success with what you have. I had to build my own programming cable using   ||
||     a FT232 and Cat5 Cable. Below is the schematic I used to accomplish this.   ||
||                                                                                 ||
||           FT232 -> Motorola GM300/GM340 (RJ-45)                                 ||
||       █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█       ||
||       █                                                                 █░░     ||
||       █           FT232                              RJ45               █░░     ||
||       █           +---+  1N4148                   1 +-----+             █░░     ||
||       █           |TXD|----|<---+       +-------- 2 |     |             █░░     ||
||       █           +---+         |       |         3 |     |---+         █░░     ||
||       █           +---+         |       |         4 |         |         █░░     ||
||       █           |RXD|---------+-------+   +---- 5 |         |         █░░     ||
||       █           +---+                     |     6 |     *---*         █░░     ||
||       █           +---+                     |     7 |     |             █░░     ||
||       █           |GND|---------------------+     8 +-----*             █░░     ||
||       █           +---+                                                 █░░     ||
||       █                                                                 █░░     ||
||       █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█░░     ||
||        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░     ||
||                                                                                 ||
||     Note: This cable will also work with the GM340                              ||
||                                                                                 ||
||     Nothing special is needed when you program your GM300, just create an       ||
||     analog channel for 25KHz FM at the desired frequency. The link Below is     ||
||     a copy of the programming software I used. And again, this step is kinda    ||
||     a pain but with a little trial and error you should be fine. :3             ||
||                                                                                 ||
||     Download: Motorola Radius GM300 V5                                          ||
||                                                                                 ||
||                                                                                 ||
||     == MOTOROLA GM340 CONFIG ==                                                 ||
||                                                                                 ||
||     The CPS for the GM340 is not as tricky as the one for the GM300 however     ||
||     there are some gotchas. You can get this to work on a Windows 10 Box if     ||
||     you run this application under Windows 7 compatibility mode.                ||
||                                                                                 ||
||     If you get the error, “Can not create unknown radio component” you may      ||
||     need to re install commsbepx64_setup.exe. This can be found in the CPS      ||
||     system folder. Be sure to restart your computer after the installation      ||
||     is complete.                                                                ||
||                                                                                 ||
||     Be sure your codeplug is configured as follows.                             ||
||                                                                                 ||
||     -> Per Channel-1 of X                                                       ||
||          * TX Frequency (MHz): 439.98750                                        ||
||          * ... Refrence Frequency: Automatic                                    ||
||          * RX Frequency (MHz): 439.98750                                        ||
||          * ... Refrence Frequency: Automatic                                    ||
||          * Channel Spacing: 12.5KHz                                             ||
||          * Power Level: High                                                    ||
||     -> Per Radio GP I/O Lines                                                   ||
||          * Pin # 3: Voice & Data PTT, Active Level Low, Debounce enabled        ||
||     -> Per Radio Misscellaneous                                                 ||
||          * RxAudio (Accessory Connector): Flat Unsquelched                      ||
||                                                                                 ||
||     Download: Motorola R03.11.16                                                ||
||                                                                                 ||
||                                                                                 ||
||     == MOTOROLA GM300 PINOUT ==                                                 ||
||                                                                                 ||
||     Bellow is the pinout for the Motorola GM300 which is found in the back of   ||
||     the radio. The pins needed for this application will be the number 3 PTT,   ||
||     5 Flat Audio TX, and 7 Ground.                                              ||
||                                                                                 ||
||                                    RADIO TOP                                    ||
||                        +---+---+---+---+---+---+---+---+                        ||
||                        | 2 | 4 | 6 | 8 | 10| 12| 14| 16|                        ||
||                        +---+---+---+---+---+---+---+---+                        ||
||                        | 1 | 3 | 5 | 7 | 9 | 11| 13| 15|                        ||
||                        +---+---+---+---+---+---+---+---+                        ||
||                                   RADIO BOTTOM                                  ||
||                                 AS SEEN FROM BACK                               ||
||                                                                                 ||
||                     1 EXT SPKR             9 EMERGENCY ALARM                    ||
||                     2 MIC AUDIO IN        10 IGNITION CONTROL                   ||
||                 --> 3 PTT                 11 RX AUDIO OUT                       ||
||                     4 EXTERNAL ALARM      12 PROG I/O 12                        ||
||                 --> 5 FLAT TX AUDIO       13 SW A+ SENSE                        ||
||                     6 PROG I/P 6          14 PROG I/O 14                        ||
||                 --> 7 GROUND              15 INT SPKR +                         ||
||                     8 COS (PROG)          16 EXT SPKR +                         ||
||                                                                                 ||
||                                                                                 ||
||     == MOTOROLA GM340 PINOUT ==                                                 ||
||                                                                                 ||
||     The Motorola GM340 has a simuler pinout as the GM300. The numbering is      ||
||     mostly the same except two columns (one on each side) have been added.      ||
||                                                                                 ||
||                                    RADIO TOP                                    ||
||                    +---+---+---+---+---+---+---+---+---+---+                    ||
||                    | 20| 2 | 4 | 6 | 8 | 10| 12| 14| 16| 18|                    ||
||                    +---+---+---+---+---+---+---+---+---+---+                    ||
||                    | 19| 1 | 3 | 5 | 7 | 9 | 11| 13| 15| 17|                    ||
||                    +---+---+---+---+---+---+---+---+---+---+                    ||
||                            ╚═══════════════════════╝                            ||
||                                   RADIO BOTTOM                                  ||
||                                 AS SEEN FROM BACK                               ||
||                                                                                 ||
||                     1 EXT SPKR            11 RX AUDIO OUT                       ||
||                     2 MIC AUDIO IN        12 PROG I/O 12                        ||
||                 --> 3 PTT                 13 SW A+ SENSE                        ||
||                     4 EXTERNAL ALARM      14 PROG I/O 14                        ||
||                 --> 5 FLAT TX AUDIO       15 INT SPKR +                         ||
||                     6 PROG I/P 6          16 EXT SPKR +                         ||
||                 --> 7 GROUND              17 BUS +                              ||
||                     8 COS (PROG)          18 BOOT_CNTRL                         ||
||                     9 EMERGENCY ALARM     19 N.C.                               ||
||                     10 IGNITION CONTROL   20 N.C.                               ||
||                                                                                 ||
||                                                                                 ||
||     == RPi TO GM300/GM340 SCHEMATIC ==                                          ||
||                                                                                 ||
||     With UniPager installed and your radio programmed it’s time to connect      ||
||     everything together! Below is the schematic I used to make this work.       ||
||     Images of this can be found below the schematic.                            ||
||                                                                                 ||
||           RPi -> Motorola GM300/GM340                                           ||
||       █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█       ||
||       █                                                                 █░░     ||
||       █                                                 +------+        █░░     ||
||       █                             +-------------------|PI GND|        █░░     ||
||       █                             |                   +------+        █░░     ||
||       █                             | NPN                               █░░     ||
||       █                             +-<|      440Ω     +----------+     █░░     ||
||       █                                |-----/\/\/\----|PI GPIO 17|     █░░     ||
||       █                             +-/|               +----------+     █░░     ||
||       █                             |                                   █░░     ||
||       █     +-----------------+     |                                   █░░     ||
||       █     |GM3X0 PTT (PIN 3)|-----+                                   █░░     ||
||       █     +-----------------+                                         █░░     ||
||       █                                                                 █░░     ||
||       █                                                                 █░░     ||
||       █     +---------------------------+    22µF    +------------+     █░░     ||
||       █     |GM3X0 FLAT TX AUDIO (PIN 5)|----+||-----|PI AUDIO OUT|     █░░     ||
||       █     +---------------------------+            +------------+     █░░     ||
||       █                                                                 █░░     ||
||       █     +-----------------+                      +------------+     █░░     ||
||       █     |GM3X0 GND (PIN 7)|----------------------|PI AUDIO GND|     █░░     ||
||       █     +-----------------+                      +------------+     █░░     ||
||       █                                                                 █░░     ||
||       █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█░░     ||
||        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░     ||
||                                                                                 ||
||                                                                                 ||
||     == NEXTION TOUCH DISPLAY ==                                                 ||
||                                                                                 ||
||     There’s also a Nextion touch display add on built for the UniPager!         ||
||                                                                                 ||
||     This is my first exposure to the Nextion display and I’m impressed          ||
||     on what they have to offer. These things work by sending and receiving      ||
||     UART messages to and from the Rpi and gives you full control of your        ||
||     transmitter.                                                                ||
||                                                                                 ||
||     Just a heads up, you’ll have to flash the display with the software         ||
||     found in the UniPagerNextion repo to make this work. These displays         ||
||     have an ARM chip built in and are capable of running independently          ||
||     from the rest of the system. Bellow is a flow graph on how messages         ||
||     are sent to and from the UniPager application and Nextion display.          ||
||                                                                                 ||
||     UniPager <-[WebSocket]-> unipagernextion.py <-[UART]-> Nextion Display      ||
||                                                                                 ||
||                                                                                 ||
||     == NEXTION HARDWARE ==                                                      ||
||                                                                                 ||
||     Bellow is the pinout needed to interface the Nextion display with the       ||
||     RPi's UART.                                                                 ||
||                                                                                 ||
||                    ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄                     ||
||                    █      NEXTION      █        RPi       █░░                   ||
||                    █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█░░                   ||
||                    █ VCC +5V (RED)    --> PIN 02 VCC +5V  █░░                   ||
||                    █ GND     (BLACK)  --> PIN 06 GND      █░░                   ||
||                    █ UART_TX (GREEN)  --> PIN 10 UART_RX  █░░                   ||
||                    █ UART_RX (YELLOW) --> PIN 08 UART_TX  █░░                   ||
||                    █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█░░                   ||
||                     ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░                   ||
||                                                                                 ||
||                                                                                 ||
||     == NEXTION SOFTWARE ==                                                      ||
||                                                                                 ||
||   █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█   ||
||   █ $ sudo apt install git python3 python3-websocket python3-serial         █░░ ||
||   █   python-websocket python-serial                                        █░░ ||
||   █                                                                         █░░ ||
||   █ $ git clone https://github.com/rwth-afu/UniPagerNextion.git             █░░ ||
||   █                                                                         █░░ ||
||   █ $ cd UniPagerNextion/src                                                █░░ ||
||   █                                                                         █░░ ||
||   █ $ sudo bash ./install.sh                                                █░░ ||
||   █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█░░ ||
||     ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ||
||                                                                                 ||
||     The config file for UniPagerNextion can be found in                         ||
||     etc/unipagernextionconfig.py. If you plan on controlling the display with   ||
||     the RPi’s UART you’ll need to update it so serialport = “/dev/ttyAMA0”.     ||
||                                                                                 ||
||   █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█   ||
||   █ $ sudo nano /etc/unipagernextionconfig.py // serialport = "/dev/ttyAMA0"█░░ ||
||   █                                           // ctl-o to save              █░░ ||
||   █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█░░ ||
||     ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ||
||                                                                                 ||
||     You’ll need to do some extra steps to configure the Rpi to make the         ||
||     display work. Bellow outlines what needs to be done.                        ||
||                                                                                 ||
||   █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█   ||
||   █ $ sudo -s  // Do the following as root                                  █░░ ||
||   █                                                                         █░░ ||
||   █ $ echo “dtoverlay=pi3-disable-bt” >> /boot/config.txt  // Disable BT    █░░ ||
||   █                                                                         █░░ ||
||   █ $ systemctl disable hciuart                                             █░░ ||
||   █                                                                         █░░ ||
||   █ $ nano /boot/cmdline.txt   // Remove “console=serial0,115200”           █░░ ||
||   █                                                                         █░░ ||
||   █ $ echo “enable_uart=1” >> /boot/config.txt  // Enable UART              █░░ ||
||   █                                                                         █░░ ||
||   █ $ exit  // Exit root                                                    █░░ ||
||   █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█░░ ||
||     ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ||
||                                                                                 ||
||                                                                                 ||
||     HACKS!!1                                                                    ||
||                                                                                 ||
||     To get the unipagernextion.py application to work I need to change it       ||
||     python3 to python2...                                                       ||
||                                                                                 ||
||     TL;DR serial.Serial didn't work for me in python3 so I compromised...       ||
||                                                                                 ||
||   █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█   ||
||   █ $ nano /usr/local/bin/unipagernextion.py // Change #!/usr/bin/python3   █░░ ||
||   █                                          //     to #!/usr/bin/python    █░░ ||
||   █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█░░ ||
||     ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ||
||                                                                                 ||
||                                                                                 ||
||     == FLASH NEXTION DISPLAY ==                                                 ||
||                                                                                 ||
||   █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█   ||
||   █ $ nano Nextion/nextion.py               // Change PORT = "/dev/ttyUSB0" █░░ ||
||   █                                         //     to PORT = "/dev/ttyAMA0" █░░ ||
||   █                                                                         █░░ ||
||   █ $ sudo bash src/update_display.sh       // Flash display firmware       █░░ ||
||   █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█░░ ||
||     ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ||
||                                                                                 ||
||                                                                                 ||
||     == NEXTION SERVICE ==                                                       ||
||                                                                                 ||
||     To start the Nextion display service use the commands bellow.               ||
||                                                                                 ||
||   █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█   ||
||   █ $ systemctl enable unipagernextion     // Start at boot                 █░░ ||
||   █                                                                         █░░ ||
||   █ $ systemctl status unipagernextion     // Status check                  █░░ ||
||   █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█░░ ||
||     ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ||
||                                                                                 ||
||     More detailed instructions  on how to install the software to control the   ||
||     Nextion display and the GitHub repo can be found here.                      ||
||                                                                                 ||
||     >>> UniPagerNextion Wiki                                                    ||
||     >>> UniPagerNextion GitHub                                                  ||
||                                                                                 ||
||                                                                                 ||
||     == Trouble Shooting ==                                                      ||
||                                                                                 ||
||     If you’re having any trouble sending messages you may have to adjust the    ||
||     volume from the Web UI to make this work with your setup. Inverting the     ||
||     signal may be needed as well. :3                                            ||
||                                                                                 ||
||                                                                                 ||
||     == PROJECT GALLERY ==                                                       ||
||                                                                                 ||
||          == Phase 1: POC ==             == Phase 2: Init Build & QA ==          ||
||                                                                                 ||
||          IMG: RPi Bread Board           IMG: RPi Proto Board                    ||
||          IMG: GM300 Pinout              IMG: Testing Before Installation        ||
||          IMG: Test Page                                                         ||
||                                                                                 ||
||                                                                                 ||
||          == Phase 3: Final Build ==     == Phase 4: Added Touch Screen ==       ||
||                                                                                 ||
||          IMG: Outside 1                 IMG: Nextion Touch Display              ||
||          IMG: Outside 2                                                         ||
||          IMG: Back                                                              ||
||          IMG: Inside                                                            ||
||                                                                                 ||
||                                                                                 ||
||     == CONCLUSION ==                                                            ||
||                                                                                 ||
||     OK!                                                                         ||
||                                                                                 ||
||     We just built our self’s a POCSAG transmitter and expanded the coverage of  ||
||     DAPNET! Go a head and pat yourself on the back because you’re doing God’s   ||
||     work by making old tech fun again!                                          ||
||                                                                                 ||
||     -- NotPike                                                                  ||
||                                                                                 ||
\\=================================================================================//
                                                            \                        
                                                             \  ^__^                 
                                                              \ (^^)\_______         
                                                                (__)\        )\/\    
                                                                 U  ||----w |        
                                                                    ||     ||