Merge pull request #272 from rerdavies/dev

Merge 1.4.71 dev branch
This commit is contained in:
Robin Davies
2025-02-24 00:39:50 -05:00
committed by GitHub
10 changed files with 96 additions and 30 deletions
+3 -3
View File
@@ -1,13 +1,13 @@
cmake_minimum_required(VERSION 3.16.0)
project(pipedal
VERSION 1.4.70
VERSION 1.4.71
DESCRIPTION "PiPedal Guitar Effect Pedal For Raspberry Pi"
HOMEPAGE_URL "https://rerdavies.github.io/pipedal"
)
EXECUTE_PROCESS( COMMAND dpkg --print-architecture COMMAND tr -d '\n' OUTPUT_VARIABLE DEBIAN_ARCHITECTURE )
set (DISPLAY_VERSION "PiPedal v1.4.70-Beta")
set (DISPLAY_VERSION "PiPedal v1.4.71-Beta")
set (PACKAGE_ARCHITECTURE ${DEBIAN_ARCHITECTURE})
set (CMAKE_INSTALL_PREFIX "/usr/")
@@ -95,7 +95,7 @@ set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "IoT guitar effect pedal for Raspberry Pi"
set(CPACK_DEBIAN_PACKAGE_SECTION sound)
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION TRUE)
set(CPACK_DEBIAN_PACKAGE_DEPENDS "lv2-dev, authbind, curl, gpg" )
set(CPACK_DEBIAN_PACKAGE_DEPENDS "lv2-dev, authbind, curl, gpg, alsa-base, alsa-utils" )
set(CPACK_PACKAGING_INSTALL_PREFIX /usr)
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
+2 -2
View File
@@ -6,14 +6,14 @@
<a href="https://rerdavies.github.io/pipedal/LicensePiPedal.html"><img src="https://img.shields.io/badge/MIT-MIT?label=license&color=%23808080"/></a>
<a href="https://github.com/rerdavies/pipedal/actions"><img src="https://img.shields.io/github/actions/workflow/status/rerdavies/pipedal/cmake.yml?branch=main"/></a>
Download:&nbsp;<a href='https://rerdavies.github.io/pipedal/download.html'>v1.4.70</a>
Download:&nbsp;<a href='https://rerdavies.github.io/pipedal/download.html'>v1.4.71</a>
Website:&nbsp;[https://rerdavies.github.io/pipedal](https://rerdavies.github.io/pipedal).
Documentation:&nbsp;[https://rerdavies.github.io/pipedal/Documentation.html](https://rerdavies.github.io/pipedal/Documentation.html).
_Important notice_: [PatchStorage.com](https:///patchstorage.com) has added support for [PiPedal](https://patchstorage.com/platform/pipedal/). We urgently need your support! If you could please upload patches [here](https://patchstorage.com/platform/pipedal/) I would be enormously grateful. Note that media and model files are included in patch files, so you can share patches that
include model files or audio samples. If you make use of plugins that are not included in the PiPedal distribution, please include a link to the plugin in the patch description.
#### _NEW version 1.4.70 Beta, PiPedal now supports Ubuntu 24.x, on aarch64 and amd64/x64 platforms. See the [release notes](https://rerdavies.github.io/pipedal/ReleaseNotes) for details._
#### _NEW version 1.4.71 Beta, PiPedal now supports Ubuntu 24.x, on aarch64 and amd64/x64 platforms. See the [release notes](https://rerdavies.github.io/pipedal/ReleaseNotes) for details._
&nbsp;
+20 -4
View File
@@ -3,11 +3,11 @@ page_icon: img/Setup.jpg
icon_width: 320px
icon_float: left
---
## Selecting a real-time kernel on Ubuntu.
## Selecting a real-time kernel on Ubuntu 24.x
This step is unneccesary on Raspberry Pi OS, which installs an RT_PREEMPT kernel by default.
By default, Ubuntu installs a PREEMT_DYNAMIC kernel, configured to run with volutary preemption. You will need to change this. You can do this by running the following command after you have installed PiPedal:
By default, Ubuntu installs a PREEMT_DYNAMIC kernel, configured to run with volutary preemption. You will need to change this. PREEMPT_DYNAMIC/preempt=voluntary kernels are not capable of supporting real-time audio. You can do this by running the following command-line command after you have installed PiPedal:
```
pipedal_kconfig
@@ -15,8 +15,24 @@ By default, Ubuntu installs a PREEMT_DYNAMIC kernel, configured to run with volu
In order to support real-time audio processing, select Preempt=full.
An RT_PREEMPT kernel provides slightly better realtime audio than a PREEMPT_DYNAMIC/preempt=full kernel, but the PREEMPT_DYNAMIC should be perfectly adequate. If you are having problems with audio dropouts, you may want to try an RT_PREEMPT kernel instead. Ubuntu provides a pre-built RT_PREEMPT kernel; but on our test systems, you can acheive stable low-latency audio using only the PREEMPT_DYNAMIC/preempt=full kernel. The pre-build Ubuntu RT_PREEMPT
kernel is only available if yo have an Ubuntu Pro subscription. But it is relatively easy to build the Ubuntu RT_PREEMPT kernel from source. That is, however, outside the scope of this document. We recommend using the PREEMPT_DYNAMIC/preempt=full Ubuntu kernel.
An RT_PREEMPT kernel provides slightly better realtime audio than a PREEMPT_DYNAMIC/preempt=full kernel, but the PREEMPT_DYNAMIC should be perfectly adequate. If you are having problems with intermittent audio dropouts, you may want to try an RT_PREEMPT kernel instead. Ubuntu provides a pre-built RT_PREEMPT kernel; but on our test systems, you can acheive stable low-latency audio using only the PREEMPT_DYNAMIC/preempt=full kernel. The pre-built Ubuntu RT_PREEMPT kernel can be installed using `apt` but is only available if you have an Ubuntu Pro subscription. Ubuntu Pro is free for non-commercial use. Reportedly, it is relatively easy to build the Ubuntu RT_PREEMPT kernel from source; but that is outside the scope of this document. We recommend using the PREEMPT_DYNAMIC/preempt=full Ubuntu kernel.
## Support for WIFI Auto-Hotspots on Ubuntu Server
The following information applies when installing PiPedal on Ubuntu Server 24.0x only. This information does not apply
to Unbuntu Desktop installs or Raspberry Pi OS Lite installs.
PiPedal's Auto-Hotspot feature only works on Linux systems that are using the Network Manager network services stack.
Ubuntu Server 24.x (and probably other server-specific installs on other Debian distros) uses the Netplan network services stack by instead. It does so because the Netplan network stack is the preferred network stack when managing
farms of cloud servers.
It's easy enough to reconfigure Ubuntu Server to run the Network Manager network stack instead. However you should be
aware that Netplan TCP/IP configuration settings will not be migrated to Network Manager. If you perform this step on a server on which changes have beeen madce to Netplan configuration files, you will need to manually migrate those
changes to Network Manager configuration files. On a clean install of Ubuntu Server, this will not be a problem.
To reconfigure Ubuntu Server to use the Network Manager network stack (and therefore enable PiPedal's Auto-Hotspot feature), run the following command:
sudo apt install network-manager
## Configuring PiPedal After Installation
+8 -7
View File
@@ -13,25 +13,26 @@ page_icon: img/Install4.jpg
Download the most recent Debian (.deb) package for your platform:
- [Raspberry Pi OS bookworm (aarch64) v1.4.70 Beta](https://github.com/rerdavies/pipedal/releases/download/)
- [Ubuntu 24.x (aarch64) v1.4.70 Alpha](https://github.com/rerdavies/pipedal/releases/download/)
- [Ubuntu 24.x (amd64) v1.4.70 Alpha](https://github.com/rerdavies/pipedal/releases/download/)
- [Raspberry Pi OS bookworm (aarch64) v1.4.71 Beta](https://github.com/rerdavies/pipedal/releases/download/)
- [Ubuntu 24.x (aarch64) v1.4.71 Alpha](https://github.com/rerdavies/pipedal/releases/download/)
- [Ubuntu 24.x (amd64) v1.4.71 Alpha](https://github.com/rerdavies/pipedal/releases/download/)
Version 1.4.70 has been tested on Raspberry Pi OS bookworm, Ubuntu 24.04 (amd64), and Ubuntu 24.10 (aarch64). Download the appropriate package for your platform, and install using the following proceduer:
Version 1.4.71 has been tested on Raspberry Pi OS bookworm, Ubuntu 24.04 (amd64), and Ubuntu 24.10 (aarch64). Download the appropriate package for your platform, and install using the following procedure:
```
sudo apt update
cd ~/Downloads
sudo apt-get install pipedal_1.4.70_arm64.deb
sudo apt-get install pipedal_1.4.71_arm64.deb
```
Adjust accordingly depending which package you downloaded.
You MUST use `apt-get`. `apt` will not install downloaded packages; and `dpkg-i` will not install dependencies.
On Raspberry Pi OS, if you have a graphical desktop installed, you can also install the package by double-clicking on the downloaded package in the File Manager.
After installing, follow the instructions in [Configuring PiPedal after Installation](Configuring.md). If
you are using Ubuntu, you will need to reconfigure Ubuntu to use a real-time kernel.
you are using Ubuntu, there are additional post-installation steps you must take to reconfigure the Ubuntu kernel
to provide support for low-latency real-time audio.
--------
+4
View File
@@ -1,5 +1,9 @@
# Release Notes
## PiPedal 1.4.71 Beta
- Resolves installation issues on Ubuntu Server.
## PiPedal 1.4.70 Beta
- Ubuntu 24.x compatibility (arm64 and amd64)
+2 -2
View File
@@ -4,7 +4,7 @@
Download the most recent Debian (.deb) package for your platform:
- <a href="https://github.com/rerdavies/pipedal/releases/download/v1.4.70/pipedal_1.4.70_arm64.deb">Raspberry Pi OS Bookworm (64-bit) v1.4.70</a>
- <a href="https://github.com/rerdavies/pipedal/releases/download/v1.4.71/pipedal_1.4.71_arm64.deb">Raspberry Pi OS Bookworm (64-bit) v1.4.71</a>
Install the package by running
@@ -12,7 +12,7 @@ Install the package by running
```
sudo apt update
cd ~/Downloads
sudo apt-get install ./pipedal_1.4.70_arm64.deb
sudo apt-get install ./pipedal_1.4.71_arm64.deb
```
Follow the instructions in [_Configuring PiPedal After Installation_](https://rerdavies.github.io/pipedal/Configuring.html) to complete the installation.
+2 -2
View File
@@ -1,4 +1,4 @@
<a href="Installing.html"><i>v1.4.70</i></a>
<a href="Installing.html"><i>v1.4.71</i></a>
_To download PiPedal, click [*here*](download.md).
To view PiPedal documentation, click [*here*](Documentation.md)._
@@ -6,7 +6,7 @@ To view PiPedal documentation, click [*here*](Documentation.md)._
_Important notice_: [PatchStorage.com](https:///patchstorage.com) has added support for [PiPedal](https://patchstorage.com/platform/pipedal/). We urgently need your support! If you could please upload patches [here](https://patchstorage.com/platform/pipedal/) I would be enormously grateful. Note that media and model files are included in patch files, so you can share patches that
include model files or audio samples. If you make use of plugins that are not included in the PiPedal distribution, please include a link to the plugin in the patch description.
#### NEW version 1.4.70 Beta, including beta releases of PiPedal for Ubuntu on aarch64 and amd64. See the [release notes](https://rerdavies.github.io/pipedal/ReleaseNotes) for details.
#### NEW version 1.4.71 Beta, including beta releases of PiPedal for Ubuntu on aarch64 and amd64. See the [release notes](https://rerdavies.github.io/pipedal/ReleaseNotes) for details.
&nbsp;
+5 -8
View File
@@ -1055,7 +1055,11 @@ void Install(const fs::path &programPrefix, const std::string endpointAddress)
if (!UsingNetworkManager())
{
throw std::runtime_error("The current OS is not using NetworkManager. Services not configured.");
cout << "Warning: The current OS is not using the NetworkManager network stack." << endl;
cout << " The PiPedal Auto-Hotspot feature will be disabled." << endl << endl;
cout << " Consult PiPedal documentation to find out how to correct this " << endl;
cout << " issue on Ubuntu Server." << endl;
}
try
{
@@ -1763,28 +1767,23 @@ int main(int argc, char **argv)
}
else if (stop)
{
RequireNetworkManager();
StopService();
}
else if (start)
{
RequireNetworkManager();
StartService();
}
else if (restart)
{
RequireNetworkManager();
RestartService(excludeShutdownService);
}
else if (enable)
{
RequireNetworkManager();
EnableService();
FileSystemSync();
}
else if (disable)
{
RequireNetworkManager();
DisableService();
FileSystemSync();
}
@@ -1809,7 +1808,6 @@ int main(int argc, char **argv)
}
else if (disable_p2p)
{
RequireNetworkManager();
WifiDirectConfigSettings settings;
settings.Load();
settings.enable_ = false;
@@ -1854,7 +1852,6 @@ int main(int argc, char **argv)
}
else if (disable_hotspot)
{
RequireNetworkManager();
WifiConfigSettings settings;
settings.valid_ = true;
+44 -1
View File
@@ -30,6 +30,7 @@
#include <unordered_set>
#include <mutex>
#include <algorithm>
#include "SysExec.hpp"
using namespace pipedal;
using namespace dbus::networkmanager;
@@ -1101,9 +1102,51 @@ static std::vector<std::string> get_wireless_interfaces_sysfs()
return wireless_interfaces;
}
static bool gNetworkManagerTestExecuted = false;
static bool gUsingNetworkManager = false;
static bool IsNetworkManagerRunning()
{
if (gNetworkManagerTestExecuted)
{
return gUsingNetworkManager;
}
bool bResult = false;
auto result = sysExecForOutput("systemctl","is-active NetworkManager");
if (result.exitCode == EXIT_SUCCESS)
{
std::string text = result.output.erase(result.output.find_last_not_of(" \n\r\t")+1);
if (text == "active")
{
bResult = true;
} else if (text == "inactive")
{
bResult = false;
} else {
throw std::runtime_error(SS("UsingNetworkManager: unexpected result (" << text << ")"));
}
gNetworkManagerTestExecuted = true;
gUsingNetworkManager = bResult;
return bResult;
}
// does the neworkManager service path exists?
return false;
}
bool HotspotManager::HasWifiDevice()
{
// use procfs to decide this, as NetworkManager may not be available yet.
if ( !(get_wireless_interfaces_sysfs().empty()) )
{
return false;
}
if (!IsNetworkManagerRunning())
{
return false;
}
return true;
return !(get_wireless_interfaces_sysfs().empty());
}
+6 -1
View File
@@ -66,7 +66,12 @@ void SignPackage()
packagePath = fs::absolute(packagePath);
if (!fs::exists(packagePath))
{
throw std::runtime_error(SS("File does not exist: " << packagePath));
packagePath = SS("build/pipedal_" << PROJECT_VER << "_amd64.deb");
packagePath = fs::absolute(packagePath);
if (!fs::exists(packagePath)) {
packagePath = SS("build/pipedal_" << PROJECT_VER << "_*.deb");
throw std::runtime_error(SS("File does not exist: " << packagePath));
}
}
// sign the package.