Solved Dell Latitude E6420 SD card reader issue

Solved issue

Kyle M

New Member
Joined
Jan 3, 2025
Messages
3
Reaction score
3
Credits
37
I'm running Linux Mint 22 Cinnamon on an older Dell Latitude laptop, model E6420. I've been using this laptop with Mint as my work laptop for about 3 months with no issues. I decided to bring it home over the holidays because I had some stuff I wanted to 3D print and having a laptop in the room with the printer was easier than running back and forth to my desktop. Turns out the SD card reader won't read any of my SD cards but was working fine a few months ago when I had Windows 11 on this laptop. I did some googling and came up with this thread on askubuntu.com https://askubuntu.com/questions/1003051/16-04-not-recognizing-sd-card-need-specific-help. When I run the rmmod and modprobe commands listed here

Code:
rmmod sdhci_pci
rmmod sdhci
modprobe sdhci debug_quirks2="0x2"
modprobe sdhci_pci

My SD card/s mount and work flawlessly until I reboot. I tried creating the .conf file metioned in that thread but no luck. I have to run the rmmod and modprobe commands on every boot. I'd really like to avoid using an external reader if possible. But entering those commands on every boot is a bit of a pain. I've already asked on the Mint forum and while I got a lot of advice nothing seemed to work. I'm hoping someone here may have a solution. I've read that this is a common problem with some Dell and Lenovo models but it seems that creating that config file usually fixes the issue. Thanks in advance for any help.
 


Are the modules for sdhci_pci supported in your kernel and being used?

Check the output of lspci -v.

Make sure the configuration file that you created is made with root privileges and the argument is exactly:
Code:
options sdhci debug_quirks2=0x2

Did the config file make it into your /home directory as a hidden file?
 
Are the modules for sdhci_pci supported in your kernel and being used?

Check the output of lspci -v.

Make sure the configuration file that you created is made with root privileges and the argument is exactly:
Code:
options sdhci debug_quirks2=0x2

Did the config file make it into your /home directory as a hidden file?

Here's the output of lspci -v

Code:
0b:00.0 SD Host controller: O2 Micro, Inc. OZ600FJ0/OZ900FJ0/OZ600FJS SD/MMC Card Reader Controller (rev 05) (prog-if 01)
    Subsystem: Dell OZ600FJ0/OZ900FJ0/OZ600FJS SD/MMC Card Reader Controller
    Flags: bus master, fast devsel, latency 0, IRQ 27
    Memory at e6c20000 (32-bit, non-prefetchable) [size=512]
    Capabilities: [a0] Power Management version 3
    Capabilities: [48] MSI: Enable+ Count=1/1 Maskable+ 64bit+
    Capabilities: [80] Express Endpoint, MSI 00
    Capabilities: [100] Virtual Channel
    Capabilities: [200] Advanced Error Reporting
    Kernel driver in use: sdhci-pci
    Kernel modules: sdhci_pci

I checked the hidden files in my home folding and there's nothing relating to sdhci. It wouldn't let me create the file without root privileges so I think I'm good there.
 
@Kyle M :-

I have an E6430 with - presumably - the same SD card reader. Very rare that I use it, however.

Those commands in the linked askubuntu thread are for a Thinkpad, yes? Yet you say they DO work for you on the Lat?

Okay. Well, if I want to run any specific command/set of commands at boot, I usually create a script and stick it in /etc/init.d. So; to make it so that those commands will run automatically at every boot, we would do something like the following:-

Open a terminal, then type in (you can copy/paste this if you find that easier):-

Code:
printf 'rmmod sdhci_pci \n rmmod sdhci \n modprobe sdhci debug_quirks2="0x2" \n modprobe sdhci_pci' >> /etc/init.d/sdcard_enable

....followed, of course, by 'Enter'.

This creates a file in /etc/init.d, which I've called 'sdcard_enable', with those commands within. However, this still won't run automatically, because at this point it's simply a text file. So, to make the newly-created file executable, we then run

Code:
chmod +x /etc/init.d/sdcard_enable

And now those commands within the file should execute at boot-time.

