Giter VIP home page Giter VIP logo

pirrot's Introduction

Pirrot - An Open-source Radio Repeater controller for RaspberryPi

The Pirrot project exists to offer a cheaper (and fun) alternative to buying a dedicated simplex or duplex radio repeater controller.

Pirrot also offers other operation modes and features that most off-the-shelf repeater controllers do not come with as standard such as automatic identification, and the ability to operate in "surveillance mode" (recording transmissions).

You can find a list of user projects to get inspiration from below.

Features

  • Operate a Simplex or Duplex repeater system from a Raspberry Pi (Pirrot runs in Simplex mode by default)!
  • Optional web admin interface to update settings, view system resource usage, access (download, play or delete) audio recordings.
  • Optional automatic repeater identification broadcasts (disabled by default).
  • Ability to transmit the PL/CTCSS tone as part of the repeater identification broadcast.
  • Ability to transmit a custom pre-recorded (MP3 file recording) broadcast or custom repeater identification message.
  • Ability to broadcast custom text-to-speech messages.
  • Ability to trigger repeater transmission using VOX (voice activation) or COR (carrier signal from radio to trigger a PTT relay).
  • Optional recording of received transmissions (disabled by default).
  • Optional automatic nightly backups and archiving of audio recordings to a remote server (FTP and FTPS supported).
  • Automatically purge old recordings from the SD card (keeping that SD card from getting full).
  • Optional integration with GPS hardware for "field" or "mobile" operations, ensuring the RPi has accurate time (using the atomic clocks from GPS satellites).
  • Optional weather report broadcasts for a specified location (requires an internet connection and a free OpenWeatherMap account API key)
  • Optional Google Text-To-Speech functionality for translatable broadcasts and generating synthesized weather report broadcasts (requires an internet connection and a Google Cloud API Key)
  • Ability to dispatch a webhook when the repeater is activated (requires an internet connection) - We call this feature "Tripwire".
  • Ability to optionally delay the transmission of received simplex messages for a configurable time period.
  • Ability to set a custom courtesy tone on the end of transmission.

See the full list of configuration items on the CONFIGURATION page.

Hardware requirements

The simplest hardware/software requirements are:

  1. A RaspberryPi - I test Pirrot on the RaspberryPi 3, 4 and the Zero W but should work on other models too!
  2. RaspberryPi OS 12 (bookworm) is recommended but older versions of Pirrot will run on Raspbian version 9 (stretch), 10 (buster) and 11 (bullseye) too! You can install and use either the "lite" or "desktop" versions of Raspbian (I would personally recommend the "lite" version as it uses fewer system resources especially if you intend to run it headless).
  3. An external USB sound card.

I will update the installer to support newer versions of Raspbian as and when they are released by the Raspberry Pi Foundation.

