Monthly Archives: November 2006

Not Letting It Go

I’m just going to keep guessing; it’s much easier than digging up actual, empirical data. I’m starting to come to grips with the idea that the number of valid sectors contained on a DVD disc is something that’s interpreted by the optical drive firmware and enforced by the same (as is the case for RPC-2 DVD region encoding). If that’s true, there is no point in using direct SCSI access to beg for sectors beyond the magic 6,992 limit on a standard Xbox disc. Ways around this? There’s the Xbox-Linux FTP trick alluded to in my cursory post on the matter

Continue reading

New Media Angle

After yesterday’s post I received a tip that I may wish to try getting at the Xbox disc data using the low-level Linux SCSI layer– the facility commonly known as SCSI generic, or simply ‘sg’. In order to make use of this facility, it is necessary to configure your Linux kernel with the right support (CONFIG_CHR_DEV_SG, CONFIG_BLK_DEV_IDESCSI, but not CONFIG_BLK_DEV_IDECD). Download and install the SCSI generic utilities from here (which do not compile on my AMD64 machine; fortunately, the x86-compiled utilities and associated shared library drop into the system perfectly). There are about 30 little sg* utilities in the package. One that caught my attention was sg_dd– your typical ‘dd’ Unix command, but for interacting with a SCSI device. I tested it out on a typical Xbox DVD:

$ sudo sg_dd if=/dev/sg0 of=dvd bs=2048 bpt=1 count=20
20+0 records in
20+0 records out

And, indeed, the beginning of the disc has the markings of a typical DVD filesystem. So let’s try to read beyond the 6,992-sector limit on a standard Xbox disc:

$ sudo sg_dd if=/dev/sg0 of=dvd bs=2048 bpt=1 count=2 skip=6991
reading: SCSI status: Check Condition
 Fixed format, current;  Sense key: Illegal Request
 Additional sense: Logical block address out of range

 Raw sense data (in hex):
        70 00 05 00 00 00 00 0a  00 00 00 00 21 00 00 00
        00 00
plus...: Driver_status=0x08 [DRIVER_SENSE, SUGGEST_OK]
sg_read failed, seek=1
Some error occurred,  remaining block count=1
1+0 records in
1+0 records out

I had to deal with all this SCSI nonsense in a previous life and I admit that this output is conjuring some sour memories. Anyway, it seems that the stock sg_dd command can not read beyond what the DVD header structure ostensibly reports as the size of the disc. There are a number of other utilities I need to investigate for potential. Failing that, it’s possible — with at least a modicum of effort — to program the sg layer. There may yet be a solution.

Related posts:

Xbox Media Redux

Pursuant to my post last week regarding Xbox media, I received some suggestions to throw some leading Windows utilities at the problem, notably Nero and IsoBuster. They both report the same as my results in Linux.

IsoBuster:


IsoBuster perspective

Nero:


Nero perspective

I’m sure there were a lot of people out there who already knew this stuff. But it’s hard to find specifics on the internet (sort of like heavy technical details of reverse engineering).

PS3 Linux Confusion

To date, I can not clearly recall if I have ever picked up a PlayStation or PlayStation 2 controller. I had little reason to care about the PlayStation 3 until I heard rumblings that Terra Soft’s Yellow Dog Linux distribution will run on the upcoming console. The Cell technology sounds fascinating at a technical level and I am always interested in low-level programming on weird and wonderful CPU architectures. So far, though, it has been quite difficult to find any solid details about what the PS3-Linux distribution will actually allow you to do with the system. PS2-Linux sounded interesting as well but apparently suffered from some limitations, like not allowing Linux users to access the optical drive (which could apparently be circumvented by modding the hardware, or even allegedly via a software patch).


A little yellow dog

So my confusion revolves around what Yellow Dog Linux for the PlayStation 3 will actually allow an adventurous programmer to do. Questions I have include:

  • Will you be able to program all the CPUs (the main CPU and the 6 coprocessors)?
  • Will you be able to program the graphics?
  • In different video modes?
  • All the way up to full 1080p resolution?
  • Will there be any accelerated graphics facilities available?
  • Or will you only have the privilege to poke pixels into a framebuffer and slap the resulting bitmap onto the screen?
  • Will you be able to output sound?
  • Will you be able to output stereo sound?
  • Will you be able to output 7.1 surround sound?
  • Will you be able to access the network via either the gigabit ethernet or WiFi interface?
  • Will you be able to access the optical drive? (Extraordinarily unlikely)
  • Will you be able to plug in and use any USB device?

Ars Technica has the most descriptive treatment of the impending YDL distribution. Predictably, the ensuing 3 pages of comments nitpick endlessly over what the capabilities and possibilities might be without understanding many if any answers to the above questions.