Raspberry Pi 4 Ubuntu Server / Desktop 18.04.4 Image (unofficial)

Fine, I'll do it myself
No Official Pi 4 Support? Fine, I’ll do it myself

This is a unofficial distribution of Ubuntu Server 18.04.4 for Raspberry Pi 4. It is provided with the purpose of letting us all play with the new Pi 4’s new increased RAM and other capabilities until Ubuntu’s repositories are updated with support for the newest Pi.

I want to thank all the commenters on this article and my Ubuntu Server Installation Guide for Raspberry Pi 4 who have contributed a ton of fixes to help get the image to the point it is at now! I also want to thank anyone who has reported issues or pull requests on the official GitHub page. This has truly been a collaborative effort and I expect it will continue to be until official support is released.


  • Fully 64-bit kernel and userspace environment
  • Updates normally via apt dist-upgrade from the official Ubuntu repositories
  • Raspberry Pi userland utilities included (vcgencmd, dtoverlay, etc.)
  • raspi-config utility included (good for enabling I2C, SPI, etc.)
  • Uses the official 4.19.y Raspbian linux kernel built with arm64 flags
  • Firmware updates from the Raspbian image and the RPi-Distro/firmware-nonfree repository
  • 3D video hardware acceleration support via vc4-fkms-v3d stack.  Videos / games are giving very high and smooth FPS.
  • Includes kernel headers and the full kernel source tree used to build a kernel with your own custom flags (/usr/src/ directory)
  • Can build out-of-tree and DKMS modules
  • Full desktop support available via apt install kubuntu-desktop, xubuntu-desktop, xfce4, mate-desktop-environment, etc.
  • 5 GHz WiFi channel support
  • Working Bluetooth and WiFi
  • KVM virtualization support
  • Update script provided to update kernels/firmware/modules

GitHub Project Location

The image and source code to build the image are open source and freely available on GitHub:


Update Bootloader Firmware First (using Raspbian)!

One important new thing to understand about the Raspberry Pi 4 vs. older Pis is that the 4 now has real onboard firmware that is on a special chip separate from everything else. Older Raspberry Pis did not have real onboard firmware and loaded all of their firmware from the SD card every single boot.

Before you install this image you should run Raspbian and install the latest firmware using this command:

sudo apt-get update && sudo apt-get dist-upgrade -y
sudo rpi-update

Next we are going to check for bootloader updates. We do this using the new rpi-eeprom utility. The following command will check for updates:

sudo rpi-eeprom-update -a

For a lot more information about the new rpi-eeprom bootloader utility make sure you check out my Raspberry Pi 4 Bootloader Guide.

If you have multiple SD cards or storage devices laying around it is a good idea to designate one of them as the “Official Raspbian Firmware Updater” card. Using this method you can periodically swap out the card and install the latest firmware updates to your Pi 4 and then switch right back to Ubuntu.

Preinstalled Image Download / Instructions

To download the precompiled image see the releases section located at https://github.com/TheRemote/Ubuntu-Server-raspi4-unofficial/releases

The file you are looking for on the releases page is ubuntu-18.04.4-preinstalled-server-arm64+raspi4.img.xz. Download this file and extract the .img file from inside. Use the free and awesome 7-zip if you are on Windows to extract the .img file.

Now burn the .img file using your favorite program. I use Win32DiskImager. Now insert your SD card / storage device into the Pi and start it up!

Username: ubuntu

Password: ubuntu

Upon logging in for the first time you will be required to change the default password to something else. Once you have done that log back in and you should be all set!


Using apt-get

First and foremost 99% of your updates will be coming from Ubuntu’s official repositories directly from apt as it would with any official image. The only things set on package hold (using apt-mark hold flash-kernel linux-raspi2 linux-image-raspi2 linux-headers-raspi2 linux-firmware-raspi2) to prevent them from overwriting the firmware already on the image. If you wish, you may apt-mark unhold those same packages and you will be 100% official Ubuntu. Your installation will probably immediately break if you do it now, but when the RPI 4 support is backported this is how you can change back to theirs.

Included Updater

I have also included an updater that will give you the latest kernel/firmware/modules/fixes that are included in each release. If Ubuntu’s 18.04.4 update servers get working firmware for the Raspberry Pi 4 I will change the update script to remove the apt-mark holds on the Raspberry Pi firmware package in apt and close the project down (leaving this here for people to learn from to hack an unsupported device into their own distros, or until I do it again on the next Pi release!)


If you have V18 or later of the image the updater is located at /home/Updater.sh. Type/paste:

sudo ./Updater.sh

If you have an older version of the image or need to manually update your Updater script, use the following commands:

wget https://raw.githubusercontent.com/TheRemote/Ubuntu-Server-raspi4-unofficial/master/Updater.sh
chmod +x Updater.sh
sudo ./Updater.sh

