Both kernel modules have been successfully compiled and signed:
- ✅ pcie_test_driver.ko (378KB) - PCIe device test framework
- ✅ btintel_test_generic_driver.ko (359KB) - Intel Bluetooth test driver
Both modules are signed with a self-generated MOK (Machine Owner Key) certificate to satisfy kernel Secure Boot requirements.
This system has Secure Boot enabled with module signature verification enforced:
CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_ALL=y
CONFIG_MODULE_SIG_SHA512=y
Kernel prevents loading of unsigned or improperly-signed modules:
[273761.869745] Loading of module with unavailable key is rejected
-
Reboot the system:
sudo reboot
-
During boot, you will see the MOK Manager (UEFI interface):
- Select "Enroll MOK"
- Confirm the unit-test-signing certificate
- Enter the MOK password (if prompted during import, use empty password)
- Reboot again
-
After reboot, load the modules:
cd /home/kirank1/code/git/linux_iosf_test/unit-test sudo insmod pcie_test_driver.ko sudo insmod btintel_test_generic_driver.ko -
Verify modules are loaded:
lsmod | grep -E "pcie_test|btintel_test" dmesg | tail -20
If you have access to system BIOS/UEFI settings:
- Reboot into BIOS/UEFI settings
- Disable "Secure Boot"
- Save and reboot
- Load modules normally:
cd /home/kirank1/code/git/linux_iosf_test/unit-test sudo insmod pcie_test_driver.ko sudo insmod btintel_test_generic_driver.ko
- Modules:
/home/kirank1/code/git/linux_iosf_test/unit-test/*.ko - MOK Certificate (public):
mok.der - MOK Key (private):
mok.key(keep secure)
Purpose: Generic PCIe device test framework
Features:
- PCI device enumeration and BAR memory access
- Interrupt handling (MSI-X ready)
- Device statistics (interrupt count, error count, operation count)
- Sysfs attributes for device information
- 14 IOCTL commands for BAR read/write operations
Usage:
sudo insmod pcie_test_driver.ko
ls /dev/pcie_test_driver*
cat /sys/module/pcie_test_driver/parameters/*Purpose: Intel Bluetooth-specific test driver
Features:
- Character device with internal buffer management
- 8 IOCTL commands (GET_INFO, GET_STATS, RESET_STATS, CLEAR_BUFFER, SET_BUFFER_SIZE, GET_STATUS, ENABLE, DISABLE)
- Configurable buffer size (default 4096 bytes)
- Statistics tracking (read/write/ioctl counts, error count)
- Proper mutex locking and device lifecycle management
Usage:
sudo insmod btintel_test_generic_driver.ko
ls /dev/btintel_test_generic_driver*
cat /dev/btintel_test_generic_driver0 # Read from deviceThis means:
- Secure Boot is enabled
- The module is not signed with an enrolled key
- Solution: Complete Option 1 (MOK enrollment and reboot)
This means:
- The MOK certificate has been imported but not yet enrolled in UEFI
- Solution: Reboot and enroll the MOK when prompted at boot
This means:
- The module file is not in the current directory
- Solution: Navigate to
/home/kirank1/code/git/linux_iosf_test/unit-test/first
After successful loading:
sudo rmmod pcie_test_driver
sudo rmmod btintel_test_generic_driverVerify unload:
lsmod | grep -E "pcie_test|btintel_test"Once modules are loaded, verify with:
# Check if modules are loaded
lsmod | grep -E "pcie_test|btintel_test"
# Check module information
modinfo pcie_test_driver.ko
modinfo btintel_test_generic_driver.ko
# Check kernel messages
dmesg | tail -20
# Check device files
ls -la /dev/pcie_test_driver*
ls -la /dev/btintel_test_generic_driver*- See
BLUETOOTH_TEST_STRATEGY.mdfor Intel Bluetooth driver architecture - See
CUSTOMIZATION.mdfor device configuration options - See
README.mdfor general framework information