Sunday, 18 March 2018

Fixing broken HDMI audio (again)

Back in October I noticed that I had no HDMI audio when running kernels starting from v4.12.0 on an Intel Compute Stick model STK1AW32SC (Cherry Trail) and wrote about how to fix this.

Unfortunately that fix no longer works on Ubuntu's latest ISO: Ubuntu 16.04.4. So I've spent time looking into it and created a script to fix HDMI audio though 'sponsored community work'.

The fix is sponsored by and can be downloaded from here.

To use the script to fix a running system first download it and make sure it is executable ('chmod 700') then run the script it as root ('sudo'). Finally stop PulseAudio (pulseaudio -k) and restart it (pulseaudio --start) to complete the fix.

Now playing an audio file on the default device with 'aplay /usr/share/sounds/alsa/Front_Left.wav' works together with sound in Chrome and other applications.

The advantage of the fix being a script is that you can use it when respinning an ISO with '' (using the '-f' option) and automatically fix HDMI audio in the respun ISO for use on this device.

Please donate if you find my work helpful using the following link

Saturday, 17 March 2018

Third look at Ubuntu 18.04 or Bionic: Beta 1 Pre-Release

As part of preparing for a new release the Ubuntu Release Team issue pre-releases in line with a Release Schedule. For Ubuntu 18.04 codenamed Bionic Beaver the Release Schedule looks like this.

Not all Ubuntu flavours participate in the Alpha and Beta pre-releases however last week those that did issued their Beta 1 pre-releases.

Ubuntu Mate is a participant so I've respun their ISO using my '' script and created ISOs suitable for Intel Atom and Intel Apollo Lake devices:

  • Atom (-i ubuntu-mate-18.04-beta1-desktop-amd64.iso --atom)
  • Apollo (-i ubuntu-mate-18.04-beta1-desktop-amd64.iso --apollo)

Don't forget to try out the 'Mutiny' panel layout if you want a similar look and feel to Unity by selecting it using 'MATE Tweak':

Please donate if you find the ISOs or script useful using the following link

Saturday, 3 March 2018

Ubuntu 16.04.4 for Intel Atom and Apollo Lake devices

Canonical have released the fourth point release of Ubuntu 16.04 Long-Term Support (LTS) as Ubuntu 16.06.4. This release is built with the hardware enablement stack using the Ubuntu 4.13.0-36.40~16.04.1 kernel and is slated as being suitable for use on newer hardware with additional information in the release announcement and in the release notes.

However as it may not boot on some of the newer Intel based devices I've respun the ISO using my '' script and created ISOs suitable for Intel Atom and Intel Apollo Lake:

  • Atom (-i ubuntu-16.04.4-desktop-amd64.iso --atom)
  • Apollo (-i ubuntu-16.04.4-desktop-amd64.iso --apollo)

Please donate if you find the ISOs or script useful using the following link

Sunday, 25 February 2018

Second look at Ubuntu 18.04 or Bionic

The latest daily builds of Ubuntu 18.04 or Bionic Beaver now includes the newly Ubuntuised v4.15 kernel (Ubuntu 4.15.0-10.11) which includes config support to keep sound and BT working on Intel Atom devices now that serial device support is enabled through ACPI.

I've respun the 20180223 build using my '' script and created ISOs suitable for Intel Atom and Intel Apollo Lake:

  • Atom (-i bionic-desktop-amd64.iso --atom)
  • Apollo (-i bionic-desktop-amd64.iso --apollo)

What is arguably equally interesting is that Canonical asked the Ubuntu community to make it a new GTK theme based on Adwaita (the default GNOME theme) and inspired by Ambiance (the default Ubuntu theme). OMG! Ubuntu first posted about this and has now posted instructions on how to try the new theme.

I thought it would be fun to try this so I've respun the Bionic daily according to the above instructions and I've also included the wallpaper mentioned in the post. Because you need to select the ‘Communitheme’ session from the session selector on the login screen:

