Cannot compile driver for Fusion-HAT+ on Pi5 running Ubuntu 24.04 with install script

I am unable to install Fusion-HAT+ on Pi5 running Ubuntu 24.04.

The install script fails to compile driver and DT overlay.

Anyone had success?

Here is the log of the failed installation:

cat /tmp/install.log
[Install Fusion Hat Python Library\n]
[Install dependencies]
[✓] Update apt
Hit:1 Index of /repos/code/ stable InRelease
Hit:2 http://packages.ros.org/ros2/ubuntu noble InRelease
Hit:3 Index of /ubuntu-ports noble InRelease
Hit:4 Index of /ubuntu-ports noble-updates InRelease
Get:5 Index of /apps/ubuntu/ noble-apps-security InRelease [8371 B]
Hit:6 Index of /ubuntu-ports noble-backports InRelease
Get:7 Index of /infra/ubuntu/ noble-infra-security InRelease [8214 B]
Hit:8 Index of /ubuntu-ports noble-security InRelease
Fetched 16.6 kB in 2s (6827 B/s)
Reading package lists…
[✓] Install apt dependencies
Reading package lists…
Building dependency tree…
Reading state information…
git is already the newest version (1:2.43.0-1ubuntu7.3).
python3 is already the newest version (3.12.3-0ubuntu2.1).
raspi-config is already the newest version (20221214-0ubuntu1).
python3-pip is already the newest version (24.0+dfsg-1ubuntu1.3).
i2c-tools is already the newest version (4.3-4build2).
espeak is already the newest version (1.48.15+dfsg-3build1).
libsdl2-dev is already the newest version (2.30.0+dfsg-1ubuntu3.1).
libsdl2-mixer-dev is already the newest version (2.8.0+dfsg-1build3).
portaudio19-dev is already the newest version (19.6.0-1.2build3).
sox is already the newest version (14.4.2+git20190427-4build4).
libttspico-utils is already the newest version (1.0+git20130326-14.1build1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
[Install fusion-hat library]
[✓] Remove existing fusion-hat library
[✓] Clone fusion-hat library
Cloning into ‘fusion-hat’…
[✓] Change ownership of fusion-hat library to mike
[Install fusion-hat driver]
[✗] Compile driver
Building Fusion Hat driver and device tree overlay…
make -C /lib/modules/6.8.0-1044-raspi/build M=/home/mike/fusion-hat/driver modules
make[1]: *** /lib/modules/6.8.0-1044-raspi/build: No such file or directory. Stop.
make: *** [Makefile:43: all] Error 2
[✗] Install driver
Installing Fusion Hat driver and device tree overlay…
rmmod fusion_hat || echo “Warning: Failed to unload fusion_hat module. It may be in use or require additional privileges.”
rmmod: ERROR: Module fusion_hat is not currently loaded
Warning: Failed to unload fusion_hat module. It may be in use or require additional privileges.
make[1]: Entering directory ‘/home/mike/fusion-hat/driver’
Installing kernel module…
make -C /lib/modules/6.8.0-1044-raspi/build M=/home/mike/fusion-hat/driver modules_install
make[2]: Entering directory ‘/home/mike/fusion-hat/driver’
make[2]: *** /lib/modules/6.8.0-1044-raspi/build: No such file or directory. Stop.
make[2]: Leaving directory ‘/home/mike/fusion-hat/driver’
make[1]: *** [Makefile:59: modules_install] Error 2
make[1]: Leaving directory ‘/home/mike/fusion-hat/driver’
make: *** [Makefile:88: install] Error 2
[✗] Clean driver
Cleaning build files…
make -C /lib/modules/6.8.0-1044-raspi/build M=/home/mike/fusion-hat/driver clean
make[1]: *** /lib/modules/6.8.0-1044-raspi/build: No such file or directory. Stop.
make: *** [Makefile:51: clean] Error 2
[Install fusion-hat python library]
[✓] Install fusion-hat library
WARNING: The directory ‘/home/mike/.cache/pip’ or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you should use sudo’s -H flag.
Processing /home/mike/fusion-hat
Installing build dependencies: started
Installing build dependencies: finished with status ‘done’
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status ‘done’
Preparing metadata (pyproject.toml): started
Preparing metadata (pyproject.toml): finished with status ‘done’
Collecting sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git (from fusion_hat==1.1.0)
Cloning GitHub - sunfounder/sunfounder-voice-assistant to /tmp/pip-install-uazlt7cf/sunfounder-voice-assistant_bcbadaebe8424641a08bff537367018c
Running command git clone --filter=blob:none --quiet GitHub - sunfounder/sunfounder-voice-assistant /tmp/pip-install-uazlt7cf/sunfounder-voice-assistant_bcbadaebe8424641a08bff537367018c
Resolved GitHub - sunfounder/sunfounder-voice-assistant to commit 1e3837db229c77852e665d7b49ec7e0ea3a439d3
Installing build dependencies: started
Installing build dependencies: finished with status ‘done’
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status ‘done’
Preparing metadata (pyproject.toml): started
Preparing metadata (pyproject.toml): finished with status ‘done’
Collecting evdev (from fusion_hat==1.1.0)
Downloading evdev-1.9.2.tar.gz (33 kB)
Installing build dependencies: started
Installing build dependencies: finished with status ‘done’
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status ‘done’
Preparing metadata (pyproject.toml): started
Preparing metadata (pyproject.toml): finished with status ‘done’
Requirement already satisfied: smbus2 in /usr/lib/python3/dist-packages (from fusion_hat==1.1.0) (0.4.3)
Requirement already satisfied: gpiozero in /usr/lib/python3/dist-packages (from fusion_hat==1.1.0) (2.0.1)
Requirement already satisfied: pyaudio in /usr/lib/python3/dist-packages (from fusion_hat==1.1.0) (0.2.13)
Requirement already satisfied: spidev in /usr/lib/python3/dist-packages (from fusion_hat==1.1.0) (3.6)
Requirement already satisfied: pyserial in /usr/lib/python3/dist-packages (from fusion_hat==1.1.0) (3.5)
Requirement already satisfied: pillow in /usr/lib/python3/dist-packages (from fusion_hat==1.1.0) (10.2.0)
Requirement already satisfied: pygame in /usr/lib/python3/dist-packages (from fusion_hat==1.1.0) (2.5.2)
Collecting luma.led_matrix (from fusion_hat==1.1.0)
Downloading luma.led_matrix-1.7.1-py2.py3-none-any.whl.metadata (17 kB)
Collecting luma.core (from fusion_hat==1.1.0)
Downloading luma_core-2.5.3-py3-none-any.whl.metadata (30 kB)
Collecting cbor2 (from luma.core->fusion_hat==1.1.0)
Downloading cbor2-5.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.metadata (5.4 kB)
Collecting piper-tts (from sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git->fusion_hat==1.1.0)
Downloading piper_tts-1.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.metadata (4.4 kB)
Collecting vosk (from sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git->fusion_hat==1.1.0)
Downloading vosk-0.3.45-py3-none-manylinux2014_aarch64.whl.metadata (1.8 kB)
Collecting sounddevice (from sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git->fusion_hat==1.1.0)
Downloading sounddevice-0.5.4-py3-none-any.whl.metadata (1.4 kB)
Collecting onnxruntime<2,>=1 (from piper-tts->sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git->fusion_hat==1.1.0)
Downloading onnxruntime-1.23.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.metadata (5.1 kB)
Collecting cffi (from sounddevice->sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git->fusion_hat==1.1.0)
Downloading cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.metadata (2.6 kB)
Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from vosk->sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git->fusion_hat==1.1.0) (2.31.0)
Collecting tqdm (from vosk->sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git->fusion_hat==1.1.0)
Downloading tqdm-4.67.1-py3-none-any.whl.metadata (57 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 57.7/57.7 kB 2.0 MB/s eta 0:00:00
Collecting srt (from vosk->sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git->fusion_hat==1.1.0)
Downloading srt-3.5.3.tar.gz (28 kB)
Preparing metadata (setup.py): started
Preparing metadata (setup.py): finished with status ‘done’
Collecting websockets (from vosk->sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git->fusion_hat==1.1.0)
Downloading websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.metadata (6.8 kB)
Collecting pycparser (from cffi->sounddevice->sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git->fusion_hat==1.1.0)
Downloading pycparser-3.0-py3-none-any.whl.metadata (8.2 kB)
Collecting coloredlogs (from onnxruntime<2,>=1->piper-tts->sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git->fusion_hat==1.1.0)
Downloading coloredlogs-15.0.1-py2.py3-none-any.whl.metadata (12 kB)
Collecting flatbuffers (from onnxruntime<2,>=1->piper-tts->sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git->fusion_hat==1.1.0)
Downloading flatbuffers-25.12.19-py2.py3-none-any.whl.metadata (1.0 kB)
Requirement already satisfied: numpy>=1.21.6 in /usr/lib/python3/dist-packages (from onnxruntime<2,>=1->piper-tts->sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git->fusion_hat==1.1.0) (1.26.4)
Requirement already satisfied: packaging in /usr/lib/python3/dist-packages (from onnxruntime<2,>=1->piper-tts->sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git->fusion_hat==1.1.0) (24.0)
Collecting protobuf (from onnxruntime<2,>=1->piper-tts->sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git->fusion_hat==1.1.0)
Downloading protobuf-6.33.4-cp39-abi3-manylinux2014_aarch64.whl.metadata (593 bytes)
Requirement already satisfied: sympy in /usr/lib/python3/dist-packages (from onnxruntime<2,>=1->piper-tts->sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git->fusion_hat==1.1.0) (1.12)
Collecting humanfriendly>=9.1 (from coloredlogs->onnxruntime<2,>=1->piper-tts->sunfounder-voice-assistant@ git+https://github.com/sunfounder/sunfounder-voice-assistant.git->fusion_hat==1.1.0)
Downloading humanfriendly-10.0-py2.py3-none-any.whl.metadata (9.2 kB)
Downloading luma_core-2.5.3-py3-none-any.whl (72 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 72.7/72.7 kB 1.6 MB/s eta 0:00:00
Downloading luma.led_matrix-1.7.1-py2.py3-none-any.whl (13 kB)
Downloading cbor2-5.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (286 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 286.2/286.2 kB 1.3 MB/s eta 0:00:00
Downloading piper_tts-1.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (13.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.8/13.8 MB 3.9 MB/s eta 0:00:00
Downloading sounddevice-0.5.4-py3-none-any.whl (32 kB)
Downloading vosk-0.3.45-py3-none-manylinux2014_aarch64.whl (2.4 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4/2.4 MB 3.1 MB/s eta 0:00:00
Downloading cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (220 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 220.1/220.1 kB 3.5 MB/s eta 0:00:00
Downloading onnxruntime-1.23.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (15.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 15.2/15.2 MB 3.0 MB/s eta 0:00:00
Downloading tqdm-4.67.1-py3-none-any.whl (78 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.5/78.5 kB 2.3 MB/s eta 0:00:00
Downloading websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (186 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 186.2/186.2 kB 2.2 MB/s eta 0:00:00
Downloading coloredlogs-15.0.1-py2.py3-none-any.whl (46 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 46.0/46.0 kB 1.5 MB/s eta 0:00:00
Downloading flatbuffers-25.12.19-py2.py3-none-any.whl (26 kB)
Downloading protobuf-6.33.4-cp39-abi3-manylinux2014_aarch64.whl (324 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 324.5/324.5 kB 2.5 MB/s eta 0:00:00
Downloading pycparser-3.0-py3-none-any.whl (48 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 48.2/48.2 kB 3.9 MB/s eta 0:00:00
Downloading humanfriendly-10.0-py2.py3-none-any.whl (86 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 86.8/86.8 kB 2.1 MB/s eta 0:00:00
Building wheels for collected packages: fusion_hat, evdev, sunfounder-voice-assistant, srt
Building wheel for fusion_hat (pyproject.toml): started
Building wheel for fusion_hat (pyproject.toml): finished with status ‘done’
Created wheel for fusion_hat: filename=fusion_hat-1.1.0-py3-none-any.whl size=86282 sha256=3a79fc16f972f48a40ac3dc5d6ae3f8fced7983f710462c0843ea323dc1cf758
Stored in directory: /tmp/pip-ephem-wheel-cache-peeuh9gz/wheels/42/bf/19/a511b7fe2cb998d7c953da42adc122d8451a8f2c2d511fc375
Building wheel for evdev (pyproject.toml): started
Building wheel for evdev (pyproject.toml): finished with status ‘done’
Created wheel for evdev: filename=evdev-1.9.2-cp312-cp312-linux_aarch64.whl size=115903 sha256=b3e8efa92047609c1607d10e3344c3dc8377d0ae6d36f7513f4d7aeae65d94de
Stored in directory: /tmp/pip-ephem-wheel-cache-peeuh9gz/wheels/19/f7/62/6b6f5201f6536a3a9e38c94726e03a3b2bded0aaf7782b12d7
Building wheel for sunfounder-voice-assistant (pyproject.toml): started
Building wheel for sunfounder-voice-assistant (pyproject.toml): finished with status ‘done’
Created wheel for sunfounder-voice-assistant: filename=sunfounder_voice_assistant-1.0.1-py3-none-any.whl size=58945 sha256=f0611bd59060ed26f607e50f67bfccce3ec71b28a5943a5d632cd11bac48f011
Stored in directory: /tmp/pip-ephem-wheel-cache-peeuh9gz/wheels/d9/5a/a3/10b98e2f937d80256bf1c22b82987c9519cffaa599bd8aff82
Building wheel for srt (setup.py): started
Building wheel for srt (setup.py): finished with status ‘done’
Created wheel for srt: filename=srt-3.5.3-py3-none-any.whl size=22428 sha256=3b9cc383b53131f308c445e7bb5fa44d7eec48cda0bc401adc4e5425d9bf44af
Stored in directory: /tmp/pip-ephem-wheel-cache-peeuh9gz/wheels/7e/75/5b/e1d5c3756631e4bda806f6cc9640153b39484bb6f7b0b8def3
Successfully built fusion_hat evdev sunfounder-voice-assistant srt
Installing collected packages: flatbuffers, websockets, tqdm, srt, pycparser, protobuf, humanfriendly, evdev, cbor2, luma.core, coloredlogs, cffi, vosk, sounddevice, onnxruntime, luma.led_matrix, piper-tts, sunfounder-voice-assistant, fusion_hat
Successfully installed cbor2-5.8.0 cffi-2.0.0 coloredlogs-15.0.1 evdev-1.9.2 flatbuffers-25.12.19 fusion_hat-1.1.0 humanfriendly-10.0 luma.core-2.5.3 luma.led_matrix-1.7.1 onnxruntime-1.23.2 piper-tts-1.3.0 protobuf-6.33.4 pycparser-3.0 sounddevice-0.5.4 srt-3.5.3 sunfounder-voice-assistant-1.0.1 tqdm-4.67.1 vosk-0.3.45 websockets-16.0
WARNING: Running pip as the ‘root’ user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: 12. Virtual Environments and Packages — Python 3.14.2 documentation
[✓] Uninstall RPi.GPIO
WARNING: The directory ‘/home/mike/.cache/pip’ or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you should use sudo’s -H flag.
WARNING: Skipping RPi.GPIO as it is not installed.
WARNING: Running pip as the ‘root’ user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: 12. Virtual Environments and Packages — Python 3.14.2 documentation
[Setup audio]
[✓] Remove existing audio script
[✓] Download audio script
–2026-01-23 20:46:55-- https://raw.githubusercontent.com/sunfounder/sunfounder-installer-scripts/main/setup_fusion_hat_audio.sh
Resolving raw.githubusercontent.com (raw.githubusercontent.com)… 185.199.109.133, 185.199.110.133, 185.199.108.133, …
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.109.133|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 10463 (10K) [text/plain]
Saving to: ‘/opt/setup_fusion_hat_audio.sh’

 0K ..........                                            100% 1.82M=0.005s

2026-01-23 20:46:56 (1.82 MB/s) - ‘/opt/setup_fusion_hat_audio.sh’ saved [10463/10463]

[✓] Change ownership of audio script to mike
[✓] Change permissions of audio script to 755
[✗] Setup audio
[INFO] Setup Fusion Hat audio driver >>>
[INFO] script version: 1.0.0
[INFO] user: mike

[INFO] apt update…

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Hit:1 Index of /repos/code/ stable InRelease
Hit:2 http://packages.ros.org/ros2/ubuntu noble InRelease
Hit:3 Index of /apps/ubuntu/ noble-apps-security InRelease
Hit:4 Index of /infra/ubuntu/ noble-infra-security InRelease
Hit:5 Index of /ubuntu-ports noble InRelease
Hit:6 Index of /ubuntu-ports noble-updates InRelease
Hit:7 Index of /ubuntu-ports noble-backports InRelease
Hit:8 Index of /ubuntu-ports noble-security InRelease
Reading package lists…
Building dependency tree…
Reading state information…
All packages are up to date.
[INFO] install apt packages …

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Reading package lists…
Building dependency tree…
Reading state information…
i2c-tools is already the newest version (4.3-4build2).
alsa-utils is already the newest version (1.2.9-1ubuntu5).
pulseaudio is already the newest version (1:16.1+dfsg1-2ubuntu10.1).
pulseaudio-utils is already the newest version (1:16.1+dfsg1-2ubuntu10.1).
jq is already the newest version (1.7.1-3ubuntu0.24.04.1).
sox is already the newest version (14.4.2+git20190427-4build4).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

[INFO] Trying to load dtoverlay googlevoicehat-soundcard …

  • Failed to apply overlay ‘0_googlevoicehat-soundcard’ (kernel)
    [INFO] get_soundcard_index …
    [ERROR] soundcard index not found. Sometimes you need to reboot to activate the soundcard.
    [WARNING] Unfinished

If I try building the drivers myself using:

~/fusion-hat/driver$ sudo make all

I get the following error:

Building Fusion Hat driver and device tree overlay...
make -C /lib/modules/6.8.0-1044-raspi/build M=/home/mike/fusion-hat/driver modules
make[1]: *** /lib/modules/6.8.0-1044-raspi/build: No such file or directory.  Stop.
make: *** [Makefile:43: all] Error 2

I anyone can help that would be appreciated.

The software for Fusion-HAT+ is not compatible with Ubuntu and cannot be installed or operated on that system.
It is only supported for installation and operation on Raspberry Pi OS.