(Whoops! My bad, I keep forgetting; since we run as root all the time in Puppy - single-user system, y'see - we don't need to use the sudo command. You'll need to preface each of the above commands with "sudo[SPACE]" when you enter them in the terminal, otherwise you'll get 'Permission denied'.)

So for you, those commands should read:-

Code:
sudo printf 'rmmod sdhci_pci \n rmmod sdhci \n modprobe sdhci debug_quirks2="0x2" \n modprobe sdhci_pci' >> /etc/init.d/sdcard_enable

.....and:-

Code:
sudo chmod +x /etc/init.d/sdcard_enable

That "\n" in the first command - the one that creates the file WITH contents - is simply the 'new line' delineator. It tells the main command to put the following chunk of text on a new line.....and that's why it appears 3 times; so that it creates a file with those commands on four separate lines, exactly as you would enter them manually into the terminal.

This assumes, of course, that /etc/init.d still exists in current Linux. Ever since the usrmerge thing happened a couple of years ago, I'm really not certain what the modern Linux filesystem looks like any more.... We're somewhat unique in this respect, y'see; we have certain Puppy-specific directories that exist nowhere else in the Linux world......like /root/Startup, which is where I would create the above script in Puppy. But /etc/init.d exists in all distros, and performs much the same function as /root/Startup does for us.....which is why I've used it above.

Anyways; I make no claims to being any kind of Linux guru, but I think that should do what you want. Let us know what happens, please.


Mike. ;)
 
Last edited:
@Kyle M :-

I have an E6430 with - presumably - the same SD card reader. Very rare that I use it, however.

Those commands in the linked askubuntu thread are for a Thinkpad, yes? Yet you say they DO work for you on the Lat?

Okay. If I want to run any specific command/set of commands at boot, I usually create a script and stick it in /etc/init.d. So; to make it so that those commands will run automatically at every boot, we would do something like the following:-

Open a terminal, then type in (you can copy/paste this if you find that easier):-

Code:
printf 'rmmod sdhci_pci \n rmmod sdhci \n modprobe sdhci debug_quirks2="0x2" \n modprobe sdhci_pci' >> /etc/init.d/sdcard_enable

....followed, of course, by 'Enter'.

This creates a file in /etc/init.d, which I've called 'sdcard_enable', with those commands within. However, this still won't run automatically, because at this point it's simply a text file. So, to make the newly-created file executable, we then run

Code:
chmod +x /etc/init.d/sdcard_enable

And now those commands within the file should execute at boot-time.

(Whoops! My bad, I keep forgetting; since we run as root all the time in Puppy - single-user system, y'see - we don't need to use the sudo command. You'll need to preface each of the above commands with "sudo[SPACE]" when you enter them in the terminal, otherwise you'll get 'Permission denied'.)

So for you, those commands should read:-

Code:
sudo printf 'rmmod sdhci_pci \n rmmod sdhci \n modprobe sdhci debug_quirks2="0x2" \n modprobe sdhci_pci' >> /etc/init.d/sdcard_enable

.....and:-

Code:
sudo chmod +x /etc/init.d/sdcard_enable

That "\n" in the first command - the one that creates the file WITH contents - is simply the 'new line' delineator. It tells the main command to put the following chunk of text on a new line.....and that's why it appears 3 times; so that it creates a file with those commands on four separate lines, exactly as you would enter them manually into the terminal.

I make no claims to being any kind of Linux guru, but I think that should do what you want. Let us know what happens, please.


Mike. ;)
Thanks for the advice on the script. I had thought of that. I just didn't know what I was doing. I've only been using Linux for about 6 months. And yes those command worked on my Dell but it seems that both my Dell and that posters Thinkpad had the same make/model or at least make of Card reader according to the output of lspci-v.

Anyhow because sometimes things work better when you take a break and restart I deleted the .conf file i created. Rebooted and tried again. So far I'm several test reboots in and the card reader is still working. It looks like the .conf file fixed it.
 
Last edited:
@Kyle M :-

Excellent. Glad to hear you're sorted.

Yes; there's a lot of stuff you don't need to re-boot Linux for (unlike Windows, which constantly does it ALL THE TIME). But it IS still necessary for anything affected by or at boot-time. And kernel upgrades, of course!

Thanks for letting us know the outcome. You'd be amazed just HOW many people don't......and it is appreciated, because it's feedback for us, and lets us know if our solutions/advice are doing any good!

Cheers.


Mike. ;)
 
Thanks for the advice on the script. I had thought of that. I just didn't know what I was doing. I've only been using Linux for about 6 months. And yes those command worked on my Dell but it seems that both my Dell and that posters Thinkpad had the same make/model or at least make of Card reader according to the output of lspci-v.

Anyhow because sometimes things work better when you take a break and restart I deleted the .conf file i created. Rebooted and tried again. So far I'm several test reboots in and the card reader is still working. It looks like the .conf file fixed it.
I wonder if deleting the .conf that you created generated another config by default?

Anyway, glad the card reader is working and the mod and driver is working.
Code:
Kernel driver in use: sdhci-pci
    Kernel modules: sdhci_pci

Thanks for the output.
In the future lsusb output can help to see things are seen.
 
@Kyle M :-

Excellent. Glad to hear you're sorted.

Yes; there's a lot of stuff you don't need to re-boot Linux for (unlike Windows, which constantly does it ALL THE TIME). But it IS still necessary for anything affected by or at boot-time. And kernel upgrades, of course!

Thanks for letting us know the outcome. You'd be amazed just HOW many people don't......and it is appreciated, because it's feedback for us, and lets us know if our solutions/advice are doing any good!

Cheers.


Mike. ;)
Thanks for jumping in.
Feedback is fuel to drive us to do things well. Or> in some cases, fuel to intrigue us to go learn and find a solution.
 
@Alexzee :-

Or> in some cases, fuel to intrigue us to go learn and find a solution.

You're not wrong there.

This intrigued me enough to go do some research into ways of creating a file with specific text already inside it......and all from the command-line (which is NOT the way I would normally do it). I was quite surprised (although I shouldn't have been, TBH) to find just how many different ways there WERE in which it could be accomplished.

I settled on printf as being the easiest & most straight-forward.....plus, it introduced me to the 'new-line' thingy. I'd seen this loads of times, but never quite knew what it was doing... Now, I do!

It'll come in quite useful in the future for my own projects.


Mike. ;)
 
With Linux there is always a way I've found.

Doesn't matter if it in-tails using the command-line (my preferred way) writing a script, creating a config file or launching a GUI with root privileges.

Thanks Mike.

Oddly, I've never used the printf cmd. I'll look up the man page later.
According to Google the 'printf' command supports a wide range of format specifiers and escape sequences that control the output format.

---------------------------------------------
@Kyle M ,
If all is well kindly mark your thread "Solved"
To do that go to the first post and click on the Edit button and type in the word Solved.

Enjoy your Linux!

Alex
 
@Alexzee :-

Nah, I'm far from being a terminal jockey. I usually avoid it unless it's actually necessary.....you still can't beat it for basic trouble-shooting. Normally, for anything from .conf files, to text files and scripts, I'll create the appropriate blank file in ROX. I'll then open it up with Geany - our Pup's default text-editor/IDE thingamajig - add the appropriate text, or write the code I want to run, followed by saving it.

One of ROX's standard context menu options is a command that will create a blank script, ready to use.....with the hashbang AND exec permissions already set. Another lets you create the standard blank file.....etc, etc.

I may have been a Linux user for more than 10 years, but I DO like my GUIs. I know many noobs are used to them, too.....which is why I invest so much extra time & effort into building GUIs for every wee app or utility I put together. I'm a fussy bugger; if it's good enough for me, it's rare that anyone will find fault with the appearance or way it works when it's launched.

But despite my liking for GUIs, I'm not above using scripts where I want to automate longer, more involved tasks. I wrote my own backup script for the "kennels".....all twelve of 'em, each in its own uniquely-named, dedicated sub-directory on the same partition. This also includes the contents of the FAT32 UEFI boot partition. I run it once a week, launching it from the main Menu via a wee GUI. At finish of the script, I have another wee GUI I knocked together that informs me of how long the process took, along with the finish time and date when it was run.