Updates to the kernel/firmware/fixes to common problems will be provided as long as there is interest.

Forcing Update

If you want to force the update (if you suspect/know something went wrong during an update, or you are troubleshooting, etc) use the following commands:

cd /home 
sudo rm /etc/imgrelease 
sudo ./Updater.sh

These commands remove a small file that contains the version of the image you have installed. This will cause the updater to allow you update again.

Install Full Ubuntu Desktop Version

To install the full version of Ubuntu Desktop use one of the following:

  • sudo apt-get update && sudo apt-get dist-upgrade -y && sudo apt-get install ubuntu-desktop -y
  • sudo apt-get update && sudo apt-get dist-upgrade -y && sudo apt-get install xubuntu-desktop -y
  • sudo apt-get update && sudo apt-get dist-upgrade -y && sudo apt-get install kubuntu-desktop -y

The xubuntu variant is lighter than the kubuntu variant but either one will need to download and install thousands of packages to complete the upgrade. This can obviously take quite a long time. How long it will take depends on your internet connection and the quality of your storage device.

Running this task overnight or when you have an errand to go run is definitely advised!



Beyond keeping your firmware and distribution up to date there is only one thing that sets apart one Ubuntu installation on a Pi from any other: your storage device. The difference between a low end to high end SD card can be a 2-3x performance, and the difference between a SD card and a solid state drive is a whole order of magnitude.

To help people know whether they have high performance storage I made the Raspberry Pi Storage Benchmark that will give you a performance score. Running the benchmark is really easy. Paste or type the following commands:

curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash

The storage benchmark will run several well known and respected benchmarks such as iozone and fio and calculate a score for your device.

Most importantly, to compare your score or if you want to just view other benchmark submissions check out the full results of all submissions in a searchable/sortable table at the Raspberry Pi Storage Benchmark Results Page.

Using USB Storage / Solid State Drive (SSD)

Right now the Pi 4 still lacks USB boot support. However, you can still do it by using the trick of having a SD card that you use as a bootloader only and have the rootfs on your USB storage. This is kind of a waste of a SD card but it’s definitely worth it as it allows you to hit those full sweet sweet USB 3.0 transfer speeds right now without waiting until the USB booting firmware update is released.

Using a solid state on the Ubuntu image is incredibly easy (even easier than Raspbian). Here’s the instructions:

  • Download the Desktop or Server image above and write it to your SD card
  • Navigate to the /boot drive on your SD card and open cmdline.txt
  • Change the part of the line that says root=/dev/mmcblk0p2 to root=/dev/sda2
  • Now burn the image again to your SSD
  • Plug in both the SSD and Micro SD and boot up the Pi

See my Raspberry Pi 4 USB Booting Guide for more information on USB booting / how this works / how to set it up.

Known Issues / Fixes

This section will be updated with known issues/fixes as people test the image and give feedback.

No display (HDMI)

If you have no display on your HDMI monitor you may need to toggle some options in /boot/config.txt. Put the SD card back in your computer and go to config.txt on the boot partition.

Here are some examples of good ones to try to get your display working:

#uncomment if you get no picture on HDMI for a default "safe" mode

#uncomment if hdmi display is not detected and composite is being output

#uncomment to force a specific HDMI mode (this will force VGA)

#uncomment to force a HDMI mode rather than DVI. This can make audio work in DMT (computer monitor) modes

#uncomment for composite PAL

Which option or options may fix it for you is impossible to say. Everyone’s display is different so you may have to try a few times before you get it.

Kubuntu-Desktop display issues

If your windows are not drawing correctly in Kubuntu (missing window borders, black screens in windows, etc.) then you need to disable compositing.

Use the shortcut Alt + Shift + F12 to disable the compositor and everything will draw normally.  Now go into the Settings app and go to the “Compositor” section and uncheck “Enable compositor at startup” to prevent it from turning back on when you reboot.

This has been resolved in V16+.

Build Instructions

If you don’t want to use the precompiled binaries you can also build it yourself with the provided build script!

The build script is meant to be ran in a *throwaway* Ubuntu 18.04.4 Virtual Machine (VM). Here are the reasons you shouldn’t ignore this:

  • Absolutely no steps have been taken to make the process “secure” or “safe” for your main machine
  • It assumes the home directory is safe to build in (it’s not on a main system)
  • It installs hundreds of development packages that you only need to build the image (would bog down a main system)
  • It chroots into at least 4 different images during the build and chroots leak (causing instability/security concerns)
  • If things go wrong with the type of commands used in the script your system can get borked *real quick* (like instantly)

Now assuming you have your fresh throwaway VM ready download the build script:

cd ~
wget https://raw.githubusercontent.com/TheRemote/Ubuntu-Server-raspi4-unofficial/master/BuildPiKernel64bit.sh
chmod +x BuildPiKernel64bit.sh

