Contribute
Register

Intel WiFi Driver Effort

Joined
Jul 24, 2017
Messages
25
Motherboard
Aser Aspire E5-576G
CPU
I5-8250U
Graphics
HD 620+GTX MX150
I have a INTEL AC-3160.how to run?
 
Joined
Jul 24, 2017
Messages
25
Motherboard
Aser Aspire E5-576G
CPU
I5-8250U
Graphics
HD 620+GTX MX150
AppleIntelWiFiMVM.KEXTI Intel® Wireless 3160 write support or is it fake?
 
Joined
Jul 24, 2017
Messages
25
Motherboard
Aser Aspire E5-576G
CPU
I5-8250U
Graphics
HD 620+GTX MX150
AppleIntelWiFiMVM kext Intel® Wireless 3160 or is it fake?
 
Joined
Feb 21, 2013
Messages
38
Motherboard
Samsung RC530-S01
CPU
Core i7 2630QM
Graphics
Intel HD Graphics 3000
Mobile Phone
iOS
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 :).
 
Joined
May 27, 2016
Messages
74
Mac
iMac
Classic Mac
PowerBook
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
 
Joined
Feb 21, 2013
Messages
38
Motherboard
Samsung RC530-S01
CPU
Core i7 2630QM
Graphics
Intel HD Graphics 3000
Mobile Phone
iOS
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.
 

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,123
Motherboard
Intel DH67BL
CPU
Core i7-2600K
Graphics
Intel HD 3000
Mac
MacBook Air
Mobile Phone
iOS
Top