Saturday, August 9, 2025

3D-Printed Pedalboard - GP-5 Edition


About two years ago, I built myself a 3D-printed guitar pedalboard. It’s been my trusty sidekick ever since—living in my home studio, joining me at band practice, and rocking out with me on stage. For a while, I was over the moon with it… until I wasn’t.

https://blog.rossbrigoli.com/2023/07/3d-printed-custom-guitar-pedal-board.html

The problem? The very thing that made it great—its super clean, easy-to-use interface—came at the cost of versatility. I could only get so many sounds out of it.

Now, I’ve never been a fan of those tiny LCD screens you see on most guitar pedals. They’re fine if you’re sitting down and squinting, but useless when you’re standing up in the middle of a gig trying to see which patch you’re on. So I based my pedalboard’s interface on the Mooer Preamp Live, where a quick glance at the halo-colored LED rings around the buttons tells me exactly which patch is active. No squinting, no guessing—just pure, stress-free rock and roll.


Enter the $80 Game-Changer

A few weeks ago, I stumbled across a YouTube review from Andertons about the Valeton GP-5—a cheap multi-effect guitar pedal that supposedly sounds way better than its $80 price tag suggests. Naturally, I had to try it.

Spoiler alert: it sounds great.

And once I got my hands on it, I discovered a few nifty technical features I didn’t even know it had:

  1. A rock-solid tuner – surprisingly accurate and reliable.

  2. Smart Bluetooth setup – the app connects via Bluetooth radio, but not over standard Bluetooth protocol, which means the Bluetooth audio channel stays free for other devices.

  3. Bluetooth audio playback – you can use one device to edit patches and another to stream audio at the same time. A perfect setup for playing backing tracks over bluetooth.

  4. Direct Injection – the output supports both mic and line level, so you can plug into an amp, headphones, or even straight into a mixer without a DI box.

  5. Stereo output – I only discovered this when I plugged in headphones, slapped on a ping-pong delay, and had the echoes bouncing between my ears. Total surprise, totally awesome.

In short, it’s almost a complete standalone multi-effect pedal. The only real downsides? You can’t control the virtual Wah with an expression pedal (I hope a future firmware update will allow this), it has only one button and a very tiny LCD screen. But for the price of a decent tuner? Absolutely mind-blowing for the price.


Design Considerations – Why I Didn’t Just Buy a GP-200

After learning all those neat facts about the GP-5, I couldn’t help myself—I had to build a new 3D-printed pedalboard with the GP-5 as the brains.

At first, I thought I’d just slap an old Android phone I had lying around on there as the main interface for editing patches. But the phone’s screen wasn’t big enough, and a full tablet was too big. That’s when the idea hit me: I’ll build my own custom Android “tablet” specifically for this pedalboard.

When I posted about this in a GP-5 Facebook group, people immediately asked, “Why not just buy a GP-200?”
Fair question. I asked myself the same thing for a week before committing to the build. Here’s why I went the DIY route:

  • No multi-effect pedal under $200 has a “big enough” screen for my liking. If I’m going to have an LCD display on my pedalboard, I want it big.

  • Phone and tablet screen's aspect ratios (dimensions) look weird on a pedalboard. They’re designed to be held by hands, not for something that lays flat on the floor.

  • Off-the-shelf devices are full of stuff I don’t need—cameras, GPS, batteries, and a ton of bloatware. Plus, let’s be honest, they’re probably spying on you.

  • Phones limit customization. You can’t turn off security prompts, you can’t keep the screen on forever, and you’re stuck with whatever restrictions the OS imposes.

  • Modularity matters. With a single integrated multi-effect pedal, you can’t upgrade individual components. With a “hackable” pedalboard, I can swap parts just like I would on a traditional analog pedal board—new GP-5 (or GP-6 someday), bigger screen, upgraded wah, extra buttons… no problem.

So that’s the plan: a custom-built, modular, 3D-printed pedalboard where every component can be swapped or upgraded without breaking the bank. The GP-5 just happens to be the heart of this version.

If you want to build this yourself or if you are interested to know how it's built, continue reading.


Bill of Materials

I sourced the following materials mostly from AliExpress except for the Odroid which you can only buy through their own online store.
You can also use a power bank instead of USB Power Supply.


Building the Android Single-board Computer

The Odroid M1S android device is not physically connected to the GP-5. It connect over bluetooth radio just like how your phone connects. This device has a built-in EMMC storage, therefore you do not need a microSD card.

Here's what I followed:

