← Back to team overview

kubuntu-council team mailing list archive

[Merge] ~waveform/ubuntu-manual-tests:desktop-alt-boot into ubuntu-manual-tests:main

 

Dave Jones has proposed merging ~waveform/ubuntu-manual-tests:desktop-alt-boot into ubuntu-manual-tests:main.

Requested reviews:
  Ubuntu Testcase Admins (ubuntu-testcase)

For more details, see:
https://code.launchpad.net/~waveform/ubuntu-manual-tests/+git/ubuntu-manual-tests/+merge/465423

Add test cases for USB and NVMe for the Pi desktop image
-- 
Your team Ubuntu Testcase Admins is requested to review the proposed merge of ~waveform/ubuntu-manual-tests:desktop-alt-boot into ubuntu-manual-tests:main.
diff --git a/definitions/pi_desktop_cases.xml b/definitions/pi_desktop_cases.xml
index d3471c6..c326fc8 100644
--- a/definitions/pi_desktop_cases.xml
+++ b/definitions/pi_desktop_cases.xml
@@ -7,7 +7,10 @@
     <p>This test case is to be carried out on a <ut:var name="model" />.</p>
     <p>Follow the installation steps at <a
       href="https://ubuntu.com/download/iot/installation-media";>
-      IoT installation media</a>
+      IoT installation media</a>, and write the image to <ut:var name="storage" />.
+      Then, using <tt>sudo rpi-eeprom-config</tt>, ensure the EEPROM's
+      <tt><a href="https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER";>BOOT_ORDER</a></tt>
+      is set to <ut:var name="boot-order"/>.
     </p>
     <ut:var name="post-install" />
     <dl>
@@ -253,8 +256,10 @@
     </dd>
   </ut:test>
 
-  <ut:case id="1745_RaspberryPi 4 4GB Desktop">
+  <ut:case id="1745_RaspberryPi 4 4GB Desktop SD">
     <ut:define name="model">Raspberry Pi 4 4GB</ut:define>
+    <ut:define name="storage">an SD card</ut:define>
+    <ut:define name="boot-order">0xf1</ut:define>
     <ut:include ref="power-led" />
     <ut:include ref="startup-splash" />
     <ut:include ref="startup-sound" />
@@ -273,8 +278,32 @@
     <ut:include ref="lock-screen" />
   </ut:case>
 
-  <ut:case id="1746_RaspberryPi 4 8GB Desktop">
+  <ut:case id="1812_RaspberryPi 4 4GB Desktop USB">
+    <ut:define name="model">Raspberry Pi 4 4GB</ut:define>
+    <ut:define name="storage">a USB3 drive</ut:define>
+    <ut:define name="boot-order">0xf41</ut:define>
+    <ut:include ref="power-led" />
+    <ut:include ref="startup-splash" />
+    <ut:include ref="startup-sound" />
+    <ut:include ref="startup-timezone" />
+    <ut:include ref="startup-identity" />
+    <ut:include ref="flash-kernel" />
+    <ut:include ref="reboot" />
+    <ut:include ref="shutdown" />
+    <ut:include ref="ram-free"><ut:define name="mem">3.6-3.8GB</ut:define></ut:include>
+    <ut:incldue ref="dual-monitor" />
+    <ut:include ref="ethernet"><ut:define name="intf">eth0</ut:define></ut:include>
+    <ut:include ref="wifi"><ut:define name="intf">wlan0</ut:define></ut:include>
+    <ut:include ref="bluetooth" />
+    <ut:include ref="www-video" />
+    <ut:include ref="local-video" />
+    <ut:include ref="lock-screen" />
+  </ut:case>
+
+  <ut:case id="1746_RaspberryPi 4 8GB Desktop SD">
     <ut:define name="model">Raspberry Pi 4 8GB</ut:define>
+    <ut:define name="storage">an SD card</ut:define>
+    <ut:define name="boot-order">0xf1</ut:define>
     <ut:include ref="power-led" />
     <ut:include ref="startup-splash" />
     <ut:include ref="startup-sound" />
@@ -293,8 +322,32 @@
     <ut:include ref="lock-screen" />
   </ut:case>
 
-  <ut:case id="1747_RaspberryPi 400 Desktop">
+  <ut:case id="1813_RaspberryPi 4 8GB Desktop USB">
+    <ut:define name="model">Raspberry Pi 4 8GB</ut:define>
+    <ut:define name="storage">a USB3 drive</ut:define>
+    <ut:define name="boot-order">0xf41</ut:define>
+    <ut:include ref="power-led" />
+    <ut:include ref="startup-splash" />
+    <ut:include ref="startup-sound" />
+    <ut:include ref="startup-timezone" />
+    <ut:include ref="startup-identity" />
+    <ut:include ref="flash-kernel" />
+    <ut:include ref="reboot" />
+    <ut:include ref="shutdown" />
+    <ut:include ref="ram-free"><ut:define name="mem">7.6-7.8GB</ut:define></ut:include>
+    <ut:incldue ref="dual-monitor" />
+    <ut:include ref="ethernet"><ut:define name="intf">eth0</ut:define></ut:include>
+    <ut:include ref="wifi"><ut:define name="intf">wlan0</ut:define></ut:include>
+    <ut:include ref="bluetooth" />
+    <ut:include ref="www-video" />
+    <ut:include ref="local-video" />
+    <ut:include ref="lock-screen" />
+  </ut:case>
+
+  <ut:case id="1747_RaspberryPi 400 Desktop SD">
     <ut:define name="model">Raspberry Pi 400</ut:define>
+    <ut:define name="storage">an SD card</ut:define>
+    <ut:define name="boot-order">0xf1</ut:define>
     <ut:include ref="power-led" />
     <ut:include ref="startup-splash" />
     <ut:include ref="startup-sound" />
@@ -313,13 +366,10 @@
     <ut:include ref="lock-screen" />
   </ut:case>
 
