View Single Post
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: