# USB CF Reader problem



## gossamer (Oct 27, 2011)

I'm kind of new with FreeBSD but did my google search and could not find adequate answer ... What I'm experiencing is that I can't mount my CF card. When I try to mount it I get an input/output error:


```
# mount_msdosfs /dev/da1 tmp
mount_msdosfs: /dev/da1: Input/output error
```

Output of *dmesg*:

```
# dmesg |grep da
FreeBSD is a registered trademark of The FreeBSD Foundation.
da0 at umass-sim0 bus 0 scbus0 target 0 lun 0
da0: <Generic USB SD Reader 1.00> Removable Direct Access SCSI-0 device
da0: 40.000MB/s transfers
da0: Attempt to query device size failed: NOT READY, Medium not present
da1 at umass-sim0 bus 0 scbus0 target 0 lun 1
da1: <Generic USB CF Reader 1.01> Removable Direct Access SCSI-0 device
da1: 40.000MB/s transfers
da1: Attempt to query device size failed: NOT READY, Medium not present
da2 at umass-sim0 bus 0 scbus0 target 0 lun 2
da2: <Generic USB SM Reader 1.02> Removable Direct Access SCSI-0 device
da2: 40.000MB/s transfers
da2: Attempt to query device size failed: NOT READY, Medium not present
da3 at umass-sim0 bus 0 scbus0 target 0 lun 3
da3: <Generic USB MS Reader 1.03> Removable Direct Access SCSI-0 device
da3: 40.000MB/s transfers
da3: Attempt to query device size failed: NOT READY, Medium not present
(da1:umass-sim0:0:0:1): AutoSense failed
(da1:umass-sim0:0:0:1): AutoSense failed
(da1:umass-sim0:0:0:1): AutoSense failed
(da1:umass-sim0:0:0:1): AutoSense failed
(da1:umass-sim0:0:0:1): AutoSense failed
(da1:umass-sim0:0:0:1): AutoSense failed
```

output of *usbconfig*:

```
# usbconfig show_ifdrv
ugen0.1: <UHCI root HUB Intel> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen0.1.0: uhub0: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1>
ugen1.1: <UHCI root HUB Intel> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen1.1.0: uhub1: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1>
ugen2.1: <UHCI root HUB Intel> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen2.1.0: uhub2: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1>
ugen3.1: <EHCI root HUB Intel> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE
ugen3.1.0: uhub3: <Intel EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1>
ugen4.1: <UHCI root HUB Intel> at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen4.1.0: uhub4: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1>
ugen5.1: <UHCI root HUB Intel> at usbus5, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen5.1.0: uhub5: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1>
ugen6.1: <UHCI root HUB Intel> at usbus6, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen6.1.0: uhub6: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1>
ugen7.1: <EHCI root HUB Intel> at usbus7, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE
ugen7.1.0: uhub7: <Intel EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1>
ugen7.2: <Mass Storage Device Generic> at usbus7, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON
ugen7.2.0: umass0: <Generic Mass Storage Device, class 0/0, rev 2.00/1.00, addr 2>
```

and *camcontrol*:


```
# camcontrol devlist -v
scbus0 on umass-sim0 bus 0:
<Generic USB SD Reader 1.00>       at scbus0 target 0 lun 0 (pass0,da0)
<Generic USB CF Reader 1.01>       at scbus0 target 0 lun 1 (pass1,da1)
<Generic USB SM Reader 1.02>       at scbus0 target 0 lun 2 (pass2,da2)
<Generic USB MS Reader 1.03>       at scbus0 target 0 lun 3 (pass3,da3)
scbus-1 on xpt0 bus 0:
<>                                 at scbus-1 target -1 lun -1 (xpt0)
```

Anyone have an idea what is wrong? Have I  missed loading some initialization module?


----------



## fluca1978 (Oct 28, 2011)

Could it be a trivial problem with the slot of the card reader? What if you try to mount the other three slots?
Could it be a problem with the card itself? What if you do a recoverdisk against the da1 device?


----------



## T-Daemon (Oct 28, 2011)

gossamer said:
			
		

