0xFireWolf / RealtekCardReader

An unofficial Realtek PCIe/USB-based SD card reader driver for macOS
BSD 3-Clause "New" or "Revised" License
182 stars 18 forks source link

RTS5227 Timeouts / Mount Errors #18

Closed joshuaseltzer closed 2 years ago

joshuaseltzer commented 2 years ago

First off: thanks again for porting this over to macOS!

I got the latest nightly (https://github.com/0xFireWolf/RealtekCardReader/actions/runs/1218661751) installed on my machine:

I tried 5-6 SD cards I had lying around. 4 of them were 32gb cards and worked flawlessly. However, I noticed that a 128gb card I had did not mount correctly. I captured the logs from the moment I plugged it in, to the end of when it was printing errors (see attached). Line 11634 looks particularly interesting... RTS5227_Mount_Error.txt

I have a few other cards too I'd like to test with this machine.

gnpaone commented 2 years ago

Please add -iosd3v3 boot argument and try again

joshuaseltzer commented 2 years ago

@gnpaone that fixed the issue with that card and also another card I was having! Thanks for the tip.

It looks like this just adjusts the speeds at which the card is being read. Are there any downsides to using this boot argument?

gnpaone commented 2 years ago

It initializes all cards at 3.3V, so cards can work at the default or the high speed mode but I think there are no downsides, probably transfer speeds will be reduced, not sure about it

joshuaseltzer commented 2 years ago

@gnpaone thanks for the additional information. Seems to be working fine with this flag but I’ll do more testing over the next few days and weeks to be sure.

0xFireWolf commented 2 years ago

All UHS-I cards will be working at the default or the high speed mode with the boot argument -iosd3v3, so their speeds are limited to about 12.5MB/s or 25MB/s.

Your kernel log is incomplete. Could you please do a fresh reboot, insert the 128GB card that cannot be recognized, and dump the kernel log?

joshuaseltzer commented 2 years ago

All UHS-I cards will be working at the default or the high speed mode with the boot argument -iosd3v3, so their speeds are limited to about 12.5MB/s or 25MB/s.

Your kernel log is incomplete. Could you please do a fresh reboot, insert the 128GB card that cannot be recognized, and dump the kernel log?

Sure. That was exactly what I had done the first time but maybe something got cut off. I’ll boot it up again tomorrow without that flag and capture the logs.

joshuaseltzer commented 2 years ago

@0xFireWolf Here's the log file you requested. I'm assuming that all of the log messages are prefixed with "RTSX." RTS5227_Mount_Error_2021-10-09.txt

joshuaseltzer commented 2 years ago

@0xFireWolf Was that the type of log output you were looking for? I can do more testing and capture more logs if necessary. Thanks!

0xFireWolf commented 2 years ago

If you are still interested in testing the driver, please try the attached one with your 128GB card.

The new fallback mechanism allows the driver to try to initialize your card at a lower speed mode after it has failed to initialize that card at the ultra high speed mode. Please check whether your 128GB card can be recognized properly WITHOUT the -iosd3v3 boot argument and upload the kernel log as well as the IOReg dump for debugging purposes.

RealtekCardReader_0.9.7_43b5887_DEBUG.zip

The previous kernel logs you provided are incomplete. I have checked all error messages in your log, but I suspect that there should be several more errors in between them. I guess you are using macOS Catalina or earlier systems. If so, open the terminal before you insert the card, type the command log stream | grep RTSX, and then insert your 128GB card. Wait for about 30 seconds until the terminal does not print new lines. Click the Shell menu and save the terminal output as a file (Export Text As...).

joshuaseltzer commented 2 years ago

@0xFireWolf Sure! I'm still willing to help test. You are correct, I'm using macOS Mojave 10.14.6.

Here's the log output from terminal using that very same SD card with your latest build linked above. This time it mounted correctly! I also confirmed that I'm no longer using the -iosd3v3 boot argument so I'm guessing it's using the correct speed as well.

Here's the log output: RTSX_128gb_2021-12-27.txt

Let me know if you want me to test anything else! Thanks again!

0xFireWolf commented 2 years ago

@joshuaseltzer Thanks for the quick feedback.

// Line 8107
RTSX: bool IOSDCard::initUltraHighSpeedMode() DInfo: Tuning has finished.
RTSX: bool IOSDCard::initUltraHighSpeedMode() DInfo: The card has been initialized with the ultra high speed mode enabled.
RTSX: bool IOSDHostDriver::attachCardAtFrequency(UInt32) DInfo: The card has been initialized successfully.

Yes, your log shows that the card has been initialized at the ultra high speed mode successfully. I guess that's all for the test. I will close this issue and thank you again for joining the beta testing.

joshuaseltzer commented 2 years ago

@joshuaseltzer Thanks for the quick feedback.

// Line 8107
RTSX: bool IOSDCard::initUltraHighSpeedMode() DInfo: Tuning has finished.
RTSX: bool IOSDCard::initUltraHighSpeedMode() DInfo: The card has been initialized with the ultra high speed mode enabled.
RTSX: bool IOSDHostDriver::attachCardAtFrequency(UInt32) DInfo: The card has been initialized successfully.

Yes, your log shows that the card has been initialized at the ultra high speed mode successfully. I guess that's all for the test. I will close this issue and thank you again for joining the beta testing.

Awesome, thank you. I will keep an eye out for the official release for 0.9.7.