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/

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

  1. Avatar for Ian

    I have solved the problem in my last comment.

    I had been using the Pi4 hdmi connector furthest from the power connector and when I swapped the connection to the other screen connector, the blank screen disappeared and the Ubuntu desktop showed it’s normal attributes with all the usual trimmings!
    Wonderful !

  2. Avatar for Tomas Casanez

    Hello, this distro is really great, but ssh connection is very slow (3 of four seconds).

    is there any way to make it faster?


  3. Avatar for Pierre Cevey

    I have installed the version 27 on my Raspberry Pi4 4GB and everything seems to work fine, thank you!, … except that I need a vnc server to control remotely this RPi4, which will pilot my telescope.
    I tried to install realVNC but they do not have a compatible version yet, it seems.
    What are the other alternatives and how to install them and make them work ?
    I am not a linux programmer … could you help me please ?

    Best regards,

    1. Avatar for Ian

      You can set Ubuntu to turn screen sharing and remote log in to on by entering the settings screen. I believe this effectively creates a vnc server. I use a windows machine to then remote control the Pi by using RealVnc viewer installed on that (windows 10). The most reliable way is to type the IP address of the Pi into the viewer to connect. You will probably find that you need also to disable the remote access encryption within Ubuntu to allow the connection as this does not seem to be compatible with Windows and you will get an error message .

  4. Avatar for Ian

    Thanks for your good work James. I appear to be very near to having a fully installed Ubuntu desktop image but it appears not quite !

    I checked my Pi4 firmware using Raspbian as you suggested and it was up to date.

    I then proceeded to download your Ubuntu image with the Desktop included from GitHub and created an image on a SD card using Balena Etcher.

    However when booting the Pi4 everything went OK and I got through the password stage but ended up with an Ubuntu desktop which was completely blank except it had the Beaver engraved and I could also lift the beaver “curtain ” up using the mouse but there was just a blank screen underneath ! I have the 4Gb version of the PI.

    Any ideas on how I can proceed please ?

    Thanks in anticipation

  5. Avatar for barmen

    Thank you for your instructions, everything worked out! Tell me more, please, how to install the web server control panel. I tried to install vestacp, but they, like many others, do not support arm64.

  6. Avatar for Sage

    Hi James, thanks for this, got my pi running nextcloud using the hansson scripts and this vs of ubuntu on pi.
    it seems the repo’s unstable tho, cant install netdata as it needs uuid-dev to compile and get this msg trying to install it.

    Some packages could not be installed. This may mean that you have
    requested an impossible situation or if you are using the unstable
    distribution that some required packages have not yet been created
    or been moved out of Incoming.
    The following information may help to resolve the situation:

    The following packages have unmet dependencies:
    uuid-dev : Depends: libuuid1 (= 2.31.1-0.4ubuntu3) but 2.31.1-0.4ubuntu3.4 is to be installed
    E: Unable to correct problems, you have held broken packages.

  7. Avatar for Felix Tan

    Big big thanks for this great job done by James. Unfortunitely github is using a strict onetime ticket for a downloading request, which blocks any continuous downloaders to work, so for people outside United States, these huge pre-installed images are just far out of reach. If James can put these releases on a normal public wesite as well, we will appreciate very very much.

  8. Avatar for Thomas Rudloff


    great job. I have the XFCE4 version upgraded to Ubuntu 19/10 what I need to run SQL8. The Gnome version failed for some reason. I will have to redo this. Can you post sugesstions how to cleanly do this. I did:

    sudo bash
    sed -e ‘s/lts/normal/g’ -i /etc/update-manager/release-upgrades


    apt-get update
    apt-get upgrade
    apt-get dist-upgrade

    to come to Ubuntu19/10

    I did the desktop install before. I guess I should do this after.

  9. Avatar for Abogados Para Accidentes Anaheim CA
    Abogados Para Accidentes Anaheim CA

    Thanks for another excellent post. Where else could anybody get that type of info in such a perfect way of writing? I have a presentation next week, and I’m on the look for such info.

  10. Avatar for Robert

    Hi James,

    Excellent work, thank you for your time & effort! I haven’t seen questions regarding OCing the RPi4 with your Ubuntu image and I have had zero success adding the text to my config file. Is it possible on your image? I did come across someone who claimed they had success editing the usrconfig.txt file, but that file is not a part of your image and I believe I have only seen it in the 19.10 image. Is overclocking possible? Thank you.

    1. Avatar for Yos

      Hi Robert,

      I have been using James’ Ubuntu 18.04 image version 25, and I can overclock the CPU up to 2.147 Ghz with over voltage = 6. However, it could not work when I want to overclock the GPU as well, but it was not a problem for me as I only need the CPU for my project.
      Hope this help!


  11. Avatar for emilio

    Very good guide. I have followed it and installed on my rpi4 4Gb xubuntu desktop (as have you suggested on he guide). But it is very very slow: I have installed it on and USB 3 DT50 ext4 with no journal and mounted with noatime nodiratime options (boot from sd card and mounted all on USB device) .
    Is all slow: starting the X server is slow, starting the greeting is slow, login is slow, setup the desktop after login is slow, start any application is slow. For example, after login you are waiting for 30 or more sec before viewing the desktop, and waiting for other more 30 sec for the desktop show pannel and the icons on the desktop.
    If you run firefox or libreoffice writer … you start it, go to drink a long coffe and maybe when you are comeback you view the application on the desktop.
    I don’t understand why is as slow … maybe need other special configuration ?
    Any help is appreciate

    1. Avatar for jamesachambers

      Hey Emilio,

      That sounds about right for a low to mid range SD card or flash drive but not for a SSD. Could you run my storage benchmark with:

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

      and report back your score?

      If I am not mistaken I believe the DT50 is a flash drive. Flash drives unfortunately perform very slow, often slower than high range SD cards even (you can see this on my Raspberry Pi Storage Benchmarks if you select USB Flash as the product.

      We do have one DT50 benchmark result already which was 645 (very bad, about half the speed of a good SD card like a SanDisk Extreme).

      This was one of the interesting things we have learned from the benchmark so far. The reason for the low scores is not the data transfer speed (which is usually really good on a USB 3.0 drive, way higher than SD cards) but they have very low random read/write performance which is 99% of what the Pi is doing with constantly reading/writing small logs/configuration files, etc.

      If your score confirms my fears I would also test your SD card and see if it performs higher (if you score a 600 it almost certainly will unless it’s a generic). But these days it’s always worth going solid state. You can get a PNY CS900 (very popular and well performing drive) for less than 20 bones at time of writing!

      1. Avatar for Emilio

        First of all, thank you for the quickly reply. The information you report is very interesting.

        Yes, DT 50 is a USB flash USB 3.1 by kingston.

        My score is 662 ! Maybe is bad but in this moment I can not test with an SSD. This Pi is a Christmas gif for my son … and the 24 night it must go under the Christmas tree ๐Ÿ™‚ After that I will try with an SSD and an usb 3 / sata adapter .

        But in the past I installed xubuntu systems on the DT50 (the last one was a 16bit 32bit) and the performance was not so terrifying. It is true that I moved to ram directories with frequent writing but anyway, even before doing this work the performance was decent … I moved in ram what is written more often more to safeguard the usb stick than anything else.

        I thought instead that it could be a problem related to the fact that maybe the system looks for something that it cannot find and wastes time … constantly. But I don’t see anything obvious in the logs.

        In any case, after Santa Claus has made the delivery, I will be able to investigate better.

        For now I thank you very much, I will definitely let you know the result of my tests.

  12. Avatar for chubbyk

    I awant to use Raspberry Pi Camera Module v2 with ros, it need raspicam_node package. but when i tried to compile this package , an error said it cannot find libmmal.so in /opt/vc/lib. and I can not find this “vc” dir, is it because 64bit system does not have these libs ?

      1. Avatar for chubbyk

        thanks James, I tried but it seems that they are only for 32 bit system. but still thanks for your work , this is the best ubuntu I ‘ve ever used.

        1. Avatar for jamesachambers

          Hey chubbyk,

          Thanks for the kind words! So BerryBoot was updated a couple of months ago with a 64 bit kernel (see this thread) but I haven’t got a chance to play with it yet. As of a couple of months ago they put it in there and indeed after downloading the 64 bit Raspberry Pi 4 download from the home page I see it is coming with a kernel_rpi64.img.

          It’s one of my upcoming guides I’m working on to set up a multiboot environment and I’ll definitely cover both 32 and 64 bit in detail!

  13. Avatar for Michael Adams

    Hey James. I’ve been running this successfully on my Pi4, but want to use a kernel from https://github.com/koverstreet/bcachefs for some dev work on it. I can build a kernel, but booting doesn’t seem to succeed; and there is conflicting information online, mostly geared to the Pi3. Is there a particular method for custom kernel upgrades that you’d suggest?

    1. Avatar for jamesachambers

      Hey Michael,

      Most likely some changes need to be made in cmdline.txt for it to boot properly. Ubuntu searches for the boot device different than some other kernels for example. I would check to see what cmdline.txt that kernel is using and modify your /boot/cmdline.txt file!

  14. Avatar for Werner

    Hi James,

    Thank you for sharing this.
    I have flashed the image and started the server, changed the password but now how do you access the internet from the onboard wifi of raspberry pi 4 ?
    I figured you did it with eth0.


    1. Avatar for jamesachambers

      Hey Werner,

      Great question. I assume you are in the server version as the desktop version is pretty easy to get the wireless going. In the console version the best way is to use netplan (do a quick google search on netplan ubuntu and that should square you away) or you can also connect using the iw set of tools.

  15. Avatar for YujiHarada

    Hi James,
    Thank you for your excellent work.
    I’ve just started my RPi4/4M with your image(v25).
    My project is to use Pointgrey(FLIR) USB3.1 camera.
    They mentioned that ‘usbfs’ shoud be expanded to achieve higher performance and I realized it is requirement.
    instruction is as follows———————–
    1. Open the /etc/default/grub file in any text editor. Find and replace:
    with this:
    GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash usbcore.usbfs_memory_mb=1000″
    2. Update grub with these settings:
    $ sudo update-grub

    I can’t find ‘/etc/default/grub’ file or similar ones in my RPi4.
    $ sudo sh -c ‘echo 1000 > /sys/module/usbcore/parameters/usbfs_memory_mb’
    is confirmed to work until next reboot.

    Do you have any idea to do same effect on the system permanently ?

    Thanks, Yuji

    1. Avatar for YujiHarada

      Hi there,
      I was successfully added 1 sentence ‘usbcore.usbfs_memory_mb=*****’
      at the end of ‘/boot/firmware/cmdline.txt’.
      And it worked.
      If you play with Ubuntu19.10, try to find ‘nobtcmd.txt’ instead.

        1. Avatar for YujiHarada

          Hi James,
          Thanks for your comment.
          I got 20-30% more frames especially streaming capture mode using SpinView.
          This is nice !

          1. Avatar for Yos

            Hi Yuji,

            May I know what is the optimal value of the additional usbfs memory that is working with the Raspberry Pi4?
            I am also about to do some project with the point grey camera in Pi4.

            Thanks in advance!

            1. Avatar for YujiHarada

              Hi YOS,
              Using 1 camera at 0.3MB * 160fps, 500MB seems to be enough for me.
              If you planning to capture bigger ROI or faster rate, start with 1,000MB would be OK.
              Now I’m struggling with problem after acquisition….orz

              thanks for comment, Yuji

  16. Avatar for Wayne

    Hi James, great work you have done here, very fast and stable. Have a Pi4/2M running ubuntu and XFCE4 desktops and your v24.
    After enabling hdmidrive=2 and dtparam=audio=on I still have no HDMI audio. Am only able to select analog audio in pulse audio.
    In alsamixer I see the correct audio card and have enable max output.
    Any help would be appreciated

  17. Avatar for BobTheBarker

    Perhaps a little noobish here…Is there any chance exFAT can be implemented by default so I can burn the image to an exFAT card/stick?

    I really need to have the option of going between ubuntu and windows, while at the same time I need to work with files over 4gb. I am not 100% certain how to do it myself either….uh…sorta?

    I was thinking besides witing for for the 5.4 kernel update to happen. I would try this method;

    Flash the image to my sd card in fat32–>install fuse?–>clone the files to a usb stick(fast as I have at the moment)–>switch the boot and use the sd as a boot loader and boot off the usb stick…which maybe, kinda, sorta, then has what I need??

    Any help would be nice…even explaing why it would not work? I do not have the pi yet and would get the 4gb ram version. But I may have to pass up the fun if I cannot use exfat ๐Ÿ™

    1. Avatar for jamesachambers

      Hey Bob,

      The Pi expects you to have a FAT32 partition and won’t work with an ex-FAT partition. This is a limitation of the Pi itself and how the boot process currently works unfortunately.

      I think you will need an additional storage device. You can get a SanDisk Ultra for a few bucks to keep for your Pi stuff!

      1. Avatar for BobTheBarker

        Ok.The pi site says officially this is so…but specifically from an sd card. Maybe I’m just stubborn, but I keep thinking “what if?”.

        You clearly have more knowledge of pi’s than I. Would you test this out for everyone please? I ask also because exFAT is capable of being on a pi linux system:

        Presumably through the usb ports(I would imagine) then I got to thinking of how the pi is also “officially” not setup to boot from usb….but we can through the sd card as a boot loader and pull a switcharoo and make it boot from the usb, as according to your own instructions….soooo….they say one thing and yet the user base does another, proving us to be damn stubborn and clever to boot(pun intended).

        I would do it myself and give the results to all, but I do not have a pi 4 yet. Besides which. Whats 30 minutes to test this, if it works? Seems to me telling people this works would be pretty good, no? ๐Ÿ˜€

        Proposed method:
        Flash your image to a fat32 sd card–>update everything as you describe–>install the exFAT functions–> clone the image over to a usb stick (exFAT usb stick/drive)–>change the boot as per your instructions to the usb drive–>use the sd card as the bootloader and the sd card should defer to the usb trick= see what happens.

        Since you mention in your own instructions the usb trick. I figured the hard boot the pi needs would take place using the fat32 sd card. Then the trick/switcharoo to get the os to load may work because the boot load is not specifically from the usb(it uses the sdcard according to your info). If the files in the clone usb having been set to work with exFAT…shouldn’t it know the exFAT system to just, ya know, work?

        Being able to work between windows and linux plus have files over 4gb would make the pi’s all the better.

        1. Avatar for jamesachambers

          Hey Bob,

          I think I understand, you are saying you want to use the SD card as a bootloader (with exFAT support installed) and have USB device that is partitioned in exFAT.

          In your second to last paragraph you said shouldn’t it know the ex-FAT system to just work? The answer is yes, yes it should, but it hasn’t traditionally until native exFAT support was added in Linux Kernel 5.4 ((article here).

          There is a chance that it might work on my image. I’m not sure if the default headers have exFAT support built in or not. I haven’t explicitly enabled it anywhere in this kernel.

          Definitely let me know what happens if you try it! You may need to try it with a bleeding edge distro that uses kernel 5.4.

          1. Avatar for BobTheBarker

            Yes. The 5.4 kernel is what made me suspect this may be possible. So I searched for an alternative before v5.4 exFAT support becomes native. Hence the link I provided for Fuse on a Pi system to provide exFAT support. Cloning the sd card while Fuse/exFAT support to usb made me wonder if this would be enough.

            Free clone options if anyone needs:
            (use a fake email address and still download if you want to use this)^^^

            or another option:

            — One last comment. Sorry to take more of your time for asking this… Would you be able to test my theory please? I do not yet own a Pi machine to test. Your webpage information seems like you would be very good at getting my theoty to work better than I as a noob to Linux. If no, that is alright. Anyone who reads this may test and write a report.

          2. Avatar for Len

            Hi! Have you guys tried usind Plex Server on the ubuntu system? Do you think the performance is going to be allright?
            I donยดt have a raspberry pi yet.
            Thank you!

Leave a Comment

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

Type here..