I included creating a user 'linuxium' with the password 'p' when respinning the ISO: -i bionic-desktop-amd64.iso --apollo \
-r ppa:communitheme/ppa -p ubuntu-communitheme-session \
-f Abstract-Geometric_1_1920x1080_wallpaper_-_1920x1080_Wallpapers.jpg \
-c "sed -i '/\[org.gnome.desktop.background\]/{n;s?/usr/share/backgrounds/warty-final-ubuntu.png?/usr/local/bin/Abstract-Geometric_1_1920x1080_wallpaper_-_1920x1080_Wallpapers.jpg?}' /usr/share/glib-2.0/schemas/10_ubuntu-settings.gschema.override" \
-c "sed -i 's/#  AutomaticLoginEnable = true/   AutomaticLoginEnable = false/' /etc/gdm3/custom.conf" \
-c "useradd -c linuxium -d /home/linuxium -m -g users -s /bin/bash linuxium" \
-c "echo linuxium:p | chpasswd"

Note that I've purposely not made the user an 'administrator' as the ISO is only intended to demonstrate the new theme.

If you are interested in trying out the new theme download the ISO from:

and remember the password is 'p' (without the quotes). The ISO should work on any Intel based device and is sufficient to demo the new theme but is not suitable for proper usage due to wifi, bluetooth and possible installation limitations.

Please donate if you find the ISOs or script useful using the following link

Wednesday, 24 January 2018

First look at Ubuntu 18.04 or Bionic

With the date for the first 'Alpha 1' releases of the upcoming Ubuntu 18.04 code named Bionic Beaver having silently slipped by I decided to respin the latest daily build of Ubuntu MATE (20180123) using my '' script with the latest Canonical built kernel (v4.15-rc9) and try it out on the MINIX NEO Z83-4.

The command I used was: -i bionic-desktop-amd64.iso --atom -u -f 4345r6nvram.txt \
"mv /usr/local/bin/4345r6nvram.txt /lib/firmware/brcm/brcmfmac43455-sdio.txt" \
-f MINIX-Z83-4_usr_share_alsa_ucm_chtrt5645_HiFi.conf \
which includes the required files to support wifi and headphone audio (see Linux on MINIX NEO Z83-4 and Z83-4 Pro) on this specific device

The following command should work for other Intel Atom devices: -i bionic-desktop-amd64.iso --atom -u 
or this command for Intel Apollo devices: -i bionic-desktop-amd64.iso --apollo -u
although do also read Resize EFI partition to prevent any installation issues on Intel Apollo devices.

The reason for trying Ubuntu MATE is due to what might be seen as somewhat provocative 'call to arms' in their blog which highlights their various 'panel' layouts which control the look of the desktop.

The panel layout 'Mutiny' creates a surprisingly similar look and feel to Unity and is certainly worth trying if you are still unsure of the direction Ubuntu is moving to in their current releases.

Simply use 'MATE Tweak' to change the default panel to 'Mutiny' and then 'pin' applications to the panel like with Unity.

Please donate if you find my scripts useful using the following link

Saturday, 13 January 2018

Running and installing Fedora on Apollo Lake devices

Because some Intel Apollo Lake devices do not have an option in the BIOS that allows booting Linux based operating systems it make using any Linux on these devices too complicated for some. Previously I've provided a script '' that can respin an official Ubuntu based ISO suitable for use and installation on Apollo Lake mini PCs. Now I've created a similar script called '' for Fedora ISOs.

At this stage the script is very simple. It respins a Fedora ISO making it bootable when used to create a LiveUSB and you can also optionally add my bootloader script which when run after installing Fedora enables subsequent booting.

When installing Fedora from a respun ISO (and as mentioned for Ubuntu) it is necessary to make sure the EFI partition is large enough to store the bootable EFI file when dual booting with Windows. Some Windows installations only create a 60MB partition which after installing the Windows EFI files leaves only around 30MB. With the later Linux kernel releases the size and number of modules have increased and the available space may not be enough. If there is insufficient space the resultant installation will not boot so the solution is to increase the size of the EFI partition first by following the instructions posted here.


Running the script is simple as there are not a lot of options at this stage:
Usage: -i <ISO> [ -b Linuxium | --apollo ] [ -w <directory> ]
If you respin an official Fedora ISO just using the '-b Linuxium' option then it will only add my  'Linuxium' bootscript to make the ISO capable of booting.

If you respin with the '--apollo' option it will add my 'Linuxium' bootscript and another script called 'linuxium-update-bootloader' which can be used to add or update my 'Linuxium' bootscript used for booting. This option also installs the 'binutils' package whch is required by the script.


