Log in

View Full Version : SATA blues


WaxfordSqueers
April 19th, 2009, 00:09
I've tried finding a solution to a SATA problem everywhere on the Net plus at Intel, Msoft, Silicon Image and LG Electronics. Seems all the latter want is your initial money for their product, then you're on your own. Thought I'd try here since I plan to use softice on the problem, which might involve reversing atapi.sys or the likes.

I have a DMA problem. My optical drive is recognized on the SATA controller and it will read both CD and DVD media. I can even boot from it by setting it to boot off a SATA device in BIOS. However, I cannot write anything since it crashes each time at 13% of the write, even in simulation mode.

The device is an LG Electronics GH22NS30 SATA DVD-writer on an onboard Silicon Image Si3112 controller (ATA/ATAPI-6 @ 1.5 Gb/s) on an Intel D845PEBT2 motherboard (ICH4 core). Several different utilities show the controller/optical device stuck in PIO4 mode, which is essentially useless for data transfer on a write. I need UDMA2.

There is plenty of info on the Net about setting the DMA on an ATA/ATAPI system but not on a SATA system, which emulates ATA/ATAPI and used DMA transfers. In fact, I can't set the DMA anywhere but in a Silicon Image configuration utility that puts an entry in the registry, which is subsequently ignored by windoze.

The problem may be Microsoft. In their infinite wisdom, they have built in a degradation system which throttles transfer rates if more than 6 CRC errors are detected. It will start at the highest UDMA setting and drop it one step at a time down into PIO mode.

I have looked at and changed the cables, making sure they are seated properly. I can't believe how Mickey Mouse the SATA connectors are, however, being nothing more than spring clips butting on circuit board strips. I took the drive back to the retailer, who claimed they tested it as functioning correctly. Given that it is working right, I don't see where CRC errors could arise other than in the controller.

I'm at the point of tracing this using softice but I know nothing about PCI busses. Before I go re-inventing the wheel, can anyone offer a few tips?

Darren
April 19th, 2009, 07:05
Hi there,

I think i know the problem your having, I setup a friends PC a few months back, with an asus motherboard, and had exactly the same problem with burning on a sata dvd burner, the very little information I found about the problem was related to the ATI southbridge chip on the motherboard sb600 in this case, but I resolved the problem with upgrading to sp3 and updating the sb600 driver, which in this case was part of the ATI Catalyst Driver Suite

Couple of links you may find useful :-

http://forum.imgburn.com/?showtopic=6641&st=20&start=20

http://support.microsoft.com/kb/924051

http://winhlp.com/node/10 (useful vbs script at top of this page to reset your DMA/PIO)

Darren

disavowed
April 19th, 2009, 22:10
check out your %windir%\memory.dmp file to see where the crash happened. can help you narrow down what driver is at fault (no pun intended).

Kayaker
April 19th, 2009, 23:45
Quote:
[Originally Posted by disavowed;80189](no pun intended).


/me being silly troll posting this cartoon, sorry

WaxfordSqueers
April 23rd, 2009, 01:25
Quote:
[Originally Posted by Kayaker;80195]re puns


“Why was the ink drop sad?

Because her dad was in the pen and she didn't know how long the sentence would be!”

WaxfordSqueers
April 23rd, 2009, 02:02
Quote:
[Originally Posted by Darren;80186]the problem was related to the ATI southbridge chip on the motherboard sb600 in this case, but I resolved the problem with upgrading to sp3 and updating the sb600 driver


Thanks for response. I have an Intel motherboard with a Silicon Image Si3112 SATA controller built into the board. I have tried at least half a dozen Silicon Image drivers, but there may be a problem with that. SI puts out a PCI add-on card and their drivers are aimed at that card. They suggest the user contact the motherboard manufacturer for onboard chips.

Apparently, the driver and the chipset BIOS must match, which makes sense. How do you flash an onboard SATA controller? I'm sure it is possible to do it but SI passes that off to Intel and they no longer support the board.

Anyway, I did a repair install, and when the Windows installer asked me to hit F6 to install an external controller, I did so and inserted my Intel Mobo SATA floppy. It asked if I wanted to do a RAID or non-RAID install and I picked non-RAID. That seemed to help because I can now see a SATA setup in my Silicon Image config utility with one device attached.

Unfortunately, it still wont let me set the DMA mode. I have selected UDMA2, which it claims will be used after a reboot, but nothing happens. The config utility adds an entry under HKLM/Software/Silicon Image/SATARaid/DevicesDefMode/HL-DT-STDVD-RAM GH22NS30 1.02/UDMA-2. The 1.02 is the latest device BIOS update for the GH22NS30 DVD-writer.

