{"id":350,"date":"2006-11-10T22:19:21","date_gmt":"2006-11-11T05:19:21","guid":{"rendered":"http:\/\/multimedia.cx\/eggs\/new-media-angle\/"},"modified":"2007-11-12T19:04:07","modified_gmt":"2007-11-13T03:04:07","slug":"new-media-angle","status":"publish","type":"post","link":"https:\/\/multimedia.cx\/eggs\/new-media-angle\/","title":{"rendered":"New Media Angle"},"content":{"rendered":"<p>After <a href=\"http:\/\/multimedia.cx\/eggs\/xbox-media-redux\/\">yesterday&#8217;s post<\/a> I received a tip that I may wish to try getting at the Xbox disc data using the low-level Linux SCSI layer&#8211; the facility commonly known as SCSI generic, or simply &#8216;sg&#8217;. 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 <em>not<\/em> CONFIG_BLK_DEV_IDECD). Download and install the <a href=\"http:\/\/sg.torque.net\/sg\/\">SCSI generic utilities from here<\/a> (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&#8211; your typical &#8216;dd&#8217; Unix command, but for interacting with a SCSI device. I tested it out on a typical Xbox DVD:<\/p>\n<pre>\r\n$ sudo sg_dd if=\/dev\/sg0 of=dvd bs=2048 bpt=1 count=20\r\n20+0 records in\r\n20+0 records out\r\n<\/pre>\n<p>And, indeed, the beginning of the disc has the markings of a typical DVD filesystem. So let&#8217;s try to read beyond the 6,992-sector limit on a standard Xbox disc:<\/p>\n<pre>\r\n$ sudo sg_dd if=\/dev\/sg0 of=dvd bs=2048 bpt=1 count=2 skip=6991\r\nreading: SCSI status: Check Condition\r\n Fixed format, current;  Sense key: Illegal Request\r\n Additional sense: Logical block address out of range\r\n\r\n Raw sense data (in hex):\r\n        70 00 05 00 00 00 00 0a  00 00 00 00 21 00 00 00\r\n        00 00\r\nplus...: Driver_status=0x08 [DRIVER_SENSE, SUGGEST_OK]\r\nsg_read failed, seek=1\r\nSome error occurred,  remaining block count=1\r\n1+0 records in\r\n1+0 records out\r\n<\/pre>\n<p>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&#8217;s possible &#8212; with at least a modicum of effort &#8212; <a href=\"http:\/\/tldp.org\/HOWTO\/SCSI-Generic-HOWTO\/\">to program the sg layer<\/a>. There may yet be a solution.<\/p>\n<p>Related posts:<\/p>\n<ul>\n<li><a href=\"http:\/\/multimedia.cx\/eggs\/xbox-media-redux\/\">Xbox Media Redux<\/a><\/li>\n<li><a href=\"http:\/\/multimedia.cx\/eggs\/studying-xbox-multimedia\/\">Studying Xbox Multimedia<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>After yesterday&#8217;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&#8211; the facility commonly known as SCSI generic, or simply &#8216;sg&#8217;. In order to make use of this facility, it is necessary to configure your Linux kernel with the right support [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29,79],"tags":[286],"class_list":["post-350","post","type-post","status-publish","format-standard","hentry","category-game-hacking","category-xbox","tag-xbox"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/350","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/comments?post=350"}],"version-history":[{"count":0,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/350\/revisions"}],"wp:attachment":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/media?parent=350"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/categories?post=350"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/tags?post=350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}