[Beta] Patchbox OS Bookworm ARM64 2024-04-04

Hey guys! Patchbox OS has been updated to be based on the Bookworm ARM64 Debian release!

We invite you to give it a spin and let us know how it goes!

News

  • From now on, we’re supporting only the arm64 version of the OS. (all of the software we publish on our APT server is still available for use on armhf based systems)
  • All software updated to the latest versions available.
  • amidiauto deprecated in favor of @mzero’s amidiminder, which performs the same functions, but better, and including the possibility to specify the Port Index of a multi port device. The connection rules are defined in /etc/amidiminder.rules.
  • startx is no longer supported. To get GUI, change the boot mode via patchboxboot and restart the system. This is because the new Wayland does not have an equivalent command.

Kernel

By default, it comes with a regular kernel. You may switch to a real-time one through patchboxkernel menu. The reason for using the regular one by default is that the real time kernel build we created currently does not boot on Pi Zero, Pi 2, Pi 3 (including B+). The real-time kernel does work with Pi 4 and Pi 5, and probably Pi Zero 2W (we don’t have a Zero 2W, if someone could try that, let us know the outcome)

Known Issues

  • Supercollider crashes on its own, soon after it is started.
  • Realtime kernel fails to boot on Pi’s <= 3B+

If anyone knows a workable solution for any of the issues, please let us know.

Downloads

  • Direct download
  • SHA-256: 0940ce5731c3d1a5b644742ef9a79870b9d79d0ea6ba45ede7cbe020fc055a98

Docs

Default Passwords

User name patch
Password blokaslabs
WiFi SSID patchbox
WiFi password blokaslabs

Please change your user password while going through the wizard, for security. :wink:

The WiFi hotspot is on by default.

6 Likes

Exciting news!

Does this also include updating MODEP to 64 bit?

1 Like

Yes, MODEP is available as a Patchbox Module, just like it used to. :slight_smile:

2 Likes

yes!! we finally made it the next level

2 Likes

Hi! Thanks a lot! Is it possible to update from 32 bit version without performing a fresh install?

Great to see this! I’ve got Patchbox OS running on an RPi 5 – MODEP and Orac run great, and audio is working in Pure Data when I run patches over VNC. But for some reason the Pure Data “module” doesn’t activate: I get this error message:

patch@patchbox:~ $ patchbox module activate puredata
Service: pisound-ctl.service enabled
Service: pisound-ctl.service started
Service: touchosc2midi.service enabled
Service: touchosc2midi.service started
/etc/amidiminder.rules -> None
Traceback (most recent call last):
  File "/usr/bin/patchbox", line 33, in <module>
    sys.exit(load_entry_point('patchbox-cli==1.4.0', 'console_scripts', 'patchbox')())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/patchbox/modules/module/cli.py", line 136, in activate
    ctx.obj.activate(module, autolaunch=False, autoinstall=autoinstall)
  File "/usr/lib/python3/dist-packages/patchbox/module.py", line 646, in activate
    self._activate_module(module, update_env)
  File "/usr/lib/python3/dist-packages/patchbox/module.py", line 662, in _activate_module
    self._service_manager.enable_start_unit(service)
  File "/usr/lib/python3/dist-packages/patchbox/service.py", line 123, in enable_start_unit
    if get_handler_for_service(pservice).handle_activate(pservice):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/patchbox/service.py", line 43, in handle_activate
    return PatchboxSymbolicLinkConfHandler.update_symlink(service.environ_value, self.conf_file)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/patchbox/service.py", line 38, in update_symlink
    symlink(src, dst)
TypeError: symlink: src should be string, bytes or os.PathLike, not NoneType

at least the newer os images boot for /boot/firmware/ on rpi4 and rpi5 instead of /boot/ like it used to, maybe that could be the reason for the rt kernel not booting.

How do I disable services on Patchbox? I dont use touchosc and the touchosc service seems create xruns and high processor load (the load drops by approx 15% after I stop the touchosc service), this might be due to the fact that I dont use a pisound but a hifiberry instead. Any way after disabling touchosc and a couple of other unnecessary services, patchbox os works great with my setup. Unfortunately the services dont stay disabled between boots. How can I disable the services in a way that is persistent between boots?

