ndiswrapper 1.53 patch, fedora 9

fedora fedora at ayni.com
Sun Aug 3 08:56:06 UTC 2008


Hi listers
fedora 9 on a laptop.

not sure if i am the only silly fool having this problem. but i managed 
to solve it, and in case there are more of you facing this prob this may 
be helpful.

unfortunately i had bought a D-LINK DWL-650+ wlan card. this card is 
equipped with the TNETW1100B chip (it least the one i bought). to make 
wlan run you must either install

the acx100 project
ndiswrapper

both with approp firmware from windoof.

i could not compile the acx100 module in my environment, the help from 
the acx100 mailing list lead me nowhere, i.e. acx100 did not work, 
because i could not compile the module.

then i installed the f9 ndiswrapper package, but when i wanted to 
compile the module i got similar compilation errors like with acx100.

then i downloaded the source tarball of ndiswrapper from sourceforge, 
and also compiled package. and - sure enough - i got similar compilation 
errors to those above. all googling and looking into mailing lists did 
not help. i was on my own.
i took a deeper look into the error list and then created the following 
patch (see also attached file):


[myuser at mylap ~/software/ndiswrapper-1.53/driver]$ cat iw_ndis.c.patch
*** iw_ndis.c.orig	2008-08-02 10:30:34.000000000 +0200
--- iw_ndis.c	2008-08-02 10:44:28.000000000 +0200
***************
*** 1025,1028 ****
--- 1025,1029 ----
   	struct ndis_wlan_bssid *bssid;
   	struct ndis_wlan_bssid_ex *bssid_ex;
+ 	struct iw_request_info *info;

   	ENTER2("%p, %p", event, item);
***************
*** 1035,1039 ****
   	iwe.len = IW_EV_ADDR_LEN;
   	memcpy(iwe.u.ap_addr.sa_data, bssid->mac, ETH_ALEN);
! 	event = iwe_stream_add_event(event, end_buf, &iwe, IW_EV_ADDR_LEN);

   	/* add essid */
--- 1036,1040 ----
   	iwe.len = IW_EV_ADDR_LEN;
   	memcpy(iwe.u.ap_addr.sa_data, bssid->mac, ETH_ALEN);
! 	event = iwe_stream_add_event(info, event, end_buf, &iwe, IW_EV_ADDR_LEN);

   	/* add essid */
***************
*** 1045,1049 ****
   	iwe.u.data.flags = 1;
   	iwe.len = IW_EV_POINT_LEN + iwe.u.data.length;
! 	event = iwe_stream_add_point(event, end_buf, &iwe, bssid->ssid.essid);

   	/* add protocol name */
--- 1046,1050 ----
   	iwe.u.data.flags = 1;
   	iwe.len = IW_EV_POINT_LEN + iwe.u.data.length;
! 	event = iwe_stream_add_point(info, event, end_buf, &iwe, 
bssid->ssid.essid);

   	/* add protocol name */
***************
*** 1051,1055 ****
   	iwe.cmd = SIOCGIWNAME;
   	strncpy(iwe.u.name, network_type_to_name(bssid->net_type), IFNAMSIZ);
! 	event = iwe_stream_add_event(event, end_buf, &iwe, IW_EV_CHAR_LEN);

   	/* add mode */
--- 1052,1056 ----
   	iwe.cmd = SIOCGIWNAME;
   	strncpy(iwe.u.name, network_type_to_name(bssid->net_type), IFNAMSIZ);
! 	event = iwe_stream_add_event(info, event, end_buf, &iwe, IW_EV_CHAR_LEN);

   	/* add mode */
***************
*** 1062,1066 ****
   	else // if (bssid->mode == Ndis802_11AutoUnknown)
   		iwe.u.mode = IW_MODE_AUTO;
! 	event = iwe_stream_add_event(event, end_buf, &iwe, IW_EV_UINT_LEN);

   	/* add freq */
--- 1063,1067 ----
   	else // if (bssid->mode == Ndis802_11AutoUnknown)
   		iwe.u.mode = IW_MODE_AUTO;
! 	event = iwe_stream_add_event(info, event, end_buf, &iwe, IW_EV_UINT_LEN);

   	/* add freq */
***************
*** 1077,1081 ****
   	iwe.u.freq.e += 3;
   	iwe.len = IW_EV_FREQ_LEN;
! 	event = iwe_stream_add_event(event, end_buf, &iwe, IW_EV_FREQ_LEN);

   	/* add qual */
--- 1078,1082 ----
   	iwe.u.freq.e += 3;
   	iwe.len = IW_EV_FREQ_LEN;