1. I learned more about the Odroid M1S in the following video.
2. I plugged in the Wifi dongle to one of the USB ports. The board does not have a built-in wifi and bluetooth.
3. I connected the device to a monitor via HDMI and plugged it to the included power supply and to the mains.
4. To install Android, I just followed the instructions on first boot. When prompted for OS selection, choose Android. This should install Android OS to the device and will reboot automatically when it;s done.



Installing the Valeton Suite App

The OS on Odroid is a minimal version of Android. It is rooted and it does not have an App Store. To install the Valeton Suite app from a downloaded zip file, you're gonna need an app that can extract zip files.

F-Droid is an open-source appstore for Android. I use F-Droid app store to find and install an app that can extract zip files by following these steps.

  1. Using the Lightning browser, navigate to https://f-droid.org/en/
  2. Download the APK file and install it
  3. Start the F-Droid app
  4. Search for an app called "ZipExtract FD"
  5. Install It!

Now that you have an app the can extract zip files, you can then install the Valeton Suite app.

  1. Using the Lightning browser, navigate to https://www.valeton.net/software/#138-170-wpfd-android
  2. Download the Valeton Suite app
  3. Extract the downloaded zip file
  4. Install the APK file

Setting the orientation of the screen to Landscape.

Now that you have the OS installed and the Valeton Suite installed, you can unplug your monitor and plug the LCD touch screen instead.

The LCD display defaults to a Portrait orientation, so you need to configure the OS to display in Landscape mode.

To do this,
  1. Launch the "Odroid Settings" app
  2. Navigate to Device Preferences > Display > HDMI > Advance Settings
  3. Set the rotation to 90
  4. Enable the Fixed rotation, this will set the default orientation to Landscape.


The next step is to make the Valeton Suite app automatically start on boot.

To do this,
  1. Launch the "Odroid Settings" app
  2. Navigate to Kiosk
  3. Set the KiosK mode to ON
  4. In the Start Application field, point it to the Valeton Suite app
  5. Reboot Odroid


Valeton Suite app will now automatically launch every time Odroid starts.

There are several customizations you can do to make the screen look better. You can adjust the brightness, you can change the font size and the screen size to make it fit better to the screen.


Configuring Chocolate Plus


To control the GP-5 from the Chocolate foot switches, I followed the instructions in this video. 



Once you are happy with the chocolate plus configuration, you can then wire them up together to test all connectivities.


The Pedal Board


After testing all functionalities, I then went ahead and started designing the Pedal board in Adobe Fusion. I first created a model of all the components that will go into the pedal board. Then arranged it in a desired orientation, then design the pedal board around it.










Because of the size of the whole pedal board design, it will not fit in most 3D-printers, so I split them in two 2 parts. The two parts are held together by the screen and the Chocolate plus, with velcro.

One thing to note, the Pedal Power power supply, is attached to the bottom of the Chocolate plus using mounting tape/Gorilla tape.

Finally, here's the final result.






If you wish to 3D print the same design, feel free to download the STL file from https://www.thingiverse.com/thing:7112821

Enjoy!








Saturday, July 15, 2023

3D-Printed Custom Guitar Pedal Board


Custom Pedalboard Design on Fusion 360

While finding my way back to playing electric guitar, I found myself buying a bunch of guitar pedals. After having collected a few, it started making a mess on my desktop, and it was time to get a pedalboard. The plan was to make a pedalboard as compact as possible so that I could use it on the floor but also fits and looks nice on top of my desk. Here's what it looked like on my desk without a pedal board. Look how messy the cables are.


I also bought 2 more pedals to complete all of the guitar usual guitar effects that most guitarists need and there I obviously no more space for those 2 more on my desktop.

I couldn't find the right pedal board that I was looking for, from browsing the internet. They are either too big or too small and usually not the right shape. So I decided to design my own.

I spent a night designing the pedal. It was designed to exactly fit the pedals I have so that no space is wasted. The design has to consider the spacing of the pedal to make room for the audio cables, TRS plugs, and power supply plugs. I created 4 different pedal layouts before I settled on the final one. 

The first thing I did was model the boxes that serve as the placeholder for each pedal, arrange the pedal to my desired layout, and then design the pedal board around it.



I then set the opacity of these pedal placeholders to 30% and designed the pedal around it.


I then hid the placeholders and divided the object into smaller pieces that could fit inside my 3d printer bed. Et voila!


The 3D printing took almost 3 days, printing around 20 hours a day. Here are some photos of the 3D printing moments.





