Active Topics

 


Reply
Thread Tools
speednut's Avatar
Posts: 75 | Thanked: 82 times | Joined on Feb 2008 @ Silicon Valley
#1
Attention N810 owners, there is a potential file corruption issue with your internal 2GB of memory. This information is covered in multiple threads elsewhere on this forum by smarter folks than I, but this is probably the first forum you should be looking in as a new N810 owner. The quicker you check for the potential corruption bug, the less chance you'll loose any data like I did.

Reference: Nokia bug report on this issue.

My goal here is to condense instructions from other folks and make it simple enough for my technophobe grandmother to perform.

How to quickly check if this affects you:
  1. Open the X Terminal application in the Utilities menu.
  2. Type the following at the command prompt:
    cat /proc/partitions (then enter)
    The output should look something like this. Pay attention to the field I marked in red because this is the important part. The red number tells you how much space is really physically on the memory card)
    Code:
    major minor  #blocks  name
    
      31     0        128 mtdblock0
      31     1        384 mtdblock1
      31     2       2048 mtdblock2
      31     3       2048 mtdblock3
      31     4     257536 mtdblock4
     254     0    1966080 mmcblk0
     254     1    2007032 mmcblk0p1
  3. Now type the following at the command prompt:
    df (then enter)
    The output should look something like this.
    Code:
    Filesystem           1k-blocks      Used Available Use% Mounted on
    /dev/mtdblock4            2048      2048         0 100% /mnt/initfs
    none                       512        84       428  16% /mnt/initfs/tmp
    /dev/mtdblock4          257536    222104     35432  86% /
    none                       512        84       428  16% /tmp
    none                      1024        12      1012   1% /dev
    tmpfs                     1024         0      1024   0% /dev/shm
    /dev/mmcblk0p1         1999206   1517392    481814  76% /media/mmc2
    The number I highlighted in red this time shows how much space is allocated to the internal memory card.

The corruption problem happens when the allocated memory size is greater than the physical memory size. So look to see if the number from the "df" command output is greater than the number from the "cat /proc/partitions" command. So for the example above, 1999206 > 1966080 which means I have the defective internal memory card configuration and need to repair my tablet. If the number from "df" is less than the number from "cat /proc/partitions", skip the rest of this thread and get on with your life.


How to repair your internal memory card:
Don't panic, it's very easy. Please don't be intimidated by the length of this post as you really type in very little. Read through all of these instructions once and ask questions if I haven't been clear on any of the steps.

Must do this first:
  • Do you have the swap file turned on? If so, make sure it is off! If you're not sure, open the Control Panel application and select "Memory". On the second tab "Virtual", make sure "Extend virtual memory:" is UNchecked or blank. If it is checked, remove the check mark, click OK, then reboot your IT.
  • Have you backed up your internal memory card to your PC? If not, do it now before continuing. All data on your internal memory card will be deleted! Just connect the USB cable that came with your tablet into your PC. The tablet's internal memory will appear on your computer looking just like a USB thumb drive or other USB storage device.


The easy way to fix this issue is from krisse. Simply use the File manager application to format the internal memory card (in the File Manager, select the internal memory card, then open the menu and select "Tools -> Format memory card..."). Once the formatting is complete, run the test commands above to verify the memory allocation is fixed. That's it, you're done.

(thank you to the folks who verified this method as successful)


If you want to use the command line instead to repair the memory card allocation size, you can follow these instructions. If you've already fixed the problem with the File Manager format tool, you do not need to follow these instructions.

This is how I repaired my N810 with instructions from other forum members using the command line.
  1. Install application package "Becomeroot".
  2. Open the X Terminal application
  3. type at the command prompt "sudo gainroot". Type in "whoami" to confirm success. For example:
    Code:
    /home/user # whoami
    root
    /home/user #
  4. Type command "umount /media/mmc2"
  5. Type command "df" and confirm that "/media/mmc2" is not listed.
  6. Type command "sfdisk /dev/mmcblk0" (that's a bee-el-kay-zero at the end)
  7. When prompted, type "0,,b" (zero comma comma bee). Press enter for remaining prompts.
  8. Answer "y" to question "Do you want to write this to disk? [ynq]"

    For example:
    Code:
    /home/user # sfdisk /dev/mmcblk0
    Checking that no-one is using this disk right now ...
    OK
    
    Disk /dev/mmcblk0: 61440 cylinders, 4 heads, 16 sectors/track
    Old situation:
    Units = cylinders of 32768 bytes, blocks of 1024 bytes, counting from 0
    
       Device Boot Start     End   #cyls    #blocks   Id  System
    /dev/mmcblk0p1          0+  62719   62720-   2007032    b  W95 FAT32
    /dev/mmcblk0p2          0       -       0          0    0  Empty
    /dev/mmcblk0p3          0       -       0          0    0  Empty
    /dev/mmcblk0p4          0       -       0          0    0  Empty
    Input in the following format; absent fields get a default value.
    <start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>
    Usually you only need to specify <start> and <size> (and perhaps <type>).
    
    /dev/mmcblk0p1 :0,,b
    /dev/mmcblk0p1          0+  61439   61440-   1966079+   b  W95 FAT32
    /dev/mmcblk0p2 :
    /dev/mmcblk0p2          0       -       0          0    0  Empty
    /dev/mmcblk0p3 :
    /dev/mmcblk0p3          0       -       0          0    0  Empty
    /dev/mmcblk0p4 :
    /dev/mmcblk0p4          0       -       0          0    0  Empty
    New situation:
    Units = cylinders of 32768 bytes, blocks of 1024 bytes, counting from 0
    
       Device Boot Start     End   #cyls    #blocks   Id  System
    /dev/mmcblk0p1          0+  61439   61440-   1966079+   b  W95 FAT32
    /dev/mmcblk0p2          0       -       0          0    0  Empty
    /dev/mmcblk0p3          0       -       0          0    0  Empty
    /dev/mmcblk0p4          0       -       0          0    0  Empty
    Warning: no primary partition is marked bootable (active)
    This does not matter for LILO, but the DOS MBR will not boot this disk.
    Do you want to write this to disk? [ynq] y
    Successfully wrote the new partition table
    
    Re-reading the partition table ...
    BLKRRPART: Device or resource busy
    The command to re-read the partition table failed
    Reboot your system now, before using mkfs
    
    If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
    to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
    (See fdisk(8).)
    /home/user #
  9. Type command "reboot"
  10. After tablet is back to the desktop screen, open the X Terminal application again, switch to root user, and type command "mkdosfs /dev/mmcblk0p1" (ends with bee-el-kay-zero-pee-one)
    For example:
    Code:
    /home/user # sudo gainroot
    /home/user # mkdosfs /dev/mmcblk0p1
    mkdosfs 2.11 (12 Mar 2005)
    37
    #####################################/home/user
  11. Type command "reboot"
  12. Once your tablet is back to the desktop screen, open the X Terminal and verify that the number from "df" is now less than the number from "cat /proc/partitions".

    For example:
    Code:
    /home/user # df
    Filesystem           1k-blocks      Used Available Use% Mounted on
    /dev/mtdblock4            2048      2048         0 100% /mnt/initfs
    none                       512        76       436  15% /mnt/initfs/tmp
    /dev/mtdblock4          257536    222156     35380  86% /
    none                       512        76       436  15% /tmp
    none                      1024        12      1012   1% /dev
    tmpfs                     1024         0      1024   0% /dev/shm
    /dev/mmcblk0p1         1962228         4   1962224   0% /media/mmc2
    
    /home/user # cat /proc/partitions
    major minor  #blocks  name
    
      31     0        128 mtdblock0
      31     1        384 mtdblock1
      31     2       2048 mtdblock2
      31     3       2048 mtdblock3
      31     4     257536 mtdblock4
     254     0    1966080 mmcblk0
     254     1    1966079 mmcblk0p1
    /home/user #

Now you can restore your data back onto the internal memory card, then get back to your regularly scheduled life.

Please give me any feedback if I've missed anything or could be more clear on some steps.

Last edited by speednut; 2008-03-19 at 05:15. Reason: updated based on feedback from comments
 

The Following 43 Users Say Thank You to speednut For This Useful Post:
Posts: 178 | Thanked: 40 times | Joined on Aug 2007 @ UK
#2
Using File Manger, df/partitions: 1962236/1966072

So looks ok, thanks!
 
Posts: 2,152 | Thanked: 1,490 times | Joined on Jan 2006 @ Czech Republic
#3
It can be seen also in first output of /proc partition, no need to run df. See below
Code:
/home/user # cat /proc/partitions
major minor  #blocks  name

  31     0        128 mtdblock0
  31     1        384 mtdblock1
  31     2       2048 mtdblock2
  31     3       2048 mtdblock3
  31     4     257536 mtdblock4
 254     0    1966080 mmcblk0
 254     1    2007032 mmcblk0p1
/home/user #
mmcblk0p1 should be smaller than whole mmcblk0. True that df output proves it too.
__________________
Newbies click here before posting. Thanks.

If you really need to PM me with troubleshooting question please consider posting it to the forum instead. It is OK to PM me a link to such post then. Thank you.
 

The Following 2 Users Say Thank You to fanoush For This Useful Post:
Posts: 6 | Thanked: 1 time | Joined on Feb 2008
#4
Thanks for the info. My N810 DID have the problem.
1966080 / 1999206
I formatted the card using the GUI and can now the numbers are:
1966080 / 1962236
so it looks like the GUI way is OK.

Last edited by Thustle; 2008-03-18 at 09:42. Reason: grammar mistake
 
krisse's Avatar
Posts: 1,540 | Thanked: 1,045 times | Joined on Feb 2007
#5
Speednut, I do appreciate you're trying to help people and it's great that you're bringing their attention to a potentially serious bug.

However, I think you're going to panic casual users with the use of the enormous red lettering followed by huge amounts of very complex technical details that non-technical people won't understand.

This is meant to be a Newbie forum, for people who are new to the tablets. Looking at the instructions you've given, do you REALLY think those are simple enough for your "technophobe grandmother" to perform? Would technophobes really know how to install application package becomeroot?

X Terminal is not the kind of thing that most users would ever touch. Command line interfaces went out of the mainstream with MS-DOS. I doubt most tablet users even know the X Terminal app exists, or where to find it.

You do mention my easier GUI-based method, but it's buried away deeply in the technical text, I don't know how many people would actually notice that.


I personally don't trust a "File Manager" that only shows me a fraction of the file system, but krisse knows the N810 much better than I do.
I don't know the N810 better than you, I'm just asking why the file manager's format function wouldn't be enough.

If all it has to do is format the internal card, why wouldn't it work? Why do we have to use a command line at all? According to Thustle the GUI method does work, so why make it harder?

Why not just say: "There may be a problem with the internal card, format it in the file manager if you want to avoid this problem."

At the moment it looks like you need a course in programming just to format a memory card.

The reason the file manager only shows a fraction of the files is because the full system is very confusing and complicated. No modern user-friendly interface would ever show you the full file system of a computer by default.

Last edited by krisse; 2008-03-18 at 10:03.
 

The Following 2 Users Say Thank You to krisse For This Useful Post:
fpp's Avatar
Posts: 2,853 | Thanked: 968 times | Joined on Nov 2005
#6
I had the wrong formatting too. Corrected with file manager, no problem. Thanks for creating the thread though - I had read about it before but had been too lazy to check, and would have run into problems someday. Now it's done, at least :-)
 
Posts: 393 | Thanked: 112 times | Joined on Jul 2007
#7
Thanks for the heads up

Oddly enough I did format (using the GUI) after corruption, but the problem still seemed to be there. I may well have restored the tablet using Nokia's flasher (or something!)
 
Posts: 3,841 | Thanked: 1,079 times | Joined on Nov 2006
#8
In this I have to disagree with Krisse. The explanation provided in the first post is, even if long, detailed on the right level. There are no intuitive leaps to perform, just follow the very clear instructions. The command line isn't a monster and I think most people will find it easy enough to follow when the instructions are as clear as in the OP's post. The red letters are good, in that they make it easy to spot what to look for.

The only problem I have with the first post is the cyan colour used here and there, that isn't visible if you use ITT with the 'classic' theme.
__________________
N800/OS2007|N900/Maemo5
-- Metalayer-crawler delenda est.
-- Current state: Fed up with everything MeeGo.
 

The Following User Says Thank You to TA-t3 For This Useful Post:
Posts: 5,795 | Thanked: 3,151 times | Joined on Feb 2007 @ Agoura Hills Calif
#9
I don't get it. Why isn't this a problem with an N800 running OS2008?

I'm not having any memory corruption problems with my N800. Is this another reason not to buy an N810?
 
Posts: 1,418 | Thanked: 1,541 times | Joined on Feb 2008
#10
I have got this:

Nokia-N810-51-3:~# cat /proc/partitions
major minor #blocks name

31 0 128 mtdblock0
31 1 384 mtdblock1
31 2 2048 mtdblock2
31 3 2048 mtdblock3
31 4 257536 mtdblock4
254 0 7977472 mmcblk0
254 1 7973376 mmcblk0p1
254 8 1966080 mmcblk1
254 9 1966072 mmcblk1p1

Nokia-N810-51-3:~# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/mtdblock4 2048 2048 0 100% /mnt/initfs
none 512 144 368 28% /mnt/initfs/tmp
/dev/mtdblock4 257536 218544 38992 85% /
none 512 144 368 28% /tmp
none 1024 20 1004 2% /dev
tmpfs 1024 0 1024 0% /dev/shm
/dev/mmcblk0p1 1962236 1621860 340376 83% /media/mmc2
/dev/mmcblk1p1 7969280 3172704 4796576 40% /media/mmc1


In other words, the sizes for my internal and external cards are swapped. So, doctor, what does it mean? Am I gonna die?
 
Reply


 
Forum Jump


All times are GMT. The time now is 14:43.