! 	event = iwe_stream_add_event(info, event, end_buf, &iwe, IW_EV_FREQ_LEN);

   	/* add qual */
***************
*** 1091,1095 ****
   	iwe.u.qual.qual  = i;
   	iwe.len = IW_EV_QUAL_LEN;
! 	event = iwe_stream_add_event(event, end_buf, &iwe, IW_EV_QUAL_LEN);

   	/* add key info */
--- 1092,1096 ----
   	iwe.u.qual.qual  = i;
   	iwe.len = IW_EV_QUAL_LEN;
! 	event = iwe_stream_add_event(info, event, end_buf, &iwe, IW_EV_QUAL_LEN);

   	/* add key info */
***************
*** 1102,1106 ****
   	iwe.u.data.length = 0;
   	iwe.len = IW_EV_POINT_LEN;
! 	event = iwe_stream_add_point(event, end_buf, &iwe, bssid->ssid.essid);

   	/* add rate */
--- 1103,1107 ----
   	iwe.u.data.length = 0;
   	iwe.len = IW_EV_POINT_LEN;
! 	event = iwe_stream_add_point(info, event, end_buf, &iwe, 
bssid->ssid.essid);

   	/* add rate */
***************
*** 1116,1120 ****
   			iwe.u.bitrate.value = ((bssid->rates[i] & 0x7f) *
   					       500000);
! 			current_val = iwe_stream_add_value(event, current_val,
   							   end_buf, &iwe,
   							   IW_EV_PARAM_LEN);
--- 1117,1121 ----
   			iwe.u.bitrate.value = ((bssid->rates[i] & 0x7f) *
   					       500000);
! 			current_val = iwe_stream_add_value(info, event, current_val,
   							   end_buf, &iwe,
   							   IW_EV_PARAM_LEN);
***************
*** 1129,1133 ****
   	sprintf(buf, "bcn_int=%d", bssid->config.beacon_period);
   	iwe.u.data.length = strlen(buf);
! 	event = iwe_stream_add_point(event, end_buf, &iwe, buf);

   	memset(&iwe, 0, sizeof(iwe));
--- 1130,1134 ----
   	sprintf(buf, "bcn_int=%d", bssid->config.beacon_period);
   	iwe.u.data.length = strlen(buf);
! 	event = iwe_stream_add_point(info, event, end_buf, &iwe, buf);

   	memset(&iwe, 0, sizeof(iwe));
***************
*** 1135,1139 ****
   	sprintf(buf, "atim=%u", bssid->config.atim_window);
   	iwe.u.data.length = strlen(buf);
! 	event = iwe_stream_add_point(event, end_buf, &iwe, buf);

   	TRACE2("%d, %u", bssid->length, (unsigned int)sizeof(*bssid));
--- 1136,1140 ----
   	sprintf(buf, "atim=%u", bssid->config.atim_window);
   	iwe.u.data.length = strlen(buf);
! 	event = iwe_stream_add_point(info, event, end_buf, &iwe, buf);

   	TRACE2("%d, %u", bssid->length, (unsigned int)sizeof(*bssid));
***************
*** 1156,1160 ****
   				iwe.cmd = IWEVGENIE;
   				iwe.u.data.length = ielen;
! 				event = iwe_stream_add_point(event, end_buf,
   							     &iwe, iep);
   			}
--- 1157,1161 ----
   				iwe.cmd = IWEVGENIE;
   				iwe.u.data.length = ielen;
! 				event = iwe_stream_add_point(info, event, end_buf,
   							     &iwe, iep);
   			}
[myuser at mylap ~/software/ndiswrapper-1.53/driver]$


with this patch i compiled ndiswrapper including its module. and now 
wlan works on my laptop.

probably, a similar patch might also have helped to compile acx100 or 
ndiswrapper from f9.

in order to make ndiswrapper work across pm-hibernate i installed the 
following patch:

[root at mylap ~]# diff -C2 /tmp/50modules /usr/lib/pm-utils/sleep.d/50modules
*** /tmp/50modules	2008-08-03 10:34:23.000000000 +0200
--- /usr/lib/pm-utils/sleep.d/50modules	2008-08-03 09:20:39.000000000 +0200
***************
*** 3,6 ****
--- 3,7 ----

   . "${PM_FUNCTIONS}"
+ SUSPEND_MODULES="$SUSPEND_MODULES ndiswrapper"

   suspend_modules()
[root at mylap ~]#


and now ndiswrapper works even across pm-hibernates.

good luck

suomi
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: iw_ndis.c.patch
Url: http://lists.fedoraproject.org/pipermail/users/attachments/20080803/e81004df/attachment-0001.pl 


More information about the users mailing list