I have another, more complex 'custom' script, that's allowed me to largely automate setting-up any new Puppy I may want to add to the kennels. This lets me link-in any & all externally-situated, 'portable' apps, add-in themes for icons, cursor, etc, lets me set a whole bunch of custom stuff I basically share between Puppies, including special internal relative links, desktop backgrounds, all launcher icons set-up exactly how I want 'em - including tray launchers AND a few 'specials' in the notification area, plus linked 'Chroots' and dedicated chroot-app launcher scripts I occasionally use.....you name it, I've automated it. From the start of a 'quick & dirty' Puppy frugal install to the final, fully set-up & thoroughly customized finished article - ready-to-go - takes perhaps 10, 12 minutes maximum.

I know; some people will say,"Why? That takes all the fun out of setting-up a new distro..." It may well do, but I'd sooner spend my time actually using my Puppies than I would endlessly tiffling about with 'em. It WAS fun in the early days; nowadays, although I still like the "finished article" I grudge the amount of time it takes to do it all manually. My life priorities have changed, so...........things have changed to accommodate that.

Of course, as you spend longer with your distros, your skill-levels increase, too.....so stuff that seemed out of reach to start with becomes almost second nature.

(Here endeth the "off-topic" sermon..!) :oops: Sorry for hijacking your thread, @Kyle M!


Mike. :p
 
Last edited:
@Alexzee :-

Nah, I'm far from being a terminal jockey. I usually avoid it unless it's actually necessary.....you still can't beat it for basic trouble-shooting. Normally, for anything from .conf files, to text files and scripts, I'll create the appropriate blank file in ROX. I'll then open it up with Geany - our Pup's default text-editor/IDE thingamajig - add the appropriate text, or write the code I want to run, followed by saving it.

One of ROX's standard context menu options is a command that will create a blank script, ready to use.....with the hashbang AND exec permissions already set. Another lets you create the standard blank file.....etc, etc.

I may have been a Linux user for more than 10 years, but I DO like my GUIs. I know many noobs are used to them, too.....which is why I invest so much extra time & effort into building GUIs for every wee app or utility I put together. I'm a fussy bugger; if it's good enough for me, it's rare that anyone will find fault with the appearance or way it works when it's launched.

But despite my liking for GUIs, I'm not above using scripts where I want to automate longer, more involved tasks. I wrote my own backup script for the "kennels".....all twelve of 'em, each in its own uniquely-named, dedicated sub-directory on the same partition. This also includes the contents of the FAT32 UEFI boot partition. I run it once a week, launching it from the main Menu via a wee GUI. At finish of the script, I have another wee GUI I knocked together that informs me of how long the process took, along with the finish time and date when it was run.

I have another, more complex 'custom' script, that's allowed me to largely automate setting-up any new Puppy I may want to add to the kennels. This lets me link-in any & all externally-situated, 'portable' apps, add-in themes for icons, cursor, etc, lets me set a whole bunch of custom stuff I basically share between Puppies, including special internal relative links, desktop backgrounds, all launcher icons set-up exactly how I want 'em - including tray launchers AND a few 'specials' in the notification area, plus linked 'Chroots' and dedicated chroot-app launcher scripts I occasionally use.....you name it, I've automated it. From the start of a 'quick & dirty' Puppy frugal install to the final, fully set-up & thoroughly customized finished article - ready-to-go - takes perhaps 10, 12 minutes maximum.

I know; some people will say,"Why? That takes all the fun out of setting-up a new distro..." It may well do, but I'd sooner spend my time actually using my Puppies than I would endlessly tiffling about with 'em. It WAS fun in the early days; nowadays, although I still like the "finished article" I grudge the amount of time it takes to do it all manually. My life priorities have changed, so...........things have changed to accommodate that.

Of course, as you spend longer with your distros, your skill-levels increase, too.....so stuff that seemed out of reach to start with becomes almost second nature.

(Here endeth the "off-topic" sermon..!) :oops: Sorry for hijacking your thread, @Kyle M!


Mike. :p
When GUI's fail or I don't get it I almost always launch a commd-line konsole.
I usually use vim.
Your right on with skill levels increasing. A lot of things on my 4 Linux distro's are second nature now.

I haven't tried Puppy Linux in a long time and hadn't heard of ROX. On my to do list.
Have a nice weekend!
 

Members online


Top