# ndiswrapper won't compile on 2.6.14* kernel [SOLVED]

## zfc-tinkerer

When I try to compile ndiswrapper with either 2.6.14rc2 or rc3 as what /usr/src/linux links to, the compilation fails (the output is below).  However, with 2.6.13, it compiles just fine.  The behavior is the same even if I have built a kernel of that number and booted into it.  What kernel options should I try to change to see if I can get this to work?  Or what else can I try to get this to work?  (all kernels are vanilla)  The output of trying to emerge ndiswrapper is as follows:

```

Calculating dependencies ...done!

>>> emerge (1 of 1) net-wireless/ndiswrapper-1.2 to /

>>> md5 files   ;-) ndiswrapper-1.2.ebuild

>>> md5 files   ;-) files/digest-ndiswrapper-1.2

>>> md5 files   ;-) files/ndiswrapper-1.2-suspend2.patch

>>> md5 src_uri ;-) ndiswrapper-1.2.tar.gz

 * Determining the location of the kernel source code

 * Found kernel source directory:

 *     /usr/src/linux

 * Found sources for kernel version:

 *     2.6.14-rc3

 * Checking for suitable kernel configuration options:

>>> Unpacking source...

>>> Unpacking ndiswrapper-1.2.tar.gz to /var/tmp/portage/ndiswrapper-1.2/work

 * Applying ndiswrapper-1.2-suspend2.patch ...                            [ ok ]

 * The only kernels that will work are gentoo-sources, vanilla-sources, and susp

end2-sources.

 * No other kernels are supported. Kernels like the mm kernels will NOT work.

 * Converting ndiswrapper-1.2/driver/Makefile to use M= instead of SUBDI  [ ok ]

>>> Source unpacked.

cc -Wall -g -DNDISWRAPPER_VERSION=\"1.2\"    -c -o loadndisdriver.o loadndisdriv

er.c

gcc -o loadndisdriver loadndisdriver.o

 * Preparing ndiswrapper module

make -C //usr/src/linux M=/var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/

driver \

        NDISWRAPPER_VERSION=1.2 \

        EXTRA_VERSION= modules

make[1]: Entering directory `/usr/src/linux-2.6.14-rc3'

  CC [M]  /var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/driver/hal.o

  CC [M]  /var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/driver/iw_ndis.o

  CC [M]  /var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/driver/loader.o

/var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/driver/loader.c: In functi

on `register_devices':

/var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/driver/loader.c:963: warni

ng: assignment from incompatible pointer type

  CC [M]  /var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/driver/misc_func

s.o

  CC [M]  /var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/driver/ndis.o

/var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/driver/ndis.c:1721:5: warn

ing: "LINUX_KERNEL_VERSION" is not defined

  CC [M]  /var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/driver/ntoskerne

l.o

  CC [M]  /var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/driver/pe_linker

.o

  CC [M]  /var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/driver/proc.o

  CC [M]  /var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/driver/wrapper.o

/var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/driver/wrapper.c:287:54: macro "halt" passed 1 arguments, but takes just 0

/var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/driver/wrapper.c: In function `miniport_halt':

/var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/driver/wrapper.c:287: warning: statement with no effect

make[2]: *** [/var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/driver/wrapper.o] Error 1

make[1]: *** [_module_/var/tmp/portage/ndiswrapper-1.2/work/ndiswrapper-1.2/driver] Error 2

make[1]: Leaving directory `/usr/src/linux-2.6.14-rc3'

make: *** [default] Error 2

!!! ERROR: net-wireless/ndiswrapper-1.2 failed.

!!! Function linux-mod_src_compile, Line 460, Exitcode 2

!!! Unable to make                                  KSRC=//usr/src/linux KVERS=2                    6 all.

!!! If you need support, post the topmost build error, NOT this status message.

```

I know that this post is on the border between here and networking, sorry if I picked wrong.  Thanks in advance for your help.Last edited by zfc-tinkerer on Thu Oct 13, 2005 8:15 pm; edited 1 time in total

----------

## zfc-tinkerer

Well, after another detailed google search, I found that this is definately a known problem.  It seems that a few people have found patches, and that using a more recent version of ndiswrapper than is contained in portage helps (perhaps lets it compile, but it still may not work).  I think that rather than fighting with these things, I'll just wait until there is a later kernel version or version of ndiswrapper in portage and then try again.  Thanks to everyone who read this thread and was willing to help if they had known how  :Smile: 

----------

## jamapii

I copied the ndiswrapper ebuild to my overlay and adapted it for 1.4, removing the suspend patch. I don't suspend.

----------

## zfc-tinkerer

Could you please be more specific on what you did?  I would prefer to not be locked into using an old kernel.

----------

## mijenix

