Andy Vandijck Posted November 13, 2010 Share Posted November 13, 2010 I have succeeded in making Apple's new driver for memory cards (since 10.6.5) working on any USB card reader (internal or external) Installation steps: first edit the plist and insert your card readers vendor and device id (where needed). The parts you need to edit for this step are: - Fake Apple Card Reader Device - Fake Apple Card Reader Interface - Fake Apple Card Reader UMC Inject - Fake Apple Card Reader SBC Inject - Any_Internal_SD_Card_Reader_1_00 You can use System Profiler for the vendor + product id's or IORegistryExplorer. The following are the id's you need to look up in IORegistryExplorer: - idVendor - idProduct If you use a text editor convert the id's to decimal with Calculator. Insert them in the idVendor and idProduct parts respectively Then we need to add the SCSI device id's to the following parts: - AnySDCardReaderAnySBC - Fake Apple Card Reader SCSI Inject For this you also need IORegistryExplorer (download below if you don't have it). Open IORegistryExplorer and next insert a memory card (SD/MMC/...) Look under the EHCI parts for finding the memory card host controller (will be green because of card insertion). Under the device look for the IOSCSIPeripheralDeviceNub entry (below the USB device) Click on this and look for: - Vendor Identification - Product Identification Change these in the Info.plist to the values you see there (Fake Apple Card Reader SCSI Inject + AnySDCardReaderAnySBC) Install the edited kext using Terminal or kext utility. Reboot and remove the memory card. After boot reinsert it and you should see a little SD memory card appearing for the SD card (cool) if you did it right and if you check System Profiler under Card Reader the device will be listed as Apple built-in Card Reader. Download for needed IORegistryExplorer tool: http://rapidshare.com/files/430687772/IORegistryExplorer.zip Download: http://rapidshare.com/files/430687534/AnyCardReader.kext.zip Here are some pictures on how it looks like on my computer. Forgot to mention: the default kext id's are for the memory card reader inside the Acer Aspire One D250. AnyCardReader.kext.zip 5 Link to comment Share on other sites More sharing options...
ErmaC Posted November 13, 2010 Share Posted November 13, 2010 ... I will try! Thanks Andy for all your nice job! Very apreciated personalizations! Fabio Link to comment Share on other sites More sharing options...
tdtran1025 Posted November 13, 2010 Share Posted November 13, 2010 The link keeps asking for upgrade account to download. Please look into it. Link to comment Share on other sites More sharing options...
Andy Vandijck Posted November 14, 2010 Author Share Posted November 14, 2010 The link keeps asking for upgrade account to download. Please look into it. I uploaded it to the forum as well. Link to comment Share on other sites More sharing options...
quinielascom Posted November 14, 2010 Share Posted November 14, 2010 Is possible modify this Legacy driver for attach to IOSDHCIBlockDevice.kext as Internal Apple Card Reader ? The IOSDHCIBlockDevice.kext is for: SD Host controller [0805]: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter [1180:0822] (No USB) Vendor ID: 0x1180 Device ID: 0x0822 Sub Vendor ID: 0x1025 Sub System ID: 0x011d Revision ID: 0x0022 And could work with AppleSDXC.kext (Apple Driver released in 10.6.5) but fails to mount any card. http://www.projectosx.com/forum/index.php?showtopic=1405 Link to comment Share on other sites More sharing options...
Andy Vandijck Posted November 14, 2010 Author Share Posted November 14, 2010 Is possible modify this Legacy driver for attach to IOSDHCIBlockDevice.kext as Internal Apple Card Reader ? The IOSDHCIBlockDevice.kext is for: SD Host controller [0805]: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter [1180:0822] (No USB) Vendor ID: 0x1180 Device ID: 0x0822 Sub Vendor ID: 0x1025 Sub System ID: 0x011d Revision ID: 0x0022 And could work with AppleSDXC.kext (Apple Driver released in 10.6.5) but fails to mount any card. http://www.projectosx.com/forum/index.php?showtopic=1405 The driver mentioned here is only for USB (as you allready know). I would need an .ioreg dump (with IORegistryExplorer) from an autenthic Mac which contains one of these card adapters (e.g. Macmini4,1) I will look around myself as well and check for this. Link to comment Share on other sites More sharing options...
Zprood Posted November 14, 2010 Share Posted November 14, 2010 Thanks ,works perfectly. 1 Link to comment Share on other sites More sharing options...
Prasys Posted November 14, 2010 Share Posted November 14, 2010 Nice one andy , way cleaner then hacking the kexts and adding the devid and vendor id manually Link to comment Share on other sites More sharing options...
jlvaio Posted November 14, 2010 Share Posted November 14, 2010 anyway to use it under 10.5.8? Link to comment Share on other sites More sharing options...
Zprood Posted November 14, 2010 Share Posted November 14, 2010 Hi I just found After log in system ,insert the SD card, and it isn`t mounted. But inserted SD card before start boot ,the driver works perfectly . Can this issue be fix ? Regards. Link to comment Share on other sites More sharing options...
Andy Vandijck Posted November 14, 2010 Author Share Posted November 14, 2010 anyway to use it under 10.5.8? No, the new drivers are only available on 10.6.5 Hi I just found After log in system ,insert the SD card, and it isn`t mounted. But inserted SD card before start boot ,the driver works perfectly . Can this issue be fix ? Regards. I guess it depends on the card reader. I haven't had any issues with this on my card reader (as it only attaches to usb EHCI controller after card insertion). Could you provide me some more info on your card reader (or possibly a few .ioreg IORegistryExplorer files containing the working and not working states)? Link to comment Share on other sites More sharing options...
Zprood Posted November 15, 2010 Share Posted November 15, 2010 Yeah, I grap some picture, this is the state and phenomenon . 1, No AnyCardReader.kext, it work normal, just do not show info in the System Profiler and internal device . 2, A,) AnyCardReader.kext installed, not insert SD card before booting. B, ) But when I make computer sleep and wakeup, the card is mounted. see... 3, With SD card insert like above reply I post. Here is the dsdt file, I do some patches to make it can sleep.dsdt.aml.zip Link to comment Share on other sites More sharing options...
Prasys Posted November 15, 2010 Share Posted November 15, 2010 I had that issue as well , you know how i fixed it , I add IOProbeScore , 100 to it. It simply means that this kext has higher priority compared to normal USB Kexts. You just gotta add or get andy to add it for you Link to comment Share on other sites More sharing options...
Zprood Posted November 15, 2010 Share Posted November 15, 2010 I had that issue as well , you know how i fixed it , I add IOProbeScore , 100 to it. It simply means that this kext has higher priority compared to normal USB Kexts. You just gotta add or get andy to add it for you Thanks for reply, you mean add IOProbeScore to info.plist ? Or in each part of the info.plist? I try to add the value but no effect. Can you share you modified kext ? thanks. Link to comment Share on other sites More sharing options...
gatsu_1981 Posted November 15, 2010 Share Posted November 15, 2010 Works good with cheap internal Keytech USB adapter. ID fornitore: 0x05ac ID prodotto: 0x8403 Now it is shown as Apple Card Reader. Fine touch Link to comment Share on other sites More sharing options...
stefano.85 Posted November 15, 2010 Share Posted November 15, 2010 Hi guys, i hope i've correctly modified the plist file. This is what i've got with an sd inserted. I've installed the kext in E/E of my EFI partition p.s i've got a multi-card reader, is it possible to add support for other types of card in this kext? attached two screenshots of system profiler Link to comment Share on other sites More sharing options...
BlackCH Posted November 15, 2010 Share Posted November 15, 2010 Thank you Andy! Works fine here Link to comment Share on other sites More sharing options...
blakken Posted November 16, 2010 Share Posted November 16, 2010 Thanks Andy for your work! I'd say it works half half with my eeepc 1000HE meaning it's not really recognized as internal memory card but it REALLY helps to deepsleep without removing the sd card(but recovering from sleep shows ejection error) 1000HE is particular:it holds under EHCI the webcam and the SDCard reader. Nevertheless it's really a great work! I wish it could be realized by DSDT modification but even after googling hours there seems to be no answers. Link to comment Share on other sites More sharing options...
alexaffonso Posted November 16, 2010 Share Posted November 16, 2010 Open IORegistryExplorer and next insert a memory card (SD/MMC/...)Look under the EHCI parts for finding the memory card host controller (will be green because of card insertion). Under the device look for the IOSCSIPeripheralDeviceNub entry (below the USB device) How should I be able to do that if when I insert a Memory Card into the slot nothing happens? I don't have the slot recognized by the system. Into system profiler, it says I do not have a card reader installed at all. What should I do? Link to comment Share on other sites More sharing options...
blakken Posted November 16, 2010 Share Posted November 16, 2010 How should I be able to do that if when I insert a Memory Card into the slot nothing happens? I don't have the slot recognized by the system. Into system profiler, it says I do not have a card reader installed at all. What should I do? Download some linux live edition (for instance ubuntu) and load it . Click the terminal and write under the shell the command "lspci -nn" without brackets you'll find the product Id and the Vendor Id of you card reader.Convert hexadecimal number found to decimal and insert it to kext as described above. Otherwise if you have windows installed check the system properties of the sd card ,there should be written as well. Link to comment Share on other sites More sharing options...
alexaffonso Posted November 17, 2010 Share Posted November 17, 2010 Download some linux live edition (for instance ubuntu) and load it .Click the terminal and write under the shell the command "lspci -nn" without brackets you'll find the product Id and the Vendor Id of you card reader.Convert hexadecimal number found to decimal and insert it to kext as described above. Otherwise if you have windows installed check the system properties of the sd card ,there should be written as well. blakken, I did what you said: downloaded PartedMagic, run the shell command and ended up with the following screen, with 4 different entries for Ricoh: I tried to use the first one, but I'm lost. I converted the number 1180:0822 to decimal, which gave me 4480:2082. Is this correct? What is the idProduct and idVendor? Should I use these numbers? I tried then, but no lucky. Could you help me again? Link to comment Share on other sites More sharing options...
quinielascom Posted November 17, 2010 Share Posted November 17, 2010 blakken, I did what you said: downloaded PartedMagic, run the shell command and ended up with the following screen, with 4 different entries for Ricoh: I tried to use the first one, but I'm lost. I converted the number 1180:0822 to decimal, which gave me 4480:2082. Is this correct? What is the idProduct and idVendor? Should I use these numbers? I tried then, but no lucky. Could you help me again? your internal card reader is not USB, is connected through PCI bus. Link to comment Share on other sites More sharing options...
alexaffonso Posted November 17, 2010 Share Posted November 17, 2010 your internal card reader is not USB, is connected through PCI bus. Thanks. Link to comment Share on other sites More sharing options...
Boombeng Posted November 19, 2010 Share Posted November 19, 2010 Thanx! It works like a charm Link to comment Share on other sites More sharing options...
MacKonsti Posted November 23, 2010 Share Posted November 23, 2010 Thanks to Andy for his magic, again. My excellent Dell U2410 monitor has an embedded SD reader and USB hub, and with the guides I was able to make it a native SD reader! A note to those that will edit the plist manually, like myself. The VendorID and ProductID to change are the ones near the end of each entry, not the ones in the middle of the <key> that I am highlighting for your convenience: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>English</string> <key>CFBundleIdentifier</key> <string>com.legacy.driver.AnyCardReader</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>AnyCardReader</string> <key>CFBundlePackageType</key> <string>KEXT</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>8.8.8</string> <key>IOKitPersonalities</key> <dict> <key>[color="#ff0000"][b]Fake Apple Card Reader Device[/b][/color]</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleUSBMergeNub</string> <key>IOClass</key> <string>AppleUSBMergeNub</string> <key>IOProviderClass</key> <string>IOUSBDevice</string> <key>IOProviderMergeProperties</key> <dict> <key>bcdDevice</key> <integer>38963</integer> <key>idProduct</key> <integer>33795</integer> <key>idVendor</key> <integer>1452</integer> <key>non-removable</key> <string>yes</string> <key>USB Product Name</key> <string>Internal Memory Card Reader</string> <key>USB Serial Number</key> <string>[b]000000264001[/b]</string> <key>USB Vendor Name</key> <string>Apple</string> </dict> <key>idProduct</key> <integer>[color="#ff0000"][b]16480[/b][/color]</integer> <-- HERE <key>idVendor</key> <integer>[color="#ff0000"][b]1060[/b][/color]</integer> <-- HERE </dict> <key>[color="#ff0000"][b]Fake Apple Card Reader Interface[/b][/color]</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleUSBMergeNub</string> <key>IOClass</key> <string>AppleUSBMergeNub</string> <key>IOProviderClass</key> <string>IOUSBInterface</string> <key>IOProviderMergeProperties</key> <dict> <key>bcdDevice</key> <integer>38963</integer> <key>idProduct</key> <integer>33795</integer> <key>idVendor</key> <integer>1452</integer> </dict> <key>bConfigurationValue</key> <string>*</string> <key>bInterfaceNumber</key> <string>*</string> <key>idProduct</key> <integer>[color="#ff0000"][b]16480[/b][/color]</integer> <-- HERE <key>idVendor</key> <integer>[color="#ff0000"][b]1060[/b][/color]</integer> <-- HERE </dict> <key>[color="#ff0000"][b]Fake Apple Card Reader UMC Inject[/b][/color]</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleUSBMergeNub</string> <key>IOClass</key> <string>AppleUSBMergeNub</string> <key>IOProviderClass</key> <string>com_apple_driver_AppleUSBCardReaderUMC</string> <key>IOProviderMergeProperties</key> <dict> <key>idProduct</key> <integer>33795</integer> <key>idVendor</key> <integer>1452</integer> <key>Physical Interconnect Location</key> <string>Internal</string> </dict> <key>idProduct</key> <integer>[color="#ff0000"][b]16480[/b][/color]</integer> <-- HERE <key>idVendor</key> <integer>[color="#ff0000"][b]1060[/b][/color]</integer> <-- HERE </dict> <key>[color="#ff0000"][b]Fake Apple Card Reader SBC Inject[/b][/color]</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleUSBMergeNub</string> <key>IOClass</key> <string>AppleUSBMergeNub</string> <key>IOProviderClass</key> <string>com_apple_driver_AppleUSBCardReaderSBC</string> <key>IOProviderMergeProperties</key> <dict> <key>Product Identification</key> <string>Internal Memory Card Reader</string> <key>USB Serial Number</key> <string>[b]000000264001[/b]</string> <key>USB Vendor Name</key> <string>Apple</string> </dict> <key>idProduct</key> <integer>[color="#ff0000"][b]16480[/b][/color]</integer> <-- HERE <key>idVendor</key> <integer>[color="#ff0000"][b]1060[/b][/color]</integer> <-- HERE </dict> <key>[color="#ff0000"][b]Fake Apple Card Reader SCSI Inject[/b][/color]</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleUSBMergeNub</string> <key>IOClass</key> <string>AppleUSBMergeNub</string> <key>IOProviderClass</key> <string>IOSCSIPeripheralDeviceNub</string> <key>IOProviderMergeProperties</key> <dict> <key>Vendor Identification</key> <string>APPLE</string> <key>Product Identification</key> <string>SD Card Reader</string> <key>Product Revision Level</key> <string>[b]1.82[/b]</string> </dict> <key>Peripheral Device Type</key> <integer>0</integer> <key>Product Identification</key> <string>[color="#ff0000"][b]Ultra HS-SD/MMC[/b][/color]</string> <- HERE <key>Vendor Identification</key> <string>[color="#ff0000"][b]Generic[/b][/color]</string> <- HERE </dict> <key>AnySDCardReaderAppleSBC</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleUSBCardReader</string> <key>IOClass</key> <string>com_apple_driver_AppleUSBCardReaderSBC</string> <key>IOProviderClass</key> <string>IOSCSIPeripheralDeviceNub</string> <key>Peripheral Device Type</key> <integer>0</integer> <key>Product Identification</key> <string>SD Card Reader</string> <key>USB Mass Storage Characteristics</key> <dict> <key>Max Logical Unit Number</key> <integer>0</integer> </dict> <key>Vendor Identification</key> <string>APPLE</string> </dict> <key>[color="#ff0000"][b]AnySDCardReaderAnySBC[/b][/color]</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleUSBCardReader</string> <key>IOClass</key> <string>com_apple_driver_AppleUSBCardReaderSBC</string> <key>IOProviderClass</key> <string>IOSCSIPeripheralDeviceNub</string> <key>Peripheral Device Type</key> <integer>0</integer> <key>Product Identification</key> <string>[color="#ff0000"][b]Ultra HS-SD/MMC[/b][/color]</string> <- HERE <key>USB Mass Storage Characteristics</key> <dict> <key>Max Logical Unit Number</key> <integer>0</integer> </dict> <key>Vendor Identification</key> <string>[color="#ff0000"][b]Generic[/b][/color]</string> <- HERE </dict> <key>[color="#ff0000"][b]Any_Internal_SD_Card_Reader_1_00[/b][/color]</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleUSBCardReader</string> <key>IOClass</key> <string>com_apple_driver_AppleUSBCardReaderUMC</string> <key>IOMediaIcon</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.iokit.IOSCSIArchitectureModelFamily</string> <key>IOBundleResourceFile</key> <string>SD.icns</string> </dict> <key>IOProviderClass</key> <string>IOUSBInterface</string> <key>Physical Interconnect</key> <string>USB</string> <key>Physical Interconnect Location</key> <string>Internal</string> <key>Read Time Out Duration</key> <string>30000</string> <key>SCSI Device Characteristics</key> <dict> <key>IOMaximumBlockCountRead</key> <integer>8192</integer> <key>IOMaximumBlockCountWrite</key> <integer>8192</integer> </dict> <key>Write Time Out Duration</key> <string>30000</string> <key>bConfigurationValue</key> <integer>1</integer> <key>bInterfaceNumber</key> <integer>0</integer> <key>idProduct</key> <integer>[color="#ff0000"][b]16480[/b][/color]</integer> <-- HERE <key>idVendor</key> <integer>[color="#ff0000"][b]1060[/b][/color]</integer> <-- HERE </dict> </dict> <key>OSBundleRequired</key> <string>Root</string> </dict> </plist> Andy, I also inserted the Serial Number of my USB reader, and the Product Revision Level that I got from System Profiler, too. Is it wrong that I changed these values? Link to comment Share on other sites More sharing options...
Recommended Posts