The pedals, as usual, are attached using velcro tapes. The cabling was done using a Solderless Guitar Patch cable to get a clean-looking cabling. You can get it from Amazon, link below.

Solderless Guitar Patch Cables Set


The whole board is powered through USB using a USB to 9V buck converter so it can be powered by a regular power bank.

USB Buck Converter from Amazon



Here is the final outcome of the project with the pedals attached and the cabling done.




Look how it fits nicely on my desk now!


One thing I forgot to add to the design was a handle. Right now it's not easy to pick up the board from the floor without wiggling your finger under it.

If you have the same sets of pedals, you can 3D print this pedal board as well. I published the STL files on ThingiVerse under a Creative Commons license. Because the design was split into multiple parts, you can change different parts of the pedal board without having to reprint the entire thing.

Here are the pedals I used and feel free to build yours.

I don't usually use guitar amps. You can plug the mooer preamp live to the Return input of any amp and turn off the cab simulator. In this setup, you have all the controls on the Preamp-live and you are only using the power amp section of your amp. This ensures your pedal setup will sound more or less the same regardless of which amp you use or which studio you playing in.

Or you can plug the XLR output of the Mooer pre-amp live directly into a mixer or an audio interface. 

Happy 3D printing!

Monday, April 3, 2023

Installing OpenShift on Any Infrastructure





As of this writing, Assisted Installer is the easiest way to install an OpenShift cluster on a custom/bespoke infrastructure. You do not need to manually deal with ignition files or manually configure the OpenShift installer. You do not even need to manually set up a bootstrap node.

In this post, I will walk you through how to create an OpenShift cluster using Assisted Installer on a bespoke infrastructure. To host VMs, I am using Proxmox VE, a lightweight open-source virtualization product. However, similar steps should also apply to other hypervisor products. If you want to know how to install Proxmox, see my previous post at https://blog.rossbrigoli.com/2020/10/running-openshift-at-home-part-34.html

First, we need to set up the infrastructure. We need to create VMs and then do the following steps to configure our infrastructure.

  • Create and configure a DNS server
  • Configure the DHCP server of our router
  • Create and configure an HAProxy load balancer

We will run the supporting services in a dedicated VM called openshift-services.

The first step is to create a VM that will host all of the services required by the cluster.


Creating the Virtual Machines


1. Download the CentOS Stream image from https://www.centos.org/centos-stream/ and upload it to Proxmox. You may also let Proxmox download the image directly from a URL.

Download the correct architecture that matches your VM host. In my case, my VMs have x86_64 CPUs.

Upload the image to the Proxmox's local storage as shown below.




2. Create a VM in Proxmox and name it "openshift-services".


3. Use the CentOS Stream ISO file as the DVD image to boot from.



4. Choose the disk size. 100GB should be enough but you can make it bigger as well. You don't need a lot of resources for this VM as well as it is only doing DNS name resolution and load balancing. So you can use 2 CPUs (or less) and 4GB of RAM.


5. Review the configuration and create the VM.




6. Start the VM and follow the CentOS Stream installer instructions. Then wait for the installation to complete.



7. While waiting for the installation to finish, create the cluster from Red Hat Hybrid Console. Navigate to https://console.redhat.com > OpenShift, then click "Create Cluster". 

If you don't have a Red Hat account yet, feel free to register for a Red Hat account, it's free.



8. Because we want to install OpenShift in our bespoke infrastructure, we need to choose the "Run it yourself" option and then the Platform Agnostic.


9. You will be presented with 3 installation options. Let's use the recommended option, Interactive, which is the easiest one. 




10. Fill up the details according to the domain and cluster name you choose. 

Take note that the cluster name will become part of the base domain of the resulting cluster. Also take note of the domain name, because you are gonna need to configure the DNS server to resolve this domain name to the load balancer.

For example:

Cluster name = mycluster
Cluster base domain = mydomain.com

The resulting base domain of the cluster will be mycluster.mydomain.com

My plan is to let the VMs get their IP Addresses from my router through DHCP, so I am selecting DHCP option for host's network configuration as shown below.




11. On the next page, there are optional operators that you can install. I don't need them for this installation so I will not select any.


12. On the third page, this is where you define the hosts/node. Click the Add Host button. You may also paste your SSH public key here so that you can SSH to the nodes for debugging later. Once all set, then click the Generate Discovery ISO. This will generate an ISO image.



13. Wait for the ISO to be generated, then download it. This will be the image that you will use to boot the VMs.



