Jump to content
Andy Vandijck

USB Card Reader Apple Optimized Legacy Driver (10.6.5/10.6.6/10.6.7/10.6.8)

117 posts in this topic

Recommended Posts

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.

post-100023-1289686581_thumb.png

post-100023-1289686633.png

AnyCardReader.kext.zip

Share this post


Link to post
Share on other sites
Advertisement
The link keeps asking for upgrade account to download. Please look into it.

I uploaded it to the forum as well. :)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

Nice one andy , way cleaner then hacking the kexts and adding the devid and vendor id manually

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
anyway to use it under 10.5.8? :P

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)?

Share this post


Link to post
Share on other sites

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 .

 

post-459659-1289790917_thumb.png

post-459659-1289790892_thumb.png

 

2,

A,) AnyCardReader.kext installed, not insert SD card before booting.

post-459659-1289791052_thumb.png

post-459659-1289791092_thumb.png

B, ) But when I make computer sleep and wakeup, the card is mounted. see...

post-459659-1289791330_thumb.png

post-459659-1289791382_thumb.png

post-459659-1289791398_thumb.png

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

Works good with cheap internal Keytech USB adapter.

 

ID fornitore: 0x05ac

ID prodotto: 0x8403

 

Now it is shown as Apple Card Reader. Fine touch ^_^

Share this post


Link to post
Share on other sites

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

post-449896-1289836527_thumb.png

post-449896-1289836539_thumb.png

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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:

post-274437-1290012759_thumb.png

 

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?

Share this post


Link to post
Share on other sites
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:

post-274437-1290012759_thumb.png

 

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.

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×