9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* [9fans] usb cdrom
@ 2013-02-12 15:39 erik quanstrom
  2013-02-13  5:09 ` erik quanstrom
  0 siblings, 1 reply; 4+ messages in thread
From: erik quanstrom @ 2013-02-12 15:39 UTC (permalink / raw)
  To: 9fans

the intersting bit is right at the end
where two request sense commands are sent back-to-back
and the second one returns all good (since request sense
clears sense information).

this same disk works fine on a sata cdrom.  so either
- this cdrom does something cdfs can't handle, or
- usb/disk is doing something cdfs can't handle.

as a guess, it looks like usb/disk errored out 0xa8 (read 12) before it
was sent.

- erik

harness# /sys/src/cmd/usb/usbd/6.out
ehci 0xfffffe00fe83bc00: port 2 didn't reset within 500 ms; sts 0x1101
vendor is BUFFALO
usb/disk... disk: cmd: tag 0x1:  12 00 00 00 ff 00 datalen: 255
disk: data: 96 bytes
disk: status: 00 residue: 159
disk: cmd: tag 0x2:  1b 00 00 00 01 00 datalen: 0
disk: status: 01 residue: 0
disk: cmd: tag 0x3:  03 00 00 00 ff 00 datalen: 255
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 02 00 00 00 00 0a 00 00 00 00 3a 00 00 00 00 00 00 00
usb/disk: : 023a00 medium not present
disk: cmd: tag 0x4:  1b 00 00 00 03 00 datalen: 0
disk: status: 01 residue: 0
disk: cmd: tag 0x5:  03 00 00 00 ff 00 datalen: 255
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00
usb/disk: : 052400 invalid field in cdb
disk: cmd: tag 0x6:  25 00 00 00 00 00 00 00 00 00 datalen: 8
disk: data: 0 bytes
disk: status: 01 residue: 8
disk: cmd: tag 0x7:  03 00 00 00 ff 00 datalen: 255
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 02 00 00 00 00 0a 00 00 00 00 3a 02 00 00 00 00 00 00
usb/disk: : 023a02 medium not present - tray open
disk: cmd: tag 0x8:  25 00 00 00 00 00 00 00 00 00 datalen: 8
disk: data: 0 bytes
disk: status: 01 residue: 8
disk: cmd: tag 0x9:  03 00 00 00 ff 00 datalen: 255
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 02 00 00 00 00 0a 00 00 00 00 3a 02 00 00 00 00 00 00
usb/disk: : 023a02 medium not present - tray open
harness#
harness#
harness#
harness#
harness# cat /dev/sdU0.0/ctl
disk: cmd: tag 0x12:  25 00 00 00 00 00 00 00 00 00 datalen: 8
disk: data: 0 bytes
disk: status: 01 residue: 8
disk: cmd: tag 0x13:  03 00 00 00 ff 00 datalen: 255
disk: data: 20 bytes
disk: status: 00sidue: 235
sense data: 70 00 06 00 00 00 00 0a 00 00 00 00 28 00 00 00 00 00 00 00
usb/disk: sdU0.0: 062800 not ready to ready change, medium may have changed
disk: cmd: tag 0x14:  25 00 00 00 00 00 00 00 00 00 datalen: 8
disk: data: 8 bytes
disk: status: 00 residue: 0
disk: logical block size 2048, # blocks 0
inquiry /dev/usb/ep6.0 lun 0: Optiarc DVD RW AD-7560S SB01 Mar30,2009
harness#
harness#
harness#
harness#
harness# 9fs dump
harness# /n/dump/2013/0101/amd64/bin/cdfs -d /dev/sdU0.0
disk: cmd: tag 0x15:  00 00 00 00 00 00 datalen: 0
disk: status: 00 residue: 0
disk: cmd: tag 0x16:  52 05 00 00 00 01 00 00 ff 00 datalen: 255
disk: data: 28 bytes
disk: status: 00 residue: 227
disk: cmd: tag 0x17:  00 00 00 00 00 00 datalen: 0
disk: status: 00 residue: 0
disk: cmd: tag 0x18:  12 00 00 00 ff 00 datalen: 255				inquiry
disk: data: 96 bytes
disk: status: 00 residue: 159
disk: cmd: tag 0x19:  1b 00 00 00 01 00 datalen: 0				start
disk: status: 00 residue: 0
disk: cmd: tag 0x1a:  5a 00 2a 00 00 00 00 00 ff 00 datalen: 512			mode sense 10
disk: data: 76 bytes
disk: status: 00 residue: 436
disk: cmd: tag 0x1b:  5a 00 05 00 00 00 00 00 ff 00 datalen: 512			mode sense 10
disk: data: 60 bytes
disk: status: 00 residue: 452
disk: cmd: tag 0x1c:  5a 00 2a 00 00 00 00 00 ff 00 datalen: 512			mode sense 10
disk: data: 76 bytes
disk: status: 00 residue: 436
disk: cmd: tag 0x1d:  5a 00 08 00 00 00 00 00 ff 00 datalen: 512			mode sense 10
disk: data: 20 bytes
disk: status: 00 residue: 492
disk: cmd: tag 0x1e:  55 10 00 00 00 00 00 00 14 00 datalen: 20			mode select 10
disk: data: 20 bytes
disk: status: 00 residue: 492
disk: cmd: tag 0x1f:  25 00 00 00 00 00 00 00 00 00 datalen: 8			read capacity
disk: data: 8 bytes
disk: status: 00 residue: 0
disk: logical block size 2048, # blocks 0
disk: cmd: tag 0x20:  03 00 00 00 ff 00 datalen: 255				request sense
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 00 00 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 00
disk: cmd: tag 0x21:  00 00 00 00 00 00 datalen: 0				ready
disk: status: 00 residue: 0
disk: cmd: tag 0x22:  55 10 00 00 00 00 00 00 14 00 datalen: 20			mode select 10
disk: data: 20 bytes
disk: status: 00 residue: 0
disk: cmd: tag 0x23:  43 00 00 00 00 00 00 04 00 00 datalen: 1024			read toc data
disk: data: 0 bytes
disk: status: 01 residue: 1024
disk: cmd: tag 0x24:  03 00 00 00 ff 00 datalen: 255
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00		invalid field in cdb
disk: cmd: tag 0x25:  00 00 00 00 00 00 datalen: 0
disk: status: 00 residue: 0
disk: cmd: tag 0x26:  43 00 00 00 00 00 00 04 00 00 datalen: 1024
disk: data: 0 bytes
disk: status: 01 residue: 1024
disk: cmd: tag 0x27:  03 00 00 00 ff 00 datalen: 255
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00
disk: cmd: tag 0x28:  00 00 00 00 00 00 datalen: 0
disk: status: 00 residue: 0
disk: cmd: tag 0x29:  52 05 00 00 00 01 00 00 ff 00 datalen: 255			read track info
disk: data: 28 bytes
disk: status: 00 residue: 227
disk: cmd: tag 0x2a:  43 02 00 00 00 00 00 04 00 00 datalen: 1024			read toc data
disk: data: 0 bytes
disk: status: 01 residue: 1024
disk: cmd: tag 0x2b:  03 00 00 00 ff 00 datalen: 255				request sense
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00		invalid field in cdb
disk: cmd: tag 0x2c:  00 00 00 00 00 00 datalen: 0
disk: status: 00 residue: 0
disk: cmd: tag 0x2d:  43 02 00 00 00 00 00 04 00 00 datalen: 1024
disk: data: 0 bytes
disk: status: 01 residue: 1024
disk: cmd: tag 0x2e:  03 00 00 00 ff 00 datalen: 255
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00		invalid field in cdb
disk: cmd: tag 0x2f:  00 00 00 00 00 00 datalen: 0				ready
disk: status: 00 residue: 0
disk: cmd: tag 0x30:  51 00 00 00 00 00 00 04 00 00 datalen: 1024			read disk info
disk: data: 36 bytes
disk: status: 00 residue: 988
disk: cmd: tag 0x31:  03 00 00 00 ff 00 datalen: 255				request sense
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 00 00 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 00		all good
disk: cmd: tag 0x32:  00 00 00 00 00 00 datalen: 0				ready
disk: status: 00 residue: 0
disk: cmd: tag 0x33:  03 00 00 00 ff 00 datalen: 255				request sense
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 00 00 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 00		all good
disk: cmd: tag 0x34:  00 00 00 00 00 00 datalen: 0
disk: status: 00 residue: 0
disk: cmd: tag 0x35:  46 00 00 01 00 00 00 08 00 00 datalen: 2048			get configuration
disk: data: 312 bytes
disk: status: 00 residue: 1736
disk: cmd: tag 0x36:  03 00 00 00 00 datalen: 255				request sense
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 00 00 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 00		all good
disk: cmd: tag 0x37:  00 00 00 00 00 00 datalen: 0				ready
disk: status: 00 residue: 0
disk: cmd: tag 0x38:  03 00 00 00 ff 00 datalen: 255				request sense
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 00 00 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 00		all good
disk: cmd: tag 0x39:  00 00 00 00 00 00 datalen: 0
disk: status: 00 residue: 0
disk: cmd: tag 0x3a:  52 01 00 00 00 01 00 00 ff 00 datalen: 255			read track info
disk: data: 28 bytes
disk: status: 00 residue: 227
disk: cmd: tag 0x3b:  52 01 00 00 00 02 00 00 ff 00 datalen: 255			read track info
disk: data: 28 bytes
disk: status: 00 residue: 227
nwa is 218419 but invis track starts blk 0
disk: cmd: tag 0x3c:  43 00 00 00 00 00 00 04 00 00 datalen: 1024			read toc
disk: data: 0 bytes
disk: status: 01 residue: 1024
disk: cmd: tag 0x3d:  03 00 00 00 ff 00 datalen: 255				request sense
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00		invalid field in cdb
disk: cmd: tag 0x3e:  00 00 00 00 00 00 datalen: 0
disk: status: 00 residue: 0
disk: cmd: tag 0x3f:  43 00 00 00 00 00 00 04 00 00 datalen: 1024
disk: data: 0 bytes
disk: status: 01 residue: 1024
disk: cmd: tag 0x40:  03 00 00 00 ff 00 datalen: 255
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00		invalid field in cdb
disk: cmd: tag 0x41:  00 00 00 00 00 00 datalen: 0
disk: status: 00 residue: 0
harness#
harness#
harness#
harness#
harness#
harness#
harness#
harness#
harness#
harness#
harness#
harness#
harness# cat /mnt/cd/d000>/dev/null
disk: cmd: tag 0x42:  43 00 00 00 00 00 00 04 00 00 datalen: 1024			read toc
disk: data: 0 bytes
disk: status: 01 residue: 1024
disk: cmd: tag 0x43:  03 00 00 00 ff 00 datalen: 255
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00
disk: cmd: tag 0x  00 00 00 00 00 00 datalen: 0
disk: status: 00 residue: 0
disk: cmd: tag 0x45:  43 00 00 00 00 00 00 04 00 00 datalen: 1024
disk: data: 0 bytes
disk: status: 01 residue: 1024
disk: cmd: tag 0x46:  03 00 00 00 ff 00 datalen: 255
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00
disk: cmd: tag 0x47:  00 00 00 00 00 00 datalen: 0
disk: status: 00 residue: 0
disk: cmd: tag 0x48:  43 00 00 00 00 00 00 04 00 00 datalen: 1024			read toc
disk: data: 0 bytes
disk: status: 01 residue: 1024
disk: cmd: tag 0x49:  03 00 00 00 ff 00 datalen: 255				request sense
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00
disk: cmd: tag 0x4a:  00 00 00 00 00 00 datalen: 0
disk: status: 00 residue: 0
disk: cmd: tag 0x4b:  43 00 00 00 00 00 00 04 00 00 datalen: 1024			read toc
disk: data: 0 bytes
disk: status: 01 residue: 1024
disk: cmd: tag 0x4c:  03 00 00 00 ff 00 datalen: 255				request sense
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00		invalid field in cdb
disk: cmd: tag 0x4d:  00 00 00 00 00 00 datalen: 0				ready
disk: status: 00 residue: 0
disk: cmd: tag 0x4e:  03 00 00 00 ff 00 datalen: 255				request sense
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 00 00 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 00		all good
disk: cmd: tag 0x4f:  00 00 00 00 00 00 datalen: 0
disk: status: 00 residue: 0
disk: cmd: tag 0x50:  03 00 00 00 ff 00 datalen: 255				request sense
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 00 00 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 00		all good
disk: cmd: tag 0x51:  00 00 00 00 00 00 datalen: 0
disk: status: 00 residue: 0
cat: error reading /mnt/cd/d000: cmd #a8: no additional sense information
disk: cmd: tag 0x52:  43 00 00 00 00 00 00 04 00 00 datalen: 1024			read toc
disk: data: 0 bytes
disk: status: 01 residue: 1024
disk: cmd: tag 0x53:  03 00 00 00 ff 00 datalen: 255
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00
disk: cmd: tag 0x54:  00 00 00 00 00 00 datalen: 0
disk: status: 00 residue: 0
disk: cmd: tag 0x55:  43 00 00 00 00 00 00 04 00 00 datalen: 1024			read toc
disk: data: 0 bytes
disk: status: 01 residue: 1024
disk: cmd: tag 0x56:  03 00 00 00 ff 00 datalen: 255
disk: data: 20 bytes
disk: status: 00 residue: 235
sense data: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00		invalid field in cdb
disk: cmd: tag 0x57:  00 00 00 00 00 00 datalen: 0
disk: status: 00 residue: 0
harness#
harness#
harness#
harness# echo $status
cat 159: error reading /mnt/cd/d000: cmd #a8: no additional sense information



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [9fans] usb cdrom
  2013-02-12 15:39 [9fans] usb cdrom erik quanstrom
@ 2013-02-13  5:09 ` erik quanstrom
  2013-02-13  9:47   ` Richard Miller
  0 siblings, 1 reply; 4+ messages in thread
From: erik quanstrom @ 2013-02-13  5:09 UTC (permalink / raw)
  To: 9fans

well that was simple, cdroms use 12-byte commands.
i thought somebody had used a usb cdrom before.  :-)

- erik

; diffy -c disk.c
/n/dump/2013/0212/sys/src/cmd/usb/disk/disk.c:533,539 - disk.c:533,539
  		}
  		switch(lun->phase){
  		case Pcmd:
- 			if(count != 6 && count != 10){
+ 			if(count != 6 && count != 10 && count != 12 && count != 16){
  				qunlock(ums);
  				werrstr("bad command length");
  				return -1;
; diffy -c ums.h
/n/dump/2013/0212/sys/src/cmd/usb/disk/ums.h:51,57 - ums.h:51,57
  	ScsiReq;
  	uvlong	blocks;
  	vlong	capacity;
- 	uchar 	rawcmd[10];
+ 	uchar 	rawcmd[16];
  	uchar	phase;
  	char	*inq;
  	Ums	*ums;



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [9fans] usb cdrom
  2013-02-13  5:09 ` erik quanstrom
