It's Pi all the way down...

by

See Also: The intro post which links to all the other flavour posts. Skip down here for the configurations used.

In this post, we’ll be looking at creating an Ubuntu Studio desktop with a cloud-init configuration, on a Raspberry Pi.

Ubuntu Studio

Originally, this was not a flavour I was planning to cover. After all Ubuntu Studio is intended for multimedia creation which is some of the heaviest-duty work you can put any computer through. However, I was also aware they’d recently switched to Plasma (from KDE) as a basis, and that meant Wayland was supported. After Kubuntu’s striking performance, I was intrigued to see how (or if!) it’d work on a Pi.

For Ubuntu Studio, the packages section in user-data contains an apparent multitude of packages:

packages:
  - ubuntustudio-desktop
  - ubuntustudio-audio
  - ubuntustudio-graphics
  - ubuntustudio-photography
  - ubuntustudio-video
  - ubuntustudio-publishing
  - ubuntu-raspi-settings-desktop
  - firefox

The various ubuntustudio-* packages other than ubuntustudio-desktop are all optional depending on what you want to use. For example, if you’re only interested in audio work, leave out the graphics, photography, video, and publishing meta-packages. I would recommend leaving out video because doing video-editing on a Pi is … “optimistic” to say the least. However, one oddity of Ubuntu Studio is that it does “assume” a certain set of installed packages in the default quick launcher. If you exclude certain meta-packages you may find a number of blank “?” icons in the quick launch bar because of “missing” applications. You can un-pin these items without consequence.

One other note on default applications: Ubuntu Studio typically ships with FreeShow (which seems to be a dead link at the time of writing) from the corresponding snap. Unfortunately we can’t include that here as it’s another snap that’s only built for amd64.

There’s plenty in these meta-packages that won’t work on a Pi even if it will install without complaint. For instance, OBS Studio and Blender both require a GPU with OpenGL 3.3 support (the Pi’s only supports up to 2.1). You can attempt to override this with MESA_GL_VERSION_OVERRIDE=3.3 in your environment, but don’t expect much in the way of performance (and also don’t be surprised if several things, like the surfaces in the Blender preview, don’t display at all, assuming you’re patient enough to wait for it to start).

That said, we should talk about the performance because, once again, we’re dealing with a Plasma desktop running under Wayland (assuming you selected the Wayland option on the login screen, which I highly recommend). And, once again, the performance (for a Pi) is great. Despite it being an environment replete with little UI animations, they all seem to play smoothly. The interface never feels laggy in responding to clicks or movements. Sure, there’s some delay when launching things but that’s not the desktop interface; that’s the SD card.

A screenshot of the Ubuntu Studio desktop. In contrast to Kubuntu, the application bar is at the top (reminiscent of Xubuntu). Next to the start menu button is a large array of quick-launch icons for myriad applications (Ardour, Krita, GIMP, kdenlive, etc.) and finally at the far right is the system tray. Below the top bar are a variety of Studio's more unique applications: MuseScore showing a few bars of the opening of Scott Joplin's The Entertainer, LMMS showing a (rather bad) recording of a few opening bars of Scott Joplin's The Entertainer, htop running in a terminal, a scribble in Krita that makes XKCD look like high art, and the KDE settings application atop everything showing a summary of the system's hardware.

In use Ubuntu Studio is a bit different. For starters, it was the only flavour here to correctly select the HDMI audio output by default. Perhaps this is something to do with the rather more complex audio stack? This is no more than a guess on my part, however.

Studio is by far the largest of the flavours here. With all the meta-packages included above it weighs in at a positively obese 17GB on the SD card, so don’t even think about trying this on anything less than a 32GB card (unless you leave out some meta-packages). Speaking of storage, the partitions on the SD card showed up as removable in the file browser (same as in Kubuntu).