Assuming you wish to use this with a radio transceiver and do not wish to use "VOX mode", you will also need to wire up the transceiver's PTT button to the PTT relay pin on your RaspberryPi's GPIO pin (by default this is GPIO Pin #23, although you can adjust as required in the configuration file found at /etc/pirrot.conf).

The audio in (receive) and audio out (transmit) connectors from your radio will need to be connected to the external USB sound card using the Mic Jack (for Transmit) and Speaker Jack (for Receive).

If you plan to use the repeater in COS/COR mode you will need to connect your COR GPIO pin to the transceiver.

Installation

Pirrot can be installed using Git or by downloading the latest tarball (find the version number here), installation steps are as follows:

To install using Git (the recommended way - this supports easy future updates using 'pirrot update' command) run the following commands at the terminal:

sudo apt-get install -y git
sudo git clone --single-branch --branch latest-stable https://github.com/allebb/pirrot /opt/pirrot
cd /opt/pirrot
sudo make install

Alternatively, you can install Pirrot by downloading the latest tarball, replace the X.X.X with the latest version available from the (releases page):

cd ~
wget https://github.com/allebb/pirrot/archive/vX.X.X.tar.gz
sudo mkdir /opt/pirrot
sudo tar xf vX.X.X.tar.gz -C /opt/pirrot --strip 1
cd /opt/pirrot
sudo make install

Once installed, Pirrot will start automatically at boot up (ensure your USB audio adapter is connected though!)

Configuration options

The Pirrot configuration file is found in /etc/pirrot.conf, a full list of settings and descriptions can be found on the configuration page.

When making changes to this file please ensure that you restart the Pirrot daemon by running sudo service pirrot restart to ensure that the changes to take affect.

Sound adjustment

Using the alsamixer command in the terminal you can adjust your microphone and speaker volumes if required.

If you do adjust the volume, remember that to permanently save these settings use the alsactl store command to ensure they are kept after reboot.

Default GPIO pins

By default, the Pirrot configuration file, located in /etc/pirrot.conf has default GPIO pins configured, these are as follows:

  • GPIO 18 - COR Signal (Input/Relay) - Triggered when the radio squelch is opened.
  • GPIO 23 - PTT Switch (Output/Relay) - Triggers the PTT on the radio to transmit.
  • GPIO 17 - Power/Ready LED (Output/LED) - Illuminates when the Pirrot daemon is running (indicating that the repeater is ready and working).
  • GPIO 27 - Receive LED (Output/LED) - Receiving transmission (Illuminated when COR signal is high non-functional in VOX mode).
  • GPIO 22 - Transmit LED (Output/LED) - Transmitting transmission (Illuminated when the repeater is ident-ing/playing back a transmission).

Remember: When making changes to the /etc/pirrot.conf file you must restart the daemon using the sudo service pirrot restart command.

Uninstalling

If you wish to uninstall Pirrot at a later date, you can run:

cd /opt/pirrot
sudo make uninstall

PCB Interface (for Simplex mode)

This PCB interface design and PCB schematic has kindly been designed and contributed by Peter Javorsky (@tekk); and provides a simple interface (if you don't want to build your own circuit) to connect your radio(s) to a Raspberry Pi running Pirrot.

Schematic

PCB

You can find out more about the PCB and interface here.

You can edit or order the fabrication of this PCB online at: https://easyeda.com/integrac/rpi-repeater

If you use this interface board, you should configure the Pirrot output pin settings (in /etc/pirrot.conf) with the following values:

Description Setting Name Value to be set
RaspberryPi PTT pin ptt_pin_invert false
RaspberryPi COR pin cos_pin_invert true

Remember to restart Pirrot by running sudo service pirrot restart for the changes to take affect.

PCB Interface (for Duplex mode)

Duplex operation mode is new since v2.0.0 and as such a PCB design is not yet available.

In Duplex mode, Pirrot provides all the same features (audio recordings, weather reports, web hooks etc.) that Simplex mode does with the exception that VOX triggered transmissions are not supported.

When running in Duplex mode you should create a custom wiring loom between the RX and TX radios, the audio output from the receive radio should be connected to the audio input of the transmit radio in addition to feeding the MIC IN port on the Raspberry Pi connected USB Audio device. The AUDIO OUT (Speaker) from the USB Audio device from the Raspberry Pi should also be connected to the transmit radio's audio input; using alsamixer (more info on this above - see the "Sound adjustment" section) you can then balance the audio levels as desired.

The decision was taken not to use audio loopback in software (alleviating the need for direct connection between the TX and RX radios) given latency issues during testing (hence the need for a custom wiring loom), the result however is that Pirrot can provide all the same functionality as when it is running in Simplex mode whilst ensuring audio latency is not an issue.

We hope to provide a PCB design soon for a Duplex compatible interface.

The optional web interface

Since v2.0.0 of Pirrot, I have implemented a light-weight admin web interface that provides easy access using a remote computer or table device to update Pirrot settings, view hardware stats (temperature, CPU and RAM utilisation, and disk usage etc.) as well as access and listen to and/or download transmission recordings (if enabled in the config file too).

Pirrot is designed to run on resource restricted SBC's as well as battery operated systems in the field and therefore, by default, I have taken the decision to disable the admin web interface by default to ensure that Pirrot and your Raspberry Pi uses as little power and resources as possible out of the box.

If however system resources and power consumption is not an issue for you/your intended use, you can easily enable it; when enabled, the web interface will be available and accessible using: http://{ip-address}:8440, you will be prompted for access credentials, by default these are as follows:

Name Value
Username admin
Password pirrot

To enable the web interface, you must edit /etc/pirrot.conf and change the setting web_interface_enabled to true you will then need to restart the Pirrot daemon before the web interface will be activated, to restart Pirrot you should run sudo service pirrot restart.

You can set a new admin password for the web interface (and I highly encourage you to do so) by running the following command at the console: sudo pirrot setwebpwd --password={YourPasswordHere}.

Pirrot being used in the wild

Below is a compiled list of known projects and/or articles that have been created by users of Pirrot.

I hope you can visit these great project sites and get some inspiration to build your own using the Pirrot software.

If you have a write-up, blog post, photo gallery, or know of a project using Pirrot, please let me know by emailing me at [email protected] and I'll get the article/gallery linked here to help and/or inspire others.

Useful notes and tips

I thought I would share a list of useful notes, ideas and other interesting RaspberryPi setup related items that may help with your Pirrot-based repeater or other RaspberryPi related projects.

Remote desktop access to your RaspberryPi

If you intend to run Pirrot on a Raspberry Pi and opt for the "Desktop" version of Raspbian instead of the "Lite" version, you may wish to access the desktop remotely, I personally prefer the RDP protocol and find it superior to VNC, luckily you can easily install xrdp (an open-source server implementation of the RDP protocol) on your RaspberryPi with just a few commands:

sudo apt-get update
sudo apt-get install xrdp
sudo adduser xrdp ssl-cert

You can then access your Raspberry Pi's desktop using another computer, tablet device or mobile phone - simply download and install an RDP client (sometimes referred to as Microsoft Remote Desktop client) on your device(s).

Keeping the correct time with no internet access

If you're using your Raspberry Pi remotely (outside and/or away from an internet connection), the Raspberry Pi does not have an on-board RTC (real-time clock) and without access to the internet your Raspberry Pi will not keep accurate time due to the unavailability of an NTP (Network Time Protocol) server.

There are two solutions to this, they are as follows:

  1. Buy an RTC HAT - This will keep time as long as the small onboard supplied battery has charge.
  2. Buy a GPS HAT or USB dongle - A much better solution in my opinion, not only does this keep the RaspberryPi's clock in sync (from satellites) but Pirrot (if it detects a GPS receiver configured on your Pi) will also output your current GPS location on the web interface dashboard too - useful if using this in a car or "go-box" type of setup.

Follow this guide to setup a USB GPS dongle on your Raspberry Pi.

Auto WiFi hotpot when the RaspberryPi is away from it's primary WiFi Network

If you are running your RaspberryPi remotely (maybe in a "go-box", car or a remotely located repeater site) it is likely that you will not have a WiFi network or internet connection at the site or location.

In this scenario I will assume that you primarily use the RaspberryPi remotely and would like access to the RaspberryPi from a laptop, tablet or other mobile device in order to access it (such as over HTTP, SSH or even xRDP) but when we bring it back in-range of our primary location (eg. a home or office) it will auto-connect to our main WiFi network (which has internet access) and thus can access the internet again, install updates etc.

The solution is to configure the RaspberryPi to "switch" it's WiFi adapter into "Hot Spot" mode (and advertise a WiFi network that we can connect to from our mobile devices) when it cannot detect and connect our Home or Office WiFi network.

Follow this guide to configure your RaspberryPi as an "auto" remote hotspot.

pirrot's People

Contributors

allebb avatar dependabot[bot] avatar ellisonpatterson avatar manymiles avatar pantgr avatar tekk avatar theverygaming avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pirrot's Issues

Installation of Pirrot breaks PI Zero W OS

Hi,
today i tried to install pirrot on a Raspberri PI Zero W V1.1 with freshly installed
"Raspberry Pi OS (Legacy, 32-bit) Lite" (2023-12-05) from the Pi imager 1.8.4.
At the end every thing breaks with "invalid instruction".
After the installation most commands don't work, even

$ reboot now

fails with an "invalid instruction".
After power-cycling the Pi Zero won't come up again (can't be ping'ed anymore).
I followed the installations instructions on the github page.
I guess there are some libraries overwritten with ones for the wrong ARM architecture.

Optional legacy support for auto-upload of transmission recording at intervals to FTP

In addition to modern BLOB storage API's, I know that the HAM community will probably also want support for FTP as many home NAS solutions and shared hosting providers support such a feature by default which I assume would be utilised by many radio groups.

This feature will ofcourse be optional and disabled by default in the /etc/pirrot.conf file.

Installation to disable onboard sound card

The following file needs to be commented as required at installation (inside:/lib/modprobe.d/aliases.conf):

# These are the standard aliases and dependencies.
# This file does not need to be modified.

# prevent unusual drivers from appearing as the first sound device ###########
options snd-pcsp index=-2
#options snd-usb-audio index=-2
options cx88_alsa index=-2
options snd-atiixp-modem index=-2
options snd-intel8x0m index=-2
options snd-via82xx-modem index=-2

# work around other kernel issues ############################################
# The EHCI driver should be loaded before the ones for low speed controllers
# or some devices may be confused when they are disconnected and reconnected.
softdep uhci-hcd pre: ehci-hcd
softdep ohci-hcd pre: ehci-hcd

Namely, the options snd-usb-audio index=-2 needs to be prefixed with a hash # to ensure that it does not take priority..

Secondly, the following blacklist snd_bcm2835 needs to be piped into the /etc/modprobe.d/raspi-blacklist.conf file.

Selectable 'VOX' or 'COS' modes

The application configuration should enable users to choose whether to use 'COS' or 'VOX' this will in-turn then change what transmission class (implements the transmittable interface) that will be used.

Add pcntl_signal to ensure that code gets ran afterwards..

Make sure that SIGINT and SIGTERM are handled correctly by the pirrot daemon, this will ensure that the LED's are turned off after the system service is stopped and/or CTRL+C is pressed on the keyboard if Pirrot is running in the terminal.

This should also clean up and kill other spawned/managed services that Pirrot manages/spawns such as the audio playback and sound recording.

Question: Possible to change VOX Receive sensitivity somehow?

I started to use this amazing app, and i would like to ask, how can i change the vox recording sensitivity without adjusting the volume? If i change the volume, the recordings becomes distorted. But i would like to decrease a little bit the record start sensitivity.

Thanks!

Support "duplex" repeater functionality.

At the moment, Pirrot supports simplex repeater functionality but there isn't really any reason why Pirrot cannot support full duplex too. This feature request should enable the user to configure the repeater mode (simplex or duplex) in the Pirrot configuration file (/etc/pirrot.conf).

Transmission playback class

The transmission playback class (transmit) will be used to take the captured audio and play it back and move the file as required to the recording directory (if enabled in the application settings)

The transmission playback class will take the filename as the construct argument and will append any courtesy tone to the end of it too.

This class will use dependency injection to load the AudioService class in order to play the sound file (using the correct path) and in addition the playback of the courtesy tone too.

Implement a web-interface

Implement a simple/light-weight web interface (that can be enabled/disabled in configuration to save system resources if the user wishes).

The web interface, as well as providing several features such as:-

  1. Ability to read and update the Pirrot configuration (essentially allowing you to update the /etc/pirrot.conf from a remote browser).
  2. Access and playback (in the browser) recorded transmissions (if recording has previously been enabled in/etc/pirrot.conf).
  3. Overview of CPU, Memory, Disk usage on the main dashboard.
  4. Overview of Hardware vesion, OS version and system tempreture on the main dashboard.

Automatic weather download and sythesize voice for annoucement at set intervals.

Requested by tekk - Add the ability to set an automatic weather download and annoucement on a predefined interval.

I could use my METAR library (https://github.com/allebb/metar) to provide the weather download functionality or maybe a public "global" weather API that accepts a location string (instead of having to provide a local airport ICAO code as my METAR library would require) - I will look into other Weather API's too though!

Delaying repeater transmission

Greetings.

Great project! I was wondering how it can be done with this.. Repeating back a transmission after a set time delay for example 5 seconds..

Feature request: Multi-site Pirrot

There are basically three options when you want to build a duplex repeater on PMR446 band and not have your input overloaded by the output:

  1. Make the repeater input in LPD band (50 mW absolute maximum PEP) and output on PMR446 band, and use a sub-1000-EUR duplexer
  2. Buy a duplexer that has offset of 600kHz (this can go up to several thousands of EUR) and have both input and output on PMR446
  3. Make a multi-site repeater where on one site you make input and few kilometers away you make output site. Places are linked with a low latency link, or cable. Both input and outpur are on PMR446 band. This way you don't overload the input receiver.

The multi-site scenario is widely used in duplex repeaters on 10m and 6m amateur bands, since duplexers needed here would cost thousands of EUR.
Is it possible in any manner to make Pirrot work as multi-site duplex repeater? I'm thinking of a low latency TCP/UDP or Websockets link on an open (and forwarded) port (or SSH tunnel) with voice compression (i.e. Speex or Opus, or OGG) which would stream the input from one site to another Pirrot instance on the output site in real time? Both instances would need to have it's IDs, or at least possibility to set the transmission line (IP and port of Pirrot on the output site - to stream audio in real time).
I'm aware that this is not a trivial task to do, and I'm willing to help.
Thanks again for your awesome work on Pirrot!

Kernel panic when used on a pi 1 or pi zero

Installed the base 32bit Raspberry OS lite, that worked in everything.
Kernel panic happens at boot on the pi one and zero if Pirrot is installed using instructions (git install).
Tried installing using the pi one, same thing.
larger sd card. Same thing.
Expand the file system plus all the above, same thing.
Install first on pi3, same thing
Install first on pi one, same thing.
Seems to work in a pi3. Though that's not what I want running it.

Signal sox to stop recording (exit) when the COS signal goes low.

The mainVox loop needs to be able to stop the execution of the sox binary when the COS signal goes low, will need to further look into the most efficent way to do this but most likely to involve open a new process, store the PID in memory and then use kill on the process after the COS signal goes high.

Automatic resolution of 'sox' and 'play' binaries.

System to detect the location of the 'play' and 'sox' command.

At present, these are being set in the AudioBaseCommand class but should probably use set using the 'which sox' and 'which play' commands to aid automatic resolution.

On MacOSX based systems (where the binaries are copied to say /usr/local/sox) this path should be added to the system's PATH to ensure that these are identified correctly.

App cuts parts of repeated voice when saving of recordings is enabled

Hi,
first of all, thanks for this excellent project. It is awesome what can be done with PHP. ๐Ÿ‘ I appreciate your effort invested into this awesome work.
Let me explain my issue.
I'm experiencing this issue from the very beginning of the installation (repeater is running RPi Zero W, and it's live for around 1y, 24/7). Now I noticed that when I disable recording, it behaves normally.
It's hard to describe this sound "artefact". It's like the repeated voice starts playing normally but has "cutouts" in it. There are missing parts.
Could you please help me with that?
Any help is much appreciated.

Ability to auto-upload recording to S3 compatible storage

Build optional functionality to support the auto-upload of recorded transmissions to S3-compatible BLOB storage buckets (support and test on Amazon AWS S3, DigitalOcean Space and Self-hosted Minio) at defined intervals.

This feature will ofcourse be optional and disabled by default in the /etc/pirrot.conf file.

PHP Errors when starting Pirrot service

Hi

I have tryed checking the status of the Pirrot service after install and found the folling error.

โ— pirrot.service - LSB: The Pirrot Repeater Daemon
Loaded: loaded (/etc/init.d/pirrot; generated)
Active: active (exited) since Mon 2021-12-20 10:53:01 GMT; 1 day 20h ago
Docs: man:systemd-sysv-generator(8)
Process: 364 ExecStart=/etc/init.d/pirrot start (code=exited, status=0/SUCCESS)
CPU: 55ms

Dec 20 10:53:01 raspberrypi systemd[1]: Starting LSB: The Pirrot Repeater Daemon...
Dec 20 10:53:01 raspberrypi pirrot[364]: Starting Pirrot...
Dec 20 10:53:01 raspberrypi pirrot[364]: done!
Dec 20 10:53:01 raspberrypi systemd[1]: Started LSB: The Pirrot Repeater Daemon.
Dec 20 10:53:01 raspberrypi pirrot[414]: /usr/bin/env: โ€˜phpโ€™
Dec 20 10:53:01 raspberrypi pirrot[415]: /usr/bin/env: โ€˜phpโ€™: No such file or directory
Dec 20 10:53:01 raspberrypi pirrot[414]: : No such file or directory

I then istalled PHP 8.1 as per this website https://pimylifeup.com/raspberry-pi-latest-php/

then i got this when checking the service after installling PHP

โ— pirrot.service - LSB: The Pirrot Repeater Daemon
Loaded: loaded (/etc/init.d/pirrot; generated)
Active: active (exited) since Wed 2021-12-22 07:47:14 GMT; 1s ago
Docs: man:systemd-sysv-generator(8)
Process: 26196 ExecStart=/etc/init.d/pirrot start (code=exited, status=0/SUCCESS)
CPU: 249ms

Dec 22 07:47:14 raspberrypi pirrot[26197]: PHP Warning: require_once(/opt/pirrot/vendor/autoload.php): Failed to open stream: No such file or directory in /opt/pirrot/pirrot on line 18
Dec 22 07:47:14 raspberrypi pirrot[26198]: PHP Warning: require_once(/opt/pirrot/vendor/autoload.php): Failed to open stream: No such file or directory in /opt/pirrot/pirrot on line 18
Dec 22 07:47:14 raspberrypi pirrot[26198]: PHP Fatal error: Uncaught Error: Failed opening required '/opt/pirrot/vendor/autoload.php' (include_path='.:/usr/share/php') in /opt/pirrot/pirrot:18
Dec 22 07:47:14 raspberrypi pirrot[26198]: Stack trace:
Dec 22 07:47:14 raspberrypi pirrot[26198]: #0 {main}
Dec 22 07:47:14 raspberrypi pirrot[26198]: thrown in /opt/pirrot/pirrot on line 18
Dec 22 07:47:14 raspberrypi pirrot[26197]: PHP Fatal error: Uncaught Error: Failed opening required '/opt/pirrot/vendor/autoload.php' (include_path='.:/usr/share/php') in /opt/pirrot/pirrot:18
Dec 22 07:47:14 raspberrypi pirrot[26197]: Stack trace:
Dec 22 07:47:14 raspberrypi pirrot[26197]: #0 {main}
Dec 22 07:47:14 raspberrypi pirrot[26197]: thrown in /opt/pirrot/pirrot on line 18

i am running a fresh version of Raspbian 11 bullseye on a Pi 3B+

let me know if you need anymore info.

Can`t get Pirrot running anymore

Hello i have installed Pirrot 1 time succesfully on my Raspberry 4.
Now i have to make a new installation but can`t get pirrot to run.

i tried it on bullseye and bookworm.

i`m not a pro in linux but the protocol of the service says:

/usr/bin/play FAIL formats: can't open output file `default': snd_pcm_open error: Unknown error 524

can someone please help me to get run it again?

Change time read back to read twenty instead of two-zero on ident.

At the moment, the repeater time read back reads times back as (in example 20:31):

two-zero-three-one

instead of:

twenty-thirty-one

This can be fixed by adding another method to read number back, this should return an array of file names to use 2x.wav instead of 2.wav.

GPS not showing stats

Just got everything installed and working. Installed gpsd and confirmed is seeing my USB GPS with no issues. Pirrot web shows the rows for GPS but is "loading" the server stats such as cpu is also "loading". Using a Pi3a and followed all instructions i could find. App is running as root as is supposed to from the installer. Any thougts about it? Thank you

Implement a new "tripwire" feature (HTTP webhooks on COS)

This new feature will enable the user to configure an internet-connected Pirrot repeater to automatically send a HTTP JSON payload to a web URL when the COS is tripped.

This will have many potential use cases including the following:

  1. Recording repeater activity (when the repeater is used and how long for)
  2. Ability to build apps to alert repeater users that "operators are online" and they may like to join too.
  3. Provide data to generate repeater usage graphs on a club website etc.

Additional settings should be added ot the Pirrot configuration file to allow for a user-configurable "ignored interval" this will ensure that during long two-way radio transmissions that there is not masses of HTTP requests being generated. I will implement the functionality so that, by default HTTP requests are sent to a configurable endpoint once every 5 minutes - The user can reduce or increase this interval in the settings if they wish.

This HTTP request should be pushed to a backend thread to ensure that the HTTP request lifecycle does not impact the main Pirrot processes (audio recording and re-transmission of radio messages).

Prevent button debounce on repeater input

Currently, the interupts code that has been implemented into the test script does not determine when the button is released, thus making it hard to stop the recording of audio.

Will need to look into this but for now, I have posted a comment here: PiPHP/GPIO#5

May be able to handle this differently going forward, eg. use a loop and check state internally to start and stop recording.

Implement two operation mode classes

One operation should use VOX, this will loop listening for audio and then record when required, this should be with the addition of a custom setting in the configuration file to enable users to select the silence percentage value (replaces the 5%) as well as the number of seconds to wait before stoping the recording.

The second operation mode (COS) will start recording on a GPIO input and stop when the GPIO input goes low, this will support COS operations of which is likely to be more widely used and generally the better option for users to go with.

PTT for RTS/DTR on serial ports

network connect to fldigi or hamlib radio control ports for expanding PTT, also can enable PTT for RTS/DTR on serial ports? this would enable a lot more functions

GPIO service class

A new GPIO service class should be created to read and write to the GPIO logical/in-memory filesystem to enable class-less access to these pin values.

Great documentation on how this can be achieved can be found at the following URLs:

The service class should also be able to function on other systems that do not run on the RaspberryPi and as such, come packaged with a VFS (virtual filesystem) handler.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.