Jump to content

Atheros AR8131/AR8132


bramo
 Share

315 posts in this topic

Recommended Posts

Hi all,

 

Pyun YongHyeon is working in third generation ethernet controller, AR8131/AR8132 from Atheros to FreeBSD.

 

 

http://people.freebsd.org/~yongari/alc/if_alc.c

http://people.freebsd.org/~yongari/alc/if_alcreg.h

http://people.freebsd.org/~yongari/alc/if_alcvar.h

http://people.freebsd.org/~yongari/alc/Makefile

 

Does anyone have any idea how to make a kext to mac os X?

 

Thanks,

 

Bramo

Link to comment
Share on other sites

Hi all,

 

Pyun YongHyeon is working in third generation ethernet controller, AR8131/AR8132 from Atheros to FreeBSD.

 

 

http://people.freebsd.org/~yongari/alc/if_alc.c

http://people.freebsd.org/~yongari/alc/if_alcreg.h

http://people.freebsd.org/~yongari/alc/if_alcvar.h

http://people.freebsd.org/~yongari/alc/Makefile

 

Does anyone have any idea how to make a kext to mac os X?

 

Thanks,

 

Bramo

 

I sure wish I had some idea how to port this FreeBSD driver to OS X! I would love to get my AR8132 working on my new Sony netbook! :star_smile:

Link to comment
Share on other sites

  • 3 weeks later...
Well, i tried compiling this, had over 2000 Errors in each file.

 

Would probably be easier to do a complete re-write.

 

Something i don't have enough knowledge or time to do.

 

Sorry Guys, but whoever programed that sucks :star_smile:

 

try it:

 

1. download atl1E source from here : http://iats.googlecode.com/files/Atl1eSource20090418.zip

2. download l1c linux source AR81Family-linux-v1.0.0.10.tar.gz from here : http://partner.atheros.com/Drivers.aspx

3. According l1c source to modify the following file:

at.h

at_hw.cpp

at_hw.h

at_main.cpp

at_main.h

at_osdep.h

at_param.cpp

at_param.h

4. good luck!

Link to comment
Share on other sites

try it:

 

1. download atl1E source from here : http://iats.googlecode.com/files/Atl1eSource20090418.zip

2. download l1c linux source AR81Family-linux-v1.0.0.10.tar.gz from here : http://partner.atheros.com/Drivers.aspx

3. According l1c source to modify the following file:

at.h

at_hw.cpp

at_hw.h

at_main.cpp

at_main.h

at_osdep.h

at_param.cpp

at_param.h

4. good luck!

 

Reader02, thanks for posting the link to the L1c linux source!!! I am going to get right onto working on this driver again. Are you willing to give any insight if (and when) I hit snags along the way? Or would you prefer to not be involved in this driver at all?

 

Thanks again for the link! :(

Link to comment
Share on other sites

Well, it just became painfully obvious to me that I am too dumb to get this thing working with my AR8132. After numerous code changes and adaptions, all I've managed to do is frustrate myself and my poor little netbook. :-( I hope someone with more driver knowledge than me can make some sense of it all.

Link to comment
Share on other sites

I really need this to work on my netbook too. I'm not much of a programmer, but I'd like to help figure this one out if I can.

Hmm there is a driver for mac os that support the family http://www.insanelymac.com/forum/index.php?showtopic=140907 problem is it only really supports the pciid 1969:1026 and the ones your talking about here are most likely the pciid 1969:1062 however if you edit the id in the info.plist file inside the kext you get the card detected however you cannot get an internet connection etc ip etc. However if you guys that are looking at that BSD driver can compare the differences between that card and the 1969:1026 card you may be able to understand what needs to be changed on this kext in order to make it work for our cards (the 1969:1062)

if any of you have a clue about coding this is a hint I can give you, myself I dun have the first clue about coding in kernel space in regards to bsd land so I can just point to the link.

terramir

Link to comment
Share on other sites

My device shows up as 1969:1063 rev c0.

 

I would really appreciated if someone could provide a way to get this supported in Leopard.

 

Some of you guys are so talented...I hope someone will be able to figure this out.

 

Alternatively, can someone suggest a compatible USB wireless device?

Link to comment
Share on other sites

I haven't given up on this thing--quite frankly, I need the built in NIC too badly to just sit back and "wait it out". I have compiled numerous new kexts consisting of a variety of changes to the L1e kext. I just cannot get it working. :-/

 

At this point, I am willing to chip in some monetary compensation (for the time dedicated to porting this driver) to anyone who can produce a working driver for this NIC. I certainly would appreciate any assistance with getting this project working. Thanks!

Link to comment
Share on other sites

Does anyone know what the closest OS X equivalent data structure is to a linux socket buffer (sk_buff)? Is there a native data structure in OS X (I am still very new to the OS X libraries) which is typically used as a socket buffer for OS X network drivers? If there is not a native type, has anyone else here created a "socket buffer" class for OS X they might be willing to share?

 

Thanks in advance to anyone who can help! :)

Link to comment
Share on other sites

Well, it just became painfully obvious to me that I am too dumb to get this thing working with my AR8132. After numerous code changes and adaptions, all I've managed to do is frustrate myself and my poor little netbook. :-( I hope someone with more driver knowledge than me can make some sense of it all.

 

I feel exactly the same way. I Defintally don't know enough about C programming to get this thing working. More than 50% of the code would need to be adapted / rewritten and that is a BIG Job and requires someone who actually knows what they are doing, My first year in a UNI Programming course isn't going to cut it i'm afraid.

 

anyway - Maybe this'll help you out http://www.psystar.com/opensource/r1000

 

