Contribute
Register

Intel WiFi Driver Effort

Status
Not open for further replies.
Guys... Do you think I'll be able to learn about any of this stuff in college? I'm starting next year and I feel like it would be a good honors thesis if I can figure how all this works... Excuse my noobiness...
 
Guys... Do you think I'll be able to learn about any of this stuff in college? I'm starting next year and I feel like it would be a good honors thesis if I can figure how all this works... Excuse my noobiness...
learn how to create a kext for intel wifi that isn't supported? go for it :)
 
No, but the concept behind it... Like reverse engineering...
 
My hardware is Intel® Wireless 3168,Waiting for your work .
 
I have a Intel 8265 wifi and would like to test it for you.
 
Got an
WiFi Link 6000 Series, Intel Centrino Ultimate-N 6300 AGN in my Dell, so i'm awfully interested in your success :D
Found this, maybe the are some bits of code in it, thay may point you in the one or other direction:
https://code.google.com/archive/p/iwidarwin/
 
Last edited:
Hi guys,

I've been working on this driver for quite a long time and managed to make my device (Centrino N-130) catch beacon frames, displaying SSID of network where this beacon comes from.

Source code is here: https://github.com/rpeshkov/IntelWifi

Topic starter was working on MVM-based cards, but since mine card is quite old and DVM-based, I've been developing for DVM-based cards.

Regarding DVM what's currently done:
- Full firmware parsing
- EEPROM reads/writes
- RX partially
- TX partially

With this things done, my card gets fully initialized and able to receive frames from outside.

Now, the sad part: I'm stuck with this project. Even if I port whole of the driver this won't make the magic happen, because I need to wire it together with OS network stack (IEEE 802.11), which is closed in MacOS. Just to clarify: all things related to encryption/decryption, wireless network association and many other stuff are in network stack, not in the driver.

Basically, there are 2 options on how to proceed:
- Port IEEE 802.11 stack from BSD system, since it's the closest stack for MacOS (MacOS networking is built on BSD stack with some changes).
- Disassemble IO80211Family.kext and try to reverse-engineer MacOS IEEE 802.11 headers.

Option 2 is better, because it will be possible to use everything that the MacOS has for working with WiFi: widget on top, settings, etc. I've tried to reverse-engineer those headers aggregating everything that was done in Voodoo80211 project, old open-sourced headers for IEEE 802.11 from Apple and Hopper disassembler. I was able to build the kext that at least is able to launch, but it crashes right after the launch stating about pure virtual call.

Option 1 is quite hard and doesn't give tight integration with the system. You'll need to write custom utilities for displaying network lists, signal strength, choosing which network you want to connect to, entering WEP/WPA/WPA2 keys and so on.

Currently I'm not working on this project, waiting for enthusiasm to come back :)

If someone is aware of writing drivers, wants to help, etc., please write me, maybe together we will be able to finish this :)

P.S. Code in repository is a bit messy. Sorry for that. That's my first huge project on C/C++ and driver development. In my job I mostly work with C# + TypeScript and developing enterprise systems :).
 
Hi guys,

I've been working on this driver for quite a long time and managed to make my device (Centrino N-130) catch beacon frames, displaying SSID of network where this beacon comes from.

Source code is here: https://github.com/rpeshkov/IntelWifi

Topic starter was working on MVM-based cards, but since mine card is quite old and DVM-based, I've been developing for DVM-based cards.

Regarding DVM what's currently done:
- Full firmware parsing
- EEPROM reads/writes
- RX partially
- TX partially

With this things done, my card gets fully initialized and able to receive frames from outside.

Now, the sad part: I'm stuck with this project. Even if I port whole of the driver this won't make the magic happen, because I need to wire it together with OS network stack (IEEE 802.11), which is closed in MacOS. Just to clarify: all things related to encryption/decryption, wireless network association and many other stuff are in network stack, not in the driver.

Basically, there are 2 options on how to proceed:
- Port IEEE 802.11 stack from BSD system, since it's the closest stack for MacOS (MacOS networking is built on BSD stack with some changes).
- Disassemble IO80211Family.kext and try to reverse-engineer MacOS IEEE 802.11 headers.

Option 2 is better, because it will be possible to use everything that the MacOS has for working with WiFi: widget on top, settings, etc. I've tried to reverse-engineer those headers aggregating everything that was done in Voodoo80211 project, old open-sourced headers for IEEE 802.11 from Apple and Hopper disassembler. I was able to build the kext that at least is able to launch, but it crashes right after the launch stating about pure virtual call.

Option 1 is quite hard and doesn't give tight integration with the system. You'll need to write custom utilities for displaying network lists, signal strength, choosing which network you want to connect to, entering WEP/WPA/WPA2 keys and so on.

Currently I'm not working on this project, waiting for enthusiasm to come back :)

If someone is aware of writing drivers, wants to help, etc., please write me, maybe together we will be able to finish this :)

P.S. Code in repository is a bit messy. Sorry for that. That's my first huge project on C/C++ and driver development. In my job I mostly work with C# + TypeScript and developing enterprise systems :).

Class hierarchy of Airport driver:

AirPort_Brcm4360
IO80211Controller
IOEthernetController
IONetworkController
IOService
IORegistryEntry
OSObject

AirPort_Brcm4360_Interface
IO80211Interface
IOEthernetInterface
IONetworkInterface
IOService
IORegistryEntry
OSObject

AirPort_Brcm4360_P2PInterface
IO80211P2PInterface
IO80211VirtualInterface
IOService
IORegistryEntry
OSObject

AirPort_Brcm4360_Timer
OSObject
 
Hi guys,

I've pushed to my github repo my research of reverse-engineering IO80211Family.kext. You can find it here: https://github.com/rpeshkov/black80211

It's heavily based on Voodoo80211 work, but with some additions for Sierra.

I work on Sierra, so it might not work at all on High Sierra. You might get "VTable malformed" error during kext loading, because kext linker works during kext load. Or you might not get it, don't actually know. :)

Regarding this repo. As I said, there are reverse-engineered IO80211 headers and also dummy code that tries to attach network interface. On the step of attaching interface, the system crashes. The error is "call to pure virtual function" or something like that. I don't have crash dump right now, but the problem is in this error. If someone may take a fresh look on that, maybe the problem will be found.

Warning: before trying to load kext, do backup of your system. My hackintosh doesn't like crashes and sometimes Dropbox, Docker or anything else just stops working after crash.
 
Status
Not open for further replies.
Back
Top