Now is a good time to read through the build script to understand what it is doing. It will download several images and update them in a chroot and then extract the firmware. It then sets up all of the changes/fixes in the target image.

Once you feel you are ready to proceed run the build script with:


The script’s final output will be “ubuntu-18.04.4-preinstalled-server-arm64+raspi4.img” along with the xz compressed version and an updates.tar.xz file which is meant to bring a normal 18.04.4 installation up to date.

Release History

Release v28 – 2/24/2020

  • Updated source image to Ubuntu 18.04.4
  • Added xubuntu-desktop precompiled images
  • Updated to kernel 4.19.105 (addresses critical vulnerability)
  • Fixed flash-kernel package missing dtb files
  • Fixed issue that could cause ssh keys to not be created properly

Release v27 – 1/20/2020

  • Updated to kernel 4.19.97
  • Updated to Ubuntu 19.10.1 for base firmware instead of 19.10
  • Updated Raspbian firmware

Release v26 – 12/20/2019

  • Updated to kernel 4.19.89
  • Power management firmware features for WiFi are now enabled (saves 55mA (~270mW) of power on Pi 4)
  • Updated firmware

Release v25 – 12/3/2019

  • Fixed issue with desktop driver not loading properly (thanks tarsij!)
  • Updated kernel with a few V3D and other fixes

Release v24 – 11/29/2019

  • Updated kernel to 4.19.86
  • Updated packages and firmware
  • This kernel has additional USB and V3D improvements

Release v23 – 11/21/2019

  • Updated kernel to 4.19.84
  • Fixed problem that could cause desktop v22 release to not load
  • Enabled AppArmor kernel flags
  • Fixed display performance in headless mode by setting hdmi_force_hotplug=1 to enable the creation of a virtual display
  • Added #dtparam=i2c0=on and #dtparam=i2c1=on examples to /boot/firmware/config.txt to help enable those interfaces if needed

Release v22 – 11/17/2019

  • Updated kernel to 4.19.83
    • This kernel includes a number of fixes to USB and other drivers — if you were having trouble with USB v22 is worth a try for you!
  • Fixed issue where lightdm service (used by xubuntu-desktop) would not load properly
  • Added bootcode.bin to /boot/firmware to allow older Pis to boot the image (3B+ confirmed to work so far, others need testing)
  • Added README documentation to /boot/firmware/overlays folder for documentation inside dtoverlay command
  • Updated firmware

Release v21 – 11/8/2019

  • Preinstalled Desktop binary (ubuntu-desktop) now available in the releases section
  • Netplan changes removed by popular demand — it was causing too many issues as everyone is using the image differently
  • Updater now removes old kernel source code automatically (no more manual cleaning of these large folders needed)

Release v20 – 11/7/2019

  • Fixed bug that was causing kernel modules to not load (updating using /home/Updater.sh recommended)

Release v19 – 11/6/2019

  • Fixed PulseAudio only playing sound in mono, stereo now works!
  • Added kernel flags to optimize speed/clean up warnings/fix crashes
  • Moved most fixes to /etc/rc.local so they are applied after installing a *ubuntu-desktop package without waiting for the next update
  • Removed machine-id from the base image so that cloned images wouldn’t all have a duplicate machine-id
  • Fixed audit service error
  • Fixed “spice-vdagent[2107]: Cannot access vdagent virtio channel /dev/virtio-ports/com.redhat.spice.0” error
  • Fixed triggerhappy crash related to /lib/systemd/system/triggerhappy.socket being wrong type

Release v18 – 11/3/2019

  • Update to kernel 4.19.81
  • Added udev rule to allow users to use vcgencmd without sudo (thanks xlazom00)
  • Fixed udev mounts not being visible (thanks wyuenho for the pull request)
  • Build script improvements now gets cross chain compiler / qemu user static 4.1 / related build dependencies
  • Build script now retrieves all dependencies for you on a blank Ubuntu 18.04.4 Virtual Machine (if you want to build)

Release v17 – 11/1/2019

  • Fixed issue with CUPS preventing firmware modules from loading in xubuntu-desktop
  • Fixed unescaped EOF issue that was messing up fixes in /etc/rc.local (thanks meisenzahl for the pull request!)

