In 2.4.19 this here had to be disabled: (here is the modified nsc-ircc.2.4.19) --- kernel-source-2.4.20/drivers/net/irda/nsc-ircc.c 2003-01-04 11:08:19.000000000 +0100 +++ kernel-source-2.4.21-pre4/drivers/net/irda/nsc-ircc.c 2003-03-01 21:07:24.000000000 +0100 @@ -704,10 +704,12 @@ driver_name, version); /* Should be 0x2? */ +#if 0 if (0x20 != (version & 0xf0)) { ERROR("%s, Wrong chip version %02x\n", driver_name, version); return -1; } +#endif /* Switch to advanced mode */ switch_bank(iobase, BANK2); This already worked for Marcin according to his explanation but in my case something more had to be disabled: Somewhere around line 190 there is this: if ((id & chip->cid_mask) == chip->cid_value) { Move this away by either commenting it out or deleting it and put this in place: if ( 1 ) { Then make new modules like this (as root): make modules and then copy /usr/src/where_your_linux_dir_is/drivers/net/irda/nsc-ircc.o to /lib/modules/your_kernel/kernel/drivers/net/irda/ In case you use 2.4.19, this here might work for you without the kernel sources.