Hi

Is there any Solution for the problem? When yes, can someone post that?

Thx!

--Mathias

----------

## Grubshka

(quickly updated for version 1.5...)

(this post explain how to create and install your own ebuild, but you can simply download it from bugzilla)

I followed jamapii advice, and it worked so i'll explain it a little how to create a new ebuild from the version 1.2 one.

I assume that you know a little about making ebuilds, like how portage overlay work. You'll find information here, here and here.

You can do all this in the standard portage directory (/usr/portage) but it'll be erased on emerge sync.

The portage overlay directory I use here is /usr/local/portage. You can use what you want, juste create it and put in /etc/make.conf : 

```
PORTAGE_OVERLAY="your_directory"
```

1. Create portage overlay sub-directories for ndiswrapper :

```
grubshka ~ # mkdir -p /usr/local/portage/net-wireless/ndiswrapper/files
```

2. Make an ebuild for version 1.5, copying version 1.2 one. The version is a parameter so you have nothing to change in the file :

```
grubshka ndiswrapper # cp /usr/portage/net-wireless/ndiswrapper/ndiswrapper-1.2.ebuild /usr/local/portage/net-wireless/ndiswrapper/ndiswrapper-1.5.ebuild
```

(opt). Personnally I put the ~x86 mask for this package, but it's not really mandatory, just because i'm maniac  :Wink: 

If you want to do it change KEYWORDS="x86" to KEYWORDS="~x86" in ndiswrapper-1.5.ebuild

And I had the flag in my package.keyword file :

```
echo "net-wireless/ndiswrapper ~x86" >> /etc/portage/package.keywords
```

3. Make a suspend patch for version 1.5, copying version 1.2 one. Version is written statically in this file so you have to change every occurence of "ndiswrapper-1.2" to "ndiswrapper-1.5". Here I do it with sed but you can copy et edit it.

```
grubshka ndiswrapper # sed -e 's/ndiswrapper-1.2/ndiswrapper-1.5/' /usr/portage/net-wireless/ndiswrapper/files/ndiswrapper-1.2-suspend2.patch > /usr/local/portage/net-wireless/ndiswrapper/files/ndiswrapper-1.5-suspend2.patch
```

WARNING : I'm not sure of this step, it works for me, but if you want you can disable suspend2 patch, just remove lines concerning it in ndiswrapper-1.5.ebuild.

4. Now, generate the ebuild digest file with the ebuild command : 

```
grubshka ndiswrapper # cd /usr/local/portage/net-wireless/ndiswrapper

grubshka ndiswrapper # ebuild ndiswrapper-1.5.ebuild digest

>>> Downloading http://mesh.dl.sourceforge.net/sourceforge/ndiswrapper/ndiswrapper-1.5.tar.gz

--22:30:54--  http://mesh.dl.sourceforge.net/sourceforge/ndiswrapper/ndiswrapper-1.5.tar.gz

           => `/usr/portage/distfiles/ndiswrapper-1.5.tar.gz'

Resolving mesh.dl.sourceforge.net... 213.203.218.122

Connecting to mesh.dl.sourceforge.net|213.203.218.122|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 168,549 (165K) [application/x-gzip]

100%[======================================================================================>] 168,549      188.23K/s            

22:30:55 (187.50 KB/s) - `/usr/portage/distfiles/ndiswrapper-1.5.tar.gz' saved [168549/168549]

>>> Generating digest file...

<<< ndiswrapper-1.5.tar.gz

>>> Generating manifest file...

<<< ndiswrapper-1.5.ebuild

<<< files/digest-ndiswrapper-1.5

<<< files/ndiswrapper-1.5-suspend2.patch

>>> Computed message digests.

```

5. So let's verify it could be emerged :

```
grubshka ndiswrapper # emerge -pv ndiswrapper

These are the packages that I would merge, in order:

Calculating dependencies ...done!

[ebuild     U ] net-wireless/ndiswrapper-1.5  -debug 0 kB [1] 

Total size of downloads: 0 kB

Portage overlays:

 [1] /usr/local/portage
```

6. OK, emerge it :