Release v16 – 10/31/2019

  • Updated Pi firmware (sound / video fixes, see https://github.com/Hexxeh/rpi-firmware/commit/c5736330216628b5ff8e3d17dde7cc03ce2126e6)
  • Updated Ubuntu-side firmware from updates included on the preinstalled 1910 release image
  • New 64 bit Raspberry Pi userland tools/libraries (vcgencmd) tools are now available — they are being freshly built each version now in the build script!
  • Fixed issue where Pulse would not come back on after first reboot
  • Fixed netplan so startup isn’t delayed by several minutes without an ethernet cable plugged in
  • Fixed several kernel flags related to sound/video

v15 Official Release – 10/28/2019

Script to update between releases is finally ready, and with that I am taking this out of pre-release!
To get the update script use the following commands:

wget https://raw.githubusercontent.com/TheRemote/Ubuntu-Server-raspi4-unofficial/master/Updater.sh
chmod +x Updater.sh
sudo ./Updater.sh

You can update from any pre-release release version. Please make a backup first!
The updater is located at /home/Updater.sh on v15 and up (to run type sudo bash /home/Updater.sh)

Pre-Release v14 – 10/26/2019

  • Kernel source tree and headers are now included in the image!
  • The kernel build source tree is located at rpi-linux-“${KERNEL_VERSION}”
  • Ubuntu’s first official release has come for the Pi 4 but it’s 19.10 only which is not a LTS release and support ends for it in -DKMS module building tested (you can test using apt install hello-dkms)
  • If you want custom kernel flags you can go to the /usr/src/rpi-linux folder and run make menuconfig (see BuildPiKernel64bit.sh for more info)
  • Rewrote build script to be more readable and reliable. It’s still a work in progress but I’m breaking things down into functions, etc.

Pre-Release v13 – 10/23/2019

  • raspi-config tool is now included with the image for (testing only, don’t use on critical fully set up images). You can use it to turn on i2c/spi/etc. File an issue if you find problems!
  • vcgencmd tool (and other libraspberrypi-userland packages) are now included (older build, works for essentials such as vcgencmd measure_temp, vcgencmd get_config int, vcgencmd get_throttled, etc)
  • Added 5Ghz WiFi band support (default regulatory domain US, change in /etc/default/crda if desired)
  • Updated kernel to 4.19.80
  • Fixed sound artifacts when playing YouTube/videos in browser
  • Fixed fsck errors during resize2fs operations

Pre-Release v12 – 10/6/2019

  • Fixed Bluetooth not automatically attaching (now appears in both console and desktop mode)
  • Updated firmware using the latest from the Raspbian image

Pre-Release v11 – 10/5/2019

  • Updated kernel and modules to rpi-4.19.75
  • Updated kernel to 4.19.76
  • Fixed several video driver issues including very low performance, YouTube videos in full screen freezing the Pi, low color resolution in xubuntu-desktop and graphical artifacts in kubuntu-desktop
  • Fixed bluetooth by adding missing firmware file not present in firmware-nonfree
  • Updated /boot/firmware/config.txt with useful HDMI debug flags — uncomment some of these such as hdmi_safe if you are not getting display output
  • Added lines in config.txt to configure SPI and i2C — you can uncomment these lines if you need to enable them
  • Updated WiFi firmware
  • Added missing regulatory.db files (used by WiFi) to /lib/firmware
  • Note for Kubuntu desktop: the compositor needs to be disabled for everything to draw correctly.  Use the shortcut Alt + Shift + F12 to disable the compositor and everything will draw normally.  Now go into the Settings app and go to the “Compositor” section and uncheck “Enable compositor at startup” to prevent it from turning back on when you reboot.

Pre-Release v10 – 10/3/2019

  • Fixed issue with wireless not showing in v9
  • Fixed bad symlink creation (pull request #38)

Pre-Release v9 – 10/2/2019

  • Updated kernel and modules to rpi-4.19.75
  • start*.elf and fixup*.dat files (GPU firmware) are now updated with each release
  • Kernel .config has been updated with the latest default config and Sakiki-‘s conform_config.sh parameters
  • New conform_config_jamesachambers.sh script added to better keep track of kernel config changes
  • SPI is now enabled
  • CPU bandwidth provisioning for FAIR_GROUP_SCHED is now enabled (CONFIG_CFS_BANDWIDTH=y)
  • Additional Ceph kernel config parameters enabled (see conform_config_jamesachambers.sh for all params)
  • A lot of additional hardware support has been enabled via the official Raspberry Pi default kernel config params — if you were having trouble with a device try v9
  • Cleaned up build script by adding additional needed dependencies to apt-get commands, broke up some sections and added additional comments

Pre-Release v8 – 9/21/2019

  • Updated kernel to rpi-4.19.73
  • Added hosts entry to prevent slow sudo command
  • Added CONFIG_CGROUP_PIDS=y to .config file
  • Committed extras folder to repository
  • Added forcefsck file to run fsck on first boot
  • Reduced image size substantially by running fstrim on .img

Pre-Release v7 – 9/8/2019

  • Updated kernel to rpi-4.19.71
  • Added CONFIG_BLK_DEV_RBD=y to kernel .config file to enable Ceph support

Pre-Release v6 – 9/7/2019

  • Updated kernel to rpi-4.19.71
  • Integrated all available updates from apt into the base image
  • Fixed display driver issue — if you are running v5 you can fix it by commenting out dtoverlay=vc4-fkms-v3d from /boot/config.txt
  • Enabled Ceph support in the kernel .config
  • Added build flags to kernel build line to build a more complete device tree (dtbo files)
  • Integrated all upstream updates since v5 from raspberrypi-linux and firmware-nonfree including a 3D driver fix for aarch64

Pre-Release v5 – 9/3/2019

  • Desktop support added
    • Expect lots of warnings in the logs. If you find solutions to them please leave a comment — many commits come from the comments!
    • Be advised — installing can take quite a while on a Pi — overnight or when you have something to do is a good time
  • Type one the following commands to install your preferred flavor of Ubuntu Desktop
    • sudo apt-get install xubuntu-desktop # or
    • sudo apt-get install kubuntu-desktop

Pre-Release v4 – 9/2/2019

  • Recompiled kernel to include support for Ubuntu features that are not present in Raspbian
  • Enabled USB UAS support
  • Fixed video driver by modifying config.txt and compiling with 3D support
  • System now boots clean and loads all modules (sudo systemd status)

Pre-Release v3 – 9/2/2019

  • Fixed IPv6 and a few other module load errors

Pre-Release v2 – 8/31/2019

  • Boot time reduced from 100s to around 30s
  • Messing with apt-mark or flash-kernel is no longer necessary and the fix has been built into the image
  • Fixed bluetooth firmware bug that was looking in /etc/firmware instead of /lib/firmware
  • Fixed entropy bug causing slow startup
  • Fixed mdadm.conf RAID warning
  • Module.symvars is now available in /boot/firmware/ if you need it to build kernel modules
    If you need the whole source tree check out the accompanying build script in the repository. It’s exactly the same as how the kernel and modules were built.
  • Various other fixes (special thanks to Joan at jamesachambers.com for contributing so many)
  • More at https://jamesachambers.com/raspberry-pi-ubuntu-server-18-04-2-installation-guide/

311 thoughts on “Raspberry Pi 4 Ubuntu Server / Desktop 18.04.4 Image (unofficial)”

  1. Avatar for Marius

    Hi, when I install the new image fresh on a new Raspi, Network is not working (LAN). Any know issues here? Network temporary not availabe. But also no routes… Which output will help you to find the issue? LAN is working with Raspbian.

  2. Avatar for Tobias Müllauer
    Tobias Müllauer

    Okej.. Se my resoults for my Raspberry pi4 and KVM. I am still trying to get this working with our dist but i dont get the KVM working.

    From this link :: https://help.ubuntu.com/community/KVM/Installation
    Use a 64 bit kernel (if possible)
    To see if your processor is 64-bit, you can run this command:

    Command:: kvm-ok
    ##My output :: KVM acceleration can be used

    Command:: egrep -c ‘(vmx|svm)’ /proc/cpuinfo
    If 0 it means that your CPU doesn’t support hardware virtualization.
    If 1 or more it does – but you still need to make sure that virtualization is enabled in the BIOS.
    ##My output :: 0

    Command:: egrep -c ‘ lm ‘ /proc/cpuinfo
    If 0 is printed, it means that your CPU is not 64-bit.
    If 1 or higher, it is. Note: lm stands for Long Mode which equates to a 64-bit CPU.
    ##My output : is 0

    Now see if your running kernel is 64-bit, just issue the following command:
    Command: uname -m
    ##Myoutput Linux ubuntu 4.19.81-v8-18 #18 SMP PREEMPT Sun Nov 3 12:49:11 PST 2019 aarch64 aarch64 aarch64 GNU/Linux

    x86_64 indicates a running 64-bit kernel. If you use see i386, i486, i586 or i686, you’re running a 32-bit kernel.
    Note: x86_64 is synonymous with amd64.

    1. Avatar for jamesachambers

      Hey Tobias,

      vmx is an Intel VT extension and svm is a AMD VT extension. x86_64 is also Intel/AMD only.

      The Pi uses a ARM64 (aarch64) processor so none of those extensions/commands will register for it. The kvm-ok command is correct that acceleration can be used as it was written to check processors that aren’t AMD/Intel.

      1. Avatar for Tobias Müllauer
        Tobias Müllauer

        Thx for info.

        But qemu is also a emulator right? you should not be able to run emulation but you activate kvm so you getter speed. Or have I get everything wrong about this? Maybe dum question but I am in learning stages.

        1. Avatar for jamesachambers

          Hey Tobias,

          That’s right. QEMU can do software emulation but software emulation is very slow. The KVM acceleration helps give some hardware accelerated emulation which is much faster!

  3. Avatar for Brendan

    James, thank you so very much for your work. I am writing this from my Kubuntu imaged RPi4. I got my new Pi a couple fo days ago and learned that the Ubuntu 19 is broken on the 4GB version and I was hoping to try something other than Raspbian.

  4. Avatar for reddragonemperor69

    I’m having issues with audio,works for the 1st boot but after reboot(either the 1st or the 2nd),it doesn’t work,no audio output is shown,i have tried releases. v15,v14 and v13 all have the same issues.I have updated to the latest firmware and latest bootloader,also tried playing around with cmdline parameters that was mentioned in the ‘Issues’ section of the bug report and still no avail,other than that everything seems to be working fine.

    I have the 4gb Raspberrypi4B and have installed the Kubuntu Desktop.

    Is there something i could do to help you fix this issue?I really like your build,19.10 was kinda slow and stuttery for me since it was missing some raspi related stuff.

  5. Avatar for Yos

    Hi James,

    First, thanks a lot for your great work, I have been using this for a while and its very nice 🙂
    However, I want to ask about a problem. I jsut tried to update it with Update.sh that you provided, and now suddenly, I cant go into the xubuntu desktop anymore, do you have any idea what might happen here?

    Thanks a lot!

    1. Avatar for jamesachambers

      Hey Yos,

      Try grabbing the latest update for sure, I was also having trouble getting into kubuntu-desktop in V15 but these have been fixed in the update I just released. I haven’t tested xubuntu so that would be awesome if you could give it a try!

      1. Avatar for Yos

        hey James,

        Thanks for responding, actually I found out the reason was the cups filter config files, which reset itself during the update. I change the cups fitler config file in the module-load directory, and all is good now 🙂

  6. Avatar for Simon

    ok ive got as far as Install Full Ubuntu Desktop Version. Nothing works after that i guess its because my wifi is not set up. tried to turn on wifi but than fails too. any chance you could add the steps needed?

      1. Avatar for Simon

        it wasn’t the desktop that was the problem, it was the wifi connection. sorted now after i found a LAN connection. Will standard desktop work for this? Thanks for all the work your doing, ive waited months to get a full ubuntu on my pi4. lets hope we get full usb boot soon too.

        1. Avatar for Simon

          Ok i installed using lan, added the standard desktop and configured my wifi. now when i boot without lan it starts network services and waits ages for network before booting.

          1. Avatar for Simon

            ok im running standard desktop, sudo apt install ubuntu-desktop and cant get bluetooth audio working. ive tried 2 devices and both connect but no audio. one connects only for a few seconds then disconnects.
            i get the same results with rasbian.

            1. Avatar for Simon

              Sound does not seem to work ether, only the default via hdmi 0. ubuntu desktop does not show devices to chose from. So can send audio to the audio out jack, or to a bt connection. Same with raspbian

              1. Avatar for Simon

                I just tried v19 with standard desktop. bt worked for the first attempt but it was breaking up, so i rebooted. after reboot its the same as it was before, no connection and no sound devices showing. so cant use wired headphones ether. hdmi0 is still working, but not shown under devices.

                1. Avatar for jamesachambers

                  Hey Simon,

                  Do your sound devices disappear after you connect Bluetooth to your headphones and reboot? I don’t think I’ve tried that yet. It must have to do with the Bluetooth pairing (maybe it’s crashing the kernel modules).

                  I’ll connect a Bluetooth devices and try to reproduce it on my end.

  7. Avatar for Mariusz

    Hi James. Could you make a desktop image available for download? It would be great to cut down hours it takes to download and install one. Thank you!

  8. Avatar for Fred

    Absolutely brilliant! Thanks James.

    I have installed x-desktop but can’t seem to get any analogue audio out, say from browser youtube video. Any suggestions?

    1. Avatar for Fred

      Some more investigation –

      Both HDMI and headphone (analogue) audio doesn’t seem to work with xubuntu-desktop. Clicking on the volume/audio control:
      “Parole Media Player” “not currently playing”.
      Clicking on the Audio mixer:
      “Connection to PulseAudio failed”. Text continues “PULSE_SERVER in the Environment/X11 Root Windows Properties or default-server in client.conf is misconfigured”.

      Tried restarting pulseaudio to see possible error message:

      sudo start-pulseaudio-x11

      “Home directory not accessible: Permission denied
      Connection failure: Connection refused”

      Any ideas?


      1. Avatar for jamesachambers

        Hey Fred,

        I found some problems with the Pulse configuration file and also the kernel flags needed to be tweaked. V16 is now out and should address this for you! You can run the Updater.sh as well to avoid a reimage.

      2. Avatar for jamesachambers

        Hey Fred,

        I fixed a ton of desktop issues in the freshly released V16. Yours seem slightly different than some of the other issues but one thing is for sure, Pulse was badly broken in V15! Updater.sh should take care of it but definitely give it a try and let me know!

  9. Avatar for Hammer

    Hi James! Thanks for your advice before – just a quick question as I can’t seem to find anything that really jumps out at me – when imaging the SD card with your Ubuntu variant, do I do like I would for a NOOBS image and format the card as FAT instead of exFAT using guiformat? I’m using a 64gb SD card.

    1. Avatar for Hammer

      Replying to my own comment with an update, hopefully you can help James –

      I imaged the sd card just fine with win32image and ran ubuntu. Works great. I’m utilizing your USB boot config guide for SSD/Flash drives, I imaged the SSD with the exact same process as I did for the SD card, and imaged it with your ubuntu variant, but now I’m stuck on the USB Boot Instructions part 5 – identifying the drive.

      The guide says we’re looking for the partuuID of your flash drive’s second partition (rootfs), but both the imaged ssd and the sd card are labeled ‘system-boot’ and ‘writable’, and have identical partuuid’s. Not sure where rootfs (is that root filesystem?) comes in.

      Tried looking through some other comments to get an idea where I could go from here, I’m pretty beginner when it comes to working with linux in general, but wondering if you could give any advice as to how to proceed. I saw one post saying I could use fdisk to change the partuuid’s from you – though your comment mentioned that the user might be using MBR for the drive (I set mine to GPT).

      Hope you can reply soon – Hammer

      1. Avatar for jamesachambers

        Hey Hammer,

        For Ubuntu instead of the root=PARTUUID you will use root=/dev/sda (it could be /dev/sda1 on your computer, or others, so plug in the hard drive to see what it gets assigned first!)

        Fixing up the SSD boot guide is on my to do list. I had been prioritizing other things because I expected the USB boot support to be done by now.

        If you have any trouble I will set up the USB boot on one of my test images tonight and write up some exact steps.

        1. Avatar for Hammer

          Cool! Thanks a lot for your help James. After looking for the cmdline.txt and finding it in the /boot/firmware/ dir, I updated it with root=/dev/sda1. Pi boots just fine. Currently I’ve moved to step 8: Update fstab, however rather than the fairly straightforward changing of the boot to the partuuid, I get this:

          LABEL=writable / ext3 defaults 0 1
          LABEL=system-boot /boot/firmware vfat defaults 0 1

          Unsure of what to change here, so rebooted and tested out findmnt -n -o SOURCE /, but still get /dev/mmcblk0p2 instead of /dev/sda1

          So not sure where I stand at the moment, looking forward to your new step by step. Thanks again!

          1. Avatar for jamesachambers

            That’s strange that it says that it’s an ext3 partition. Is that a typo? It should be:

            LABEL=writable / ext4 defaults 0 1
            LABEL=system-boot /boot/firmware vfat defaults 0 1

            I would change LABEL=writable to root=/dev/sda2 and that should do the trick!
            You can also do the LABEL=system-boot as root=/dev/sda1

            1. Avatar for Hammer

              Yes that ext3 was a typo –

              I tried updating the fstab by replacing “LABEL=writable” with “root=/dev/sda2” and “LABEL=system-boot” with “root=/dev/sda1”, but had a failure when rebooting, so then I tried replacing them with “/dev/sda2” and “/dev/sda1” respectively, which booted up fine. However, after that, I tried command “findmnt -n -o SOURCE” / and still got /dev/mmcblk0p2 instead of /dev/sda2.

              I skipped to step 9 and resized /dev/sda to utilize all the disk space, and that worked just fine as directed, minus the fact that I still wasn’t running off of the SSD, so when I use command “df -h” my filesystem my /dev/root/ was still running off the SD card (as it showed size 59G).

              I looked up how fstab works and it’s still a bit of a mystery to me why it’s not booting up utilizing the ssd. Any help you can give would be a huge boon. Also, I saw you have links on the bottom of your site for BC or ETH donations, do you do anything else? I would love to donate something for spending your time on my problems.

  10. Avatar for Michael

    Hi James,
    I have installed v12 and it works very well (hosting with kvm) except of when I am running out of memory. Therefore I added some swap.
    Thanks for all your work.
    Now my question. Is it possible to upgrade to v13 without reinstalling? Is there a risk changing the held back packets with apt-mark to the newer?

    Thanks a lot, Michael

    1. Avatar for jamesachambers

      Hey Michael,

      It’s now possible! There’s an updater for the image. Here is how to get it:

      wget https://raw.githubusercontent.com/TheRemote/Ubuntu-Server-raspi4-unofficial/master/Updater.sh
      chmod +x Updater.sh
      sudo ./Updater.sh

  11. Avatar for Antonio

    Hi James! thx so so so much for your effort to develop this ubuntus version for Pi4. I’m very noob on linux, I just want insert the image on my SD card and install ubuntu, can I do this with your Image?? thx!!!!

  12. Avatar for Ilia O.

    Huge thank-you for your work, James! FYI in xubuntu desktop system properties somehow show up blank (click on gear icon in desktop right top corner, select system properties).

  13. Avatar for Marius

    Thanks, it looks awesome! I have the problem, that when I install Chromium I only get a blank window named TAB and nothing else. And I cant use the full resolution of my monitor, it just goes up to 1920.

    1. Avatar for jamesachambers

      Very cool! I am at a conference for work all week but I’m definitely going to try this when I get back. It will be interesting to see how they implemented some of the RPI 4 support and see if it would be useful for fixing remaining issues in this testing image.

      I wonder if this means they aren’t going to do official support for 18.04.3 as 19.10 only has a 9 month lifespan since it’s not a LTS release. Hopefully they just released this one with it but will backport Pi 4 support to the LTS release!

      1. Avatar for Tommy Thorn

        Re. Ubuntu 19.10: curiously while I can ssh in (and install ubuntu-desktop etc), I have been unable to get keyboard or mouse to do anything. Back to the James Chambers Ubuntu.

            1. Avatar for jamesachambers

              The fix for this image was I used the same 4.19.y kernel that the official Raspberry Pi uses. I believe the fixes were made directly in the kernel code.

              It looks like the new version of Ubuntu 19.10 is using a 5.0 kernel which doesn’t appear to have the fix implemented. There’s probably a kernel patch somewhere for it that you could apply to the Ubuntu kernel but finding it and then rebuilding the kernel yourself would be a pain of course.

              It could also be firmware related. I haven’t done too much experimenting yet on the 19.10 with trying to fix things in it, I was just making a note of what wasn’t working in it (and what was). You could try some different sets of firmware if you’re comfortable replacing the /lib/firmware directory on a test image!

          1. Avatar for Dirk

            The fix is available right now by Hui Wang

            just download the deb (https://people.canonical.com/~hwang4/rpiv2/arm64/) to your pi’s rootfs

            Then run:
            sudo dpkg -i linux-modules-5.3.0-1008-raspi2_5.3.0-1008.9+newupdate_arm64.deb
            sudo dpkg -i linux-image-5.3.0-1008-raspi2_5.3.0-1008.9+newupdate_arm64.deb
            sudo reboot

            The patches which are included will be committed to the ubuntu kernel

            Please realize, that these patches are not necessary for the Ubuntu 18* system, only for the new 19.10 server system for raspberry pi with more than 3 GB memory

  14. Avatar for Mullcom

    ….download the precompiled image …

    Does this mean that I don’t have to do anything in boot folder?

    I have try to run qemu with kwm enable. But it say as a error I need hardware accelerator. I have try other dist but I always ending up on this error in the end. I did have hope for this nice guide/build that solving it but is don’t.

    Pleas need some guidance.

    Running pi 4 with 4gb ram.

    1. Avatar for jamesachambers

      Hey Mullcom,

      It sounds like your host operating system doesn’t have KVM enabled. That would explain why every image is giving you that when you try to use it. What is your host OS you are trying to run qemu in?

      1. Avatar for Tobias Müllauer

        First of all thx for Answering. Its mean allot for me.
        I am trying to get Windows 10 to boot up i have try different type of guides and ISO files. Is there anyway to see

        When i compile Qwmu i get YES for KVM-Enable.
        When i type ls -l /dev/kvm i get “crw-rw—- 1 root kvm 10, 232 Jan 28 2018 /dev/kvm”
        right now i have this output on umame -a –> Linux ubuntu 4.19.76-v8+ #1 SMP PREEMPT Sat Oct 5 19:34:32 MDT 2019 aarch64 aarch64 aarch64 GNU/Linux

        Here is a link on RPI4 on WoA in github

        ###Here are some links i have test and read for get information how to get it to work.

        1. Avatar for Tobias Müllauer
          Tobias Müllauer

          Forgot to add this one.

          sudo qemu-system-x86_64 -enable-kvm -machine q35 -smp sockets=1,cores=1,threads=2 -m 2048 -usb -device usb-kbd -device usb-tablet -rtc base=localtime -net nic,model=virtio -net user,hostfwd=tcp::4444-:4444 -drive file=hdd.img ,media=disk
          qemu-system-x86_64: -macgube accel=kvm: No accelerator found.

    1. Avatar for jamesachambers

      Should be “ubuntu” for both for the first login and then it will immediately have you change it before letting you log in completely.

  15. Avatar for Tezos Baker

    First off, just wanted to say a huge thanks for all the hard work you’ve put into this, I’m extremely grateful for your efforts!

    I’ve been using your image to setup a backup Tezos baking machine on an RPi4, and unfortunately I’m running into an issue when running the tezos-node:

    tezos-node: Error:
    Cannot allocate memory

    Apparently the issue is caused because the kernel needs to be recompiled with “a 48 bit Virtual address space size” (https://gitlab.com/tezos/tezos/issues/511). I’m about to use armbian tools to do this, but wanted to ask you first if there was a way I could recompile the same 64-bit custom kernel you’ve used based on the rpi-4.19.y source tree. Do you have instructions somewhere on how to do this? Thanks!!!

Leave a Comment

Your email address will not be published. Required fields are marked *

Type here..