Menu

Main Menu
Talk Get Daily Search

Member's Online

    User Name
    Password

    How to force N900 detect SD manually?

    Reply
    Page 1 of 2 | 1   2   | Next
    mayhem | # 1 | 2015-01-15, 05:54 | Report

    I think it's some sort of sensor failure that it doesn't detect my SD (used to work and test it on my laptop so it's not SD fault) also when i wrote in terminal dmesg | grep mmc0 shows: cover is open ,card is now inaccessible but at the same time the camera cover works and also checked the magnet.it's not a big problem but just want it use as swap and i am not gonna fix it,it's 4 years old n900.so is there anyway to force detect or disable sensor so i can mount and umount manually from terminal or gconf? thanks.

    Edit | Forward | Quote | Quick Reply | Thanks
    The Following 3 Users Say Thank You to mayhem For This Useful Post:
    reinob, rotoflex, Wikiwide

     
    Maxdamantus | # 2 | 2015-01-20, 03:16 | Report

    Since noone else has answered, ..

    Access to the SD card is blocked in that situation by the omap_hsmmc kernel module, which seems weird being non-configurable. Luckily it's a software limitation and not a hardware one, so it can be fixed by replacing that module ..

    I've got it to work in a newer kernel by modifying a single line in mmc/host/omap_hsmmc.c:
    Code:
            int ret;
     
            if (gpio_is_valid(pdata->slots[0].switch_pin)) {
    -               if (pdata->slots[0].cover)
    +               if (0 && pdata->slots[0].cover)
                            pdata->slots[0].get_cover_state =
                                            omap_hsmmc_get_cover_state;
                    else
    If you or someone else can just rebuild the module for your kernel with that modification it'll probably work. I might try it later, since removing access to the SD card while the cover is off is annoying for me anyway.

    Edit | Forward | Quote | Quick Reply | Thanks
    The Following 11 Users Say Thank You to Maxdamantus For This Useful Post:
    DA5, Estel, insanelysexy, mayhem, peterleinchen, reinob, rotoflex, Sohil876, sulu, wicket, Wikiwide

     
    reinob | # 3 | 2015-01-20, 09:15 | Report

    @Maxdamantus: thanks a lot for that information.

    @Pali: any chance of adding a kernel parameter kernel-power for this? This way one could, at his own risk, set-up an u-boot entry with this parameter to use as/when needed.

    Oh, I just noted that omap_hsmmc is an actual module (not built-in the kernel), so this parameter could be set in /etc/init.d/ke-recv (and optionally in softupd.rcS).

    So the module parameter could be set from the kernel command line or directly on the script loading the module (like "/etc/default/unmount_sd_when_cover_off" having "true" or "false").

    Edit | Forward | Quote | Quick Reply | Thanks
    The Following 8 Users Say Thank You to reinob For This Useful Post:
    DA5, Estel, Maxdamantus, mayhem, peterleinchen, rotoflex, sulu, wicket

     
    Maxdamantus | # 4 | 2015-01-20, 11:54 | Report

    Originally Posted by reinob View Post
    Oh, I just noted that omap_hsmmc is an actual module (not built-in the kernel), so this parameter could be set in /etc/init.d/ke-recv (and optionally in softupd.rcS).
    I'm not sure how it being a module changes it. Personally, I see it as a misfeature, but it should otherwise be configurable through sysfs, which works whether the code providing it is a module or built-in.

    Edit: it should probably also be noted that the card isn't actually unmounted when the cover is removed. It won't even be able to continue flushing the writeback cache. It looks like a "safely remove" feature, but it's not.

    Anyway, the 2.6.28.10 version of omap_hsmmc is a bit different, but a similarly hacky modification seems to have worked:
    Code:
     /* Protect the card while the cover is open */
     static void omap_hsmmc_protect_card(struct omap_hsmmc_host *host)
     {
    -       if (!mmc_slot(host).get_cover_state)
    +       if (1 || !mmc_slot(host).get_cover_state)
                    return;
    
            host->reqs_blocked = 0;
    I'm not sure about binary module sharing etiquette, but here's the one I'm using with 2.6.28.10-cssu1: https://gist.github.com/Maxdamantus/.../omap_hsmmc.ko

    Edit: caveat: with this module as-is, if the SD card is removed, you'll have to reboot before using the slot again. It looks like it does state resetting and stuff when the cover is closed, so someone would need to spend some time doing more than a one-line modification to make it work neatly.

    Edit | Forward | Quote | Quick Reply | Thanks

    Last edited by Maxdamantus; 2015-01-20 at 13:03.
    The Following 9 Users Say Thank You to Maxdamantus For This Useful Post:
    abdel_95, DA5, Estel, insanelysexy, joerg_rw, mayhem, reinob, rotoflex, wicket

     
    reinob | # 5 | 2015-01-21, 08:35 | Report

    Originally Posted by Maxdamantus View Post
    I'm not sure how it being a module changes it. Personally, I see it as a misfeature, but it should otherwise be configurable through sysfs, which works whether the code providing it is a module or built-in.
    If the module had been built-in in the kernel then you'd need to use U-boot to pass the kernel parameter (via the command line).

    Being a module loaded from an init script makes it much easier to tweak, as long as the module supports tweaking, which would be my request to Pali (or to you, seeing that you've pulled this off actually .

    Originally Posted by
    I'm not sure about binary module sharing etiquette, but here's the one I'm using with 2.6.28.10-cssu1: https://gist.github.com/Maxdamantus/.../omap_hsmmc.ko

    Edit: caveat: with this module as-is, if the SD card is removed, you'll have to reboot before using the slot again. It looks like it does state resetting and stuff when the cover is closed, so someone would need to spend some time doing more than a one-line modification to make it work neatly.
    Kudos to you! Where have you been all this time? (I mean pre-2015).

    Edit | Forward | Quote | Quick Reply | Thanks
    The Following 6 Users Say Thank You to reinob For This Useful Post:
    Estel, Maxdamantus, mayhem, peterleinchen, rotoflex, wicket

     
    abdel_95 | # 6 | 2015-01-22, 16:29 | Report

    Originally Posted by Maxdamantus View Post
    I'm not sure how it being a module changes it. Personally, I see it as a misfeature, but it should otherwise be configurable through sysfs, which works whether the code providing it is a module or built-in.

    Edit: it should probably also be noted that the card isn't actually unmounted when the cover is removed. It won't even be able to continue flushing the writeback cache. It looks like a "safely remove" feature, but it's not.

    Anyway, the 2.6.28.10 version of omap_hsmmc is a bit different, but a similarly hacky modification seems to have worked:
    Code:
     /* Protect the card while the cover is open */
     static void omap_hsmmc_protect_card(struct omap_hsmmc_host *host)
     {
    -       if (!mmc_slot(host).get_cover_state)
    +       if (1 || !mmc_slot(host).get_cover_state)
                    return;
    
            host->reqs_blocked = 0;
    I'm not sure about binary module sharing etiquette, but here's the one I'm using with 2.6.28.10-cssu1: https://gist.github.com/Maxdamantus/.../omap_hsmmc.ko

    Edit: caveat: with this module as-is, if the SD card is removed, you'll have to reboot before using the slot again. It looks like it does state resetting and stuff when the cover is closed, so someone would need to spend some time doing more than a one-line modification to make it work neatly.
    please help me i don't know how to make these mod it is through the terminal? i really need the sd card to work plz

    Edit | Forward | Quote | Quick Reply | Thanks
    The Following User Says Thank You to abdel_95 For This Useful Post:
    mayhem

     
    biketool | # 7 | 2015-01-22, 18:06 | Report

    This would be a brilliant toggle for those of us who want to use SD swap but have had problems with dropping the phone and causing file system damage when swap is unmounted.
    I would love flopswap to have this option available if/when KP with this add-on is detected.

    Edit | Forward | Quote | Quick Reply | Thanks
    The Following 3 Users Say Thank You to biketool For This Useful Post:
    Estel, Maxdamantus, mayhem

     
    abdel_95 | # 8 | 2015-01-22, 20:16 | Report

    Hello dear gurus plz i have no programming knowledge but i am eager to have the sd card work on my phone. Plz can u give us who are dummy and are willing to have this a step-by-step tutorial on how to modify the config?.
    Thanks in advance for your help

    Edit | Forward | Quote | Quick Reply | Thanks

     
    Maxdamantus | # 9 | 2015-01-22, 21:43 | Report

    Originally Posted by abdel_95 View Post
    Hello dear gurus plz i have no programming knowledge but i am eager to have the sd card work on my phone. Plz can u give us who are dummy and are willing to have this a step-by-step tutorial on how to modify the config?.
    Thanks in advance for your help
    You need to be using the 2.6.28.10-cssu1 kernel for the binary in my previous post:
    Code:
    $ uname -r
    2.6.28.10-cssu1
    If you're not using it already, I think installing the `kernel-cssu-flasher` package should do it .. though I don't think you're meant to do this if you're already using u-boot. Someone else might be able to help here, since my own boot setup is fairly unconventional.

    I'd then suggest moving the original module, located at `/lib/modules/2.6.28.10-cssu1/omap_hsmmc.ko` somewhere before replacing it with the one in my earlier post.

    I wouldn't really suggest this if you don't understand what's happening, unless the sensor actually doesn't work (so you see the "cover is open" message in dmesg, mentioned by the first poster).

    Edit | Forward | Quote | Quick Reply | Thanks
    The Following User Says Thank You to Maxdamantus For This Useful Post:
    Estel

     
    abdel_95 | # 10 | 2015-01-22, 22:13 | Report

    Originally Posted by Maxdamantus View Post
    You need to be using the 2.6.28.10-cssu1 kernel for the binary in my previous post:
    Code:
    $ uname -r
    2.6.28.10-cssu1
    If you're not using it already, I think installing the `kernel-cssu-flasher` package should do it .. though I don't think you're meant to do this if you're already using u-boot. Someone else might be able to help here, since my own boot setup is fairly unconventional.

    I'd then suggest moving the original module, located at `/lib/modules/2.6.28.10-cssu1/omap_hsmmc.ko` somewhere before replacing it with the one in my earlier post.

    I wouldn't really suggest this if you don't understand what's happening, unless the sensor actually doesn't work (so you see the "cover is open" message in dmesg, mentioned by the first poster).
    this is what i have
    uname -r
    2.6.28.10-power53

    Edit | Forward | Quote | Quick Reply | Thanks

     
    Page 1 of 2 | 1   2   | Next
vBulletin® Version 3.8.8
Normal Logout