At this stage I've only tested it with the Fedora 27 Workstation ISO and further testing is required for other Fedora releases and ISOs.


In the following example I have downloaded the ISO 'Fedora-Workstation-Live-x86_64-27-1.6.iso' and respun it with the '--apollo' option creating the respun ISO 'linuxium-apollo-Fedora-Workstation-Live-x86_64-27-1.6.iso' which I wrote to a USB using 'dd'.

First I booted my Apollo Lake device into Windows:

and created some free space for the Fedora installation:

Then I rebooted to the LiveUSB:

Before commencing the installation I opened a 'terminal' window to see what file systems were mounted:

I then started the installation:

After the initial question for 'Installation Destination' I selected the device's eMMC as the drive with 'Automatic' storage configuration:

I also set the host name:

and then started the install:

followed by creating a user:

making sure they were an administrator:

and then waited for the installation to finish:

But instead of clicking on 'Quit' I switched back to the terminal window:

Looking at the newly mounted file systems I made a note of where Fedora had been installed ('/mnt/sysimage'):

and what kernel version had been installed ('4.13.9-300.fc27.x86_64'):

The next step is to replace the currently installed GRUB with my bootscript generated bootable EFI file. To do this I run 'linuxium-update-bootloader' with parameters of the kernel version and target destination (as it is different to '/boot') using the values I noted above:

which creates the bootable EFI file ('shimx64.efi'):

As this now completes the installation I restarted:

and having removed the LiveUSB I booted Fedora:

and logged in:

answered the setup questions:

and started using Fedora. 

This is the resultant installed file system:

Anyone wanting to try Fedora can download an ISO and respin using my '' script with the above option.

Please donate if you find the scripts useful using the following link

Tuesday, 9 January 2018

Ubuntu or Fedora?

MINIX NEO Z83-4 running Fedora 27 with Rawhide kernel
(showing working WiFi, Bluetooth and audio including headphone jack)

Three recent events have made me question whether to keep using Ubuntu as my preferred Linux distribution:

  1. Six weeks have passed since v4.15-rc1 was released and the Ubuntu config for the 'unstable' kernel still hasn't been updated to reflect the patches around the Serial Device Bus managing serial devices declared as attached to an UART in ACPI table. This prevents Bluetooth working on some mini PCs.
  2. The Ubuntu 17.10 ISO is still not available following the scramble to address the corrupted BIOS due to "Intel SPI bug in kernel" arguably actually caused by incorrectly enabling the Intel SPI drivers in the config.
  3. Canonical's slow response coupled with what appears to be a justification to adhere to previously agreed timescales resulting in their inability to immediately address the 'Meltdown' exploit. This has created a 'Window of Vulnerability' for existing Ubuntu users unaware they could temporarily upgrade to a the most recent Canonical mainline build.

The core of the problem appears to lie in the architectural approach of how kernels are adopted and released as part of the overall Ubuntu release structure. Whilst implementing Ubuntu LTS enablement (known as HWE or Hardware Enablement) stacks which provide newer kernel support for existing Ubuntu LTS releases, there is no equivalent for regular releases which are only guaranteed to receive security updates for the duration of their release life (normally 9 months for desktop and server releases). As a result the Ubuntu kernel support per se is not aligned with the mainline kernel development strategy of supporting the current release together with nominated LTS kernels.

Aside from the above points there is also the somewhat emotive issue of dropping Unity in preference for the GNOME desktop. Through dressing up GNOME to look similar to Unity by including the 'dock-to-dash' extension it inadvertently shows that changing the back-end distribution might not be so visible if GNOME is to be used especially for users reliant on a GUI.

Furthermore as I run Ubuntu 17.04 on a number of devices I have to make a 'release' decision now that Ubuntu 17.04 reaches 'end of life' on 13th January. Canonical will not be providing updated kernel packages for Ubuntu 17.04 as they will not be patching the 4.10 HWE kernel to address the Meltdown and Spectre vulnerabilities resulting in a '4.10 HWE EARLY END OF LIFE'. The consequence is that the rolling HWE kernel for Ubuntu 16.04 will go to 4.13 early.

To continue using Ubuntu on those devices I will need to either:
  • upgrade to Ubuntu 17.10 and use the GNOME desktop or gamble with 'Ubuntu Unity' as the Unity desktop in the long term, or
  • replace existing Ubuntu 17.04 instances with fresh installations of Ubuntu 16.04 and continue using the Unity desktop in the short term