As on Kubuntu, the terminal was the the typically excellent and feature-full Konsole, and the file-browser is again Dolphin. Still, it feels a bit churlish to look at my usual set of applications for Ubuntu Studio. No-one’s going to be installing Studio just to play music or fiddle with the terminal; it’s a flavour for creators. So I scoured the house for all the interesting gear I could find to plug in and see how things went …

First off, given we’re dealing with a novel display stack (Wayland), how about trying to colour-calibrate the monitor? I dug out my trusty old ColorHug2 and strapped it to the screen, fired up DisplayCAL and got to work. No issues generating the profile: hardware was recognized, the screen-saver was suppressed for the duration of calibration, and although the calculations took a while (it is a Pi), it was ultimately successful at generating a profile. Unfortunately, I couldn’t get the profile to install at the end of it (complaints about a timeout, though after a bit of digging I think there’s something else going on). Nor, for that matter, did the swapped-red-and-blue test profile appear to work, so there’s something else missing here. Oh well.

What about drawing? I helped myself to the ancient Wacom Intuos 3 tablet attached to my other half’s Mac Mini, fired up Krita and drew some bits that 6 year-old me would’ve been truly proud of. Ahem. Needless to say, the tablet Just Worked, including all the fun configuration options for optional hot-keys, pressure response curves and tool switching depending on the pen tip. I can’t say this is terribly surprising, though, as it’s always worked on every Linux system I’ve tried it on for the last 10 years or so.

How about music composition? I nicked my daughter’s Yamaha keyboarad, found the one remaining USB-B cable in the house (that wasn’t busy serving a UPS), and hooked it up as a MIDI source. After failing to figure out Ardour, I managed to rekindle some of my LMMS skills and, with some awkward fumbling around the sound output configuration, got it recording from (and playing back through) the keyboard. My formerly formidable piano skills have sadly bit-rotted over the last 30 years. But I still managed to record a passable rendition of the opening of Scott Joplin’s The Entertainer … treble only, at a positively sedate 45bpm, then the bass line on a separate track, then sped it all up to 70 to pretend I could still play.

On the publishing side of things I gave the excellent MuseScore a whirl, including the keyboard as MIDI input. It performed happily and I managed to crank out a vaguely acceptable score for the first bit of The Entertainer again [1]. Printing remotely worked happily, as did scanning (once I’d configured SANE to look on the right host for the scanner).

I gave the video editing and rendering bits a brief try, but they were pretty much as one would expect: basically unusable without much beefier hardware.

Finally, I tried out Scribus as well and was rather surprised to find it very “laggy” when dragging things out on the canvas. I pondered if it’s one of the applications currently suffering from Wayland transition issues and ran it instead with QT_QPA_PLATFORM=xcb and that largely fixed things. Still, I didn’t dig any further (as I’d already burned far too much time playing with this flavour).

But now for the burning question: what about the screen-saver?

It managed to lock the screen (no suspend), and then crashed. It didn’t crash back to the desktop (good marks for security), but also didn’t display a “here’s how to get out of this” message like Kubuntu. I managed to manually use the loginctl trick from Kubuntu to figure out an unlock from another console, but I can imagine an ordinary user resorting to the three-finger shuffle here. Ouch.

Verdict

This isn’t your regular flavour, and it’s certain overkill for many. But if you’re the creative type it may well be the flavour for you. Provided your expectations of the platform are reasonable (this is not the box for Blender, OBS Studio, or kdenlive) it’s useable for basic music creation, composition, writing or art.

Some things aren’t responsive in all circumstances (when drawing with a tablet you have to be a bit careful of what’s visible vs the complexity of the brushes), but with a bit of patience and effort it works! Studio also has a really nice menu detailing where to get further help, from documentation to community support.

It looks like there’s still some kinks to work out (particularly around the Wayland transition) but yet again I’m very impressed by a KDE-based flavour.

Configuration

For Ubuntu Studio, the configurations I used were as follows. For the boot configuration, highlighted lines are those changed from the lunar defaults:

