PookyMacMan Posted January 22, 2012 Share Posted January 22, 2012 Hello everyone! I know many of us go through the most famous question (as iterated by Alessandro17 in the Guidelines) "What hardware will work?" Well, though the best answer is "Go to the wiki or other hardware compatilbility lists", that answer isn't necessarily complete. How did people get that hardware on the list? They had to try and experiment themselves. So, if you are the type who likes tinkering, helping make breakthroughs for the community, or just wants some general knowledge, this is what this topic's for. First of all, there is one thing you must know before we continue: the devices in your computer all have a 4-character vendor ID and a 4-character device ID, which together form a PCI ID. I think of the PCI ID as a device's social security number; every PCI ID is unique to its particular device. The vendor ID is the ID of the manufacturer, and the device ID is the ID of the exact device. Doesn't make sense? You'll see as we go along. Processor: Intel processors are the best, particularly any Intel Core (such as Core 2 duo, Core i5, etc.) or an Intel Xeon. Why these processors, and not other Intel or AMD CPUs? Simply because Intel Core and Intel Xeon CPUs are inside Macs. This doesn't mean other CPUs won't work; it just means you need to use a different kernel than Apple's bundled kernel. (If you're wondering, the kernel is the middleman; think of it this way, the operating system and software talks to the kernel, and the kernel talks to the hardware in the computer.) Controller: This is what manages your data that goes to and from your hard drives and DVD drives, be it SATA or PATA. There are many vendors: ATi, JMicron, VIA, nVidia, Intel, Marvell - what works? In truth, they all work, but Intel's controllers have drivers made by Apple. What does that mean? Well, if you have Intel, you don't need to obtain a 3rd-party kernel extension (a Mac OS driver) to use your hard drive or DVD drive. There are kexts (abbreviation for kernel extensions) for the other vendors, but it is a little easier to have Intel, because you don't have to search for a kext and throw it in your Extensions folder (just to get you started, the Extensions folder is in the folder Library inside the folder System on your hard drive; if you are using Snow Leopard or earlier, there is also an extensions folder inside Extra on your hard drive). Well, how in heaven's name is someone supposed to find the vendor ID and the device of your controller?? There are three ways: two from Windows, and one from Linux. From Windows, you can use the program Unknown Devices; download it and look around for your data controller. When you find it, hit the disclosure triangle, then the disclosure triangle beside PNP ID, and find the four characters after VEN_ and after DEV_. Intel's ID is 8086 (ATi is 1002, JMicron is 197b, VIA is 1106, Marvell is 11ab, nVidia is 10de). You can also use Device Manager; in the device tree you will find something like hard drive controllers; double-click it, hit the tab called Details, choose Hardware IDs from the pop-up menu, and note VEN_ and DEV_. If you use Linux, open Terminal and type lspci -nn. That should provide detailed info about your devices; look for the controller and note the IDs in brackets; if one of them is 8086, you have Intel. Confused? Well, you can look at this article in the Wiki for help. I/O ports: This includes all your data ports such as USB. Details for each I/O is listed below. USB 2.0: Most of the time USB 2.0 ports are detected right away. If not, (it occasionally happens with some Snow Leopard installations), you can find what's called a rollback kext; that is, a USB driver from an older version of Mac OS X. FireWire 400 & 800 (1394a and 1394b): From what I know, there are not very many issues with FireWire that I've seen. If there are problems, I believe the solution is the same as USB 2.0 problems. eSATA: eSATA ports are actually connected to your data controller, so controller solutions fix eSATA. USB 3.0: USB 3.0 can be a little interesting. Mac OS X can support USB 3.0 (there are USB 3.0 Mac PCIe cards available), and there are several (experimental) drivers available around here and other communities, but as I haven't worked with USB 3.0 I can't offer any definite solutions. Memory Card Readers: These work differently depending on how the reader is connected (check in Device Manager to see how your card reader is connected). If it is connected via internal USB, then all you need to do is get USB working. If your card reader is PCMCIA, there are other solutions, but they are a little more complex. If it's something else, well...you'll have to find a solution. PC card/ExpressCard slots (for laptops): I personally have not worked with these, but I believe some PC and ExpressCard slots can be made working through custom drivers. PCI and PCIe (and AGP with older machines):You don't need to worry about these; isn't that great? Just make sure your expansions cards are Mac-compatible. Networking: This includes wired (a.k.a. Ethernet), wireless (a.k.a. WiFi), and Bluetooth network (Internet) connections. Ethernet: There are many Ethernet enablers for many vendors, including Marvell, Broadcom, VIA, Intel, Atheros, and a host of others. Many times it is a simple as getting a driver (remember those are called kexts ) and adding your Ethernet's PCI ID into the driver. How in the world do you do that?? Well, first you need to determine where your kext is; is it in /Extra/Extensions or /System/Library/Extensions? Once you find that out you open Terminal (located in the Utilities folder inside the Applications folder), and type one of the following commands depending on where your kext is: sudo nano /System/Library/Extensions/[youredriverhere].kext/Contents/Info.plist sudo nano /Extra/Extensions/[yourdriverhere].kext/Contents/Info.plist If you need to patch a plugin inside a kext, you would type the same command with a twist: sudo nano /System/Library/Extensions/[youredriverhere].kext/Contents/PlugIns/[yourplugin].kext sudo nano /Extra/Extensions/[yourdriverhere].kext/Contents/PlugIns/[yourplugin].kext Scroll with the arrow keys and look for IOPCIPrimaryMatch or IOPCINameMatch (If there happens to be a IOPCIClassMatch instead of the other two mentioned above, change IOPCIClassMatch to IOPCIPrimaryMatch). Below it you should see at least one string of numbers (and letters) preceded by 0x (unless it says IOPCINameMatch; then in that case it will say pci instead of 0x). Delete all the strings (including any that say & before them) and type in your ID in the order 0x[deviceID][vendorID] (for IOPCINameMatch, it would be pci[vendorID], [deviceID]). So, for example, if you have an Intel (vendor ID 8086) Ethernet card with the device ID 27dc, you would type 0x27dc8086 (or pci8086, 27dc if it is IOPCINameMatch). Once you're done, press Control-O and then Control-X. Reboot and that should fix it. WiFi: This is a little more tricky if it is internal (be it desktop or laptop). For internal cards, if you want the little AirPort icon up in the menu bar, you must have a Broadcom (vendor ID 14e4) or Atheros (vendor ID 168c) based WiFi card. You can check in Device Manager the same way described for your controller; just look for your WiFi card and check if it has one of the vendor IDs listed above. An occasional Ralink card may work (not likely, though), and Intel cards may work, and i've heard about Realtek success, but you won't have the AirPort icon in the menu bar...plus, even in laptops, WiFi cards are easy to replace. Just look for a Broadcom or Atheros based card (if you like, you can check compatibility for OS X; the worst that could happen is you'd have to patch IO80211Family.kext and insert your IDs), and throw it in! Want the best buy? Get an authentic AirPort card!! Desktop users, you aren't left out; there are many Broadcom and Atheros based PCI and PCIe cards, not to mention a Mini-PCie to PCIe x1 adapter if you want to use a real AirPort card. Of course any Mac-compatible USB stick will work, too. Bluetooth: I don't believe there are many issues with Bluetooth. Worse comes to worse, there are very cheap Mac-compatible Bluetooth USB sticks. Audio: There are basically two types of audio cards (in modern computers): AC'97 (abbreviation for Audio Codec '97), and HDA (abbreviation for High Definition Audio). AC'97: There is an AC'97 kernel extension (called AppleAC97Audio.kext) that covers most (if not all) AC'97 cards. If it doesn't provide audio for your AC'97 codec, you can modify the driver with your PCI ID (I described the method above with Ethernet). For an AC'97 Creative SoundBlaster, you can try kXAudio. HDA: There are three ways to enable HDA audio: you can patch AppleHDA (Apple's built-in driver) and patch DSDT (this is the hardest way to enable audio), you can use VoodooHDA (this is the most user-friendly way to get all audio ports working), or you can use AppleAzaliaAudio.kext (this should probably be a last resort because it is 32-bit and only enables stereo audio). If VoodooHDA and AppleAzaliaAudio don't work right away, use the PCI ID insertion method above. For more info on VoodooHDA troubleshooting, check out this topic. If these don't work for your HDA Creative SoundBlaster, try kXaudio. Graphics: This is by far the toughest and most essential element for running Mac OS. As a rule of thumb, nVidia are the easiest cards to enable, and you can basically enable any nVidia card to work with OS X. ATi cards are a real pain, as only a few work, and are hit or miss. Intel cards are fairly easy to enable, but there are a very limited amount of built-in Intel chips that work. Now for methods: The easiest way is to use the bootloader's built in GraphicsEnabler feature; graphics cards that are supported by default in Apple's drivers will be enabled (I will compile a list of default graphics cards soon). This method is the only one used for Intel GMA/HD Graphics chips. For ATi, you can insert your PCI ID in the appropriate driver and try GraphicsEnabler, or try ATY_Init, Natit, or EVOEnabler. However, usually only ATi cards that are in Apple's driver work; even if you try inserting your PCI ID in the driver, there are very few times that it will work. For nVidia, you can insert your PCI ID in the appropriate driver, use GFX strings (EFI strings), and use enablers such as NVEnabler, NVInject, Titan, and many others. With nVidia, almost any card (even if you have to insert the ID) will work properly. Anyway, I hope this helps you out. Let me know if you have any questions or if I missed a hardware component. Quote Link to comment https://www.insanelymac.com/forum/topic/274956-here-are-some-general-hardware-compatibility-guidelines-for-newbies/ Share on other sites More sharing options...
PookyMacMan Posted March 21, 2012 Author Share Posted March 21, 2012 Fixed a couple typos, etc. Thinking about having this moved to the FAQ... Quote Link to comment https://www.insanelymac.com/forum/topic/274956-here-are-some-general-hardware-compatibility-guidelines-for-newbies/#findComment-1807533 Share on other sites More sharing options...
EvilMacMongo Posted March 21, 2012 Share Posted March 21, 2012 Dude this is awesome, way to go on breaking it down. If I would have had this 2 months ago I dont' think I would have had as many problems. Quote Link to comment https://www.insanelymac.com/forum/topic/274956-here-are-some-general-hardware-compatibility-guidelines-for-newbies/#findComment-1807540 Share on other sites More sharing options...
ZØØT Posted March 21, 2012 Share Posted March 21, 2012 Thank you! The part concerning IOPCIPrimaryMatch being interchangeable with IOPCINameMatch was a big help. I had a suspicion they were but couldn't find info to substantiate my hunch and wasn't willing to risk a 'mostly stable, working, OSX'. Mine as is works as an incredibly good recording studio. Excellent FAQ! Quote Link to comment https://www.insanelymac.com/forum/topic/274956-here-are-some-general-hardware-compatibility-guidelines-for-newbies/#findComment-1807566 Share on other sites More sharing options...
PookyMacMan Posted March 21, 2012 Author Share Posted March 21, 2012 Thanks guys! I'm going to talk to a mod about possibly moving this to the FAQ... Quote Link to comment https://www.insanelymac.com/forum/topic/274956-here-are-some-general-hardware-compatibility-guidelines-for-newbies/#findComment-1807574 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.