2

When I connected the camera with the SD card to my PC, I got the following error messages:

Error mounting /dev/sdg1 at /media/chef/3831-6263: Command-line mount -t "exfat" -o "uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000,iocharset=utf8,namecase=0,errors=remount-ro,umask=0077" "/dev/sdg1" "/media/chef/3831-6263"' exited with non-zero exit status 1: stdout: FUSE exfat 1.1.0 ' stderr: `ERROR: file system is larger than underlying device: 63847792640 > 63847792128.

But when I took the SD card out and put it into card reader, it's fine to read the contents.

I did sudo apt-get install exfat-fuse exfat-utils already.

I'm using Ubuntu 15.04. When I was using 14.04. it just working fine with the card in the camera.

2

An alternative is to compile and install the latest version of exFAT. This is how I did that.

sudo apt-get install libfuse-dev
git clone https://github.com/relan/exfat.git
cd exfat/
autoreconf --install
./configure --prefix=/usr
sudo make install
sudo mount.exfat-fuse /dev/sdc1 /media/pd/
0
2

This is a bug in exfat-fuse. It is fixed in newer versions of exfat (https://github.com/relan/exfat). I don't know when this version will end up in Ubuntu. It's not in 15.10 yet at least.

I patched libexfat/mount.c with the change in github, which changes the error to a warning. I.e. from (row 255, or so):

    if (le64_to_cpu(ef->sb->sector_count) * SECTOR_SIZE(*ef->sb) >
          exfat_get_size(ef->dev))
    {
        free(ef->zero_cluster);
        exfat_error("file system is larger than underlying device: "
                "%"PRIu64" > %"PRIu64,
                le64_to_cpu(ef->sb->sector_count) * SECTOR_SIZE(*ef->sb),
                exfat_get_size(ef->dev));
        exfat_close(ef->dev);
        free(ef->sb);
        return -EIO;
    }

to

    if (le64_to_cpu(ef->sb->sector_count) * SECTOR_SIZE(*ef->sb) >
            exfat_get_size(ef->dev))
    {
        /* this can cause I/O errors later but we don't fail mounting to let
           user rescue data */
        exfat_warn("file system is larger than underlying device: "
                "%"PRIu64" > %"PRIu64,
                le64_to_cpu(ef->sb->sector_count) * SECTOR_SIZE(*ef->sb),
                exfat_get_size(ef->dev));
    }
#endif

In order to get this do:

sudo apt-get source exfat-fuse
cd fuse-exfat-1.1.0/

edit libexfat/mount.c as described above

sudo apt-get build-dep exfat-fuse
dpkg-buildpackage -rfakeroot -uc -b
sudo dpkg -i ../exfat-fuse_1.1.0-2_amd64.deb

And you're done and can mount the SD-card as expected.

Good luck!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.