or, and given my initial concerns, look for an alternative to Ubuntu.

Choosing a distributions is somewhat complex and ultimately personal however one candidate does immediately comes to mind: Fedora. Arguably not so user-friendly it is focused on leading-edge software. The principle difference between Ubuntu and Fedora is package management due to the origins of each namely Debian vs Red Hat respectively.

Becuase the ISO for Ubuntu 17.10 is unavailable and installing Ubuntu 16.04 is effectively downgrading I have made the decision to look at transitioning to Fedora. I'll start by using Fedora as a desktop for everyday use and gradually increase usage. There will be challenges ahead as Fedora 'OOTB' doesn't work on a number of mini PCs both old and new. For inspiration I've combined several well know quotes:
If things don’t change
    they’ll stay the way they are,
and if they stay the way they are
    they won't get any better,
but the more things change
    the more they stay the same.
as making things better need not necessarily make everything different. We shall see.


The target release date for respun Ubuntu 17.10 ISOs for all flavors is Thursday, January 11. These will include a kernel which fixes the "Intel SPI bug in kernel" (point 2 above).

However "Note that these images are being prepared in advance of the release of fixes for Spectre and Meltdown.  As a rule, we do not re-release install media for security bugs, even those as severe as this" [1].

Currently these respun ISOs include the Ubuntu 4.13.0-21.24 kernel rather than the Ubuntu 4.13.0-25.29 kernel which is version that includes the 'Meltdown' fix which was released yesterday Tuesday, January 9 [2].

It is difficult to understand why Canonical would respin ISOs to fix a 'bug' using a kernel that includes a highly publicized and well-known 'vulnerability' when they have released a fixed kernel.

Given the rationale is to make the Ubuntu 17.10 images available again due to the impending 17.04 EOL then maybe extend the life of 17.04 by a day or two as it is not like security matters or so it seems.

If you want an Ubuntu 17.10 ISO I believe you would be safer using respinning the current official Ubuntu 17.10 ISO [3] with: -i ubuntu-17.10-desktop-amd64.iso --upgrade \
-e "linux-image-4.13.0-16-generic linux-headers-4.13.0-16" \
-p "linux-generic linux-signed-generic" \
-p "gir1.2-gmenu-3.0 libgnome-menu-3-0"
as you would get Ubuntu 17.10 similar to the proposed respin ISO [4] together with the 'Meltdown' fixed kernel:
$ 7z x linuxium-ubuntu-17.10-desktop-amd64.iso casper/filesystem.manifest -so > \
$ wget -q \ -O - | \
  sed 's/:amd64//' | \
  diff -w linuxium-ubuntu-17.10-desktop-amd64.iso_filesystem.manifest -
< libpoppler-glib8 0.57.0-2ubuntu4.2
< libpoppler68 0.57.0-2ubuntu4.2
> libpoppler-glib8 0.57.0-2ubuntu4.1
> libpoppler68 0.57.0-2ubuntu4.1
< linux-generic
< linux-headers-4.13.0-25 4.13.0-25.29
< linux-headers-4.13.0-25-generic 4.13.0-25.29
< linux-headers-generic
< linux-image-4.13.0-25-generic 4.13.0-25.29
< linux-image-extra-4.13.0-25-generic 4.13.0-25.29
< linux-image-generic
< linux-signed-generic
< linux-signed-image-4.13.0-25-generic 4.13.0-25.29
< linux-signed-image-generic
> linux-generic
> linux-headers-4.13.0-21 4.13.0-21.24
> linux-headers-4.13.0-21-generic 4.13.0-21.24
> linux-headers-generic
> linux-image-4.13.0-21-generic 4.13.0-21.24
> linux-image-extra-4.13.0-21-generic 4.13.0-21.24
> linux-image-generic
> linux-signed-generic
> linux-signed-image-4.13.0-21-generic 4.13.0-21.24
> linux-signed-image-generic
< poppler-utils 0.57.0-2ubuntu4.2
> poppler-utils 0.57.0-2ubuntu4.1
< ubuntu-desktop 1.404
> ubuntu-desktop 1.404.1
Please donate if you find my work useful using the following link