Slashdot Mirror


MoBo Manufacturer Foxconn Refuses To Support Linux

Noodlenose notes a thread up on the Ubuntu forums, where a user is questioning the practices of hardware manufacturer Foxconn. The user describes how his new Foxconn motherboard caused his Linux install to freeze and fire off weird kernel errors. He disassembles the BIOS and concludes that a faulty DSDT table is responsible for the errors. Even though the user makes Foxconn aware of the problem, they refuse to correct it, as 'it doesn't support Linux' and is only 'Microsoft certified.' The user speculates darkly on Foxconn's motives. Read the forum, read the code, and come to your own conclusions. "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 Windows 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.' The worst part is Foxconn's insistence that the product is ACPI compliant because their tables passed to Windows work, and that Microsoft gave the the magic WHQL certification."

23 of 696 comments (clear)

  1. Workaround by eltoyoboyo · · Score: 5, Informative

    It appears that within an hour there was a workaround posted on the same forum.

    --
    Have you Meta Moderated t
  2. Quick Fix by slashflood · · Score: 4, Informative

    The title of this trick is misleading. It should solve those problems by pretending to be Windows to the BIOS.

    1. Re:Quick Fix by Anonymous Coward · · Score: 4, Informative

      Read the full thread. It has errors in the windows acpi list that crash freebsd and linux as well.

    2. Re:Quick Fix by Anonymous Coward · · Score: 4, Informative

      Quoted from a link in the above:

      Bill Gates on Making ACPI Not Work with Linux (in 1999):

      One thing I find myself wondering about is whether we shouldnâ(TM)t try and make the "ACPI" extensions somehow Windows specific.

      It seems unfortunate if we do this work and get our partners to do the work and the result is that Linux works great without having to do the work.

      Maybe there is no way to avoid this problem but it does bother me.

      Maybe we couid define the APIs so that they work well with NT and not the others even if they are open.

      Or maybe we could patent something related to this.

  3. Re:An the solution is.... by Kamokazi · · Score: 5, Informative

    Exactly. Vote for Linux support with your money. The problem is, there aren't nearly enough Linux users to make a dent they will notice. If it makes you feel any better, I bought a (crappy) Foxconn board once and won't be buying one again.

    --
    As our way of thanking you for your positive contributions to Slashdot, you are eligible to disable Slashdot 2.0.
  4. Re:So what? by Anonymous Coward · · Score: 5, Informative

    The trouble here isn't that it doesn't support Linux, it's that the motherboard appears to be actively sabotaging Linux. That's a really weird thing to do and deserves investigation.

  5. Re:ONE user reporting "weird kernel errors" by GerardAtJob · · Score: 4, Informative

    Check on google.... LOTS of troubles with Foxconn for Linux Users... it's not only 1 user... but only 1 of them took the time to decompile the BIOS.

    --
    I can't call that English ;-)
  6. Re:So? by Buzz_Light · · Score: 5, Informative

    The point is that they advertised that they are ACPI compatible when they are not. And no, "it works on Windows" is not enough to claim ACPI compatibility.

  7. The article reposted - minus some code:- by Anonymous Coward · · Score: 5, Informative

    Here is most of the original article.
    The pesky junk filter meant I had to snip some of the code out - sorry.
    Posting AC for the usual reason(s).

    Foxconn deliberately sabotaging their BIOS to destroy Linux ACPI
    Edit: Please tell Foxconn what you think of their behavior:

    http://www.foxconnchannel.com/support/online.aspx

    You need to put in an email, and then it will bring up a form, choose Complain/Suggest.

    Edit: Welcome Digg, Reddit, and Slashdot.

    http://digg.com/linux_unix/Foxconn_d..._destroy_Linux
    http://www.reddit.com/comments/6tcv8...their_bios_to/
    (Will add Slashdot when I know the final URL)
    ------------
    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.

    -----
    How to fix:

    Get Intel's BIOS ACPI source compiler:

    sudo apt-get install iasl

    Dump your DSDT table:

    sudo cat /sys/firmware/acpi/tables/DSDT > dsdt.dat

    Disassemble it:

    iasl -d dsdt.dat

    Open it in Gedit:

    gedit dsdt.dsl

    Fix Foxconn sabotage:

    Find, the section that starts out with

    Code:

    If (_OSI ("Windows 2000"))
    {
    Store (0x04, OSVR)
    }

    Go down til you get to the first

    Code:

    }
    Else
    {

    Past that you should see Linux alongside Windows NT, which is above another Else that leads to Windows Me.

    Should look like:

    Code:

    If (MCTH (_OS, "Linux"))

    {
    Store (0x3, OSVR)
    }

    Change it to:
    Code:

    If (_OSI ("Linux"))
    {
    Store (Zero, OSVR)
    }

    Copy the section, and remove it and the other characters (CAREFULLY PRESERVING SYNTAX!!!!)

    Then move the Linux section to right underneath Windows 2006 section.

    _Code removed to get past junk filter_

    So there you have it!

  8. Re:Yay tinfoil hats! by FauxPasIII · · Score: 4, Informative

    > So let me get this straight. Some small motherboard manufacturer has flawed ACPI tables and
    > refuses to fix them, therefore they MUST out to sabotage Linux?

    Nope. Let's get you straightened out.

    The BIOS provides two sets of ACPI tables; one good, working and one which isn't even intended to work. It checks what OS string the kernel hands it when it boots. If Windows, it sends the good tables. If Linux, it sends the deliberately faulty ones.

    The more you know!

    --
    25% Funny, 25% Insightful, 25% Informative, 25% Troll
  9. Re:Something I'm missing... by pieleric · · Score: 5, Informative

    Because the OS's have bugs in their ACPI implementations. So the BIOS provides a special version of function with a workaround for the bug in case it detects the specific OS version.

    Let's note this is valid only for proprietary OS's (aka Windows). For F/OSS kernels, the BIOS writer can simply report a bug on non-ACPI compliance, and it's fixed soon after directly in the kernel.

  10. Re:An the solution is.... by Nazlfrag · · Score: 5, Informative

    no need to disassemble the BIOS, your time is worth more than that.

    No self-respecting hacker considers reverse engineering BIOSes a waste of time. Try more along the lines of socialising, bathing, that sort of thing.

  11. This is not an isolated problem... by God+of+Lemmings · · Score: 4, Informative

    Poorly designed, or incomplete bios implementations are not the exception. They are in fact a fairly common occurrence. The DSDT table being missing, incomplete, or just wrong is so common in fact, that a number of solutions exist.

    See here: http://acpi.sourceforge.net/dsdt/index.php

    --
    Non sequitur: Your facts are uncoordinated.
  12. Re:Fine. Won't use them for Windows either. by Machtyn · · Score: 5, Informative

    This is important and I want to expound on it. I work in a Microsoft shop. Really, it's IIS this, MSSQL that, .NET for all dev, and we've all got the latest and greatest Office suite. Strangely, we've heard rumors that our software is going to be tested Vista, but QA hasn't received a Vista machine, yet. With all of that out of the way, I use Linux in various ways on many of our test computers. Mostly, it is just boot CDs, such as Partimage Is Not Ghost and Ultimate Boot CD. So, just because hardware is meant for Windows doesn't mean that it will never see another OS. Hardware interoperability on the software level is necessary.

    On another note, I've encountered Foxconn boards in the past... usually broken and being replaced.

  13. Re:Don't Buy Foxconn... by Yaddoshi · · Score: 5, Informative

    I'm a computer repair technician - if you're in this business you know that Foxconn is a low-cost sub-quality motherboard manufacturer, and their product is unreliable at best. Regardless of what operating system you prefer to use, don't buy Foxconn, unless you like throwing your hard earned money away on something that will probably fail in roughly two years. Now that I said that I'm sure there is going to be someone who thinks that Foxconn is great because they've never had a problem with their one Foxconn product. That's great if you've had success - but I've seen more systems fail with their products than other brands.

  14. Re:off-brand crap: -1, Duh by Anonymous Coward · · Score: 5, Informative

    Off-brand? They don't sell much under their own branding, but Foxconn is one of the biggest computer components manufacturer in the world. Lots of HP and Dells I've seen have Foxconn boards.

  15. Re:Foxconn? by Anonymous Coward · · Score: 4, Informative

    > Maybe I just don't get out much, but I've never heard of that manufacturer.

    Probably because they don't sell much under their own label: (Wikipedia entry)

    Foxconn is the trade name of the Taiwanese firm Hon Hai Precision Industry Co. Foxconn is one of the largest manufacturers of electronics and computer components worldwide, and mainly manufactures on contract to other companies. Although sometimes referred to as an original equipment manufacturer, Foxconn would be more accurately described as an original design manufacturer. Among other things, Foxconn produces the Mac mini, the iPod and the iPhone for Apple Computer; Intel-branded motherboards for Intel Corp.; various orders for American computer retailers Dell, Inc. and Hewlett Packard; the PlayStation 2 and PlayStation 3 for Sony; the Wii for Nintendo;the Xbox 360 for Microsoft, cell phones for Motorola, and Amazon Kindle.

  16. Re:An the solution is.... by Enderandrew · · Score: 4, Informative

    When I worked for HP I discovered that most of the motherboards, laptops and such that HP sold were actually made by Foxconn. I wouldn't be completely shocked if HP server motherboards were Foxconn since I don't believe HP makes any of their own.

    --
    http://blindscribblings.com - Tasty pop-culture in conceptual fashion.
  17. Re:Par for the course. by quantum+bit · · Score: 4, Informative

    These errors only mean that he's stuck using APM in place of ACPI.

    Good luck using things like oh, multiple cores, without ACPI. A lot of boards I've seen recently don't ship working MPS info, and half the time they don't even have correct routing in $PIR.

  18. Re:Yay tinfoil hats! by quantum+bit · · Score: 5, Informative

    No, it allegedly has a bunch of checks for Linux strewn about in random places which then give bad data upon detecting Linux.

    The only person claiming that is the original poster in that thread, whose correspondence with Foxconn and the (!) FTC is instantly accusatory and full of assumption. It's almost as if he started with the premise that Foxconn was actively breaking Linux to be anticompetitive and looked for evidence to support it.

    I'd have to see a full DSDT dump to be sure, but from the excerpts posted it looks like "active checking" is just matching against _OS instead of using _OSI, which is a mistake a naive BIOS writer unfamiliar with the spec could easily make. It doesn't help the issue that Linux lies about its identity in _OSI.

    The "redundant checks" seem to be present for the Windows code path too, and look more to me like bad spaghetti code copied and pasted multiple places.

    I also take issue with

    Find and replace all seven occurences of Acquire (MUTE, 0x03E8) and replace with Acquire (MUTE, 0xFFFF), it appears they're trying to crash the kernel by locking a region of memory that shouldn't be locked, but without access to their source code comments, I can only speculate, this tells it to lock a memory address that is always reserved instead. ;)

    It's obviously not trying to crash the kernel, that's not how Acquire() works. The second parameter is a timeout, not a memory address. 3E8 hex = 1000 decimal. The BIOS writer was trying to acquire a mutex with a 1 second timeout.

    Changing it to 0xFFFF makes it wait forever, which could potentially cause worse problems as execution will get stuck if the mutex is already held. Multithreaded synchronization is a very tricky problem, and I'm not surprised to see they got it wrong. Without examining the code it's impossible to say what effect TheAlmightyCthulu's changes have, if they're correct or if they merely mask the problem.

    Saying they're trying to deliberately crash the kernel is a bit ridiculous.

    But then again I'm a BSD guy, so I don't start out with a chip on my shoulder and assume everyone's out to get me. Have seen a ton of shoddy BIOSes in my time though.

  19. Re:So what? by leoxx · · Score: 5, Informative

    For reference, here is Bill Gates' email asking how they can make ACPI incompatible with Linux.

  20. Re:An the solution is.... by Pharmboy · · Score: 4, Informative

    You can buy computers pre-installed with Linux from Dell and Walmart. Hard to get "bigger" or more mainstream than that. Not very tricky at all, since you don't have to do the actual installing yourself.

    --
    Tequila: It's not just for breakfast anymore!
  21. Simple, really by dedazo · · Score: 4, Informative

    His argument that ACPI was "sabotaged" has been debunked again and again, and even if true in the context that he claims it was, it would have no bearing whatsoever in what a motherboard vendor does or doesn't do with it, to the detriment of Linux or otherwise. This problem is a misleading entry in a value table, which when corrected leads to Linux power management working again when hacked. That alone pretty much invalidates his sabotage claim.

    Again, even if true, his link would have absolutely nothing to do whatsoever with the topic at hand.

    Offtopic would have probably been more appropiate, but troll is OK. Maybe that will stop him from using his incorrect and misleading journal entries to support his arguments. There are even comments on that JE that disprove his so-called theory.

    Or maybe it was the links to Roy Schestowitz's annoying attack blog, who is another FUDster and Digg's equivalent to twitter.

    Or maybe he's being modded down for organizing shitstorms like these with his sockpuppets.

    Either way...

    --
    Web2.0: I love when people Flickr my cuil and digg my boingboing until my google is reddit and I start to yahoo