+3
-3
@@ -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})
|
||||
|
||||
@@ -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: <a href='https://rerdavies.github.io/pipedal/download.html'>v1.4.70</a>
|
||||
Download: <a href='https://rerdavies.github.io/pipedal/download.html'>v1.4.71</a>
|
||||
Website: [https://rerdavies.github.io/pipedal](https://rerdavies.github.io/pipedal).
|
||||
Documentation: [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._
|
||||
|
||||
|
||||
|
||||
|
||||
+20
-4
@@ -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
@@ -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.
|
||||
|
||||
|
||||
--------
|
||||
|
||||
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
|
||||
|
||||
|
||||
+5
-8
@@ -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
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user