You could copy some of the code or give you a template to look at for a fully working driver.

Link to comment
Share on other sites

I feel exactly the same way. I Defintally don't know enough about C programming to get this thing working. More than 50% of the code would need to be adapted / rewritten and that is a BIG Job and requires someone who actually knows what they are doing, My first year in a UNI Programming course isn't going to cut it i'm afraid.

 

anyway - Maybe this'll help you out http://www.psystar.com/opensource/r1000

 

You could copy some of the code or give you a template to look at for a fully working driver.

 

Contrary to my initial "frustrated" posts, I have not stopped working on this driver (the AR8132 driver). I have basically replaced all of the at_hw.h file from the ATL1e source with the register definitions from the linux ATL1c/ATL2c source. The amount of code that needed to be changed was nowhere near 50% (at least not yet). But, there are plenty of differences [apparently] between the ATL1e/ATL2e and ATL1c/ATL2c hardware.

 

After more coding and testing, I cannot figure out why I continually end up meeting this condition in this function: void AttansicL1eEthernet::atIntr(...)

/* link event */
	if (status & (ISR_GPHY | ISR_MANUAL)) {
		DEBUGOUT1("Link event error (status = 0x%x)\n", (status & (ISR_GPHY | ISR_MANUAL)));
		IOSleep(2);
		atGetAndUpdateLinkStatus();
		break;
	}

 

Can anyone explain to me what might cause the "status & (ISR_GPHY | ISR_MANUAL)" condition to always be true? Furthermore, can anyone give any info as to what enabling "MASTER_CTRL_MANUAL_INT" does in this code:

// Enable interrupts. 
val = AT_READ_REG(&adapter->hw, REG_MASTER_CTRL);
   AT_WRITE_REG(&adapter->hw, REG_MASTER_CTRL, val|MASTER_CTRL_MANUAL_INT);

The reason I ask is that the linux ATL1c code does NOT enable the same register when enabling the adapter. However, the OS X code does--anyone know why? If I comment out the above two lines, I do not end up in the "status & (ISR_GPHY | ISR_MANUAL)" state as I mentioned above AND I actually reach the outputPacket(...) function. However, even though my debug output says it is outputting packets, there is no network activity indicated by activity LEDs and obviously, I am not actually able to speak with my network. :(

 

I can make my way through the code fairly well, but I get a bit lost when working with hardware interrupt requests. Any insight into this would be greatly appreciated! Thanks in advance!

Link to comment
Share on other sites

1. atIntr originally code at atl1e_main.c line 2478 atl1e_intr function. and atl1c_intr function at atl1c_main.c line 1628.

 

if the "status & (ISR_GPHY | ISR_MANUAL)" condition always true, Instruction register has not been properly initialized

 

2. MASTER_CTRL_MANUAL_INT at atl1e_main.c line 1644 atl1e_up function ,you can delete it. try search MASTER_CTRL_MANUAL_INT in atl1e_main.c.you should find that.

 

In short, you can compare atl1e_main.c and AttansicL1eEthernet.cpp, Then modify the AttansicL1eEthernet.cpp according to atl1c_main.c file.

Link to comment
Share on other sites

1. atIntr originally code at atl1e_main.c line 2478 atl1e_intr function. and atl1c_intr function at atl1c_main.c line 1628.

 

if the "status & (ISR_GPHY | ISR_MANUAL)" condition always true, Instruction register has not been properly initialized

 

2. MASTER_CTRL_MANUAL_INT at atl1e_main.c line 1644 atl1e_up function ,you can delete it. try search MASTER_CTRL_MANUAL_INT in atl1e_main.c.you should find that.

 

In short, you can compare atl1e_main.c and AttansicL1eEthernet.cpp, Then modify the AttansicL1eEthernet.cpp according to atl1c_main.c file.

 

Thanks for replying! I have been doing as you say--I have compared the atl1c files against the atl1e project and have made numerous changes. I am at the point where so many of the original atl1e functions have been modified to match the atl1c functions and yet, I just cannot get past the "status & (ISR_GPHY | ISR_MANUAL)" condition. It appears that the adapter is initializing properly, but apparently something is still not configured properly. I am about ready to pull my hair out. :wacko:

 

When you refer to the instruction register, are you talking about "REG_ISR" (address 0x1600)? Also, if it helps at all, when I enter into the atIntr(...) method in [my modified] AttansicL1eEthernet.cpp file, the status at REG_ISR is 0x1400004 or 0x81400004 (depending on whether I check before of after acknowledging the ISR).

 

I suppose if it would help, I could put the Xcode project up on a Google Code site if anyone cares to come help point out where my errors are. :P The code is a mess as I have been making numerous changes to it. Let me know if there is any interest in helping me out with what is left (hopefully, it is not too far off). Thanks to anyone who would like to help with the code.

 

BTW, I know there are many people who are anxious to beta test a kext when it is ready. No need to reply to say that. I will put out a beta when it is ready to test--probably under a new thread.

Link to comment
Share on other sites

  • 2 weeks later...

MrBlippy: did u upload ur code to google code or any comperable site so i can have a look? i'm an experienced developer, just haven't done much with OSX yet... i got the same itch (having the ethernet port of my eee working under SL), helping to solve it would be my pleasure :)

Link to comment
Share on other sites

This would be great if it could be made to work. I notice the popular Gigabyte GA-G31M-ES2L was revised recently to replace the Realtek gigabit ethernet with Atheros AR8131

 

Thats why I found this page and why I won't be buying that board now ;)

Link to comment
Share on other sites

 Share

×
×
  • Create New...