Wednesday, February 4, 2009

Motherboard Specifically Designed To Crash Linux

"Foxconn deliberately sabotaging their BIOS to destroy Linux ACPI.

I disassembled my BIOS to have a look around, and while I won’t post the results here,I’ll tell you what I did find.

They have several different tables, a group for Windws XP and Vista, a group for 2000, a group for NT, Me, 95, 98, etc. that just errors out, and one for LINUX.

The one for Linux points to a badly written table that does not correspond to the board’s ACPI implementation, causing weird kernel errors, strange system freezing, no suspend or hibernate, and other problems, using my modifications below, I’ve gotten it down to just crashing on the next reboot after having suspended, the horrible thing about disassembling any program is that you have no commenting, so it’s hard to tell which does what, but I’ll be damned if I’m going to buy a copy of Vista just to get the crashing caused by Foxconn’s BIOS to stop, I am not going to be terrorized.

For those wondering, the board is a G33M-S.

dsdt.dsl 6379: Acquire (MUTE, 0x03E8)
Warning 1103 - ^ Possible operator timeout is ignored

dsdt.dsl 6393: Acquire (MUTE, 0x03E8)
Warning 1103 - ^ Possible operator timeout is ignored

dsdt.dsl 6408: Acquire (MUTE, 0x03E8)
Warning 1103 - ^ Possible operator timeout is ignored

dsdt.dsl 6423: Acquire (MUTE, 0x0FFF)
Warning 1103 - ^ Possible operator timeout is ignored

dsdt.dsl 6437: Acquire (MUTE, 0x03E8)
Warning 1103 - ^ Possible operator timeout is ignored

dsdt.dsl 6452: Acquire (MUTE, 0x03E8)
Warning 1103 - ^ Possible operator timeout is ignored

dsdt.dsl 6467: Acquire (MUTE, 0x03E8)
Warning 1103 - ^ Possible operator timeout is ignored

Compilation complete. 0 Errors, 7 Warnings, 0 Remarks, 77 Optimizations

These are bogus mutes that are harmless to Windows (it ignores them), but crash Linux sporadically.


Company sold me a computer motherboard, model G33M-S, claiming that it was compliant with ACPI versions 1.0, 2.0, and 3.0.

Linux and FreeBSD do not work with this motherboard due to it’s ACPI configuration, using a disassembler program, I have found that it detects Linux specifically and points it to bad DSDT tables, thereby corrupting it’s hardware support, changing this and setting the system to override the BIOS ACPI DSDT tables with a customized version that passes the Windows versions to Linux gives Linux ACPI support stated on the box, I am complaining because I feel this violates an anti-trust provision in the Microsoft settlement, I further believe that Microsoft is giving Foxconn incentives to cripple their motherboards if you try to boot to a non-Windows OS.

We have received your complaint.

Thank you for contacting the FTC. Your complaint has been entered into Consumer Sentinel, a secure online database available to thousands of civil and criminal law enforcement agencies worldwide. Your reference number is:
19642372

Edit: Full correspondence with Foxconn

Me:

ACPI issues, cannot reboot after having used suspend

Jul 22 08:37:53 ryan-pc kernel: ACPI: FACS 7FFBE000, 0040
Jul 22 08:37:53 ryan-pc kernel: ACPI: FACS 7FFBE000, 0040
Jul 22 08:37:53 ryan-pc kernel: ACPI: FACS 7FFBE000, 0040
Jul 22 08:37:53 ryan-pc kernel: ACPI: FACS 7FFBE000, 0040
Jul 22 08:37:53 ryan-pc kernel: ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 70, should be 69 [20070126]

I get these messages in my system log at boot, I also fail to reboot after having used suspend in a session, it hangs and plays a continued beep on the PC speaker.

Foxconn:

Dear Ryan:

Do you get the same beep codes if you were to remove all RAM out and then turn the system ON again?

Me:

No, because then I wouldn’t be able to boot into Linux, suspend to RAM, to get the ACPI failure, have syslogd pollute my /var/log/messages file with it, or read about it in my system log.

In particular, the number of quirks that the kernel has to use, and this invalid checksum are what has me nervous.

If you need me to attach the full contents of /var/log/messages, I can do so.

Foxconn:

Dear Ryan:

This board was never certified for Linux. It is only certified for Vista. See URL below. So please test under Vista. Does this issue also occured under Vista or Winxp?

http://www.foxconnchannel.com/produc…ification.aspx

Me:

Well, this is a replacement for a dead Intel board (a 945g that fully supported ACPI), Vista was never really up for consideration, and I’m not about to go buy a copy to find out.