config.txt

 1[all]
 2kernel=vmlinuz
 3cmdline=cmdline.txt
 4initramfs initrd.img followkernel
 5
 6[pi4]
 7max_framebuffers=2
 8arm_boost=1
 9
10[all]
11# Enable the audio output, I2C and SPI interfaces on the GPIO header. As these
12# parameters related to the base device-tree they must appear *before* any
13# other dtoverlay= specification
14dtparam=audio=on
15dtparam=i2c_arm=on
16dtparam=spi=on
17
18# Comment out the following line if the edges of the desktop appear outside
19# the edges of your display
20disable_overscan=1
21
22# If you have issues with audio, you may try uncommenting the following line
23# which forces the HDMI output into HDMI mode instead of DVI (which doesn't
24# support audio output)
25#hdmi_drive=2
26
27# Enable the serial pins
28#enable_uart=1
29
30# Autoload overlays for any recognized cameras or displays that are attached
31# to the CSI/DSI ports. Please note this is for libcamera support, *not* for
32# the legacy camera stack
33camera_auto_detect=1
34display_auto_detect=1
35
36# Config settings specific to arm64
37arm_64bit=1
38dtoverlay=dwc2
39
40[cm4]
41# Enable the USB2 outputs on the IO board (assuming your CM4 is plugged into
42# such a board)
43dtoverlay=dwc2,dr_mode=host
44
45[all]
46dtoverlay=vc4-kms-v3d

For the kernel command line, the entire file must consist of a single line of text so I would suggest simply copying this wholesale:

cmdline.txt

1zswap.enabled=1 zswap.zpool=z3fold zswap.compressor=zstd dwc_otg.lpm_enable=0 console=tty1 root=LABEL=writable rootfstype=ext4 rootwait fixrtc quiet splash

For the cloud-init configuration, the highlighted lines are those that you may wish to change after copying the content. As mentioned above, you may wish to trim the list of meta-packages highlighted:

user-data

 1#cloud-config
 2
 3hostname: studio-pi
 4
 5locale: en_GB.UTF-8
 6timezone: Europe/London
 7
 8keyboard:
 9  model: pc105
10  layout: gb
11
12user:
13  name: "dave"
14  lock_passwd: false
15  gecos: "Dave Jones"
16  plain_text_passwd: raspberry
17  sudo: "ALL=(ALL:ALL) ALL"
18
19ssh_import_id:
20  - lp:waveform
21
22apt:
23  sources:
24    mozillateam:
25      source: 'ppa:mozillateam/ppa'
26
27write_files:
28  - path: /etc/apt/preferences.d/firefox
29    content: |
30      Package: firefox*
31      Pin: release o=LP-PPA-mozillateam
32      Pin-Priority: 501
33
34      Package: firefox*
35      Pin: release o=Ubuntu
36      Pin-Priority: -1
37  - path: /home/dave/.profile
38    append: true
39    defer: true
40    content: |
41      export MOZ_ENABLE_WAYLAND=1
42
43package_update: true
44package_upgrade: true
45package_reboot_if_required: true
46
47packages:
48  - ubuntustudio-desktop
49  - ubuntustudio-audio
50  - ubuntustudio-graphics
51  - ubuntustudio-photography
52  - ubuntustudio-video
53  - ubuntustudio-publishing
54  - ubuntu-raspi-settings-desktop
55  - firefox

Finally, the networking configuration. I used Ethernet for my experiments, and given the number of packages that need installing I’d generally recommend that too. Please see the intro post for important information on adjusting the network configuration to Network Manager post installation:

network-config

1network:
2  version: 2
3  ethernets:
4    eth0:
5      dhcp4: true
6      optional: true

[1]Hang on, if you’re so gung-ho about hating WYSIWYG, shouldn’t you be using LilyPond here? Yes, but that’s not part of the Ubuntu Studio audio seed :)