台电T50+ 可以在 Arch Linux 下正常识别

前天去买了个台电T50+(8G),但一直没时间用。今天终于想起来用了,打算放些歌到上面去听。

按照说明书,传文件的时候要先开机,再插入USB接线……结果居然没反应,只能用作充电,在我的 Arch 电脑上。 /dev 下面也没添加什么新设备。

在 Windows 下面就表现很正常。但 Linux 下怎么也用不了,就没有这个可移动存储设备存在,谈何挂载?

后来,我也算想明白了:台电T50+ 引入了“微软音效”,而一切跟 “微软” 有关系的产品,都天然的歧视 Linux……但愿我是错的。

不知道有人能往台电T50+上复制文件的吗,在 Linux 下?

----------------------------------

没想到,最后还真是 USB 口电压不够,真是郁闷 :(
Intel 845 主板的悲哀啊。

换电脑后,能被 hal 正常识别,名称是:Teclast Digital Player

多谢大家热心帮助。

作者: cwjiof   发布时间: 2008-11-26

你可试验下,如果真是台电的问题可以和台电客服交涉。
前些日子的foxconn事件:
引用:
本文讲述的是一块主板在富士康和 Linux 用户之间引发的恩怨。这段故事在简体中文世界流传并不广泛,故作此“第二起跑线”专题,跟大家讲述一些在鲜为人知的角落发生的鲜为人知的事实。

谨以此专题向那些站在第二起跑线上和微软竞争的选手们致敬!

英文水平有限,翻译不周之处万望赐教。

---
原帖地址
---

A possible bug in Foxconn boards BIOS affects Linux ACPI
富士康主板的疑似问题 BIOS 影响了 Linux ACPI 功能

Update: I just got off the phone with Foxconn, they called me from China (1 AM in Indiana, heh) and were asking if I would test an improved version of their BIOS based partially on the modifications I've made to mine, hopefully this all blows over, and regardless of who's fault it is or isn't, we can just go back to using our computers with full functionality.
进展:我刚刚接了富士康从中国打来的电话(印第安纳州当地时间凌晨 1 点,呵呵)。他们问我是否愿意测试一下改进版的 BIOS(部分根据我的修改而来)。希望这次事件就此平息,不管是与不是谁的责任,我们终于能够全功能地享受自己的电脑了。

Thanks to the community for helping me get the message to Foxconn.
感谢社区(译注:应该指的是英文 ubuntu 社区),帮我将信息传递给富士康。

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.
需要输入 email 地址,然后你会收到一份表格,选投诉/建议。

FOXCONN PHONE NUMBERS and LOCATIONS OF US-Based facilities
富士康美国的电话和地址

http://maps.google.com/maps?q=foxconn

Edit: Welcome Digg, Reddit, and Slashdot.
更新:欢迎到 Digg,Reddit 和 Slashdot 上来讨论此事。

http://digg.com/linux_unix/Foxconn_d..._destroy_Linux
http://www.reddit.com/comments/6tcv8...their_bios_to/
http://linux.slashdot.org/article.pl.../07/25/1150218

Who is Foxconn and why must we get the message to them?
富士康是谁以及我们为什么要把这些信息告诉它?

I've heard a lot of people ask, "Who the hell is Foxconn", if you use a PC, there's a good chance you have one of their boards, even if it's branded as MSI or some other brand, if you use a Nintendo Wii, XBOX 360, or Playstation 3, Foxconn made that motherboard, this isn't some little dodgy hardware maker with no name that we can afford to be quiet about.
很多人问我“富士康是 TM 谁呀”,如果你有 PC,那么很有可能你的主板就是富士康产的,无论这块主板贴的是微星还是其他什么牌子。如果你有任天堂 Wii,有 XBOX 360 或者 Playstation 3,那么它们的主板也是富士康产的。这不是个我们可以忽略不计的虾米山寨厂。
------------
I have disassembled my BIOS to have a look around, and while I won't post all the results here, I'll tell you what I did find.
我反编译我的 BIOS 看了看,不全把结果贴在这,我也能告诉你我发现了什么。

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.
他们有不同的(译注:DSDT)表,一套是给 Windows XP 和 Vista 准备的,一套给 2000,一套给 NT、Me、95、98 等,以及唯一有问题的一套,给 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.
这套给 Linux 的烂表不符合主板的 ACPI 实现,导致了诡异的内核错误,奇怪的系统死锁,无法挂起(suspend)或休眠(hibernate)和其他问题。通过下面的修改,我已经解决了挂起之后重启崩溃的问题。反编译任何程序的恐怖之处在于得不到任何注释,所以很难分辨哪段代码具体是什么作用。但是富士康的烂 BIOS 不能逼我去买套 Vista 来解决问题,这吓不倒我。
-----
How to fix:
如何修复:

(译注:此处代码颇多,故略去,需要技术细节的请参见原帖)
-----
Edit: Complained to the Federal Trade Commission
更新:给公平交易委员会的投诉

http://www.ftc.gov

Foxconn
458 E. Lambert Road Fullerton
Fullerton, CA
92835

FOXCONN PHONE NUMBER: 714-871-9968

Company sold me a computer motherboard, model G33M-S, claiming that it was compliant with ACPI versions 1.0, 2.0, and 3.0.
富士康公司出售给我的型号为 G33M-S 的电脑主板,声称兼容 ACPI 1.0、2.0 和 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.
Linux 和 FreeBSD 因其 ACPI 配置而无法工作。通过使用反编译工具,我发现它会特别侦测 Linux,将其指向一套有问题的 DSDT 表,并因此使其硬件支持失效。如果稍加修改,设置系统使用修改后的版本,让 Linux 获得跟 Windows 同样的 BIOS ACPI DSDT 表,Linux 的 ACPI 支持问题全无。我认为这触犯了微软和解协议(译注:关于 Microsoft settlement,笔者认为指的是 2002 年微软公司与美国司法部和九个州就反垄断案达成的和解协议)中的反拖拉斯条款。我更有理由相信,为了让主板在非 Windows 平台上出现问题,微软对富士通进行了奖励。

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:
感谢致函公平交易委员会。您的投诉已经被录入 Consumer Sentinel,一套向全世界人民和执法机构公开的安全的在线数据库系统。您的投诉编号为:
19642372

Edit: Full correspondence with Foxconn
更新:和富士康的全部往来信件
(译注:后文中 Me、Ryan 都指原作者,Foxconn 指富士康,因多次出现,后文不再一一对译)

Me:

ACPI issues, cannot reboot after having used suspend
ACPI 问题,挂起(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.
启动时系统日志如上。一次冷启动(译注:此为笔者理解的 session)之中挂起之后也无法重启,机器死锁,扬声器长鸣。

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.
呃,挂起到内存(suspend to RAM)的话,拆掉内存条就无法启动到 Linux 了啊,syslogd 也没机会写 /var/log/messages,更不用说读到 ACPI 错误以及其他任何系统日志。

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.
如果需要完整的 /var/log/messages,我可以奉上。

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?
本主板仅通过 Vista 认证而非 Linux 认证(链接如下)。所以请使用 Vista 进行测试。问题是否同样存在于 Vista 或者 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.
好吧,买这板子是因为之前一块 Intel 板子(带完整 ACPI 支持的 945G)坏了,Vista 从来不在考虑之列,我也不准备买一套来试试。

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.
符合 ACPI 规范是我购买此主板的原因,但是貌似 BIOS 有问题导致标准 ACPI 失效。恕我已向 kernel.org、Red Hat 和 Canonical 的 Ubuntu 报告了此问题,并将内核日志贴在了博客上,这些页面在用 Google 搜“Foxconn G33M”、“Foxconn G33M-s”、“Foxconn Linux”以及其他可能的关键字组合的时候都排在前几项。但愿这样能够提醒那些持币待购的人。也但愿 kernel.org 能够在 2.6.26 版内核避开你们的问题 BIOS。据我所知,对于仅对 Windows 写的烂 BIOS,内核还是很宽容的。

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.
这些页面已经吸引了一定点击量。所以,对于你们来说,长远来看,提供有问题的 BIOS 只是在伤害自己。因为像我这样的人面对烂产品的时候嘴从来不闲着。

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.
如前所述,此型号主板既不支持,也未经过任何 Linux 认证。

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.
好好学学怎么写 BIOS 吧,不要净卖一些假装符合规范的硬件。

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.
我在调试你们的 AMI BIOS,其中 ACPI 支持部分距离遵守标准还远着呢。我已经将调试数据提交到 Canonical 的 Launchpad Bug跟踪系统,以便于人们能想办法避开你们 BIOS 里面那些有问题的 ACPI 表。我很希望你们能够参与到其中来,提供解决办法而不是问题本身。疏远客户,告诉他们去买套 Windows Vista 不是服务。你们的产品声称 ACPI 兼容但实际上不是,因此你们已经涉嫌虚假广告。

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.
我希望您发布一个不依赖于 Windows 硬件错误体系(译注:WHEA,详见此处)的(译注:BIOS)更新版本出来。但是决定权在您手上。

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.
您认为这块主板不兼容 ACPI 是不对的。如果它不兼容 ACPI,那么它不会通过微软的 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.
如前所述,此型号主板既不支持,也未通过任何 Linux 认证。

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.
我找到了你们 BIOS 里面特别指定给 Linux 的 DSDT 表。把这个表改成特别指定给 Vista 的就能解决之前 Linux 下的所有问题。

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.
所以,尽管我同意(也不诧异)你们取得了某种微软认证,但是这并不能说明你们的主板兼容 ACPI,而只是 Windows 更长于应对那些微软量身认证的诡异之处而已。

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.
你们的 BIOS 确实非常次。恕我已将所有 DSDT 查询表的谬误以及一些补救办法公开,这样已经购买了你们产品的人才不至于束手无策。而且,现在同时搜 Foxconn 和 Linux 的话,不看到这些真相已经很难很难——你们的主板不够行。

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?
要知道,我有好几台电脑。它们全都支持、且应该支持任何我想要的操作系统。如果你不能修复你刻意制造的问题 BIOS,你能否至少能在网站上写清楚“不支持 Linux”几个大字,这样人们就不会再因类似错误而买你们的东西?

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.
你们的 DSDT 表看上去就像个一年级计算机本科生的作品。这太恐怖了。只要我认为我做的没错,我不会就这样安静的走开,这件事会出现在 Digg 上,Slashdot 上,以及公平交易委员会(FTC)的投诉里——你们在刻意给 Linux 传递有问题的 ACPI 数据。

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.
我知道,你们给 Linux 故意准备了一套有问题的 ACPI 表。你们同时另有一套给 NT 和 ME,一套给更新一点的 NT 家族,像 2000、XP、Vista 以及 2003/2008 Server。我敢肯定,如果你们真的按照 Intel ACPI 规范写代码,而不是什么乱七八糟手段都用上来迎合 8 个不同版本的 Windows 却丢给 Linux 一个烂表(微软塞了你多少钱?),结果会好很多很多。但是我感觉到你们不想这么做。

Last edited by TheAlmightyCthulhu; July 26th, 2008 at 12:55 PM.

(译注:这篇帖子在 ubuntu 英文论坛上得到了413 位用户的感谢,ubuntu 论坛的这个感谢系统挺有创意)

作者: kofshower   发布时间: 2008-11-26

dmesg 有何输出么?

作者: latteye   发布时间: 2008-11-26

其实我们应该组成一个联盟,只要有一点不支持Linux的硬件统统不买,再号召周围的朋友不买 ……再说就算不用 Linux 的用户为什么要买不兼容的产品呢?
我们没有什么损失,就不信他们还能忽视Linux群体的存在……

反正我在周围朋友推荐电脑,只要不兼容Linux的,即使朋友不用Linux,也通通秒杀,不管多少性价比

作者: wosmvp   发布时间: 2008-11-26

dmesg 没什么特别输出:

# dmesg | grep teclast

teclast 是台电产品的名字。

刚刚打电话去 台电 的技术部,他们先说,是我的 USB 电压不足(这个问题确实比较常见,但我肯定不会犯),在我不断追问下终于承认,就没在 Linux 下测试过。

作者: cwjiof   发布时间: 2008-11-26

直接看 dmesg 最后追加的日志就行了,我觉得设备名未必包含 teclast 字样

作者: lymanrb   发布时间: 2008-11-26

我的X19 可以使用的


引用:
作者: cwjiof
前天去买了个台电T50+(8G),但一直没时间用。今天终于想起来用了,打算放些歌到上面去听。

按照说明书,传文件的时候要先开机,再插入USB接线……结果居然没反应,只能用作充电,在我的 Arch 电脑上。 /dev 下面也没添加什么新设备。

在 Windows 下面就表现很正常。但 Linux 下怎么也用不了,就没有这个可移动存储设备存在,谈何挂载?

后来,我也算想明白了:台电T50+ 引入了“微软音效”,而一切跟 “微软” 有关系的产品,都天然的歧视 Linux……但愿我是错的。

不知道有人能往台电T50+上复制文件的吗,在 Linux 下?

作者: tjpm   发布时间: 2008-11-26

我的台电M25也是这种情况!

作者: oydl82   发布时间: 2008-11-26

插上后,dmesg |tail,看有无反应,还有其他u盘可以识别么,是否开启autodev功能

作者: jarryson   发布时间: 2008-11-26

我的是台电X19和创新的ZEN Stone,均可在Linux下自动挂载。

作者: 狱卒   发布时间: 2008-11-26

引用:
作者: wosmvp
其实我们应该组成一个联盟,只要有一点不支持Linux的硬件统统不买,再号召周围的朋友不买 ……再说就算不用 Linux 的用户为什么要买不兼容的产品呢?
我们没有什么损失,就不信他们还能忽视Linux群体的存在……

反正我在周围朋友推荐电脑,只要不兼容Linux的,即使朋友不用Linux,也通通秒杀,不管多少性价比
这个主意不错,虽然我自己购买电脑的机会不会很多,但周围亲友甚至公司里购买电脑时大都还是会寻求建议的,很明显在这类产品不能出现在提出的建议中,因为它存在潜在的问题

作者: OBCattle   发布时间: 2008-11-26

引用:
作者: lymanrb
直接看 dmesg 最后追加的日志就行了,我觉得设备名未必包含 teclast 字样
确实是这样。不过它含有的是 “ Teclast ”,真没想到!

追加的日志如下所示:
代码:
usb 5-6: new high speed USB device using ehci_hcd and address 4
usb 5-6: configuration #1 chosen from 1 choice
scsi6 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 4
usb-storage: waiting for device to settle before scanning
scsi 6:0:0:0: Direct-Access Teclast Digital Player 1.00 PQ: 0 ANSI: 0
sd 6:0:0:0: [sdb] 15951872 512-byte hardware sectors (8167 MB)
sd 6:0:0:0: [sdb] Assuming Write Enabled
sd 6:0:0:0: [sdb] Assuming drive cache: write through
usb 5-6: USB disconnect, address 4
sd 6:0:0:0: [sdb] READ CAPACITY failed
sd 6:0:0:0: [sdb] Result: hostbyte=0x01 driverbyte=0x00
sd 6:0:0:0: [sdb] Sense not available.
sd 6:0:0:0: [sdb] Assuming Write Enabled
sd 6:0:0:0: [sdb] Assuming drive cache: write through
sd 6:0:0:0: [sdb] Attached SCSI removable disk
sd 6:0:0:0: Attached scsi generic sg3 type 0
usb-storage: device scan complete
可是呢,怎么看怎么像是 USB 口的电压不够,没带动 :(。于是把 T50+ 接到朋友新买的 Laptop (也装的是 Arch)上去试试,结果……成功了!

原来还是冤枉人家了,呵呵。

作者: cwjiof   发布时间: 2008-11-27

Linux 本来就是微量用户群,你硬逼着问人家有没有在 Linux 下测试。其实是很无聊的事情。
换个极端的说法,你去问问人家有没有在HP-UNIX下测试?一个道理。

消费级产品,就是针对的99%的消费用户。无可厚非!

作者: latteye   发布时间: 2008-11-27

我的m25在虚拟的xp下能识别。

作者: oydl82   发布时间: 2008-11-27

引用:
作者: oydl82
我的m25在虚拟的xp下能识别。
没错,同一个 USB 接口,如果是在 Windows 系统下用(不是虚拟的),就能正常识别。

这又说明了什么呢?

作者: cwjiof   发布时间: 2008-11-27

引用:
作者: cwjiof
没错,同一个 USB 接口,如果是在 Windows 系统下用(不是虚拟的),就能正常识别。

这又说明了什么呢?
这说明他们在XP下做了足够的测试。

作者: 狱卒   发布时间: 2008-11-27

引用:
作者: 狱卒
这说明他们在XP下做了足够的测试。
的确,我是同一个usb接口,不用实际的XP系统都能正确识别!

作者: oydl82   发布时间: 2008-11-27

今天插上我的M25又能正常识别了!太好了!

作者: oydl82   发布时间: 2008-11-30