The ACPI specs are there for a reason, and broken BIOS’s like what is in this motherboard are the reason standard ACPI does not work, I’ve taken the liberty of filing the report in kernel.org, Red Hat, and Canonical’s Ubuntu bug tracking systems, and posting the contents of my kernel error log on my blog, which is in the first several results if you Google search “Foxconn G33M” or “Foxconn G33M-s”, “Foxconn Linux”, etc, as well as prominently in other search formats, so hopefully this will save other people from a bad purchase, and hopefully kernel.org can work around your broken BIOS in 2.6.26, as I understand that kernel is more forgiving of poorly written BIOSes built for Windows.

I’ve already gotten several dozen hits on those pages, so you guys are only hurting yourselves in the long run, by using bad BIOS ROMs, as people like me are quite vocal when dealing with a bad product.

Foxconn:

Dear Ryan,

Making idle treats is not going to solve anything.

As already stated this model has not been certified under Linux nor supported.

As you are unhappy with the product- using a non-support operating system nor certified, please contact your reseller for a refund.

Me:

Yeah, well, I allege that you guys thoroughly suck.

Learn how to write a BIOS before you go selling hardware with falsified specs.

Me:

I’ve been debugging your AMI BIOS, and the ACPI support on it is far from within compliance with the standards, I’ve dumped out the debugging data into Canonical’s Launchpad bug tracking system so that we may be able to support some sort of a workaround for the bad ACPI tables in your BIOS, I would hope that you will be part of the solution instead of the problem, alienating customers and telling them to go buy a copy of Windows Vista is not service, your product claims to be ACPI compliant and is not, therefore you are falsely advertising it with features it isn’t capable of.

I would ask that you issue an update that doesn’t make it dependent upon Windows Hardware Error Architecture, but that decision is up to you.

Please find all relevant data here:

Bug #251338 in Ubuntu: “Bad ACPI support on Foxconn G33M/G33M-S motherboards with AMI BIOS”
https://bugs.launchpad.net/ubuntu/+s…ux/+bug/251338

I appreciate your consideration in this matter.

-Ryan

Foxconn:

Dear Ryan,

You are incorrect in that the motherboard is not ACPI complaint. If it were not, then it would not have received Microsoft Certification for WHQL.

Refer to:
http://winqual.microsoft.com/HCL/Pro…33M-S&oid=3179

As already stated, this model has not been certified under Linux nor supported.

It has been marketed as a Microsoft Certified Motherboard for their operating systems.

Me:

I’ve found separate DSDT tables that the BIOS hands to Linux specifically, changing it to point to the DSDT tables Vista gets fixes all Linux issues with this board.

So while I accept that you’ve gotten some kind of Microsoft Certification (doesn’t surprise me), that does not make your board ACPI capable, just that Windows is better at coping with glitches custom tailored to it, for this purpose.

Foxconn:

Dear Ryan,

Stop sending us these!!!

Me:

Your BIOS is actually pretty shoddy, I’ve taken the liberty of posting everything that’s wrong with the DSDT lookup tables and how to fix some of it so the community that has already purchased your filth can make do with it, also, it’s now pretty much impossible to google Foxconn and Linux in the same sentence without getting hit by the truth, that your boards aren’t good enough to handle it.

Have a very nice day.

Foxconn:

Dear Ryan,

Surely this is the way to ask for us to attempt to fix something that is not supported in the first place.

Me:

Would it be so difficult? I mean really? I suppose you’ve never heard of building a happy customer base vs. just angering everyone that deals with your products to the point they make sure others don’t make the mistake of buying them.

You know, I have several computers, and they all support any OS I want to put there, as well they should, if you can’t fix the damaged BIOS you put there intentionally, can you at least put a big thing on the site that says no LInux support so people won’t make the mistake of buying your stuff?

Your DSDT table looks like it was written by a first year computer science student, it is scary, I will not just shut up and go away until I feel like I’ve been done right, this can end up on Digg, Slashdot, filed with the FTC that you are passing bad ACPI data on to Linux specifically.

I saw you targeting Linux with an intentionally broken ACPI table, you also have one for NT and ME, a separate one for newer NT variants like 2000, XP, Vista, and 2003/2008 Server, I’m sure that if you actually wrote to Intel ACPI specs instead of whatever quirks you can get away with for 8 versions of Windows and then go to the trouble of giving a botched table to Linux (How much *is* Microsoft paying you?) it would end up working a lot better, but I have this idea you don’t want it to."

More details and a guide to fix it is avaiable at http://darthchaosofrspw.wordpress.com/2008/07/26/trustworthy-computing-already-sabotaging-linux/