[SeaBIOS] Booting from USB thumbdrives, older drives boot, newer drives don't.
Dave Frodin
dave at camp.se-eng.com
Fri Mar 2 16:53:54 CET 2012
Paolo,
Thanks for the reply.
I ran the sg_modes for pages 4 and 5 on 4 USB thumbdrives.
sandisk_old is a 4GB Sandisk Cruzer (yes, the old is ver=8.02)
sandisk_new is a 4GB Sandisk Cruzer
transcend is a 2GB drive
verbatim is a 2GB drive
If I use the unmodified "master" SeaBIOS ...
sandisk_old boots
sandisk_new stalls at mode sense
transcend stalls at mode sense
verbatim boots
If I change the mode page from 4 to 5 ...
sandisk_old boots
sandisk_new boots
transcend stalls at mode sense
verbatim boots
The mode page change from 4 to 5 allowed four of my none booting
drives to boot. Hopefully these logs will be helpful.
Thanks again,
dave
starting sandisk_old tests
sudo sg_modes -HHp 4 /dev/sdb
SanDisk Cruzer 8.02 peripheral_type: disk [0x0]
Mode parameter header from MODE SENSE(10):
00 00 46 00 00 00 00 00 00
Mode data length=72, medium type=0x00, WP=0, DpoFua=0, longlba=0
Block descriptor length=0
>> page_code=0x0, page_control=0
00 00 00
Unexpectedly received extra mode page responses, ignore
sudo sg_modes -HHp 5 /dev/sdb
SanDisk Cruzer 8.02 peripheral_type: disk [0x0]
Mode parameter header from MODE SENSE(10):
00 00 26 00 00 00 00 00 00
Mode data length=40, medium type=0x00, WP=0, DpoFua=0, longlba=0
Block descriptor length=0
>> page_code=0x5, page_control=0
00 05 1e 80 00 04 20 02 00 ef c0 00 00 00 00 00 00
10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
starting sandisk_new tests
sudo sg_modes -HHp 4 /dev/sdb
SanDisk Cruzer 1.26 peripheral_type: disk [0x0]
invalid field in cdb (perhaps page 0x4 not supported)
sudo sg_modes -HHp 5 /dev/sdb
SanDisk Cruzer 1.26 peripheral_type: disk [0x0]
Mode parameter header from MODE SENSE(10):
00 00 26 00 00 00 00 00 00
Mode data length=40, medium type=0x00, WP=0, DpoFua=0, longlba=0
Block descriptor length=0
>> page_code=0x5, page_control=0
00 05 1e 00 00 10 3f 02 00 1e 4f 00 00 00 00 00 00
10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
starting transcend
sudo sg_modes -HHp 4 /dev/sdb
JetFlash Transcend 2GB 8.07 peripheral_type: disk [0x0]
Mode parameter header from MODE SENSE(10):
00 00 06 00 00 00 00 00 00
Mode data length=8, medium type=0x00, WP=0, DpoFua=0, longlba=0
Block descriptor length=0
sudo sg_modes -HHp 5 /dev/sdb
JetFlash Transcend 2GB 8.07 peripheral_type: disk [0x0]
Mode parameter header from MODE SENSE(10):
00 00 06 00 00 00 00 00 00
Mode data length=8, medium type=0x00, WP=0, DpoFua=0, longlba=0
Block descriptor length=0
starting verbatim
sudo sg_modes -HHp 4 /dev/sdb
Verbatim STORE N GO 5.00 peripheral_type: disk [0x0]
Mode parameter header from MODE SENSE(10):
00 00 06 00 00 00 00 00 00
Mode data length=8, medium type=0x00, WP=0, DpoFua=0, longlba=0
Block descriptor length=0
sudo sg_modes -HHp 5 /dev/sdb
Verbatim STORE N GO 5.00 peripheral_type: disk [0x0]
Mode parameter header from MODE SENSE(10):
00 00 26 00 00 00 00 00 00
Mode data length=40, medium type=0x00, WP=0, DpoFua=0, longlba=0
Block descriptor length=0
>> page_code=0x5, page_control=0
00 05 1e f0 00 ff 20 02 00 01 df 00 00 00 00 00 00
10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
----- Original Message -----
> From: "Paolo Bonzini" <pbonzini at redhat.com>
> To: seabios at seabios.org, dave at camp.se-eng.com
> Sent: Friday, March 2, 2012 7:20:28 AM
> Subject: Re: Booting from USB thumbdrives, older drives boot, newer drives don't.
>
> Il 02/03/2012 01:34, Dave Frodin ha scritto:
> > On a related topic, I have a copy of the "Indispensable PC
> > Hardware" book
> > that lists the return values for the mode page 4 request. It list
> > the cyc/head
> > data as follows...
> > offset value
> > ==================
> > 2 cyl(msb)
> > 3 cyl
> > 4 cyl(lsb)
> > 5 heads
> >
> > the struct in the blockcmd.h file shows...
> > struct cdbres_mode_sense_geom {
> > u8 unused_00[3];
> > u8 read_only;
> > u32 unused_04;
> > u8 page;
> > u8 length;
> > u8 cyl[3];
> > u8 heads;
> > u8 precomp[3];
> > u8 reduced[3];
> > u16 step_rate;
> > u8 landing[3];
> > u16 rpm;
> > } PACKED;
> > which would put cyl[3] at offset 10 thru 12 and heads at offset 13.
> > Am I missing something here?
>
> The first eight bytes are not part of the page, they are common to
> all
> MODE SENSE responses.
>
> Perhaps we could restrict the MODE SENSE to disks of 504MiB and less.
> I
> still have a couple of 256 MB pen drives around, I can test them.
>
> Can you try "sg_modes -HHp 4 /dev/sda" (from Linux) on both those
> that
> fail and those that work?
>
> Paolo
>
More information about the SeaBIOS
mailing list