I have found the cause for this defect, and a workaround.
The cause is that the FAT16 superblock on the camera does not set the
number of heads, and so the partition type is not detected correctly.
You get no output from the following command:
# blkid -p /dev/disk/by-id/usb-
VTech_Kidizoom_123456789ABCDEF-0:0-part1
The kernel is able to mount the partition when mounted manually in the
workaround above because it does not enforce the non-zero heads
requirement. In "fat/inode.c" there is the following comment:
/*
* Earlier we checked here that b->secs_track and b->head are nonzero,
* but it turns out valid FAT filesystems can have zero there.
*/
This means that I suspect the defect is in util-linux. In
superblocks/vfat.c it will discount a superblock with a zero value for
heads:
if (ms->ms_heads == 0)
return 0;
I was able to confirm this, and provide a workaround by setting the
number of heads in the superblock to be 63:
echo -n "?" | dd of=/dev/disk/by-id/usb-
VTech_Kidizoom_123456789ABCDEF-0:0-part1 seek=26 bs=1 count=1
conv=notrunc
Now the partition is detected successfully by blkid.
# blkid -p /dev/disk/by-id/usb-VTech_Kidizoom_123456789ABCDEF-0\:0-part1
/dev/disk/by-id/usb-VTech_Kidizoom_123456789ABCDEF-0:0-part1:
SEC_TYPE="msdos" LABEL="VTech 1070" UUID="2004-1014" VERSION="FAT16"
TYPE="vfat" USAGE="filesystem"
The next time the camera is plugged in it becomes available as "VTech
1070".
** Attachment added: "Superblock of Kidizoom internal disk"
https://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/500398/+attachment/1803713/+files/kidizoom.sb
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/500398
Title:
Vtech Kidizoom camera USB doesn't mount
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs