Working Paul McWhorter’s series with the AI fusion hat. While working in PWMs out, I get the following error: OSError: Fusion HAT not connected, check if Fusion Hat is powered on. The line of python which triggers it is: redLED= PWM(redPin). RGB LED is ON all the time (all three colors)…have to remove physical connection to turn off, even when Hat/Pi are shut down. I was able to use digital out pins successfully. All lights are ‘on’ on the hat, successfully zero’d servos, …seems to function otherwise so far as I have ran it. Any suggestions? Thanks!
There are two possibilities for this error report:
- The Raspberry Pi is powered on, but the Fusion HAT is not powered:
I have attached a photo of the setup during normal operation. Please check if your wiring and LED indicators match mine. If the issue persists, please take a photo (preferably from the same angle) and send it to us.
- I2C on the Raspberry Pi is not enabled:
Run the following commands in the terminal:
sudo raspi-config
Then navigate to: 3 Interface Options → I5 I2C → Yes to enable I2C. After enabling I2C, try running the example again.
I’m having exactly the same problem at exactly the same point in PW tutorial (i.e code for digital pin works ok put code for PMW throws up error that fusion board is not connected.
Are you are using a raspberry 4 for the tutorial?
I have the same problem. I get a single LED to blink as Paul McW. but no PWM works
Yeah, at one point all three led’s of the rgb led lit up, but had the same error. I powered everything down and rebooted and restarted. Same error, no led now. I presented this problem to our future IA overlords (Claude), and it thinks the pi kernel is wrong and it wants to rebuild it. Because Paul warns about not altering things, I’ve bee reluctant to let Claude update it. Let’s hope the Sunfounder folks can help us out!
We followed Paul’s tutorial but were unable to reproduce the issue you encountered. Could you please run the following commands to help us check your Raspberry Pi system, kernel, and whether the Fusion HAT driver has been loaded successfully?
uname -a
cat /etc/os-release
i2cdetect -y 1
dmesg | grep fusion_hat
lsmod | grep fusion_hat
ls /sys/class/fusion_hat/fusion_hat
Under BUG REPORT URL I had to omit the third URL as the forum wouldn’t let me post three urls.
pi@ai-fusion:~ $ uname -a
Linux ai-fusion 6.12.75+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.75-1+rpt1~bookworm (2026-03-11) aarch64 GNU/Linux
pi@ai-fusion:~ $ cat /etc/os-release
PRETTY_NAME=“Debian GNU/Linux 12 (bookworm)”
NAME=“Debian GNU/Linux”
VERSION_ID=“12”
VERSION=“12 (bookworm)”
VERSION_CODENAME=bookworm
ID=debian
HOME_URL=“https://www.debian.org/”
SUPPORT_URL=" Debian -- User Support "
BUG_REPORT_URL=
pi@ai-fusion:~ $ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: – – – – – – – –
10: – – – – – – – 17 – – – – – – – –
20: – – – – – – – – – – – – – – – –
30: – – – – – – – – – – – – – – – –
40: – – – – – – – – – – – – – – – –
50: – – – – – – – – – – – – – – – –
60: – – – – – – – – – – – – – – – –
70: – – – – – – – –
pi@ai-fusion:~ $
pi@ai-fusion:~ $ dmesg | grep fusion_hat
pi@ai-fusion:~ $ lsmod | grep fusion_hat
pi@ai-fusion:~ $ ls /sys/class/fusion_hat/fusion_hat
ls: cannot access ‘/sys/class/fusion_hat/fusion_hat’: No such file or directory
pi@ai-fusion:~ $
how can I reply to the suggestion to run several commands
that’s exactly the same response that I get when I run the code (except I ran with img :bookworm (2025-09-16).
I also get sae issues when flashed with latest img on Sunfounder site
Thank you very much for providing the kernel information. This aligns with what we suspected — it appears that you manually updated the system and upgraded the kernel, which caused the Fusion HAT driver to disappear.
Our default system kernel is Linux ai-fusion 6.12.47+rpt-rpi-2712. We manually upgraded the kernel to Linux ai-fusion 6.12.75+rpt-rpi-2712 and were able to reproduce the issue.
Please try reinstalling the Fusion HAT driver using the following commands:
cd ~/fusion-hat/driver/
make
sudo make install
Alternatively, if you prefer not to make too many changes manually, you can reinstall the system image we provide.
Thank you again for the information. We will add this issue to the FAQ section of our documentation.
This solved the problem on my RaPi4.
But…
Although I was prompted that UPDATES WERE AVAILABLE - i DID NOT INSTALL them!
So I’m not sure how KERNEL disappeared/became corrupted
That worked. Thank you!
Your message indicated that I changed the software. I did not. I followed the Sunfounder instructions. When I encountered the error in the lesson I consulted Claude. I only suspected the kernal because I asked Claude, and it prompted me to input the same diagnostic inputs as you provided. When Claude suggested rebuilding is when I came to the forum as I didn’t want to alter anything. It seems that others are experiencing the same issue. Thanks for the fix.
I tried the above and get "bash: cd~/fusion-hat/driver/: No such file or directory.
This was after I went to the Sunfounder site and downloaded the software on a new 128gb sd card (ai.fusion.lab.kit-0.1.0.img). I still get the error Fusion HAT not connected. The digital pins work but that is all.
After you flashed the ai.fusion.lab.kit-0.1.0.img image and received the “Fusion HAT not connected” error, please try running the following commands to see if it resolves the issue:
cd ~/fusion-hat/driver/
make
sudo make install
This driver source should definitely be present in that image. Let me know if the error persists after running these commands.
This did not solve the issue for me.
pi@ai-fusion:~ $ uname -a
Linux ai-fusion 6.12.47+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.47-1+rpt1~bookworm (2025-09-16) aarch64 GNU/Linux
pi@ai-fusion:~ $ cat /etc/os-release
PRETTY_NAME=“Debian GNU/Linux 12 (bookworm)”
NAME=“Debian GNU/Linux”
VERSION_ID=“12”
VERSION=“12 (bookworm)”
VERSION_CODENAME=bookworm
ID=debian
HOME_URL=“https://www.debian.org/”
SUPPORT_URL=“Debian -- User Support”
BUG_REPORT_URL=“https://bugs.debian.org/”
pi@ai-fusion:~ $ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: – – – – – – – –
10: – – – – – – – 17 – – – – – – – –
20: – – – – – – – – – – – – – – – –
30: – – – – – – – – – – – – 3c – – –
40: – – – – – – – – – – – – – – – –
50: – – – – – – – – – – – – – – – –
60: – – – – – – – – – – – – – – – –
70: – – – – – – – –
pi@ai-fusion:~ $ dmesg | grep fusion_hat
[ 146.972962] fusion_hat: loading out-of-tree module taints kernel.
[ 146.973017] fusion_hat: disagrees about version of symbol _dev_info
[ 146.973019] fusion_hat: Unknown symbol _dev_info (err -22)
[ 146.973023] fusion_hat: disagrees about version of symbol device_create_file
[ 146.973025] fusion_hat: Unknown symbol device_create_file (err -22)
[ 146.973027] fusion_hat: disagrees about version of symbol i2c_register_driver
[ 146.973028] fusion_hat: Unknown symbol i2c_register_driver (err -22)
[ 146.973030] fusion_hat: disagrees about version of symbol _dev_err
[ 146.973031] fusion_hat: Unknown symbol _dev_err (err -22)
[ 146.973048] fusion_hat: disagrees about version of symbol i2c_smbus_read_word_data
[ 146.973050] fusion_hat: Unknown symbol i2c_smbus_read_word_data (err -22)
[ 146.973057] fusion_hat: disagrees about version of symbol device_create_with_groups
[ 146.973059] fusion_hat: Unknown symbol device_create_with_groups (err -22)
[ 146.973063] fusion_hat: disagrees about version of symbol device_destroy
[ 146.973064] fusion_hat: Unknown symbol device_destroy (err -22)
[ 146.973067] fusion_hat: disagrees about version of symbol i2c_smbus_write_byte_data
[ 146.973068] fusion_hat: Unknown symbol i2c_smbus_write_byte_data (err -22)
[ 146.973071] fusion_hat: disagrees about version of symbol i2c_smbus_write_word_data
[ 146.973072] fusion_hat: Unknown symbol i2c_smbus_write_word_data (err -22)
[ 146.973074] fusion_hat: disagrees about version of symbol i2c_smbus_read_i2c_block_data
[ 146.973076] fusion_hat: Unknown symbol i2c_smbus_read_i2c_block_data (err -22)
[ 146.973078] fusion_hat: disagrees about version of symbol i2c_del_driver
[ 146.973079] fusion_hat: Unknown symbol i2c_del_driver (err -22)
[ 146.973082] fusion_hat: disagrees about version of symbol param_ops_int
[ 146.973083] fusion_hat: Unknown symbol param_ops_int (err -22)
[ 146.973085] fusion_hat: disagrees about version of symbol i2c_smbus_read_byte_data
[ 146.973086] fusion_hat: Unknown symbol i2c_smbus_read_byte_data (err -22)
[ 146.973089] fusion_hat: disagrees about version of symbol device_remove_file
[ 146.973090] fusion_hat: Unknown symbol device_remove_file (err -22)
[ 304.354868] fusion_hat: disagrees about version of symbol _dev_info
[ 304.354875] fusion_hat: Unknown symbol _dev_info (err -22)
[ 304.354880] fusion_hat: disagrees about version of symbol device_create_file
[ 304.354881] fusion_hat: Unknown symbol device_create_file (err -22)
[ 304.354884] fusion_hat: disagrees about version of symbol i2c_register_driver
[ 304.354885] fusion_hat: Unknown symbol i2c_register_driver (err -22)
[ 304.354887] fusion_hat: disagrees about version of symbol _dev_err
[ 304.354889] fusion_hat: Unknown symbol _dev_err (err -22)
[ 304.354906] fusion_hat: disagrees about version of symbol i2c_smbus_read_word_data
[ 304.354908] fusion_hat: Unknown symbol i2c_smbus_read_word_data (err -22)
[ 304.354915] fusion_hat: disagrees about version of symbol device_create_with_groups
[ 304.354917] fusion_hat: Unknown symbol device_create_with_groups (err -22)
[ 304.354921] fusion_hat: disagrees about version of symbol device_destroy
[ 304.354922] fusion_hat: Unknown symbol device_destroy (err -22)
[ 304.354925] fusion_hat: disagrees about version of symbol i2c_smbus_write_byte_data
[ 304.354926] fusion_hat: Unknown symbol i2c_smbus_write_byte_data (err -22)
[ 304.354929] fusion_hat: disagrees about version of symbol i2c_smbus_write_word_data
[ 304.354930] fusion_hat: Unknown symbol i2c_smbus_write_word_data (err -22)
[ 304.354933] fusion_hat: disagrees about version of symbol i2c_smbus_read_i2c_block_data
[ 304.354934] fusion_hat: Unknown symbol i2c_smbus_read_i2c_block_data (err -22)
[ 304.354936] fusion_hat: disagrees about version of symbol i2c_del_driver
[ 304.354937] fusion_hat: Unknown symbol i2c_del_driver (err -22)
[ 304.354940] fusion_hat: disagrees about version of symbol param_ops_int
[ 304.354941] fusion_hat: Unknown symbol param_ops_int (err -22)
[ 304.354943] fusion_hat: disagrees about version of symbol i2c_smbus_read_byte_data
[ 304.354944] fusion_hat: Unknown symbol i2c_smbus_read_byte_data (err -22)
[ 304.354947] fusion_hat: disagrees about version of symbol device_remove_file
[ 304.354949] fusion_hat: Unknown symbol device_remove_file (err -22)
pi@ai-fusion:~ $ lsmod | grep fusion_hat
pi@ai-fusion:~ $ ls /sys/class/fusion_hat/fusion_hat
ls: cannot access ‘/sys/class/fusion_hat/fusion_hat’: No such file or directory
pi@ai-fusion:~ $ cat ~/.ai-fusion
AI Fusion Lab Kit image
#################################
Version: 0.2.1
Date: 2026-04-29
SunFounder
pi@ai-fusion:~ $ clear
pi@ai-fusion:~ $ history -c
pi@ai-fusion:~ $ clear
pi@ai-fusion:~ $ uname -a
Linux ai-fusion 6.12.47+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.47-1+rpt1~bookworm (2025-09-16) aarch64 GNU/Linux
pi@ai-fusion:~ $ cat /etc/os-release
PRETTY_NAME=“Debian GNU/Linux 12 (bookworm)”
NAME=“Debian GNU/Linux”
VERSION_ID=“12”
VERSION=“12 (bookworm)”
VERSION_CODENAME=bookworm
ID=debian
HOME_URL=“https://www.debian.org/”
SUPPORT_URL=“Debian -- User Support”
BUG_REPORT_URL=“https://bugs.debian.org/”
pi@ai-fusion:~ $ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: – – – – – – – –
10: – – – – – – – 17 – – – – – – – –
20: – – – – – – – – – – – – – – – –
30: – – – – – – – – – – – – 3c – – –
40: – – – – – – – – – – – – – – – –
50: – – – – – – – – – – – – – – – –
60: – – – – – – – – – – – – – – – –
70: – – – – – – – –
pi@ai-fusion:~ $ dmesg | grep fusion_hat
[ 146.972962] fusion_hat: loading out-of-tree module taints kernel.
[ 146.973017] fusion_hat: disagrees about version of symbol _dev_info
[ 146.973019] fusion_hat: Unknown symbol _dev_info (err -22)
[ 146.973023] fusion_hat: disagrees about version of symbol device_create_file
[ 146.973025] fusion_hat: Unknown symbol device_create_file (err -22)
[ 146.973027] fusion_hat: disagrees about version of symbol i2c_register_driver
[ 146.973028] fusion_hat: Unknown symbol i2c_register_driver (err -22)
[ 146.973030] fusion_hat: disagrees about version of symbol _dev_err
[ 146.973031] fusion_hat: Unknown symbol _dev_err (err -22)
[ 146.973048] fusion_hat: disagrees about version of symbol i2c_smbus_read_word_data
[ 146.973050] fusion_hat: Unknown symbol i2c_smbus_read_word_data (err -22)
[ 146.973057] fusion_hat: disagrees about version of symbol device_create_with_groups
[ 146.973059] fusion_hat: Unknown symbol device_create_with_groups (err -22)
[ 146.973063] fusion_hat: disagrees about version of symbol device_destroy
[ 146.973064] fusion_hat: Unknown symbol device_destroy (err -22)
[ 146.973067] fusion_hat: disagrees about version of symbol i2c_smbus_write_byte_data
[ 146.973068] fusion_hat: Unknown symbol i2c_smbus_write_byte_data (err -22)
[ 146.973071] fusion_hat: disagrees about version of symbol i2c_smbus_write_word_data
[ 146.973072] fusion_hat: Unknown symbol i2c_smbus_write_word_data (err -22)
[ 146.973074] fusion_hat: disagrees about version of symbol i2c_smbus_read_i2c_block_data
[ 146.973076] fusion_hat: Unknown symbol i2c_smbus_read_i2c_block_data (err -22)
[ 146.973078] fusion_hat: disagrees about version of symbol i2c_del_driver
[ 146.973079] fusion_hat: Unknown symbol i2c_del_driver (err -22)
[ 146.973082] fusion_hat: disagrees about version of symbol param_ops_int
[ 146.973083] fusion_hat: Unknown symbol param_ops_int (err -22)
[ 146.973085] fusion_hat: disagrees about version of symbol i2c_smbus_read_byte_data
[ 146.973086] fusion_hat: Unknown symbol i2c_smbus_read_byte_data (err -22)
[ 146.973089] fusion_hat: disagrees about version of symbol device_remove_file
[ 146.973090] fusion_hat: Unknown symbol device_remove_file (err -22)
[ 304.354868] fusion_hat: disagrees about version of symbol _dev_info
[ 304.354875] fusion_hat: Unknown symbol _dev_info (err -22)
[ 304.354880] fusion_hat: disagrees about version of symbol device_create_file
[ 304.354881] fusion_hat: Unknown symbol device_create_file (err -22)
[ 304.354884] fusion_hat: disagrees about version of symbol i2c_register_driver
[ 304.354885] fusion_hat: Unknown symbol i2c_register_driver (err -22)
[ 304.354887] fusion_hat: disagrees about version of symbol _dev_err
[ 304.354889] fusion_hat: Unknown symbol _dev_err (err -22)
[ 304.354906] fusion_hat: disagrees about version of symbol i2c_smbus_read_word_data
[ 304.354908] fusion_hat: Unknown symbol i2c_smbus_read_word_data (err -22)
[ 304.354915] fusion_hat: disagrees about version of symbol device_create_with_groups
[ 304.354917] fusion_hat: Unknown symbol device_create_with_groups (err -22)
[ 304.354921] fusion_hat: disagrees about version of symbol device_destroy
[ 304.354922] fusion_hat: Unknown symbol device_destroy (err -22)
[ 304.354925] fusion_hat: disagrees about version of symbol i2c_smbus_write_byte_data
[ 304.354926] fusion_hat: Unknown symbol i2c_smbus_write_byte_data (err -22)
[ 304.354929] fusion_hat: disagrees about version of symbol i2c_smbus_write_word_data
[ 304.354930] fusion_hat: Unknown symbol i2c_smbus_write_word_data (err -22)
[ 304.354933] fusion_hat: disagrees about version of symbol i2c_smbus_read_i2c_block_data
[ 304.354934] fusion_hat: Unknown symbol i2c_smbus_read_i2c_block_data (err -22)
[ 304.354936] fusion_hat: disagrees about version of symbol i2c_del_driver
[ 304.354937] fusion_hat: Unknown symbol i2c_del_driver (err -22)
[ 304.354940] fusion_hat: disagrees about version of symbol param_ops_int
[ 304.354941] fusion_hat: Unknown symbol param_ops_int (err -22)
[ 304.354943] fusion_hat: disagrees about version of symbol i2c_smbus_read_byte_data
[ 304.354944] fusion_hat: Unknown symbol i2c_smbus_read_byte_data (err -22)
[ 304.354947] fusion_hat: disagrees about version of symbol device_remove_file
[ 304.354949] fusion_hat: Unknown symbol device_remove_file (err -22)
pi@ai-fusion:~ $ lsmod | grep fusion_hat
pi@ai-fusion:~ $ ls /sys/class/fusion_hat/fusion_hat
ls: cannot access ‘/sys/class/fusion_hat/fusion_hat’: No such file or directory
pi@ai-fusion:~ $ cat ~/.ai-fusion
Your issue is not caused by the Fusion HAT driver failing to load — it is an EEPROM issue.
From your fusion_hat doctor --fix result, we can see:
[FAIL] EEPROM detected
This indicates that the Fusion HAT EEPROM is blank or corrupted, so the Raspberry Pi cannot properly identify the HAT.
Today, our development team updated the Fusion HAT repository and improved the EEPROM recovery tool. Please follow the steps below again to update the tools and reflash the EEPROM:
1. Update Fusion HAT
curl -sSL https://raw.githubusercontent.com/sunfounder/sunfounder-installer-scripts/main/install-fusion-hat.sh | sudo bash
2. After rebooting, run:
fusion_hat doctor --fix
This will guide you through reflashing the EEPROM. Please follow the on-screen instructions carefully, then reboot again when prompted.
3. After the repair process completes, please run fusion_hat doctor again.
If everything is working normally, you should now see all Fusion HAT related information correctly detected.
Please let us know the results after trying these steps.
OK, I’m at my wits’ end here! I found the 5-pin header, shorted the pins as directed, and it failed!
[3/4] Flash EEPROM…
sudo: /usr/local/lib/python3.11/dist-packages/fusion_hat/scripts/eepflash.sh: command not found
I honestly think it’s time to cut my losses with Sunfounder and just throw the HAT+ in the garbage!
If I fix the permission issues, it still fails to repair the EEPROM!
Press ENTER after you have shorted the pins…
[3/4] Flash EEPROM…
This will attempt to talk to an eeprom at i2c address 0x50. Make sure there is an eeprom at this address.
This script comes with ABSOLUTELY no warranty. Continue only if you know what you are doing.
Writing…
Closing EEPROM Device.
Done.
[4/4] Remove short. Then reboot to detect the HAT.
Remove the short from the write-protect pins now.
==================================================
Fusion Hat Driver Status
✗ EEPROM detection
✓ Module file
✗ Module loaded
✗ sysfs interface
✓ I2C MCU (0x17)
✓ DKMS : fusion_hat/1.0.2, 6.12.47+rpt-rpi-2712, aarch64: installed
EEPROM not detected.
→ Check the HAT is properly seated on the GPIO header.
→ If it is, reflash the EEPROM: fusion_hat doctor --fix
==================================================