Okay, just got the new image installed and here’s a few things I’ve run into:

  • The update button indicates there’s an update from 1.13.0-1 to 1.13.0-2. I click “Okay” to update and it comes back with “Oops, something went wrong”.
  • I copied my user-files, lv2-presets and pedalboards from my old setup and uploaded to the new. Since I don’t have all the plugins installed the pedalboards are listed with a “broken” symbol. Once I add the missing plugins the pedalboard will load but if you try and load a pedalboard with missing plugins there’s a status message that says “Loading bundle…” then eventually it disconnects. A refresh shows the pedalboard interface again with no change. I’m guessing “Loading bundle…” is trying to load plugins from MOD’s site?
  • The “Switchbox 1-2” plugin is not displayed in the Patchstorage interface, even though it has a rpi-aarch64 build available.
  • Putting the x42 Tuna on a pedalboard makes the CPU usage jump to 100%
  • Adding the AdiaX (and some other plugins, don’t have a complete list yet) causes the CPU usage to jump to over 90% (see attached screenshot)

    In addition the Xruns start to climb quickly. I also switched to the RT kernel and it does the same thing. Even the default pedalboard with nothing on it seems to “swell” with CPU usage.

Also, when copying user-files, lv2-presets and pedalboards back onto the new version, should those be “owned” by modep or patch? And should the group have write access to all those files?

Those of you wanting to try the new version take my advice and get yourself a new SD card and start from scratch. That’s what I did so I could just roll back to the 32 bit version.

1 Like

sudo systemctl disable touchosc2midi will prevent the service from restarting across power cycles. To re-enable it, you use systemctl enable. If you need the service but don’t want to re-enable it, you can use systemctl start; it won’t run again on the next power cycle.

Obviously I’ve tried using systemclt disable, its not persistent between boots.

Hello here !

I update the Patchbox OS, and it’s look all good, but there is some little things :

  • the pisound app still can’t see the pisound, it’s turning and turning. But the pairing was really good, no need to mess around, and the phone is saying “connect for the sound and the call” (before it was just for the sound)
  • the web client for ORAC is not working at all : the browser can’t find the adress. I try to downgrade python-socketio with pip3 install python-socketio==4.6.1, but no success.

So if somedody can help to make working the pisound app or the web client for orac it would be perfect. At least i can go back to the old patchbox OS to have the web client.

Thanks for reading and thanks to the blokas team to continue improving this really nice gear !!

1 Like

It is not possible to upgrade without a fresh install. This upgrade path is also not supported by Raspberry Pi OS.

@alo.bu, what is the output of this command?

file /etc/pisound.conf

This is not it, the kernel for Pi 3 starts booting, but gets stuck in some Pi 3 specific USB driver which possibly does some blocking operation in an interrupt handler which is not allowed in RT mode, the same patch that worked for an earlier kernel does not solve the issue, so more investigation and fixing is necessary.

If anyone gets the RT kernel working on Pi 3, let us know. The build scripts for the kernel are here and here. The general Debian documentation on packaging and building the kernel is applicable, as well as looking through the documentation on Debian kernel team / linux · GitLab.

Try sudo systemctl mask touchosc2midi.service

Could you please create dedicated new topics for both issues and we’ll troubleshoot step by step.

Either, as long as group access is enabled.

What is the Jack settings you’re using? Do the CPU spikes happen if you use a larger buffer?

Are you running original 32 bit MODEP and the new one on the same Pi? Which model?

@Giedrius: Here’s the output of the command you suggested:

patch@patchbox:~ $ file /etc/pisound.conf
/etc/pisound.conf: symbolic link to /usr/local/etc/pisound.conf

If I cat the file I get this output:

patch@patchbox:~ $ cat /etc/pisound.conf
DOWN              /usr/local/pisound/scripts/pisound-btn/system/down.sh
UP                /usr/local/pisound/scripts/pisound-btn/system/up.sh

CLICK_1           /usr/local/pisound/scripts/pisound-btn/start_puredata.sh
CLICK_2           /usr/local/pisound/scripts/pisound-btn/stop_puredata.sh
CLICK_3           /usr/local/pisound/scripts/pisound-btn/do_nothing.sh
CLICK_OTHER       /usr/local/pisound/scripts/pisound-btn/do_nothing.sh

CLICK_COUNT_LIMIT 8

HOLD_1S           /usr/local/pisound/scripts/pisound-btn/toggle_bt_discoverable.sh
HOLD_3S           /usr/local/pisound/scripts/pisound-btn/toggle_wifi_hotspot.sh
HOLD_5S           /usr/local/pisound/scripts/pisound-btn/shutdown.sh
HOLD_OTHER        /usr/local/pisound/scripts/pisound-btn/do_nothing.sh

Maybe it’s worth mentioning I’m not using the Pisound hardware: I’m just running an RPi 5 with a USB audio interface.

where is the kernel menu?

type patchbox in commandline mode and it must appear among boot/jack/wifi/button…sorta.

if not, explain us what you see.

I have the same problem with a Pi 400 and a USB sound card. Have you solved it?