> ```
> # mount_msdosfs /dev/[color="Red"]da1[/color] [color="DarkOrange"]tmp[/color]
> mount_msdosfs: /dev/da1: Input/output error
> ```



You are trying to mount a disk (da1). You can not mount a disk, only a file system inside a partition (slice) on that disk. A disk contains one ore more partitions (slices), with possible different file systems Handbook

Take a look at `$ ls /dev | grep da1`. This shows your CF Flash's disk and partition device nodes.  After seeing the device nodes you surely will know by yourself which one to use when executing mount.

PS:
tmp: is this a typo or have you forgotten the slash mark */*tmp?


----------



## wblock@ (Oct 28, 2011)

T-Daemon said:
			
		

> You are trying to mount a disk (da1). You can not mount a disk, only a file system inside a partition (slice) on that disk. A disk contains one ore more partitions (slices), with possible different file systems Handbook



Not exactly.  Most flash devices will have an MBR, so filesystems show up in the partitions/slices with the da0s1 notation.  But an MBR is not required.  The filesystem can be written directly to the whole device, like a large floppy.  Then it will just be da0.


----------



## wblock@ (Oct 28, 2011)

gossamer said:
			
		

> I'm kind of new with FreeBSD but did my google search and could not find adequate answer ... What I'm experiencing is that I can't mount my CF card. When I try to mount it I get an input/output error:
> 
> 
> ```
> ...



The "medium not present" and "AutoSense failed" messages are not encouraging.  If this is an external reader, try disconnecting the reader from the USB cable, plugging in the card, then reattaching the reader to the USB cable.  (Media change may not be recognized.  There's probably a way to do this with camcontrol.)

After connecting it, use file(1) (as root) to look at the /dev/da* entries.
`# file -s /dev/da1`


----------



## phoenix (Oct 28, 2011)

Is this an internal CF reader?  Or an external one connected via USB?

With my external CF reader, I've found that I have to plug the card into the reader first, then connect the reader to the PC.  That way, both the reader and the disk are detected correctly.

Also, depending on the disk, I only get /dev/da2 show up, none of the partitions/filesystems.  I have to try to mount /dev/da2, which fails, but which "tastes" the disk, so the partitions are detected.  After that, I can mount /dev/da2s1 without issues.


----------



## gossamer (Nov 3, 2011)

phoenix said:
			
		

> Is this an internal CF reader?
> Also, depending on the disk, I only get /dev/da2 show up, none of the partitions/filesystems.  I have to try to mount /dev/da2, which fails, but which "tastes" the disk, so the partitions are detected.  After that, I can mount /dev/da2s1 without issues.



Hi, it is internal multicard reader, and im inserting the CF card after the system is booted and running.

Also, there is no additional partitions on card. Card works on my dSLR camera and worked on this reader while windows was installed on same machine. So card and reader are functional. It is formatted via dSLR camera so i would guess it is FAT32.


----------



## gossamer (Nov 3, 2011)

T-Daemon said:
			
		

> Take a look at `$ ls /dev | grep da1`. This shows your CF Flash's disk and partition device nodes.  After seeing the device nodes you surely will know by yourself which one to use when executing mount.



I'll try `$ ls /dev | grep da1` later when i will be on machine and see what i get. But i havent saw da1s1 in /dev folder ...



			
				T-Daemon said:
			
		

> PS:
> tmp: is this a typo or have you forgotten the slash mark */*tmp?



tmp is the folder inside /mnt folder in which i was before issuing command.


----------



## gossamer (Nov 7, 2011)

For some reason, now it is working. But it seems that it takes a while to initialize partition table. I can mount it as da1s1.

Thanks everyone for support.


----------



## silicium (Sep 13, 2013)

phoenix said:
			
		

> I have to try to mount /dev/da2, which fails, but which "tastes" the disk, so the partitions are detected.  After that, I can mount /dev/da2s1 without issues.


So far, so good on 9.1-RELEASE, I can now mount camera-formated CF cards with an internal USB reader. Is there a nicer way to ask GEOM or CAM to bring the slice up instead of trying to `mount` an MBR disk with one FAT partition?


----------



## wblock@ (Sep 13, 2013)

`# true > /dev/da2` will force GEOM to retaste the device.


----------