-  <ut:case id="1748_RaspberryPi CM4 2GB Desktop">
-    <ut:define name="model">Raspberry Pi Compute Module 4 2GB</ut:define>
-    <ut:define name="post-install">
-      <p>Before booting your CM4 with the new image, edit config.txt on the boot
-      (1st) partition and uncomment the <code>#dtoverlay=dwc2,dr_mode=host</code>
-      line to ensure the USB ports on the IO board operate correctly</p>
-    </ut:define>
+  <ut:case id="1814_RaspberryPi 400 Desktop USB">
+    <ut:define name="model">Raspberry Pi 400</ut:define>
+    <ut:define name="storage">a USB3 drive</ut:define>
+    <ut:define name="boot-order">0xf41</ut:define>
     <ut:include ref="power-led" />
     <ut:include ref="startup-splash" />
     <ut:include ref="startup-sound" />
@@ -328,7 +378,7 @@
     <ut:include ref="flash-kernel" />
     <ut:include ref="reboot" />
     <ut:include ref="shutdown" />
-    <ut:include ref="ram-free"><ut:define name="mem">1.6-1.8GB</ut:define></ut:include>
+    <ut:include ref="ram-free"><ut:define name="mem">3.6-3.8GB</ut:define></ut:include>
     <ut:incldue ref="dual-monitor" />
     <ut:include ref="ethernet"><ut:define name="intf">eth0</ut:define></ut:include>
     <ut:include ref="wifi"><ut:define name="intf">wlan0</ut:define></ut:include>
@@ -338,8 +388,10 @@
     <ut:include ref="lock-screen" />
   </ut:case>
 
-  <ut:case id="1749_RaspberryPi CM4 4GB Desktop">
+  <ut:case id="1749_RaspberryPi CM4 4GB Desktop eMMC">
     <ut:define name="model">Raspberry Pi Compute Module 4 4GB</ut:define>
+    <ut:define name="storage">the internal eMMC</ut:define>
+    <ut:define name="boot-order">0xf1</ut:define>
     <ut:define name="post-install">
       <p>Before booting your CM4 with the new image, edit config.txt on the boot
       (1st) partition and uncomment the <code>#dtoverlay=dwc2,dr_mode=host</code>
@@ -363,8 +415,10 @@
     <ut:include ref="lock-screen" />
   </ut:case>
 
-  <ut:case id="1750_RaspberryPi CM4 8GB Desktop">
+  <ut:case id="1750_RaspberryPi CM4 8GB Desktop eMMC">
     <ut:define name="model">Raspberry Pi Compute Module 4 8GB</ut:define>
+    <ut:define name="storage">the internal eMMC</ut:define>
+    <ut:define name="boot-order">0xf1</ut:define>
     <ut:define name="post-install">
       <p>Before booting your CM4 with the new image, edit config.txt on the boot
       (1st) partition and uncomment the <code>#dtoverlay=dwc2,dr_mode=host</code>
@@ -388,8 +442,10 @@
     <ut:include ref="lock-screen" />
   </ut:case>
 
-  <ut:case id="1791_RaspberryPi 5 4GB Desktop">
+  <ut:case id="1791_RaspberryPi 5 4GB Desktop SD">
     <ut:define name="model">Raspberry Pi 5 4GB</ut:define>
+    <ut:define name="storage">an SD card</ut:define>
+    <ut:define name="boot-order">0xf1</ut:define>
     <ut:include ref="power-led" />
     <ut:include ref="startup-splash" />
     <ut:include ref="startup-sound" />
@@ -408,8 +464,98 @@
     <ut:include ref="lock-screen" />
   </ut:case>
 
-  <ut:case id="1792_RaspberryPi 5 8GB Desktop">
+  <ut:case id="1815_RaspberryPi 5 4GB Desktop USB3">
+    <ut:define name="model">Raspberry Pi 5 4GB</ut:define>
+    <ut:define name="storage">a USB3 drive</ut:define>
+    <ut:define name="boot-order">0xf41</ut:define>
+    <ut:include ref="power-led" />
+    <ut:include ref="startup-splash" />
+    <ut:include ref="startup-sound" />
+    <ut:include ref="startup-timezone" />
+    <ut:include ref="startup-identity" />
+    <ut:include ref="flash-kernel" />
+    <ut:include ref="reboot" />
+    <ut:include ref="shutdown" />
+    <ut:include ref="ram-free"><ut:define name="mem">3.6-3.8GB</ut:define></ut:include>
+    <ut:incldue ref="dual-monitor" />
+    <ut:include ref="ethernet"><ut:define name="intf">eth0</ut:define></ut:include>
+    <ut:include ref="wifi"><ut:define name="intf">wlan0</ut:define></ut:include>
+    <ut:include ref="bluetooth" />
+    <ut:include ref="www-video" />
+    <ut:include ref="local-video" />
+    <ut:include ref="lock-screen" />
+  </ut:case>
+
+  <ut:case id="1816_RaspberryPi 5 4GB Desktop NVMe">
+    <ut:define name="model">Raspberry Pi 5 4GB</ut:define>
+    <ut:define name="storage">an NVMe drive</ut:define>
+    <ut:define name="boot-order">0xf61</ut:define>
+    <ut:include ref="power-led" />
+    <ut:include ref="startup-splash" />
+    <ut:include ref="startup-sound" />
+    <ut:include ref="startup-timezone" />
+    <ut:include ref="startup-identity" />
+    <ut:include ref="flash-kernel" />
+    <ut:include ref="reboot" />
+    <ut:include ref="shutdown" />
+    <ut:include ref="ram-free"><ut:define name="mem">3.6-3.8GB</ut:define></ut:include>
+    <ut:incldue ref="dual-monitor" />
+    <ut:include ref="ethernet"><ut:define name="intf">eth0</ut:define></ut:include>
+    <ut:include ref="wifi"><ut:define name="intf">wlan0</ut:define></ut:include>
+    <ut:include ref="bluetooth" />
+    <ut:include ref="www-video" />
+    <ut:include ref="local-video" />
+    <ut:include ref="lock-screen" />
+  </ut:case>
+
+  <ut:case id="1792_RaspberryPi 5 8GB Desktop SD">
+    <ut:define name="model">Raspberry Pi 5 8GB</ut:define>
+    <ut:define name="storage">an SD card</ut:define>
+    <ut:define name="boot-order">0xf1</ut:define>
+    <ut:include ref="power-led" />
+    <ut:include ref="startup-splash" />
+    <ut:include ref="startup-sound" />
+    <ut:include ref="startup-timezone" />
+    <ut:include ref="startup-identity" />
+    <ut:include ref="flash-kernel" />
+    <ut:include ref="reboot" />
+    <ut:include ref="shutdown" />
+    <ut:include ref="ram-free"><ut:define name="mem">7.6-7.8GB</ut:define></ut:include>
+    <ut:incldue ref="dual-monitor" />
+    <ut:include ref="ethernet"><ut:define name="intf">eth0</ut:define></ut:include>
+    <ut:include ref="wifi"><ut:define name="intf">wlan0</ut:define></ut:include>
+    <ut:include ref="bluetooth" />
+    <ut:include ref="www-video" />
+    <ut:include ref="local-video" />
+    <ut:include ref="lock-screen" />
+  </ut:case>
+
+  <ut:case id="1817_RaspberryPi 5 8GB Desktop USB">
+    <ut:define name="model">Raspberry Pi 5 8GB</ut:define>
+    <ut:define name="storage">a USB3 drive</ut:define>
+    <ut:define name="boot-order">0xf41</ut:define>
+    <ut:include ref="power-led" />
+    <ut:include ref="startup-splash" />
+    <ut:include ref="startup-sound" />
+    <ut:include ref="startup-timezone" />
+    <ut:include ref="startup-identity" />
+    <ut:include ref="flash-kernel" />
+    <ut:include ref="reboot" />
+    <ut:include ref="shutdown" />
+    <ut:include ref="ram-free"><ut:define name="mem">7.6-7.8GB</ut:define></ut:include>
+    <ut:incldue ref="dual-monitor" />
+    <ut:include ref="ethernet"><ut:define name="intf">eth0</ut:define></ut:include>
+    <ut:include ref="wifi"><ut:define name="intf">wlan0</ut:define></ut:include>
+    <ut:include ref="bluetooth" />
+    <ut:include ref="www-video" />
+    <ut:include ref="local-video" />
+    <ut:include ref="lock-screen" />
+  </ut:case>
+
+  <ut:case id="1818_RaspberryPi 5 8GB Desktop USB">
     <ut:define name="model">Raspberry Pi 5 8GB</ut:define>
+    <ut:define name="storage">an NVMe drive</ut:define>
+    <ut:define name="boot-order">0xf61</ut:define>
     <ut:include ref="power-led" />
     <ut:include ref="startup-splash" />
     <ut:include ref="startup-sound" />
diff --git a/testcases/image/1745_RaspberryPi 4 4GB Desktop SD b/testcases/image/1745_RaspberryPi 4 4GB Desktop SD
new file mode 100644
index 0000000..f7f43a1
--- /dev/null
+++ b/testcases/image/1745_RaspberryPi 4 4GB Desktop SD
@@ -0,0 +1,201 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     ./definitions/pi_desktop_cases.xml
+-->
+
+    
+    <p>This test case is to be carried out on a Raspberry Pi 4 4GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>, and write the image to an SD card.
+      Then, using <tt>sudo rpi-eeprom-config</tt>, ensure the EEPROM's
+      <tt><a href="https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER";>BOOT_ORDER</a></tt>
+      is set to 0xf1.
+    </p>
+    <dl>
+      
+    
+    <dt>Watch the power LED</dt>
+      <dd>
+        Ensure it turns on at boot time, and stays lit as the kernel starts
+        (when the rainbow screen disappears)
+      </dd>
+  
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Launch Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi 4 4GB.
+      It should be in the region of 3.6-3.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the WiFi entry from the menu</li>
+        <li>Select your local WiFi network from the visible networks list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Disconnect ethernet, if any is plugged in</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+        <li>Reconnect ethernet, if it was connected before</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure bluetooth and pair a device
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the Bluetooth entry from the menu (you must be on this page
+          for the Pi to be "discoverable")</li>
+        <li>On another Bluetooth device (e.g. an Android phone) make sure it
+          is "discoverable" (e.g. on Android go into Bluetooth
+          settings)</li>
+        <li>Ensure the other device shows up in the "Devices" list
+          on the Bluetooth settings page, then select it</li>
+        <li>Confirm the pincode on both devices</li>
+        <li>Ensure the other device now shows as anything other that "Not
+          Set Up" in the "Devices" list</li>
+        </ul>
+      </dt>
+      <dd>
+        The Bluetooth interface can scan for, and pair with, another device
+      </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+        <li>The utility may prompt to install codecs; accept the recommendation
+          and install whatever codecs are required</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1746_RaspberryPi 4 8GB Desktop SD b/testcases/image/1746_RaspberryPi 4 8GB Desktop SD
new file mode 100644
index 0000000..0202eb9
--- /dev/null
+++ b/testcases/image/1746_RaspberryPi 4 8GB Desktop SD
@@ -0,0 +1,201 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     ./definitions/pi_desktop_cases.xml
+-->
+
+    
+    <p>This test case is to be carried out on a Raspberry Pi 4 8GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>, and write the image to an SD card.
+      Then, using <tt>sudo rpi-eeprom-config</tt>, ensure the EEPROM's
+      <tt><a href="https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER";>BOOT_ORDER</a></tt>
+      is set to 0xf1.
+    </p>
+    <dl>
+      
+    
+    <dt>Watch the power LED</dt>
+      <dd>
+        Ensure it turns on at boot time, and stays lit as the kernel starts
+        (when the rainbow screen disappears)
+      </dd>
+  
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Launch Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi 4 8GB.
+      It should be in the region of 7.6-7.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the WiFi entry from the menu</li>
+        <li>Select your local WiFi network from the visible networks list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Disconnect ethernet, if any is plugged in</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+        <li>Reconnect ethernet, if it was connected before</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure bluetooth and pair a device
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the Bluetooth entry from the menu (you must be on this page
+          for the Pi to be "discoverable")</li>
+        <li>On another Bluetooth device (e.g. an Android phone) make sure it
+          is "discoverable" (e.g. on Android go into Bluetooth
+          settings)</li>
+        <li>Ensure the other device shows up in the "Devices" list
+          on the Bluetooth settings page, then select it</li>
+        <li>Confirm the pincode on both devices</li>
+        <li>Ensure the other device now shows as anything other that "Not
+          Set Up" in the "Devices" list</li>
+        </ul>
+      </dt>
+      <dd>
+        The Bluetooth interface can scan for, and pair with, another device
+      </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+        <li>The utility may prompt to install codecs; accept the recommendation
+          and install whatever codecs are required</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1747_RaspberryPi 400 Desktop SD b/testcases/image/1747_RaspberryPi 400 Desktop SD
new file mode 100644
index 0000000..eafe9c8
--- /dev/null
+++ b/testcases/image/1747_RaspberryPi 400 Desktop SD
@@ -0,0 +1,201 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     ./definitions/pi_desktop_cases.xml
+-->
+
+    
+    <p>This test case is to be carried out on a Raspberry Pi 400.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>, and write the image to an SD card.
+      Then, using <tt>sudo rpi-eeprom-config</tt>, ensure the EEPROM's
+      <tt><a href="https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER";>BOOT_ORDER</a></tt>
+      is set to 0xf1.
+    </p>
+    <dl>
+      
+    
+    <dt>Watch the power LED</dt>
+      <dd>
+        Ensure it turns on at boot time, and stays lit as the kernel starts
+        (when the rainbow screen disappears)
+      </dd>
+  
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Launch Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi 400.
+      It should be in the region of 3.6-3.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the WiFi entry from the menu</li>
+        <li>Select your local WiFi network from the visible networks list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Disconnect ethernet, if any is plugged in</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+        <li>Reconnect ethernet, if it was connected before</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure bluetooth and pair a device
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the Bluetooth entry from the menu (you must be on this page
+          for the Pi to be "discoverable")</li>
+        <li>On another Bluetooth device (e.g. an Android phone) make sure it
+          is "discoverable" (e.g. on Android go into Bluetooth
+          settings)</li>
+        <li>Ensure the other device shows up in the "Devices" list
+          on the Bluetooth settings page, then select it</li>
+        <li>Confirm the pincode on both devices</li>
+        <li>Ensure the other device now shows as anything other that "Not
+          Set Up" in the "Devices" list</li>
+        </ul>
+      </dt>
+      <dd>
+        The Bluetooth interface can scan for, and pair with, another device
+      </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+        <li>The utility may prompt to install codecs; accept the recommendation
+          and install whatever codecs are required</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1749_RaspberryPi CM4 4GB Desktop eMMC b/testcases/image/1749_RaspberryPi CM4 4GB Desktop eMMC
new file mode 100644
index 0000000..7a7d75a
--- /dev/null
+++ b/testcases/image/1749_RaspberryPi CM4 4GB Desktop eMMC
@@ -0,0 +1,205 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     ./definitions/pi_desktop_cases.xml
+-->
+
+    <p>This test case is to be carried out on a Raspberry Pi Compute Module 4 4GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>, and write the image to the internal eMMC.
+      Then, using <tt>sudo rpi-eeprom-config</tt>, ensure the EEPROM's
+      <tt><a href="https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER";>BOOT_ORDER</a></tt>
+      is set to 0xf1.
+    </p>
+    
+      <p>Before booting your CM4 with the new image, edit config.txt on the boot
+      (1st) partition and uncomment the <code>#dtoverlay=dwc2,dr_mode=host</code>
+      line to ensure the USB ports on the IO board operate correctly</p>
+    
+    <dl>
+      
+    
+    <dt>Watch the power LED</dt>
+      <dd>
+        Ensure it turns on at boot time, and stays lit as the kernel starts
+        (when the rainbow screen disappears)
+      </dd>
+  
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Launch Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi Compute Module 4 4GB.
+      It should be in the region of 3.6-3.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the WiFi entry from the menu</li>
+        <li>Select your local WiFi network from the visible networks list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Disconnect ethernet, if any is plugged in</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+        <li>Reconnect ethernet, if it was connected before</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure bluetooth and pair a device
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the Bluetooth entry from the menu (you must be on this page
+          for the Pi to be "discoverable")</li>
+        <li>On another Bluetooth device (e.g. an Android phone) make sure it
+          is "discoverable" (e.g. on Android go into Bluetooth
+          settings)</li>
+        <li>Ensure the other device shows up in the "Devices" list
+          on the Bluetooth settings page, then select it</li>
+        <li>Confirm the pincode on both devices</li>
+        <li>Ensure the other device now shows as anything other that "Not
+          Set Up" in the "Devices" list</li>
+        </ul>
+      </dt>
+      <dd>
+        The Bluetooth interface can scan for, and pair with, another device
+      </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+        <li>The utility may prompt to install codecs; accept the recommendation
+          and install whatever codecs are required</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1750_RaspberryPi CM4 8GB Desktop eMMC b/testcases/image/1750_RaspberryPi CM4 8GB Desktop eMMC
new file mode 100644
index 0000000..1888e83
--- /dev/null
+++ b/testcases/image/1750_RaspberryPi CM4 8GB Desktop eMMC
@@ -0,0 +1,205 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     ./definitions/pi_desktop_cases.xml
+-->
+
+    <p>This test case is to be carried out on a Raspberry Pi Compute Module 4 8GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>, and write the image to the internal eMMC.
+      Then, using <tt>sudo rpi-eeprom-config</tt>, ensure the EEPROM's
+      <tt><a href="https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER";>BOOT_ORDER</a></tt>
+      is set to 0xf1.
+    </p>
+    
+      <p>Before booting your CM4 with the new image, edit config.txt on the boot
+      (1st) partition and uncomment the <code>#dtoverlay=dwc2,dr_mode=host</code>
+      line to ensure the USB ports on the IO board operate correctly</p>
+    
+    <dl>
+      
+    
+    <dt>Watch the power LED</dt>
+      <dd>
+        Ensure it turns on at boot time, and stays lit as the kernel starts
+        (when the rainbow screen disappears)
+      </dd>
+  
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Launch Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi Compute Module 4 8GB.
+      It should be in the region of 7.6-7.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the WiFi entry from the menu</li>
+        <li>Select your local WiFi network from the visible networks list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Disconnect ethernet, if any is plugged in</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+        <li>Reconnect ethernet, if it was connected before</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure bluetooth and pair a device
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the Bluetooth entry from the menu (you must be on this page
+          for the Pi to be "discoverable")</li>
+        <li>On another Bluetooth device (e.g. an Android phone) make sure it
+          is "discoverable" (e.g. on Android go into Bluetooth
+          settings)</li>
+        <li>Ensure the other device shows up in the "Devices" list
+          on the Bluetooth settings page, then select it</li>
+        <li>Confirm the pincode on both devices</li>
+        <li>Ensure the other device now shows as anything other that "Not
+          Set Up" in the "Devices" list</li>
+        </ul>
+      </dt>
+      <dd>
+        The Bluetooth interface can scan for, and pair with, another device
+      </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+        <li>The utility may prompt to install codecs; accept the recommendation
+          and install whatever codecs are required</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1791_RaspberryPi 5 4GB Desktop SD b/testcases/image/1791_RaspberryPi 5 4GB Desktop SD
new file mode 100644
index 0000000..7699d6d
--- /dev/null
+++ b/testcases/image/1791_RaspberryPi 5 4GB Desktop SD
@@ -0,0 +1,201 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     ./definitions/pi_desktop_cases.xml
+-->
+
+    
+    <p>This test case is to be carried out on a Raspberry Pi 5 4GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>, and write the image to an SD card.
+      Then, using <tt>sudo rpi-eeprom-config</tt>, ensure the EEPROM's
+      <tt><a href="https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER";>BOOT_ORDER</a></tt>
+      is set to 0xf1.
+    </p>
+    <dl>
+      
+    
+    <dt>Watch the power LED</dt>
+      <dd>
+        Ensure it turns on at boot time, and stays lit as the kernel starts
+        (when the rainbow screen disappears)
+      </dd>
+  
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Launch Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi 5 4GB.
+      It should be in the region of 3.6-3.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the WiFi entry from the menu</li>
+        <li>Select your local WiFi network from the visible networks list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Disconnect ethernet, if any is plugged in</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+        <li>Reconnect ethernet, if it was connected before</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure bluetooth and pair a device
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the Bluetooth entry from the menu (you must be on this page
+          for the Pi to be "discoverable")</li>
+        <li>On another Bluetooth device (e.g. an Android phone) make sure it
+          is "discoverable" (e.g. on Android go into Bluetooth
+          settings)</li>
+        <li>Ensure the other device shows up in the "Devices" list
+          on the Bluetooth settings page, then select it</li>
+        <li>Confirm the pincode on both devices</li>
+        <li>Ensure the other device now shows as anything other that "Not
+          Set Up" in the "Devices" list</li>
+        </ul>
+      </dt>
+      <dd>
+        The Bluetooth interface can scan for, and pair with, another device
+      </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+        <li>The utility may prompt to install codecs; accept the recommendation
+          and install whatever codecs are required</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1792_RaspberryPi 5 8GB Desktop SD b/testcases/image/1792_RaspberryPi 5 8GB Desktop SD
new file mode 100644
index 0000000..9430e11
--- /dev/null
+++ b/testcases/image/1792_RaspberryPi 5 8GB Desktop SD
@@ -0,0 +1,201 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     ./definitions/pi_desktop_cases.xml
+-->
+
+    
+    <p>This test case is to be carried out on a Raspberry Pi 5 8GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>, and write the image to an SD card.
+      Then, using <tt>sudo rpi-eeprom-config</tt>, ensure the EEPROM's
+      <tt><a href="https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER";>BOOT_ORDER</a></tt>
+      is set to 0xf1.
+    </p>
+    <dl>
+      
+    
+    <dt>Watch the power LED</dt>
+      <dd>
+        Ensure it turns on at boot time, and stays lit as the kernel starts
+        (when the rainbow screen disappears)
+      </dd>
+  
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Launch Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi 5 8GB.
+      It should be in the region of 7.6-7.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the WiFi entry from the menu</li>
+        <li>Select your local WiFi network from the visible networks list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Disconnect ethernet, if any is plugged in</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+        <li>Reconnect ethernet, if it was connected before</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure bluetooth and pair a device
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the Bluetooth entry from the menu (you must be on this page
+          for the Pi to be "discoverable")</li>
+        <li>On another Bluetooth device (e.g. an Android phone) make sure it
+          is "discoverable" (e.g. on Android go into Bluetooth
+          settings)</li>
+        <li>Ensure the other device shows up in the "Devices" list
+          on the Bluetooth settings page, then select it</li>
+        <li>Confirm the pincode on both devices</li>
+        <li>Ensure the other device now shows as anything other that "Not
+          Set Up" in the "Devices" list</li>
+        </ul>
+      </dt>
+      <dd>
+        The Bluetooth interface can scan for, and pair with, another device
+      </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+        <li>The utility may prompt to install codecs; accept the recommendation
+          and install whatever codecs are required</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1812_RaspberryPi 4 4GB Desktop USB b/testcases/image/1812_RaspberryPi 4 4GB Desktop USB
new file mode 100644
index 0000000..ef95b3d
--- /dev/null
+++ b/testcases/image/1812_RaspberryPi 4 4GB Desktop USB
@@ -0,0 +1,201 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     ./definitions/pi_desktop_cases.xml
+-->
+
+    
+    <p>This test case is to be carried out on a Raspberry Pi 4 4GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>, and write the image to a USB3 drive.
+      Then, using <tt>sudo rpi-eeprom-config</tt>, ensure the EEPROM's
+      <tt><a href="https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER";>BOOT_ORDER</a></tt>
+      is set to 0xf41.
+    </p>
+    <dl>
+      
+    
+    <dt>Watch the power LED</dt>
+      <dd>
+        Ensure it turns on at boot time, and stays lit as the kernel starts
+        (when the rainbow screen disappears)
+      </dd>
+  
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Launch Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi 4 4GB.
+      It should be in the region of 3.6-3.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the WiFi entry from the menu</li>
+        <li>Select your local WiFi network from the visible networks list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Disconnect ethernet, if any is plugged in</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+        <li>Reconnect ethernet, if it was connected before</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure bluetooth and pair a device
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the Bluetooth entry from the menu (you must be on this page
+          for the Pi to be "discoverable")</li>
+        <li>On another Bluetooth device (e.g. an Android phone) make sure it
+          is "discoverable" (e.g. on Android go into Bluetooth
+          settings)</li>
+        <li>Ensure the other device shows up in the "Devices" list
+          on the Bluetooth settings page, then select it</li>
+        <li>Confirm the pincode on both devices</li>
+        <li>Ensure the other device now shows as anything other that "Not
+          Set Up" in the "Devices" list</li>
+        </ul>
+      </dt>
+      <dd>
+        The Bluetooth interface can scan for, and pair with, another device
+      </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+        <li>The utility may prompt to install codecs; accept the recommendation
+          and install whatever codecs are required</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1813_RaspberryPi 4 8GB Desktop USB b/testcases/image/1813_RaspberryPi 4 8GB Desktop USB
new file mode 100644
index 0000000..0a6df98
--- /dev/null
+++ b/testcases/image/1813_RaspberryPi 4 8GB Desktop USB
@@ -0,0 +1,201 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     ./definitions/pi_desktop_cases.xml
+-->
+
+    
+    <p>This test case is to be carried out on a Raspberry Pi 4 8GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>, and write the image to a USB3 drive.
+      Then, using <tt>sudo rpi-eeprom-config</tt>, ensure the EEPROM's
+      <tt><a href="https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER";>BOOT_ORDER</a></tt>
+      is set to 0xf41.
+    </p>
+    <dl>
+      
+    
+    <dt>Watch the power LED</dt>
+      <dd>
+        Ensure it turns on at boot time, and stays lit as the kernel starts
+        (when the rainbow screen disappears)
+      </dd>
+  
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Launch Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi 4 8GB.
+      It should be in the region of 7.6-7.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the WiFi entry from the menu</li>
+        <li>Select your local WiFi network from the visible networks list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Disconnect ethernet, if any is plugged in</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+        <li>Reconnect ethernet, if it was connected before</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure bluetooth and pair a device
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the Bluetooth entry from the menu (you must be on this page
+          for the Pi to be "discoverable")</li>
+        <li>On another Bluetooth device (e.g. an Android phone) make sure it
+          is "discoverable" (e.g. on Android go into Bluetooth
+          settings)</li>
+        <li>Ensure the other device shows up in the "Devices" list
+          on the Bluetooth settings page, then select it</li>
+        <li>Confirm the pincode on both devices</li>
+        <li>Ensure the other device now shows as anything other that "Not
+          Set Up" in the "Devices" list</li>
+        </ul>
+      </dt>
+      <dd>
+        The Bluetooth interface can scan for, and pair with, another device
+      </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+        <li>The utility may prompt to install codecs; accept the recommendation
+          and install whatever codecs are required</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1814_RaspberryPi 400 Desktop USB b/testcases/image/1814_RaspberryPi 400 Desktop USB
new file mode 100644
index 0000000..593ea7d
--- /dev/null
+++ b/testcases/image/1814_RaspberryPi 400 Desktop USB
@@ -0,0 +1,201 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     ./definitions/pi_desktop_cases.xml
+-->
+
+    
+    <p>This test case is to be carried out on a Raspberry Pi 400.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>, and write the image to a USB3 drive.
+      Then, using <tt>sudo rpi-eeprom-config</tt>, ensure the EEPROM's
+      <tt><a href="https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER";>BOOT_ORDER</a></tt>
+      is set to 0xf41.
+    </p>
+    <dl>
+      
+    
+    <dt>Watch the power LED</dt>
+      <dd>
+        Ensure it turns on at boot time, and stays lit as the kernel starts
+        (when the rainbow screen disappears)
+      </dd>
+  
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Launch Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi 400.
+      It should be in the region of 3.6-3.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the WiFi entry from the menu</li>
+        <li>Select your local WiFi network from the visible networks list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Disconnect ethernet, if any is plugged in</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+        <li>Reconnect ethernet, if it was connected before</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure bluetooth and pair a device
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the Bluetooth entry from the menu (you must be on this page
+          for the Pi to be "discoverable")</li>
+        <li>On another Bluetooth device (e.g. an Android phone) make sure it
+          is "discoverable" (e.g. on Android go into Bluetooth
+          settings)</li>
+        <li>Ensure the other device shows up in the "Devices" list
+          on the Bluetooth settings page, then select it</li>
+        <li>Confirm the pincode on both devices</li>
+        <li>Ensure the other device now shows as anything other that "Not
+          Set Up" in the "Devices" list</li>
+        </ul>
+      </dt>
+      <dd>
+        The Bluetooth interface can scan for, and pair with, another device
+      </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+        <li>The utility may prompt to install codecs; accept the recommendation
+          and install whatever codecs are required</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1815_RaspberryPi 5 4GB Desktop USB3 b/testcases/image/1815_RaspberryPi 5 4GB Desktop USB3
new file mode 100644
index 0000000..a7c0ff3
--- /dev/null
+++ b/testcases/image/1815_RaspberryPi 5 4GB Desktop USB3
@@ -0,0 +1,201 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     ./definitions/pi_desktop_cases.xml
+-->
+
+    
+    <p>This test case is to be carried out on a Raspberry Pi 5 4GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>, and write the image to a USB3 drive.
+      Then, using <tt>sudo rpi-eeprom-config</tt>, ensure the EEPROM's
+      <tt><a href="https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER";>BOOT_ORDER</a></tt>
+      is set to 0xf41.
+    </p>
+    <dl>
+      
+    
+    <dt>Watch the power LED</dt>
+      <dd>
+        Ensure it turns on at boot time, and stays lit as the kernel starts
+        (when the rainbow screen disappears)
+      </dd>
+  
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Launch Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi 5 4GB.
+      It should be in the region of 3.6-3.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the WiFi entry from the menu</li>
+        <li>Select your local WiFi network from the visible networks list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Disconnect ethernet, if any is plugged in</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+        <li>Reconnect ethernet, if it was connected before</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure bluetooth and pair a device
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the Bluetooth entry from the menu (you must be on this page
+          for the Pi to be "discoverable")</li>
+        <li>On another Bluetooth device (e.g. an Android phone) make sure it
+          is "discoverable" (e.g. on Android go into Bluetooth
+          settings)</li>
+        <li>Ensure the other device shows up in the "Devices" list
+          on the Bluetooth settings page, then select it</li>
+        <li>Confirm the pincode on both devices</li>
+        <li>Ensure the other device now shows as anything other that "Not
+          Set Up" in the "Devices" list</li>
+        </ul>
+      </dt>
+      <dd>
+        The Bluetooth interface can scan for, and pair with, another device
+      </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+        <li>The utility may prompt to install codecs; accept the recommendation
+          and install whatever codecs are required</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1816_RaspberryPi 5 4GB Desktop NVMe b/testcases/image/1816_RaspberryPi 5 4GB Desktop NVMe
new file mode 100644
index 0000000..96d110c
--- /dev/null
+++ b/testcases/image/1816_RaspberryPi 5 4GB Desktop NVMe
@@ -0,0 +1,201 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     ./definitions/pi_desktop_cases.xml
+-->
+
+    
+    <p>This test case is to be carried out on a Raspberry Pi 5 4GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>, and write the image to an NVMe drive.
+      Then, using <tt>sudo rpi-eeprom-config</tt>, ensure the EEPROM's
+      <tt><a href="https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER";>BOOT_ORDER</a></tt>
+      is set to 0xf61.
+    </p>
+    <dl>
+      
+    
+    <dt>Watch the power LED</dt>
+      <dd>
+        Ensure it turns on at boot time, and stays lit as the kernel starts
+        (when the rainbow screen disappears)
+      </dd>
+  
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Launch Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi 5 4GB.
+      It should be in the region of 3.6-3.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the WiFi entry from the menu</li>
+        <li>Select your local WiFi network from the visible networks list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Disconnect ethernet, if any is plugged in</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+        <li>Reconnect ethernet, if it was connected before</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure bluetooth and pair a device
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the Bluetooth entry from the menu (you must be on this page
+          for the Pi to be "discoverable")</li>
+        <li>On another Bluetooth device (e.g. an Android phone) make sure it
+          is "discoverable" (e.g. on Android go into Bluetooth
+          settings)</li>
+        <li>Ensure the other device shows up in the "Devices" list
+          on the Bluetooth settings page, then select it</li>
+        <li>Confirm the pincode on both devices</li>
+        <li>Ensure the other device now shows as anything other that "Not
+          Set Up" in the "Devices" list</li>
+        </ul>
+      </dt>
+      <dd>
+        The Bluetooth interface can scan for, and pair with, another device
+      </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+        <li>The utility may prompt to install codecs; accept the recommendation
+          and install whatever codecs are required</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1817_RaspberryPi 5 8GB Desktop USB b/testcases/image/1817_RaspberryPi 5 8GB Desktop USB
new file mode 100644
index 0000000..bbd9724
--- /dev/null
+++ b/testcases/image/1817_RaspberryPi 5 8GB Desktop USB
@@ -0,0 +1,201 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     ./definitions/pi_desktop_cases.xml
+-->
+
+    
+    <p>This test case is to be carried out on a Raspberry Pi 5 8GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>, and write the image to a USB3 drive.
+      Then, using <tt>sudo rpi-eeprom-config</tt>, ensure the EEPROM's
+      <tt><a href="https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER";>BOOT_ORDER</a></tt>
+      is set to 0xf41.
+    </p>
+    <dl>
+      
+    
+    <dt>Watch the power LED</dt>
+      <dd>
+        Ensure it turns on at boot time, and stays lit as the kernel starts
+        (when the rainbow screen disappears)
+      </dd>
+  
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Launch Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi 5 8GB.
+      It should be in the region of 7.6-7.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the WiFi entry from the menu</li>
+        <li>Select your local WiFi network from the visible networks list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Disconnect ethernet, if any is plugged in</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+        <li>Reconnect ethernet, if it was connected before</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure bluetooth and pair a device
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the Bluetooth entry from the menu (you must be on this page
+          for the Pi to be "discoverable")</li>
+        <li>On another Bluetooth device (e.g. an Android phone) make sure it
+          is "discoverable" (e.g. on Android go into Bluetooth
+          settings)</li>
+        <li>Ensure the other device shows up in the "Devices" list
+          on the Bluetooth settings page, then select it</li>
+        <li>Confirm the pincode on both devices</li>
+        <li>Ensure the other device now shows as anything other that "Not
+          Set Up" in the "Devices" list</li>
+        </ul>
+      </dt>
+      <dd>
+        The Bluetooth interface can scan for, and pair with, another device
+      </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+        <li>The utility may prompt to install codecs; accept the recommendation
+          and install whatever codecs are required</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file
diff --git a/testcases/image/1818_RaspberryPi 5 8GB Desktop USB b/testcases/image/1818_RaspberryPi 5 8GB Desktop USB
new file mode 100644
index 0000000..270cc82
--- /dev/null
+++ b/testcases/image/1818_RaspberryPi 5 8GB Desktop USB
@@ -0,0 +1,201 @@
+<!-- Please do not edit this file directly; it was generated with the
+     tools/test_case_gen script using the following configuration as input:
+     ./definitions/pi_desktop_cases.xml
+-->
+
+    
+    <p>This test case is to be carried out on a Raspberry Pi 5 8GB.</p>
+    <p>Follow the installation steps at <a href="https://ubuntu.com/download/iot/installation-media";>
+      IoT installation media</a>, and write the image to an NVMe drive.
+      Then, using <tt>sudo rpi-eeprom-config</tt>, ensure the EEPROM's
+      <tt><a href="https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER";>BOOT_ORDER</a></tt>
+      is set to 0xf61.
+    </p>
+    <dl>
+      
+    
+    <dt>Watch the power LED</dt>
+      <dd>
+        Ensure it turns on at boot time, and stays lit as the kernel starts
+        (when the rainbow screen disappears)
+      </dd>
+  
+    
+    <dt>Watch the boot screen</dt>
+    <dd>Check that the Ubuntu logo, and spinner appear during boot time</dd>
+  
+    
+    <dt>
+      Ensure you have speakers on your monitor or headphones plugged into it
+    </dt>
+    <dd>
+      Check that the Ubuntu start up sound plays through the monitor's audio
+      output before the initial System Configuration appears
+    </dd>
+  
+    
+    <dt>Select your timezone, and click on the Continue button</dt>
+    <dd>The 'Who are you?' screen appears</dd>
+  
+    
+    <dt>
+      Input your initial user details and password
+      <em>admin</em> can not be used - it is a dedicated Linux User
+    </dt>
+    <dd>
+      Name, username and password are accepted. Login options and home folder
+      encryption choices shown
+    </dd>
+    <dd>Continue button becomes available</dd>
+  
+    
+    <dt>
+      Run <code>sudo flash-kernel</code>
+    </dt>
+    <dd>
+      Exit code is clean (0) and no error messages are reported
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Restart..." from that
+      menu, and confirm "Restart" in the dialog that appears
+    </dt> <dd>
+      System reboots successfully to a login prompt
+    </dd>
+  
+    
+    <dt>
+      Click the power icon at the top right of the screen, and expand the "Power
+      Off / Log Out" entry in the menu that appears, then "Power Off..." from
+      that menu, and confirm "Power Off" in the dialog that appears
+    </dt>
+    <dd>
+      System shuts down in a reasonable time (less than a minute)
+    </dd>
+  
+    
+    <dt>
+      Launch Settings from
+      the menu that appears, then "About" in the left panel of the window that
+      appears
+    </dt>
+    <dd>
+      Reported "Memory" is consistent with a Raspberry Pi 5 8GB.
+      It should be in the region of 7.6-7.8GB.
+    </dd>
+  
+    <ns0:incldue ref="dual-monitor"></ns0:incldue>
+    
+    <dt>
+      Check auto-configuration of ethernet
+      <ul>
+        <li>Run <code>ip addr</code></li>
+        <li>Check that a valid IP address is recorded on the eth0 interface</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+      </ul>
+    </dt>
+    <dd>
+      The "eth0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure wifi via Network Manager
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the WiFi entry from the menu</li>
+        <li>Select your local WiFi network from the visible networks list</li>
+        <li>Enter the password for your local WiFi network when prompted</li>
+        <li>Wait a few seconds (to allow DHCP to complete), then run <code>ip
+          addr</code></li>
+        <li>Check that a valid IP address is recorded on the wlan0 interface</li>
+        <li>Disconnect ethernet, if any is plugged in</li>
+        <li>Check <code>ping google.com</code> successfully pings a few times
+          (<tt>Ctrl+C</tt> to cancel)</li>
+        <li>Reconnect ethernet, if it was connected before</li>
+      </ul>
+    </dt>
+    <dd>
+      The "wlan0" interface should have a DHCP
+      assigned IP address and you should be able to ping google.com
+    </dd>
+  
+    
+    <dt>
+      Configure bluetooth and pair a device
+      <ul>
+        <li>Launch settings</li>
+        <li>Select the Bluetooth entry from the menu (you must be on this page
+          for the Pi to be "discoverable")</li>
+        <li>On another Bluetooth device (e.g. an Android phone) make sure it
+          is "discoverable" (e.g. on Android go into Bluetooth
+          settings)</li>
+        <li>Ensure the other device shows up in the "Devices" list
+          on the Bluetooth settings page, then select it</li>
+        <li>Confirm the pincode on both devices</li>
+        <li>Ensure the other device now shows as anything other that "Not
+          Set Up" in the "Devices" list</li>
+        </ul>
+      </dt>
+      <dd>
+        The Bluetooth interface can scan for, and pair with, another device
+      </dd>
+  
+    
+    <dt>
+      Start Firefox and play a YouTube video
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Click on the Firefox icon on the left of the screen</li>
+        <li>Navigate to <a href="https://youtube.com";>YouTube</a></li>
+        <li>Select a video (with audio!) to play</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Download and play BigBuckBunny in the built-in video player
+      <ul>
+        <li>Ensure you have functioning speakers / a headset plugged into your
+          monitor</li>
+        <li>Start a terminal session</li>
+        <li>Run <code>wget https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4</code></li>
+        <li>Once the download has completed, run <code>totem big_buck_bunny_720p_surround.mp4</code></li>
+        <li>The utility may prompt to install codecs; accept the recommendation
+          and install whatever codecs are required</li>
+      </ul>
+    </dt>
+    <dd>
+      Check the video plays smoothly, and that audio is output through the
+      monitor, or speakers / headset plugged into the monitor
+    </dd>
+  
+    
+    <dt>
+      Press <tt>Super+L</tt> and wait for the lock screen to appear, then
+      fade, then for the monitor to suspend. Move the mouse to wake up the
+      monitor, then enter your password to unlock the desktop.
+    </dt>
+    <dd>
+      Ensure the monitor suspends correctly, that it awakens again correctly,
+      and that the desktop unlocks successfully (without the system hanging).
+    </dd>
+  
+  
+    </dl>
+    <p>If <strong>all</strong> actions produce the expected results listed,
+      please <a href="results#add_result">submit</a> a 'passed' result.</p>
+    <p>If <strong>any</strong> action fails, or produces an unexpected result,
+      please <a href="results#add_result">submit</a> a 'failed' result and <a href="../../buginstructions">file a bug</a>. Please be sure to include
+      the bug number when you <a href="results#add_result">submit</a> your
+      result.</p>
+  
\ No newline at end of file

Follow ups