<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>It's Pi all the way down... - hirsute</title><link href="https://waldorf.waveform.org.uk/" rel="alternate"></link><link href="https://waldorf.waveform.org.uk/feeds/hirsute.atom.xml" rel="self"></link><id>https://waldorf.waveform.org.uk/</id><updated>2023-08-01T17:02:11+01:00</updated><entry><title>6 Months with the Pi Desktop</title><link href="https://waldorf.waveform.org.uk/2021/6-months-with-the-pi-desktop.html" rel="alternate"></link><published>2021-04-17T00:00:00+01:00</published><updated>2022-09-06T13:27:19+01:00</updated><author><name>Dave Jones</name></author><id>tag:waldorf.waveform.org.uk,2021-04-17:/2021/6-months-with-the-pi-desktop.html</id><summary type="html">&lt;p class="first last"&gt;A run-down of using a Pi as my only desktop for an entire release&amp;nbsp;cycle&lt;/p&gt;
</summary><content type="html">&lt;p&gt;&lt;strong&gt;See Also&lt;/strong&gt;: A look at the &lt;a class="reference external" href="https://waldorf.waveform.org.uk/2022/making-jammy-less-dodgy.html"&gt;Jammy desktop image&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In a deep movie trailer voice: &amp;#8220;&lt;a class="reference external" href="https://waldorf.waveform.org.uk/2020/a-week-with-the-pi-desktop.html"&gt;Previously on Dave&amp;#8217;s blog&lt;/a&gt;&amp;#8220;… &amp;#8220;Oh no! My &lt;span class="caps"&gt;PC&lt;/span&gt; is
no more! Whatever shall I do?!&amp;#8221; &amp;#8220;Oooh, a Pi 400&amp;nbsp;…&amp;#8221;&lt;/p&gt;
&lt;p&gt;Well, it&amp;#8217;s been about 6 months since I started &lt;a class="reference external" href="https://en.wikipedia.org/wiki/Eating_your_own_dog_food"&gt;dog-fooding&lt;/a&gt; the Ubuntu
desktop on a Raspberry Pi (and since I last managed to write a blog post …
ahem). I&amp;#8217;d originally intended to go back to using a big, fat, Watt-guzzling &lt;span class="caps"&gt;PC&lt;/span&gt;
as my main development machine at some point in this cycle. However, a
combination of global silicon shortages (if the damned crypto-miners could let
me buy a single decent graphics card that&amp;#8217;d be … nice?), and some major
improvements in the Pi desktop meant I wound up spending the &lt;em&gt;entire&lt;/em&gt; hirsute
cycle using the little Pi 400 as my primary&amp;nbsp;desktop.&lt;/p&gt;
&lt;div class="section" id="the-hippopotamus-in-the-room"&gt;
&lt;h2&gt;The Hippopotamus in the&amp;nbsp;Room&lt;/h2&gt;
&lt;p&gt;The biggest issue with this, as discussed in the previous installment, was
video playback. We didn&amp;#8217;t have video acceleration on the Ubuntu Desktop for Pi
and this meant that, at the start of the hirsute development cycle, I still had
to resort to my little laptop (a tiny Celeron powered thing) for video
conferencing. However, at some point (a couple of months ago? I forget the
precise timing as all sorts of work-arounds have been required at one stage or
another) things came together, the planets aligned, the Gods of the Desktop
smiled upon their lowly worshippers and Wayland+&lt;span class="caps"&gt;KMS&lt;/span&gt; started&amp;nbsp;working.&lt;/p&gt;
&lt;p&gt;Suddenly … things got &lt;em&gt;much&lt;/em&gt;&amp;nbsp;better.&lt;/p&gt;
&lt;p&gt;For the past several weeks I&amp;#8217;ve been using my little Pi 400 as my &lt;em&gt;sole&lt;/em&gt;
desktop. The laptop has been ditched entirely. &lt;span class="caps"&gt;HD&lt;/span&gt; YouTube playback works
happily. Video conferencing over Google Meet works perfectly (no Zoom, but
that&amp;#8217;s because there&amp;#8217;s no &lt;span class="caps"&gt;ARM&lt;/span&gt; builds of the client, ho hum), and the desktop
generally feels responsive and&amp;nbsp;slick.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s definitely &lt;a class="reference external" href="https://bugs.launchpad.net/ubuntu/+source/mutter/+bug/1924251"&gt;a few kinks&lt;/a&gt; still to work out, but nothing show-stopping
that&amp;#8217;s made me dig the laptop out of storage or prevented me from Getting
Stuff&amp;nbsp;Done.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="making-hippos-fly"&gt;
&lt;h2&gt;Making Hippos&amp;nbsp;Fly&lt;/h2&gt;
&lt;img alt="A Pi 400 in front of a simple HDMI monitor with a Logitech C920 webcam attached, and a USB3 SSD resting on the base, surrounded by the typical junk on Dave's desk (myriad cables, a solder station, a spare keyboard for testing, random SD cards)" src="https://waldorf.waveform.org.uk/images/hairy-pi.jpg" /&gt;
&lt;p&gt;Above is a shot of my little desktop setup. Some optimizations to&amp;nbsp;note:&lt;/p&gt;
&lt;ol class="arabic"&gt;
&lt;li&gt;&lt;p class="first"&gt;I don&amp;#8217;t have a fancy monitor. It&amp;#8217;s bog-standard old 1080p &lt;span class="caps"&gt;HDMI&lt;/span&gt; thing.
Personally, I can&amp;#8217;t tell the difference between 1080p and 4K without
squinting through my glasses anyway, but from a performance perspective
having a 1080p monitor means no scaling is required to make the desktop
readable. 200% scaling is fast under Gnome, but the result is frankly too
big for my liking, and fractional scaling causes a noticeable performance
hit. Choose your screen&amp;nbsp;wisely!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Use the &lt;span class="caps"&gt;HDMI0&lt;/span&gt; port. On the Pi 4, it&amp;#8217;s next to the &lt;span class="caps"&gt;USB&lt;/span&gt;-C power port. On the
Pi 400, it&amp;#8217;s the one next to the &lt;span class="caps"&gt;SD&lt;/span&gt; card slot. In certain configurations,
audio playback through &lt;span class="caps"&gt;HDMI&lt;/span&gt; only works from &lt;span class="caps"&gt;HDMI0&lt;/span&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;It&amp;#8217;s booting off an &lt;span class="caps"&gt;SSD&lt;/span&gt; connected to one of the &lt;span class="caps"&gt;USB3&lt;/span&gt; ports (that little
black box sat on the base of the monitor). We introduced support for booting
Ubuntu over &lt;span class="caps"&gt;USB&lt;/span&gt; in groovy, and hirsute should work just as well. Simply
flash the image to your &lt;span class="caps"&gt;USB&lt;/span&gt; drive and you&amp;#8217;re good to go. But do note that
you may need to &lt;a class="reference external" href="https://waldorf.waveform.org.uk/2020/installing-the-new-pi-ubuntu-desktop.html#usb-hdd-ssd"&gt;enable &lt;span class="caps"&gt;USB&lt;/span&gt; boot&lt;/a&gt; in your Pi&amp;#8217;s boot order first (this is
one-time setup so if your Pi can already boot off &lt;span class="caps"&gt;USB&lt;/span&gt;, you&amp;#8217;re good to&amp;nbsp;go).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;You can&amp;#8217;t attach a Pi Camera Module to the Pi 400, so I&amp;#8217;ve got an old
Logitech C920 attached to one of the &lt;span class="caps"&gt;USB&lt;/span&gt;&amp;nbsp;ports.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;The Pi 400 only has &lt;span class="caps"&gt;4GB&lt;/span&gt; of &lt;span class="caps"&gt;RAM&lt;/span&gt;. For lightweight desktops like &lt;span class="caps"&gt;LXDE&lt;/span&gt; this is
okay, but Gnome shell is quite a bit heavier. The Ubuntu Desktop image for
Pi does come with a &lt;span class="caps"&gt;1GB&lt;/span&gt; swap file but honestly you probably want to extend
this and I highly recommend using zswap (more on that&amp;nbsp;below).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;One advantage the Pi 400 &lt;em&gt;does&lt;/em&gt; have over the Pi 4 is it&amp;#8217;s &lt;em&gt;much&lt;/em&gt; better at
running cool. In turn, this means overclocking it is entirely viable even
without any active cooling. At present I have the following lines added to
my &lt;tt class="docutils literal"&gt;config.txt&lt;/tt&gt; file on the boot partition, and the Pi 400 has been
running with no heat / throttling issues for&amp;nbsp;months:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
arm_freq=2000
over_voltage=6
&lt;/pre&gt;
&lt;p&gt;You &lt;em&gt;might&lt;/em&gt; get away with these settings on a Pi 4, but you&amp;#8217;d likely want
some active cooling for that&amp;nbsp;setup.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class="section" id="swap-swap-glorious-zswap"&gt;
&lt;h2&gt;Swap, swap, glorious&amp;nbsp;zswap!&lt;/h2&gt;
&lt;p&gt;As a rough rule of thumb, &lt;em&gt;all&lt;/em&gt; systems should have swap. It doesn&amp;#8217;t matter if
your machine is a beast with &lt;span class="caps"&gt;128GB&lt;/span&gt; of &lt;span class="caps"&gt;RAM&lt;/span&gt;, having &lt;em&gt;some&lt;/em&gt; swap (not much, just a
gig or two, say) is still useful as it permits the kernel to ditch pages that
are never (or extremely rarely) used and use the &lt;span class="caps"&gt;RAM&lt;/span&gt; saved for disk cache (and
there&amp;#8217;s no such thing as too much of&amp;nbsp;that!).&lt;/p&gt;
&lt;p&gt;However, on a Pi 400 running a hefty desktop environment under &lt;span class="caps"&gt;4GB&lt;/span&gt; of &lt;span class="caps"&gt;RAM&lt;/span&gt; it&amp;#8217;s
downright vital. As mentioned above, the images ship with a &lt;span class="caps"&gt;1GB&lt;/span&gt; swap file (some
may argue it would be preferable to create it on first boot, but it compresses
trivially in the image, and this ensures that when people flash it they
effectively &amp;#8220;reserve&amp;#8221; room for the necessary swap space). Ideally though
(unless you&amp;#8217;re on a beast like the Pi 4 &lt;span class="caps"&gt;8GB&lt;/span&gt; model), you probably want to expand
this to something a bit&amp;nbsp;bigger.&lt;/p&gt;
&lt;p&gt;This can be easily done from the command line but I&amp;#8217;d caution to do this when
you&amp;#8217;ve first booted the system and before you&amp;#8217;ve launched anything else as the
first step is to (temporarily) &lt;em&gt;disable&lt;/em&gt; the swap. The following commands will
add &lt;span class="caps"&gt;1GB&lt;/span&gt; of size to the default swap-file on the desktop&amp;nbsp;image:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ sudo swapoff /swapfile
$ sudo fallocate -l 2g /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
&lt;/pre&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;You could trivially add a second swap-file and this wouldn&amp;#8217;t necessitate
disabling the existing one, but that then means getting into editing the
&lt;tt class="docutils literal"&gt;/etc/fstab&lt;/tt&gt; file to add it and this is a bit easier to document. Use
whichever means you are comfortable with, but the important thing here is
that &lt;span class="caps"&gt;1GB&lt;/span&gt; of swap probably isn&amp;#8217;t quite enough on a system with &lt;span class="caps"&gt;4GB&lt;/span&gt; of &lt;span class="caps"&gt;RAM&lt;/span&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Next, I would highly recommend enabling &amp;#8220;&lt;a class="reference external" href="https://www.kernel.org/doc/html/latest/vm/zswap.html"&gt;zswap&lt;/a&gt;&amp;#8220;. This is one of several
forms of virtual memory compression provided by the Linux kernel. The other
commonly used one is &amp;#8220;&lt;a class="reference external" href="https://www.kernel.org/doc/html/latest/admin-guide/blockdev/zram.html"&gt;zram&lt;/a&gt;&amp;#8220;. I&amp;#8217;m not enough of an expert to opine on the
fine detail of these systems, but my rough rule of thumb is as&amp;nbsp;follows:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;If you have no swap-file at all, zram is preferable. It provides a pseudo
swap-file which is actually a compressed area of &lt;span class="caps"&gt;RAM&lt;/span&gt; and hence requires no
swap-file backing&amp;nbsp;it.&lt;/li&gt;
&lt;li&gt;However, if you have a swap-file, zswap is preferable. It acts as a
write-back cache for the swap-file and can in certain circumstances avoid
pages ever hitting the disk at&amp;nbsp;all.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Don&amp;#8217;t worry about the computational overhead of these systems. &lt;span class="caps"&gt;CPU&lt;/span&gt; speed and
memory bandwidth have grown considerably faster than bulk storage &lt;span class="caps"&gt;IO&lt;/span&gt; bandwidth
has. As a result, memory compression systems that (to some degree) prevent or
reduce disk &lt;span class="caps"&gt;IO&lt;/span&gt; are almost &lt;em&gt;always&lt;/em&gt; a&amp;nbsp;win.&lt;/p&gt;
&lt;p&gt;Anyway, because we definitely have a swap-file, we&amp;#8217;re going to use zswap here.
It&amp;#8217;s trivial to enable, but we&amp;#8217;re going to customize it a bit to get some more
out of it. To enable zswap you simply need to add the parameter
&lt;tt class="docutils literal"&gt;zswap.enabled=1&lt;/tt&gt; to your kernel command&amp;nbsp;line:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ sudo sed -i -e 's/$/ zswap.enabled=1/' /boot/firmware/cmdline.txt
&lt;/pre&gt;
&lt;p&gt;This is sufficient to enable zswap; if you were to reboot at this point it
would already be working. If you don&amp;#8217;t want to get into things that are a bit
more complex, then feel free to stop at this point &amp;#8212; you&amp;#8217;ll already have
plenty of&amp;nbsp;benefit.&lt;/p&gt;
&lt;p&gt;Still here? Okay, zswap&amp;#8217;s defaults are, if anything, a bit conservative. The
default allocator (zbud) is limited to 2 compressed objects per page. A
superior allocator (z3fold) permits 3 objects per page boosting the typical
compression ratio. Furthermore, the default compression algorithm is &amp;#8220;lzo&amp;#8221;
which is nice and fast, but doesn&amp;#8217;t provide &lt;em&gt;great&lt;/em&gt; compression. Other options
include &amp;#8220;lz4&amp;#8221;, &amp;#8220;lz4hc&amp;#8221; (&lt;span class="caps"&gt;LZ4&lt;/span&gt; with &amp;#8220;high compression&amp;#8221;), and &amp;#8220;zstd&amp;#8221;. Personally,
I&amp;#8217;ve gone for &amp;#8220;lz4&amp;#8221;; &amp;#8220;zstd&amp;#8221; is also tempting but remember we&amp;#8217;re balancing
compression with speed here, and despite zstd being better at compressing
things, lz4 is &lt;em&gt;very&lt;/em&gt;&amp;nbsp;fast.&lt;/p&gt;
&lt;p&gt;Unfortunately, we can&amp;#8217;t &amp;#8220;just&amp;#8221; enable these as we enabled zswap above. We need
to make sure that the modules for these features are included in the initramfs
at boot&amp;nbsp;time:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ sudo -i
# echo lz4 &amp;gt;&amp;gt; /etc/initramfs-tools/modules
# echo z3fold &amp;gt;&amp;gt; /etc/initramfs-tools/modules
# update-initramfs -u
&lt;/pre&gt;
&lt;p&gt;Then simply add some more parameters to your kernel command&amp;nbsp;line:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
# sed -i -e 's/$/ zswap.compressor=lz4/' /boot/firmware/cmdline.txt
# sed -i -e 's/$/ zswap.zpool=z3fold/' /boot/firmware/cmdline.txt
&lt;/pre&gt;
&lt;p&gt;Now reboot and you should have your super-whizzy compressed &lt;span class="caps"&gt;RAM&lt;/span&gt; setup complete!
To check everything is set correctly (after rebooting) you can run the&amp;nbsp;following:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ grep -R . /sys/module/zswap/parameters
/sys/module/zswap/parameters/same_filled_pages_enabled:Y
/sys/module/zswap/parameters/enabled:Y
/sys/module/zswap/parameters/max_pool_percent:20
/sys/module/zswap/parameters/compressor:lz4
/sys/module/zswap/parameters/zpool:z3fold
/sys/module/zswap/parameters/accept_threshold_percent:90
&lt;/pre&gt;
&lt;p&gt;If things aren&amp;#8217;t right, have a look at &lt;tt class="docutils literal"&gt;/boot/firmware/cmdline.txt&lt;/tt&gt; in a text&amp;nbsp;editor.&lt;/p&gt;
&lt;p&gt;To see how zswap is&amp;nbsp;performing:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
$ sudo grep -R . /sys/kernel/debug/zswap
/sys/kernel/debug/zswap/same_filled_pages:3418
/sys/kernel/debug/zswap/stored_pages:242039
/sys/kernel/debug/zswap/pool_total_size:353652736
/sys/kernel/debug/zswap/duplicate_entry:0
/sys/kernel/debug/zswap/written_back_pages:0
/sys/kernel/debug/zswap/reject_compress_poor:368
/sys/kernel/debug/zswap/reject_kmemcache_fail:0
/sys/kernel/debug/zswap/reject_alloc_fail:0
/sys/kernel/debug/zswap/reject_reclaim_fail:0
/sys/kernel/debug/zswap/pool_limit_hit:0
&lt;/pre&gt;
&lt;p&gt;I&amp;#8217;ve even tried this on a Pi 4 &lt;span class="caps"&gt;2GB&lt;/span&gt; model and, while it&amp;#8217;s not as nice as a Pi
400 (in particular due to the SoC running hotter), it makes it a pretty viable
desktop at least for light usage. It was perfectly capable of firing up Firefox
and playing an &lt;span class="caps"&gt;HD&lt;/span&gt; YouTube video, while also running LibreOffice Writer, and a
terminal with vim, all on a $35 &lt;span class="caps"&gt;2GB&lt;/span&gt;&amp;nbsp;Pi!&lt;/p&gt;
&lt;div class="admonition note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;I should note we don&amp;#8217;t officially support using the desktop image on a &lt;span class="caps"&gt;2GB&lt;/span&gt;
Pi, but personally I think this little optimization makes it a reasonable
platform for the Ubuntu&amp;nbsp;desktop.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Hirsute Hippo&amp;#8217;s due for release on April 22nd, and the &lt;a class="reference external" href="https://discourse.ubuntu.com/t/hirsute-hippo-release-notes/19221"&gt;release notes&lt;/a&gt; are
definitely worth a quick&amp;nbsp;peek.&lt;/p&gt;
&lt;/div&gt;
</content><category term="misc"></category><category term="ubuntu"></category><category term="pi"></category><category term="desktop"></category><category term="hirsute"></category></entry><entry><title>Ubuntu Desktops on the Pi</title><link href="https://waldorf.waveform.org.uk/2020/ubuntu-desktops-on-the-pi.html" rel="alternate"></link><published>2020-04-17T00:00:00+01:00</published><updated>2023-08-01T17:02:11+01:00</updated><author><name>Dave Jones</name></author><id>tag:waldorf.waveform.org.uk,2020-04-17:/2020/ubuntu-desktops-on-the-pi.html</id><summary type="html">&lt;p class="first last"&gt;A quick review of the Ubuntu desktop flavours on the Raspberry&amp;nbsp;Pi&lt;/p&gt;
</summary><content type="html">&lt;p&gt;&lt;strong&gt;See Also&lt;/strong&gt;: A look at the &lt;a class="reference external" href="https://waldorf.waveform.org.uk/2021/6-months-with-the-pi-desktop.html"&gt;Hirsute desktop image&lt;/a&gt;, &lt;a class="reference external" href="https://waldorf.waveform.org.uk/2022/making-jammy-less-dodgy.html"&gt;Jammy desktop image&lt;/a&gt;, and &lt;a class="reference external" href="https://waldorf.waveform.org.uk/2023/desktop-on-a-stick.html"&gt;Making desktops with cloud-init&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One of the things I&amp;#8217;ve been looking at recently is the relative performance of
our desktop packages on the Pi (a lot of people seem to be trying to use the Pi
4 as a desktop work-horse - and it is &lt;em&gt;reasonably&lt;/em&gt; capable of this with the
right&amp;nbsp;selections).&lt;/p&gt;
&lt;p&gt;Anyway, here&amp;#8217;s some quick notes from my experiments. Firstly, the various
desktop packages and some comments (just in the order I tried&amp;nbsp;them):&lt;/p&gt;
&lt;dl class="docutils"&gt;
&lt;dt&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;ubuntu-desktop&lt;/span&gt;&lt;/tt&gt;&lt;/dt&gt;
&lt;dd&gt;A bit sticky here and there (particularly during login and application
selection - basically anywhere Gnome tries to do any animation), but&amp;nbsp;tolerable.&lt;/dd&gt;
&lt;dt&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;xubuntu-desktop&lt;/span&gt;&lt;/tt&gt;&lt;/dt&gt;
&lt;dd&gt;A bit slicker than the default on the Pi; could actually be a reasonable
choice for a default&amp;nbsp;desktop.&lt;/dd&gt;
&lt;dt&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;lubuntu-desktop&lt;/span&gt;&lt;/tt&gt;&lt;/dt&gt;
&lt;dd&gt;It&amp;#8217;s not pretty, but damn this flies! No real surprise there given it&amp;#8217;s
LXQt which is the basis of Raspbian too. With a bit of layout tweaking this
would definitely be my go to choice of desktop under Ubuntu on the&amp;nbsp;Pi.&lt;/dd&gt;
&lt;dt&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;kubuntu-desktop&lt;/span&gt;&lt;/tt&gt;&lt;/dt&gt;
&lt;dd&gt;Ouch, this is painful. Don&amp;#8217;t misunderstand me - I love Kubuntu generally
(I&amp;#8217;m one of those old stick-in-the-muds that bemoans all the options
that&amp;#8217;ve disappeared from Gnome over the years and loves that they&amp;#8217;re all
still there on &lt;span class="caps"&gt;KDE&lt;/span&gt;). However, it&amp;#8217;s undeniably heavier and on the Pi, even
on a 4Gb Pi 4, it&amp;#8217;s just&amp;nbsp;unusable.&lt;/dd&gt;
&lt;dt&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;ubuntu-budgie-desktop&lt;/span&gt;&lt;/tt&gt;&lt;/dt&gt;
&lt;dd&gt;Oooh, pretty! Sadly, not that functional. The start menu is better than the
default but (shock! horror!) the terminal won&amp;#8217;t start, so that&amp;#8217;s this
experiment prematurely ended (yes, I could switch tty and fiddle around but
the Mac-like prettiness hasn&amp;#8217;t tempted me that much&amp;nbsp;:).&lt;/dd&gt;
&lt;/dl&gt;
&lt;div class="section" id="compatibility-notes"&gt;
&lt;h2&gt;Compatibility&amp;nbsp;notes&lt;/h2&gt;
&lt;p&gt;I was only testing the arm64 images; I&amp;#8217;d expect similar results under armhf
though. Several things are worth adding to improve compatibility or enable
hardware (these apply to pretty much all the desktops&amp;nbsp;above):&lt;/p&gt;
&lt;div class="section" id="graphics"&gt;
&lt;h3&gt;Graphics&lt;/h3&gt;
&lt;p&gt;Add &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;dtoverlay=vc4-fkms-v3d&lt;/span&gt;&lt;/tt&gt; to &lt;tt class="docutils literal"&gt;/boot/firmware/syscfg.txt&lt;/tt&gt; to enable the
&amp;#8220;fake&amp;#8221; &lt;span class="caps"&gt;KMS&lt;/span&gt; frame-buffer. Lots of &lt;span class="caps"&gt;GUI&lt;/span&gt; instability without this. For all those
that want this to be the default: so do I, but there&amp;#8217;s issues with doing this
that need solving first (breaks u-boot&amp;#8217;s video console, and breaks boot on the&amp;nbsp;3A+).&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="audio"&gt;
&lt;h3&gt;Audio&lt;/h3&gt;
&lt;p&gt;From Focal (20.04) onwards, &lt;tt class="docutils literal"&gt;dtparam=audio=on&lt;/tt&gt; should be the default in the
boot configuration so audio should at least be present. However, if you&amp;#8217;re
installing a desktop environment you also want to tweak a pulse-audio parameter
to improve its scheduling and avoid choppy audio. Edit
&lt;tt class="docutils literal"&gt;/etc/pulse/default.pa&lt;/tt&gt; and find the&amp;nbsp;line:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
load-module module-udev-detect
&lt;/pre&gt;
&lt;p&gt;And append &lt;tt class="docutils literal"&gt;tsched=0&lt;/tt&gt; so that the line&amp;nbsp;reads:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
load-module module-udev-detect tsched=0
&lt;/pre&gt;
&lt;p&gt;(thanks to BranLoux896 on the &lt;a class="reference external" href="https://raspberrypi.org/forums/"&gt;Raspberry Pi forums&lt;/a&gt; for mentioning&amp;nbsp;this!)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="login-managers"&gt;
&lt;h3&gt;Login&amp;nbsp;managers&lt;/h3&gt;
&lt;p&gt;Most of the desktop packages provide a selection of display managers (gdm3,
lightdm, ssdm, etc.) on installation. I attempted most selections and found
that lightdm doesn&amp;#8217;t work for some reason I haven&amp;#8217;t tried to figure out yet,
but gdm3 and ssdm work&amp;nbsp;fine.&lt;/p&gt;
&lt;p&gt;However, one issue with gdm3: it always defaults to the &amp;#8220;ubuntu&amp;#8221; desktop even
if you&amp;#8217;ve installed, say, &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;lubuntu-desktop&lt;/span&gt;&lt;/tt&gt;. After selecting the user to
login as, click the gears at the bottom right and select the &lt;em&gt;actual&lt;/em&gt; desktop
you installed before completing the login&amp;nbsp;:)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="wireless-bluetooth"&gt;
&lt;h3&gt;Wireless &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;Bluetooth&lt;/h3&gt;
&lt;p&gt;Install the &amp;#8220;iw&amp;#8221; package (which&amp;#8217;ll pull in &amp;#8220;crda&amp;#8221;) and then run &lt;tt class="docutils literal"&gt;sudo iw reg
set &lt;span class="caps"&gt;GB&lt;/span&gt;&lt;/tt&gt; (if you&amp;#8217;re in the &lt;span class="caps"&gt;UK&lt;/span&gt; like me; substitute &lt;span class="caps"&gt;GB&lt;/span&gt; for your region code
otherwise) to set the WiFi region correctly (usually enables a few channels
that aren&amp;#8217;t enabled in the default &amp;#8220;world region&amp;#8221;). I&amp;#8217;ll endeavour to get this
in the image by default in Focal, but you&amp;#8217;ll still need to set the region code
for&amp;nbsp;now.&lt;/p&gt;
&lt;p&gt;Install the &amp;#8220;pi-bluetooth&amp;#8221; package to enable Bluetooth. This &amp;#8220;just works&amp;#8221; once
the package is&amp;nbsp;installed.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="remote-desktops"&gt;
&lt;h3&gt;Remote&amp;nbsp;desktops&lt;/h3&gt;
&lt;p&gt;I ran a quick experiment in Terminal Services-style remote desktops with xrdp
under lubuntu-desktop (the only one I figured would be light enough to be
worthwhile for such endeavours). To try&amp;nbsp;this:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;install the &lt;tt class="docutils literal"&gt;xrdp&lt;/tt&gt; package&lt;/li&gt;
&lt;li&gt;add the &lt;tt class="docutils literal"&gt;xrdp&lt;/tt&gt; user to the &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;ssl-cert&lt;/span&gt;&lt;/tt&gt; group&lt;/li&gt;
&lt;li&gt;reboot&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then you should be able to connect remotely using an &lt;span class="caps"&gt;RDP&lt;/span&gt; client (like
&lt;tt class="docutils literal"&gt;remmina&lt;/tt&gt;) providing you specify the username and password in the connection&amp;nbsp;settings.&lt;/p&gt;
&lt;p&gt;Another quick experiment in screen-scraping style remote desktop was
semi-successful with the &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;tigervnc-scraping-server&lt;/span&gt;&lt;/tt&gt; package but a further
experiment to do &lt;span class="caps"&gt;TS&lt;/span&gt;-style remote desktop with &lt;span class="caps"&gt;VNC&lt;/span&gt; wouldn&amp;#8217;t work (some issue
with &lt;span class="caps"&gt;GDM&lt;/span&gt; I didn&amp;#8217;t have time to dig&amp;nbsp;into).&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="power-saving"&gt;
&lt;h3&gt;Power&amp;nbsp;saving&lt;/h3&gt;
&lt;p&gt;Power saving is &amp;#8230; rather pointless. I forget which desktop I saw this on, but
one of them decided to put the Pi to sleep on idle timeout and &amp;#8230; that just
effectively switched the Pi off! So, turn off all those suspend timers&amp;nbsp;:)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="misc"></category><category term="ubuntu"></category><category term="lubuntu"></category><category term="xubuntu"></category><category term="kubuntu"></category><category term="budgie"></category><category term="hirsute"></category><category term="pi"></category><category term="desktop"></category><category term="bluetooth"></category><category term="wifi"></category><category term="vnc"></category><category term="rdp"></category></entry></feed>