```
grubshka ndiswrapper # emerge ndiswrapper

Calculating dependencies ...done!

>>> emerge (1 of 1) net-wireless/ndiswrapper-1.5 to /

>>> md5 files   ;-) ndiswrapper-1.5.ebuild

>>> md5 files   ;-) files/digest-ndiswrapper-1.5

>>> md5 files   ;-) files/ndiswrapper-1.5-suspend2.patch

>>> md5 src_uri ;-) ndiswrapper-1.5.tar.gz

 * Determining the location of the kernel source code

 * Found kernel source directory:

 *     /usr/src/linux

 * Found sources for kernel version:

 *     2.6.14-rc3-nitro1

 * Checking for suitable kernel configuration options:

>>> Unpacking source...

>>> Unpacking ndiswrapper-1.5.tar.gz to /var/tmp/portage/ndiswrapper-1.5/work  

 * Applying ndiswrapper-1.5-suspend2.patch ...                                                                                           [ ok ]

 * The only kernels that will work are gentoo-sources, vanilla-sources, and suspend2-sources.

 * No other kernels are supported. Kernels like the mm kernels will NOT work.

 * Converting ndiswrapper-1.5/driver/Makefile to use M= instead of SUBDIRS= ...                                                          [ ok ]

>>> Source unpacked.

BLA BLA BLA... Compiling stuff ;)

 * GNU info directory index is up-to-date.

 * IMPORTANT: 1 config files in /etc need updating.

 * Type emerge --help config to learn how to update config files.

```

Like in the version 1.2, I simply ignore the warning about 4K kernel stack, and all work. If you have problem with this, search in the forum, I remember I saw other threads for this problem. (edit : This one for example.)

6. The config file need updating :

```
grubshka ndiswrapper # etc-update 

Scanning Configuration files...

Automerging trivial changes in: ndiswrapper

Exiting: Nothing left to do; exiting. :)
```

7. And load the module :

```
grubshka ndiswrapper # modprobe ndiswrapper

grubshka ndiswrapper # lsmod

Module                  Size  Used by

ndiswrapper           184980  0 

forcedeth              19904  0 

snd_intel8x0           29856  0 

snd_ac97_codec         92092  1 snd_intel8x0

snd_ac97_bus            2048  1 snd_ac97_codec

nvidia_agp              6428  1 

agpgart                29384  1 nvidia_agp

```

8. Install hardware, see ndiswrapper doc for information... After, see if all is installed :

```
grubshka ndiswrapper # ndiswrapper -l

Installed ndis drivers:

wmp54gs         driver present, hardware present 

wmp54gsa                driver present, hardware present 

grubshka ndiswrapper # /etc/init.d/net.wlan0 start

 * Starting wlan0

 *   Configuring wireless network for wlan0

Warning: Driver for device wlan0 has been compiled with version 19

of Wireless Extension, while this program supports up to version 17.

Some things may be broken...

 *     wlan0 connected to "grubwifi" at 00:0F:66:4B:3D:46

 *     in auto mode (WEP disabled)

 *   Bringing up wlan0

 *     192.168.51.2    
```

(you can see the sweet Wireless Extension warning jumped from 18 to 19... I someone have an idea on that...)

9. A little test :

```
grubshka ndiswrapper # ping 192.168.51.1

PING 192.168.51.1 (192.168.51.1) 56(84) bytes of data.

64 bytes from 192.168.51.1: icmp_seq=1 ttl=150 time=9.32 ms

64 bytes from 192.168.51.1: icmp_seq=2 ttl=150 time=16.5 ms

64 bytes from 192.168.51.1: icmp_seq=3 ttl=150 time=1.45 ms

--- 192.168.51.1 ping statistics ---

6 packets transmitted, 6 received, 0% packet loss, time 5004ms

rtt min/avg/max/mdev = 1.457/7.672/16.543/4.667 ms
```

That's all folks !

(I'm french and this is my first long post in english, don't hesitate to correct english errors)

CiaoLast edited by Grubshka on Fri Nov 04, 2005 10:03 pm; edited 4 times in total

----------

## mijenix

Hi

Thx for ur instructions!

hmm, and why isn't the 1.4 Version in the unstable tree ~x86?

--Mathias

----------

## PaulBredbury

 *mijenix wrote:*   

> hmm, and why isn't the 1.4 Version in the unstable tree ~x86?

 

No-one's bothered yet to submit an ebuild diff to bugzilla.

Look at the ebuild in /usr/portage/net-wireless/ndiswrapper/, copy it to your Portage overlay, and adapt it for version 1.4. Test it, then submit it to bugzilla.

I'd do it, but ndiswrapper 1.2 works fine.

----------

## mijenix

 *PaulBredbury wrote:*   

> 
> 
> I'd do it, but ndiswrapper 1.2 works fine.

 

Hi

That's a good Idea. I'll do it! 

But your Ndiswrapper 1.2 works with your stable 2.6.13 Kernel or with an 2.6.14-rcX?

--Mathias

----------

## PaulBredbury

 *mijenix wrote:*   

> But your Ndiswrapper 1.2 works with your stable 2.6.13 Kernel or with an 2.6.14-rcX?

 

2.6.13 - I haven't tried 2.6.14 yet.

----------

## Grubshka

 *PaulBredbury wrote:*   

