0

I have a Raspbian image (4.9.59-v7) into which I am loading a kernel module that I have built myself since it is not in the default image (for an ICS43432 MEMS I2S microphone).

I have this working without issue on a Raspberry Pi B+; my module snd_soc_ics43432 is listed as present after boot by lsmod and I know it runs correctly 'cos I can record stuff. I've also modified the boot and rootfs partitions on this SD card to run read-only in preparation for using it in an environment where I have little control over the power supply. Hence the disk image is a fixed thing.

I have now plugged the same SD card into a Pi Zero W and it works there EXCEPT that it is unable to load the ICS43432 module. During boot it says:

systemd-modules-load[92]: Failed to find module 'snd-soc-ics43432'

...and if I use insmod to manually insert the module I get:

ERROR: could not insert module sound/soc/codecs/snd-soc-ics43432.ko: Invalid module format

Running sudo modinfo on this module file returns:

vermagic: 4.9.59-v7+ SMP mod_unload modversions ARMv7 p2v8

...which looks correct to me, and indeed it has to be since the goldarned SD card is read-only.

So what gives? Is there a difference between the Broadcom chips on the Pi Zero W versus the Pi B+ that would cause this? Or is it some sort of timing race condition? Any help/advice is appreciated.

  • The time to upgrade to Raspbian Buster 2019-09-26 is NOW. Your system is too far back-level to be secure and your OS distro is most likely end-of-life. – Dougie Oct 2 at 20:38
0

Ah, I think I've answered my own question. My Pi B+ is ARM V7:

processor       : 0
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 57.60
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
vCPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

processor       : 1
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 57.60
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

processor       : 2
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 57.60
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

processor       : 3
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 57.60
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

Hardware        : BCM2835
Revision        : a01041
Serial          : 00000000a8477217

...while my Pi Zero W is ARM V6:

processor       : 0
model name      : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS        : 997.08
Features        : half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xb76
CPU revision    : 7

Hardware        : BCM2835
Revision        : 9000c1
Serial          : 00000000e39dea37

I guess I will have to recompile that kernel module in order to swap between boards.

  • Your RPiB+ is a 3B+ the B+ launched in 2014 has the same processor as the zero. – Dougie Oct 2 at 20:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.