With respect to your links, I am still mulling over the first one. The second and third are no good because they refer to a southbridge that does not apply in my case, and DMA settings for ATA/ATAPI devices (PATA) and not SATA devices.

WaxfordSqueers
April 23rd, 2009, 02:26
Quote:
[Originally Posted by disavowed;80189]check out your %windir%\memory.dmp file to see where the crash happened. can help you narrow down what driver is at fault (no pun intended).


I'm not having a BSOD or a windoze crash, it only crashes NERO, both on an actual write and on a simulate write. It's not Nero because I tried another writing app and had the same results.

My hunch is that SATA was foisted on us far too quickly. There are two SATA modes: legacy and native. Legacy was brought in because most people used PATA devices till recently and they are based on the legacy ATA/ATAPI standard, which has conventional addressing modes for parallel communication between a controller and a device. SATA was setup to behave as a legacy ATA/ATAPI device, with UDMA modes available. In it's other mode, native, the SATA protocol has a wider range of options, such as 'hot-plugging', meaning the device can be removed without powering down.

A disk drive, or a CD/DVD device are natural SATA devices because they write and retrieve data from disk in serial mode. Using a SATA controller would make sense in that regard, however, serial devices often get far too much credit for speed, IMHO. Seriously, how can you transfer data 1 bit at a time faster than you can transfer 8 or 16 bits at a time? That works only in theory. And if you look at the electronics behind serialization and it's control, it's a headache compared to parallel transfers.

I have seen such claims made about serial transfers in the cabling industry. Category 5 cable was the most recent successful standard, and people have been making absurd claims such as CAT 5 being faster and better than coaxial cable. Not likely!! Coax works comfortably at 1 gigahertz whereas CAT 5 would choke completely on a 1 Ghz analog signal.

Intel is one of the companies pushing SATA these days, but when it comes down to one of their products choking on a SATA installation, they wash their hands of it.

I've heard that the newer Intel mobos are all SATA. Where have we heard that one before? Remember IBM choking on the OS/2 OS? They tried to shove it down out throats, but we didn't want it. Likewise, Intel may be shotting itself in the foot by pushing SATA so aggressively.

It should not be this difficult to configure a SATA device on a STAT controller. We never had these problems with the parallel interfaces.

disavowed
April 24th, 2009, 15:54
Quote:
[Originally Posted by WaxfordSqueers;80242]I'm not having a BSOD or a windoze crash, it only crashes NERO, both on an actual write and on a simulate write.


Then set up WinDbg as your JIT debugger and let it attach when Nero crashes. You might be able to glean some more info based on the callstack.

WaxfordSqueers
April 27th, 2009, 19:00
Quote:
[Originally Posted by disavowed;80274]Then set up WinDbg as your JIT debugger and let it attach when Nero crashes. You might be able to glean some more info based on the callstack.


yeah...I'll have to go in that direction. I was thinking of tracing it with softice to see if I could locate where the DMA settings are made, or if they're changed. That would involve a learning curve on PCI i/o. I just wanted to eliminate the obvious first, that hopefully someone else might have experienced.

babar0ga
April 28th, 2009, 03:02
Quote:
[Originally Posted by WaxfordSqueers;80241]
Apparently, the driver and the chipset BIOS must match, which makes sense. How do you flash an onboard SATA controller? I'm sure it is possible to do it but SI passes that off to Intel and they no longer support the board.


google for modbin and cbrom.
those are the tools for updating motherboard bios with newer sata(or other) bios...

regards

WaxfordSqueers
April 29th, 2009, 00:35
Quote:
[Originally Posted by babar0ga;80310]google for modbin and cbrom. those are the tools for updating motherboard bios with newer sata(or other) bios... regards


Thanks for tip, babar0ga. I'm reading up on those devices now. Apparently my bios is AMI-based but it's actually an Intel bios. The id is:

63-0100-000001-00101111-08-08-03-iBRKDL_G-D845E10A

I recognize the iBRKDL as being Intel's Brookdale 845 chipset. The AMI bios detector doesn't like it and refers me back to Intel. So now I gotta figure out whether I can use the bios editors you mentioned above on an Intel bios. If I find them, that is. :-)

I did run the bios parts through IDA at one point as bin files but it would take some maneuvering to decipher it all.

JMI
April 29th, 2009, 13:32
There's a lot of information on modifying Bios on My Digital Life Forums:

http://forums.mydigitallife.info/

They do mods of bios to activate Vista, XP, and various flavors of Windows Server, so that they will think they are an OEM and activate the OS, assuming one has the proper certs and key.