>  *mijenix wrote:*   But your Ndiswrapper 1.2 works with your stable 2.6.13 Kernel or with an 2.6.14-rcX? 
> 
> 2.6.13 - I haven't tried 2.6.14 yet.

 

It doesn't work on my 2.6.14-rc3-nitro1 kernel, that's why I installed version 1.4.

I didn't test it on standard gentoo 2.6.14.

----------

## jimonade

related thread:  https://forums.gentoo.org/viewtopic-t-366610-start-0-postdays-0-postorder-asc-highlight-.html

im having trouble with emerging ndiswrapper with kernel 2.6.13-r3.  see below...

```
bud ~ # emerge ndiswrapper -uDNva

These are the packages that I would merge, in order:

Calculating dependencies ...done!

[ebuild  N    ] net-wireless/ndiswrapper-1.2  -debug 146 kB

Total size of downloads: 146 kB

Do you want me to merge these packages? [Yes/No] yes

>>> emerge (1 of 1) net-wireless/ndiswrapper-1.2 to /

*** Adjusting cvs-src permissions for portage user...

>>> Downloading http://gentoo.osuosl.org/distfiles/ndiswrapper-1.2.tar.gz

--11:42:18--  http://gentoo.osuosl.org/distfiles/ndiswrapper-1.2.tar.gz

           => `/usr/portage/distfiles/ndiswrapper-1.2.tar.gz'

Resolving gentoo.osuosl.org... 140.211.166.134

Connecting to gentoo.osuosl.org|140.211.166.134|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 150,068 (147K) [application/x-gzip]

100%[====================================>] 150,068       87.40K/s

11:42:20 (87.23 KB/s) - `/usr/portage/distfiles/ndiswrapper-1.2.tar.gz' saved [150068/150068]

>>> md5 files   ;-) ndiswrapper-1.2.ebuild

>>> md5 files   ;-) files/digest-ndiswrapper-1.2

>>> md5 files   ;-) files/ndiswrapper-1.2-suspend2.patch

>>> md5 src_uri ;-) ndiswrapper-1.2.tar.gz

 * Determining the location of the kernel source code

 * Found kernel source directory:

 *     /usr/src/linux

 * Found sources for kernel version:

 *     2.6.13-gentoo-r3

 * Checking for suitable kernel configuration options:

find: invalid predicate `-quit'

 *

 * The version of GCC you are using (3.3.6) does

 * not match the version of GCC used to compile the

 * kernel ().

 *

 * Build will not continue, because you will experience problems.

 * To fix this either change the version of GCC you wish to use

 * to match the kernel, or recompile the kernel first.

!!! ERROR: net-wireless/ndiswrapper-1.2 failed.

!!! Function check_vermagic, Line 130, Exitcode 0

!!! GCC Version Mismatch.

!!! If you need support, post the topmost build error, NOT this status message.
```

i had ndiswrapper working earlier.  i was using a genkernel.  i usually install gentoo with a genkernel and later config it myself.  then did...

```
emerge -C ndiswrapper;

cd /usr/src/linux

make clean; make mrproper

cp /tmp/config.working /usr/src/linux/.config

make && make modules_install
```

kernel built, copied stuff to /boot, rebooted, and then here we are at ndiswrapper failing.

as an aside, im using a pcmcia wireless card with ndiswrapper:  netgear wg511 v2, and it works really well.  (when i can manage to install ndiswrapper!)

-j

----------

## PaulBredbury

 *jimonade wrote:*   

> *** Adjusting cvs-src permissions for portage user...

 

Do you always get that message when trying to emerge ndiswrapper? It comes from line 2654 of /usr/lib/portage/pym/portage.py - I think it refers to /usr/portage/distfiles/cvs-src/

----------

## jimonade

thanks for the reply.

i got the error when emerging ndiswrapper after i rebuilt the kernel from a genkernel to a manual config.  i used the same .config and then made my changes in xconfig.

you mentioned something about cvs so i...

```
rm -rf /usr/portage/distfiles/cvs-src
```

and...

```
rm /lib/modules/2.6.13-gentoo-r3/misc/ndiswrapper.ko
```

and its building, rock and roll!

thank you so much PaulBredbury!

----------

## Grubshka

 *PaulBredbury wrote:*   

>  *mijenix wrote:*   hmm, and why isn't the 1.4 Version in the unstable tree ~x86? 
> 
> No-one's bothered yet to submit an ebuild diff to bugzilla.
> 
> Look at the ebuild in /usr/portage/net-wireless/ndiswrapper/, copy it to your Portage overlay, and adapt it for version 1.4. Test it, then submit it to bugzilla.
> ...

 

Update in bugzilla for version 1.5.

I updated my post about manual installation for version 1.5, I think it may be usefull for people searching on the forum.

----------

