記憶卡的support,一是看讀卡機本身,一是看host controller。記憶卡包括sd/mmc/xD/ms/mspro等,二分法來看,windows全部都support,而linux則要排列組合一下,才有機會。問題出在xD跟MS/MS Pro,這是proprietary的driver。製造商不願意出driver或是把spec公開,就只能依賴反向工程什麼的。

Host controller大部份是走pci bus,所以lspci一下,就可以知道有哪些host controller,如

0000:03:01.2 Mass storage controller: Texas Instruments 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)
0000:03:01.3 SD Host controller: Texas Instruments PCIxx12 SDA Standard Compliant SD Host Controller

表示有兩個host controller,如果是在windows,大概就都能讀到所有的記憶卡。如果只有一個SD/MMC,那當然就無法支援MS/MSPRO/xD了。

SD/MMC

就SD/MMC的部份,linux都是支援的,確認一下sdhc/sdhc-pci這兩個host controller 的modules掛起來就沒問題。有問題的話看一下dmesg有沒有什麼錯誤,比如說

> > mmc0: Unexpected interrupt 0x02000000.
> > sdhci: ============== REGISTER DUMP ==============
> > sdhci: Sys addr: 0x00000000 | Version: 0x00000401
> > sdhci: Blk size: 0x00007008 | Blk cnt: 0x00000001
> > sdhci: Argument: 0x00000000 | Trn mode: 0x00000013
> > sdhci: Present: 0x01f70202 | Host ctl: 0x00000011
> > sdhci: Power: 0x0000000f | Blk gap: 0x00000000
> > sdhci: Wake-up: 0x00000000 | Clock: 0x00004007
> > sdhci: Timeout: 0x0000000a | Int stat: 0x02008008
> > sdhci: Int enab: 0x02ff00cb | Sig enab: 0x02ff00cb
> > sdhci: AC12 err: 0x00000000 | Slot int: 0x00000001
> > sdhci: Caps: 0x21e832b2 | Max curr: 0x00000040
> > sdhci: ADMA Err: 0x00000001 | ADMA Ptr: 0x020003b4
> > sdhci: ===========================================

這表示ADMA (advance DMA)有error,ADMA在目前host controller有些issue,網上也有人討論:http://launchpadlibrarian.net/53259856/latitude-e6510-cardreader.conf
會有一些workaround (上例是將ADMA直接關掉)。基本上SD/MMC都是可以支援。

MS/MS Pro
而MS/MS Pro/xD的部分比較複雜。host controller當然要support,再來是讀卡機也有dependence。直覺的從kernel config來看只支援2種讀卡機:TI Flash Media跟JMicron JMB38X。memstick

在TI Flash Media測試,這樣只能支援到MS Pro。加上此Patch後,就可以讀到MS。
其他讀卡機的支援也有人在討論 (應該是比較普遍的種類),
請見https://bugs.launchpad.net/ubuntu/+source/linux/+bug/238208。
看起來是對Ricoh R5C592做的,也會build出r592.ko,但沒這個讀卡機,有機會再測。

JMicron的讀卡機應該也是可以讀到(沒測過)。



xD
xD的support應該是最差的了,見下述,轉貼自:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/202490/+activity

2010-04-15
At present, and perhaps forever, xD support on linux is extremely limited. This issue is a request to have xD support added for a specific, and somewhat popular, chipset. Please do not add "me, too"
items. We know that it doesn't work. If you want, please add yourself as a subscriber, and click on link to indicate that "This bug effects me, too" In the meantime, there are two xD readers known to work with
linux, so if you simply must have xD support, those would be your options.



至於是哪兩種等查到再來update。


其他資訊:

Smart Card介紹



以下是之前找到的資料,參考就好:

 

1. linux kernel對記憶卡是cardreader-specific,某些cardreader可支援 memstick (ms)/memstick pro (msp),某些可支援xd。
    ms: 確定支援的只有msp duo。建議拿所有的卡來試試,預期是除了msp duo 都認不到。
    支援msp==>http://www.mail-archive.com/linux-kernel@vger.kernel.org/msg251442.html
    ==>https://bugs.launchpad.net/ubuntu/+source/linux-ubuntu-modules-2.6.22/+bug/159951
    ==>https://bugs.launchpad.net/ubuntu/+source/linux/+bug/222557   

    ms spec==>http://zh.wikipedia.org/zh-tw/Memory_Stick
    ==>https://bugs.launchpad.net/ubuntu/+source/linux/+bug/238208

    xd:kernel本身沒有driver,但特定廠牌的cardreader則有人聲稱可讀到,如 以下這台 dazzle
    請參考==>http://en.gentoo-wiki.com/wiki/HP_Compaq_nx9420
    kernel內建的alauda為Olympus MAUSB-10/Fuji DPC-R1 support card reader的driver,與TI對xd的支援無關。xd 卡的支援跟讀卡機有關。
    xd卡介紹http://www.xfastest.com/viewthread.php?tid=3531

    sd/mmc:則是通通支援,需要sdhci interface,這樣sd/mmc的卡應該就都可 以mount 起來。

2. ms的部分需這個module <M> Sony MemoryStick card support (EXPERIMENTAL)

3. tifm (TI的Flash Media)的最新release:  tifm-0.82007-02-22 14:00,看的出來沒人在maintain了。

kezeodsnx 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • 訪客
  • 這好像不是smart card,只是一般的memory card吧?!
  • 現在smartcard多指晶片卡,更正為記憶卡

    kezeodsnx 於 2011/03/30 11:26 回覆