I have got an Acer Aspire 5920g carrying a Ricoh memory card reader which should be able to read SD/MMC/MS/MS PRO/xD. The device is correctly detected by the Kernel (2.6.24) at boot time but unfortunately it doesn’t work at all (i.e. it neither detects memory cards when they are inserted nor creates the needed device in /dev).
Here is how I got it working, at least for SD/MMC cards. Please notice that the following solution requires the use of an experimental driver, so please, do it at your own risk and after having previously done a backup of all your precious data (as it always ought to be!).
Here is what I normally get from various commands:
$ dmesg | egrep -i 'ricoh|sdhci|mmc'
[ 21.681743] sda:sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray
[ 32.367403] ricoh-mmc: Ricoh MMC Controller disabling driver
[ 32.367405] ricoh-mmc: Copyright(c) Philip Langdale
[ 32.442260] ricoh-mmc: Ricoh MMC controller found at 0000:0a:09.2 [1180:0843] (rev 12)
[ 32.442278] ricoh-mmc: Controller is now disabled.
[ 32.757322] sdhci: Secure Digital Host Controller Interface driver
[ 32.757325] sdhci: Copyright(c) Pierre Ossman
[ 34.482990] sdhci: SDHCI controller found at 0000:0a:09.1 [1180:0822] (rev 22)
[ 34.493298] sdhci:slot0: Will use DMA mode even though HW doesn't fully claim to support it.
[ 34.493379] mmc0: SDHCI at 0xf3200800 irq 17 DMA
$ lsmod | egrep -i 'ricoh|sdhci|mmc'
mmc_block 17024 0
sdhci 21508 0
mmc_core 59272 2 mmc_block,sdhci
ricoh_mmc 5120 0
$ sudo lspci | grep -i ricoh
0a:09.0 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller (rev 05)
0a:09.1 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 22)
0a:09.2 System peripheral: Ricoh Co Ltd R5C843 MMC Host Controller (rev 12)
0a:09.3 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 12)
0a:09.4 System peripheral: Ricoh Co Ltd xD-Picture Card Controller (rev ff)
As I said, nothing happens when I plug in or off a memory card. Moreover, /dev doesn’t contains any usable device:
$ ls /dev/mm* /dev/sd[b-z]
ls: cannot access /dev/mm*: No such file or directory
ls: cannot access /dev/sd[b-z]: No such file or directory
(/dev/sda is the primary hard disk).
The problem is resolved, at least for SD/MMC cards, by downloading and compiling an experimental kernel module developed by Sascha Sommer. You can find it at sourceforge.
Here is the very very simple procedure to compile and use it (that’s just the same you can find in the README contained in the driver package):
$ sudo apt-get install build-essential
You should now have a couple of lines in /var/log/messages like these:
$ tail /var/log/messages
kernel: [ 4228.873174] sdricoh_cs: Ricoh PCMCIA Secure Digital Interface driver
kernel: [ 4228.873183] sdricoh_cs: Copyright(c) 2006 - 2008 Sascha Sommer
Again, in /var/log/messages you should find other new lines:
kernel: [ 4448.781755] mmc0: new high speed SD card at address 1234
kernel: [ 4448.796258] mmcblk0: mmc0:1234 SD02G 1992704KiB (ro)
kernel: [ 4448.796319] mmcblk0: p1
At this point, if you think it works enough, you can make the it to be automatically loaded at boot time by adding “sdricoh_cs” to /etc/modules.
Remember to notice that the driver is still experimental and could potentially destroy all the data contained in your memory card, so please, don’t use it with important data or at least do a backup somewhere else first!
All my thanks go to the Sascha Sommer and the Linux Kernel team.
Tried successfully on:
References:
thread with a link to compiled & packaged sdricoh_cs driver on ubuntuforums.org