@ 2013-02-13  9:47   ` Richard Miller
  2013-02-13 17:18     ` erik quanstrom
  0 siblings, 1 reply; 4+ messages in thread
From: Richard Miller @ 2013-02-13  9:47 UTC (permalink / raw)
  To: 9fans

> well that was simple, cdroms use 12-byte commands.
> i thought somebody had used a usb cdrom before.  :-)

I think some usb cd devices might just pretend to be disks.

When I wrote the original usb mass storage driver (ca 2005) I had
only flash drives in mind.  Others have extended and rewritten it
many times since, to handle more varied and variously cranky devices,
but that original hidden assumption has been lurking ever since,
waiting to bite you... sorry.




^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [9fans] usb cdrom
  2013-02-13  9:47   ` Richard Miller
@ 2013-02-13 17:18     ` erik quanstrom
  0 siblings, 0 replies; 4+ messages in thread
From: erik quanstrom @ 2013-02-13 17:18 UTC (permalink / raw)
  To: 9fans

On Wed Feb 13 04:48:30 EST 2013, 9fans@hamnavoe.com wrote:
> > well that was simple, cdroms use 12-byte commands.
> > i thought somebody had used a usb cdrom before.  :-)
>
> I think some usb cd devices might just pretend to be disks.
>
> When I wrote the original usb mass storage driver (ca 2005) I had
> only flash drives in mind.  Others have extended and rewritten it
> many times since, to handle more varied and variously cranky devices,
> but that original hidden assumption has been lurking ever since,
> waiting to bite you... sorry.

oh, no problems.  it was just such a surprise.  :-)
and on the plus side it is nice to know that a problem
is fixed.

- erik



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-02-13 17:18 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-02-12 15:39 [9fans] usb cdrom erik quanstrom
2013-02-13  5:09 ` erik quanstrom
2013-02-13  9:47   ` Richard Miller
2013-02-13 17:18     ` erik quanstrom

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).