14. While waiting for the ISO to be downloaded, revisit the CentOS Stream installation on the openshift-services VM. By this time, the installation should have been completed and you just need to reboot the system.


15. Once the OpenShift Discovery ISO is downloaded, upload it to Proxmox local disk so that we can use it as the bootable installer for our VMs.


16. Once uploaded, let's start creating the VMs for our OpenShift cluster. We will be creating a total of 5 VMs, 3 for master nodes and 2 for worker nodes. You can choose to create more worker nodes as you wish.

Prepare the VMs according to the spec below.

Both Master and Worker Nodes: 

CPU: 8
Memory: 16 GB
Disk: 250 GB



Use the ISO image you downloaded as the image for the DVD drive. In the above screenshot, it is the value of the ide2 field.


17. After creating the VMs, do not start the VMs yet as we still need to install the supporting services in the openshift-services VM. Your list of VM should look something like the screenshot below.



18. Using your router's built-in DHCP server, assign IP addresses to your VMs through the address reservation feature. This requires mapping MAC Addresses to IP Addresses. Do this before starting the VMs. Here is an example mapping I used in my router setup. I used x.x.x.210 as the IP address of the openshift-services. It is important to take note of this address because this will be the load balancer IP and DNS server IP. 




DNS Server


19. Now let's install and configure a DNS Server in openshift-services VM. You need to SSH to the openshift-services VM.

OpenShift cluster requires a DNS server. We will use the openshift-services as the DNS server by installing Bind (a.k.a. named) to it.

Bind can be installed by running the following command inside openshift-service VM.

dnf install -y bind bind-utils

After installing, run the following command to enable, start and validate the status of named service.

systemctl enable named
systemctl start named
systemctl status named

Once we validated the installation, we need to configure the named service according to the IP addresses and DNS name mapping that we want to use for our worker nodes.


20. Configure the DNS Server so that the names will resolve to the IP addresses that we configured in the router's DHCP address reservation (step 9). I have prepared a named configuration for this setup which is available in GitHub at https://github.com/rossbrigoli/okd4_files. So let's get these files and configure our DNS server. Note that you can choose to use your own DNS server configuration.

git clone https://github.com/rossbrigoli/okd4_files.git


21. I have prepared a script that will edit the files according to the chosen cluster name and base domain name. These should be the same names as the ones you have chosen when downloading the OpenShift image from the Red Hat Hybrid console. In the same directory, run the setdomain.sh script.

cd okd4_files
./setdomain.sh mycluster mydomain.com

This script will edit the named configuration files in place.


22. Copy the named config files to the correct location. Ensure that the named service is running after the restart.

sudo cp named.conf /etc/named.conf
sudo cp named.conf.local /etc/named/
sudo mkdir /etc/named/zones
sudo cp db* /etc/named/zones
sudo systemctl restart named
sudo firewall-cmd --permanent --add-port=53/udp
sudo firewall-cmd --reload
sudo systemctl status named



23 . Now that we have a DNS name server running. We need to configure the router to use this as the primary DNS server so that all the DHCP clients (all VMs) will get configured with this DNS server as well. Depending on your router, the process of changing the primary DNS server may be a little different. Here's how it looks in mine.




24. Reboot the openshift-services VM, at the next boot it should get the new primary DNS from DHCP server. Run the following command to check if you can resolve DNS names.

nslookup okd4-compute-1.mycluster.mydomain.com

If you followed my DHCP address reservation configuration and DNS configuration, you should get a response with the IP address 192.168.1.1.204.


Load Balancer



The other thing we need to do is that we need to route the incoming traffic to the OpenShift nodes using the HA proxy load balancer. OpenShift is also using HA Proxy internally.



25. On openshift-services VM, install HAProxy by running the following command.

dnf install -y haproxy



26. Copy the haproxy config files from the okd4_files directory we got from git earlier and then restart the service. Normally you would use a separate load balancer for control-plane traffic and the workload traffic. However, for simplicity, in this example, we are using the same load balancer for both traffics.

cd 
sudo cp okd4_files/haproxy.cfg /etc/haproxy/haproxy.cfg
sudo setsebool -P haproxy_connect_any 1
sudo systemctl enable haproxy
sudo systemctl start haproxy
sudo systemctl status haproxy



27. Open up firewall ports so that HA Proxy can accept connections.

sudo firewall-cmd --permanent --add-port=6443/tcp
sudo firewall-cmd --permanent --add-port=22623/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload



28. Now that we have a load balancer pointing to the correct IP Addresses, start all the VMs



29. After starting the VMs, go back to Red Hat Hybrid Cloud Console https://console.redhat.com. In the cluster that you created earlier, the VM/hosts should start coming up in the list as shown below.




30. You can then start assigning roles to these nodes. I assigned 3 of the nodes as control-plane nodes (masters) and 2 of the nodes as compute (worker) nodes. You can do this by clicking the values under the role column.



31. Click the Next buttons until you reach the Networking options page. Because we manually configured our load balancer and DNS server, we can select the User-Managed Networking option as shown below.




32. On the Review and Create page, click Install Cluster. This will start the installation of OpenShift to your VMs. You will be taken to the installation progress page, and from here, it's a waiting game.




This process will take around ~40 minutes to an hour depending on the performance of your servers. During the course of installation, the VMs will reboot several times.

There may be errors along the way but they will self-heal. If you find a pod that is stuck, you can also delete it to help the installation heal faster.


Post Installation



Once the Cluster installation is complete. Ensure that your computer can resolve the base domain you used to the IP address of the openshift-services so that you can access the cluster's web console and the Kubernetes APIs through the CLI. 

You need to configure the following host mapping.

mycluster.mydomain.com should resolve to 192.168.1.210
*.mycluster.mydomain.com should resolve to 192.168.1.210
api.mycluster.mydomain.com should resolve to 192.168.1.210

You can add this in your /etc/hosts file or change the primary DNS server of your client computer to the IP address of openshift-services, 192.168.1.210, where the DNS server is running. On a Windows machine, the hosts file is in C:/Windows/System32/etc.

If everything is set correctly, you should be able to navigate to OpenShift's web console at https://console-openshift-console.apps.<clustername>.<base domain name>, for example, https://console-openshift-console.apps.mycluster.mydomain.com.

Alternatively, you can visit https://console.redhat.com, navigate to OpenShift menu, and select the cluster you just created. Then click the Open console button.



OpenShift CLI



At this point, you won't be able to log in to the web console because you do not have the kubeadmin user's password and have not created any other user yet. However, you can access the cluster from the CLI by using the kubeconfig file you downloaded earlier. 

To access the cluster, we will need to install the OpenShift Client called oc.


33. Download the oc client from the red hat console. Go to https://console.redhat.com/openshift/downloads and download the OpenShift command-line interface (oc) that matches your client computer's OS type and architecture.


34. After downloading, extract the tar file and copy kubectl and oc to an executable path. I am using Mac OS, so the following command lines work for me after downloading the tar file.

tar -xvzf ~/Downloads/openshift-client-mac.tar.gz
cp ~/Downloads/openshift-client-mac/oc /usr/local/bin
cp ~/Downloads/openshift-client-mac/kubectl /usr/local/bin

On MacOS, you might be prompted to allow this app to access the system directories. You need to grant it permission for it to work properly.


35. In the Red Hat Hybrid Cloud Console, download the kubeconfig file, this holds a certificate to authenticate to your OpenShift cluster's API. Navigate to Clusters > your cluster name > Download kubeconfig.


This will download a kubeconfig file. Now to access your cluster you need to set an environment variable KUBECONFIG with a value which is a path pointing to this kubeconfig file. The below example command works on Mac OS.

cp ~/Downloads/kubeconfig-noingress ~/
export KUBECONFIG=~/kubeconfig-noingress

36. To confirm if you can access the cluster run the following oc command.

oc get nodes

This will list down all the nodes of your newly created OpenShift cluster.

Note: Even before the installation is 100% complete. You can start accessing the cluster. This is useful to see the progress of installation. For example, you can run the following command to check on the status of the Cluster Operators.

oc get co

If the installation goes well, you should see the following results. All operators should be Available=True.


Note: if you see errors in one or more Cluster Operator status, you can try to delete the pods of those operator, this will trigger self healing and help to un-stuck the installation process.


37. At the end of the installation, you will be prompted with the kubeadmin password. Copy this password and use it to access the OpenShift Console.

Using the username kubeadmin and the password you copied from the installation page of the Red Hat's Hybrid Cloud Console, you should be able to login to your OpenShift cluster.


Voila! Congratulations! You have just created a brand new OpenShift cluster.


There are also post-installation steps that need to be done such as configuring the internal image registry and adding an identity provider to get rid of the temporary kubeadmin login credentials. I will not cover this in this post because this is very well documented in the Openshift Documentation.




Popular