Actually, you are fortunate your Intel Board has the AMI Bios, because the Intel Bios remain somewhat of a mystery because there are currently no tools, available to the public, which will permit the type of modifications as are possible on AMI, Phoenix, and a couple of others. There are tools which will modify most of the others, but not all. Most of these others have tools available which unlock the Bios and correctly reinsert the proper checksum after modifications are properly made.

What we haven't seen, over there, is some really good "reverse engineers" disassemble the Intel Bios and figure out how it is hiding it's code and "unlock" some of it's secrets.



Regards,

WaxfordSqueers
April 30th, 2009, 02:16
Quote:
[Originally Posted by JMI;80321]There's a lot of information on modifying Bios on My Digital Life Forums:...What we haven't seen, over there, is some really good "reverse engineers" disassemble the Intel Bios and figure out how it is hiding it's code and "unlock" some of it's secrets. Regards,


Hey JMI...whassup? Thanks for link.

I was just thinking that. Silicon Image supplies three files for BIOS's. One is for raid, the other as a base for an add-on card. The third is for motherboard chips but they advise you to leave that up to the manufacturer. Nudge, nudge, wink, wink.

I loaded the third file up in IDA and disassembled it in 32 bit. Looked like a dog's breakfast. Then I tried it in 16 bit and all this beautiful code poured out. It doesn't like some of the jumps, which appear to be 32 bit, but most of the code looks real. Most of it seems aimed at RAID as well and all I want to find out is how they manipulate DMA's. Part of that problem is Microsoft itself. They throttle back the transfer rates on unsigned drivers. I may have to dig under the hood and put a stop to that nonsense.

Intel puts out an app called the Intel Integrator Toolkit. It is apparently similar to modbin and cbrom. Not only that, they have released some of their codes. One advantage they'll have is being able to build software traps into their hardware. That would be nasty. Short of being a brain surgeon you wont be getting at that. However, from what I can see they're not playing all that nasty.

I like my Intel board but I hear they have a big investment in SATA. Their latest boards are apparently all SATA. May have to go back to ASUS, who I like just as much except they don't have a fraction of the technical literature provided by Intel.

Anyway, I'm still exploring a simple solution and my drive cost all of $35. Sometimes you just have to do it for the sake of it, right?

JMI
April 30th, 2009, 08:52
From just a little playing around with it and what I've read on My Digital Life, the Intel Integrator Toolkit is not very "robust" and is quite "emasculated" when it come to actually looking under the hood of the Intel Bios. Apparently, it will not fully decrypt the bios for a full look "under the hood."



Regards,

WaxfordSqueers
April 30th, 2009, 17:52
Quote:
[Originally Posted by JMI;80334]From just a little playing around with it and what I've read on My Digital Life, the Intel Integrator Toolkit is not very "robust" and is quite "emasculated" when it come to actually looking under the hood of the Intel Bios.


When you download the Intel BIOS file it unpacks into its component parts. I haven't looked too closely at them yet. There's an itk file that the integrator can read and there are seven files named P10-0024.BI1 to P10-0024.BIO. That seems to be an O, not a zero on the last one, don't know yet. There's another called BIOS.REC and an iFlash,exe file to flash it all, I presume. There's even a boot image for booting from a floppy.

There are two versions of the itegrator: one for Windoze and one for DOS. The Windoze version takes care of motherboards in the i865 'range', and since mine is an i845, and has the appropriate BIOS, I presume it will deal with mine. The DOS integrator does the dirty work, the Windoze version merely providing the files required by the DOS version.

Also, the integrator tool only seems to affect the BIOS settings as you see them in the m/b BIOS. I haven't seen any provisions as of yet to integrate files into the BIOS proper. Of course, Intel seems to leave some of their stuff up to your ingenuity. Maybe there's a way to persuade the integrator to be more macho.

I've had the idea of using the Silicon Image BIOS file as a comparison tool to locate where they are located in the Intel BIOS. Of course, it may be packed.

Anyway, if I can't use the integrator, I would hope to do it the hard way, but I realize there are checksums, etc.

WaxfordSqueers
May 1st, 2009, 03:33
Quote:
[Originally Posted by JMI;80334]Apparently, it will not fully decrypt the bios for a full look "under the hood."


JMI...I wasn't thinking too clearly. My problem is not a main BIOS problem it is the BIOS on the Silicom Image chip that is the problem. There is a means to flash it from an Silicon Image config utility in the Control Panel. Unfortunately it's not working properly right now, but even if it was working I'd need a way to verify the Intel version of the BIOS.

I just found a data sheet for the Si3112 controller and it's pretty detailed. I'll have to check out how their software flashes the chip and see if I can do a dump of the existing BIOS in case I mess up. Then again, Intel was updating the BIOS using main BIOS updates, so maybe that's possible too. I know it is on disk drives.