Search code examples
usbhostscsi

What is the Logical Block Address of a sector in a USB Flashdrive?


I am implementing USB as a host to read the files stored in the Flashdrive. To read I implement the read(10) command in SCSI. This command has a field called Logical Block Address, as in the address I want to read. Now, I know the sector number I want to read.

So, is the Logical Block Address and Sector Number the same?

I looked into Cylinder-Head-Sector(CHS) but I dont have information about cylinder or heads


Solution

  • In common usage in SCSI, a sector is the same as a Logical Block Address. It is very likely that your device has 512-byte sectors (512-byte logical blocks). There are some high-performance SSD's and large-capacity spinning media drives that have 4096-byte sectors. These drives are labelled as having "Advanced Formatting".

    CHS addressing isn't supported by SCSI. So, if you somehow have just a sector number, it's probably the SCSI "sector" or logical block address.

    All of those integer fields in the typical SCSI commands are in big-endian format. If you're on a typical x86 PC of some kind, your integers will be little-endian format. Before you put your sector number in the field in your READ(10) command, you'll need to convert it with htobe32() or htonl(). Likewise for the num field: (htobe16() or htons()).