New version

Version has been released fixing a serious bug
please delete older versions and update to avoid problems


T3 progress

more progress made with the T|T3 controller (may whoever designed it burn in hell forever). Now I have it reliably talking to me until I ask the card for it's unique ID. This is major progress!



PowerSDHC has been released in full. Price is set at 20.95 USD and all beta keys should work. All trial keys have been reset so you can get one now to try the release build. This release supports:>
  • Tungsten T|C
  • Tungsten E2
  • Tungsten T|5
  • LifeDrive
  • Palm TX
  • Zire 31
  • Zire 72
Support for other devices might be announced at a later time.

To help you choose an SDHC card for your new driver here are some links to good prices.

NOTE: These are the upfront prices. I never had any luck with rebates, so I always pass those deals by.

SDHC cards are rated on speed by "class". There are 4 classes: 0, 2, 4, 6. Class 0 has no guarantees on speed. Class 2 guarantees 2MB/s write speed, class 4 guarantees 4MB/s write speed and class 6 guarantees 8 MB/s write speed. Almost nobody makes class 0 and class 2 cards (which makes sense since nobody would want them), but here are some deals on class 4 and 6 cards. Also are listed some card X cards. These are theoretically class 6, but have been observed to perform better than 6 MB/s. NOTE: There is no official class X classification. This is what I label cards that perform better than class 6.

4 GB8 GB16 GB32 GB
class 4$18.42$20.95$45.25$135.59
class 6$8.95$14.45$34.75$169.95
class X$21.83$35.27$99.99$299.99


T|T3 update

I GOT the confidential docs on the SD chip in T|T3 and work has been resumes on supporting it.

Let the rejoicing begin...



I have paid the company behind T3's controller, and am awaiting the docs needed to support it. Good news for T|T3 owners...



Next Steps

-T3 support
-Zodiac Support
-iQue support
-SDIO support



Beta 1.0.9 was jsut released. This adds official T|C support and full read-write MMCplus support. Now MMCplus cards read, write, and on devices like TX, LD, T5, and Zire 72 are 3 - 5 times faster than they were with Palm's driver (on E2, Z31, and TC it is just 1.5 - 2 times faster). See previous blog entry to speed results.

Also fixed is a small UI bug where PowerSDHC splash screen left the DIA on 320x480 devices in an indeterminate state.



Version 1.0.9 beta is being internally tested. It finally adds full support for MMCplus memory cards at fill speed and 4-bit mode. This means that new MMC cards are much faster? How much? Here is a comparison of the same card with original and my driver.


Beta 1.0.5

Beta 1.0.5 has been released which starts after reset, and in general is more polished and nice.


Beta 1.0.2

PalmSDHC beta 1.0.2 has been released. It features bug fixes (enabling driver while no card inserted on TX and T5 now works well) as well as partition support (primary only - not extended). The app itself will not partition the card for you - that is up to you, but if you insert a partitioned card, it will gladly support up to four partitions. Download is on www.PalmPowerups.com and all users whose trial with previous beta has run out can now get a new trial key to try this beta too.



Beta is doing good, with version 1.0.1 having fixes all major user complaints. I am preparing 1.0.2 which should support partitioned cards.


Zodiac and iQue support close

it seems that i've fixed the major roadblocks for these devices and soon they will be supported too.


Beta Updated

PalmSDHC has been updated to version 1.0.1 fixing a few internal bugs. Update is free and to update delete driver, soft reset, and install new driver. Old keys will work so keep the key.


Beta available + summary

News via PalmPowerups:

BETA, The release version is coming later, and will cost $20 USD.

As you may be aware, most Palm devices that do not carry a "Treo" or "Centro" brand cannot read or write to the new SDHC cards. This leaves everyone owning such devices behind in terms of storage and costs. SD cards top out at 2GB, while SDHC cards are available at 32GB sizes already, and 16GB cards can be obtained for less than $80 USD.

Palm Inc has repeatedly refused to write an SDHC driver for their handhelds. This has long been regarded as a lost cause by most Palm owners. Luckily Palm Inc are not the only ones in power to help. PalmPowerups to the rescue! We've been hard at work creating an SDHC driver for your devices. It is very difficult and has been one of the most complex projects we've ever undertaken here. It is made harder yet since each individual device needs to be uniquely supported and programmed for.

Today we're glad to announce that for for a small set of devices the driver has entered beta testing. Due to huge demand to make the beta available to everyone, it has been decided that the beta will be available for purchase as well. It is more expensive than the final version will be, for reasons that are beyond the scope of this document. Internally we've been using it on our devices, and it works well, so we're reasonably confident that it will work for you too.

There are many benefits from this driver even if you do not have an SDHC card yet. For example with this driver the card access speed will grow very noticeably, and the card access will not shut off at low battery levels. And of course, now you have support for SDHC cards.

There are caveats of course. First, to use cards whose size is 4GB or over, your device needs to support the FAT32 filesystem. Only Palm LifeDrive and Palm TX ship with it included. All other devices will need to install a FAT32 driver. There is only one option for where to get one - Palm Inc. We here at PalmPowerups are currently investigating writing our own due to reasons mentioned later in this document. For now you may download our wrapper and installer for Palm's FAT32 driver here: [LINK]. All you need to do is install it to RAM and reset. Your device will now support FAT32. Please note that Palm's FAT32 driver is VERY inefficient and slow when mounting cards. Thus on slower devices it can take up to 30 seconds to recognize an inserted 32GB card. This delay goes down for smaller cards, and when we release out own FAT32 driver, it will go away. Also this delay is not present on LifeDrive and TX devices. Another caveat, which is well known to our customers who purchase PowerDrive, is that PalmOS cannot display card sizes over 4GB or free space over 4GB. This does not mean it cannot use them, just that the display of card size and free space will be wrong. This is usually just a cosmetic error, and will usually not cause errors or problems. We are investigating a possibility of releasing a patch to alleviate this problem, but there is no certainty on this yet.

Current beta supports the following devices:

  • Palm TX
  • LifeDrive
  • Tungsten T5
  • Tungsten E2
  • Zire 72
  • Zire 31
The following devices are next on the roadmap and should be supported soon:
  • Tungsten E
  • Tungsten C
  • Tapwave Zodiac
  • Tungsten T3

The process to get a trial version is simple. First you need to register a username on www.PalmPowerups.com. Then you need to download the trial version PRC file. To do this, click the "download" link under the PalmSDHC icon on the front page. Now run it. It will give you your device ID, which will be something like 2134CD6E. Write this down. Your device will now reset; this is normal. Now click on the <GET A TRIAL KEY> link on the top of this article, and fill in the required data. Please be very careful to fill it in correctly. when you do this, you will be given a link to download a keyfile. Download it and save it to a safe location, you will not be able to re-download it. You now need ot install it to RAM of your device. Do so, and run PalmSDHC again. It will blink and return to the launcher screen. The SDHC driver is now active. Your device will get your attention and tell you about the trial expiration and limitations. You will have unrestricted access for 3-4 days, after which the driver will become read-only and speed-limited to a very low speed of 50 KB/s. At this point you may delete it and soft reset to remove it, or purchase it to get a new key file, that will not expire. To do so, click 'buy" under the PalmSDHC icon on the front page and follow the usual PalmPowerups purchasing process.

This is a beta version, so please report any bugs and problems you may have with it. Of course when the release version comes out, you will be entitled to the upgrade for free. The release version is coming later, and will cost $20 USD. Also note that for the beta, the driver must stay in ram, and you must run it after a soft reset to regain SDHC functionality. This is a precaution against driver conflicts.

As always we're not responsible for any data loss or any damage that may occur as result of using our software and all efforts are made to ensure it does not happen. Please read this document carefully before proceeding.



I get a lot of emails daily from people, with content resembling this:
Can i please buy the driver now? I know it's in beta, but i'll pay any money to have it now. Please please please?
For those devices that I personally have (TX,T5,LD,Zire72,TE2) I use the driver daily and it works, so I decided to give these people what they want. I will allow purchasing of the beta driver for those devices only, at a higher price. If you choose to do so, there are four main things to know:
  1. When the final version comes you, you get the free upgrade of course
  2. The final price will be around $20, thus you are paying a premium (whose size is to be determined) over it for getting it "right now"
  3. This is not the final version and may have bugs. I use it daily on all my devices, and it works, but of course no guarantees for you
  4. A trial version will be provided so that you may evaluate the driver. It will work for three days after which is will become read-only and limited to 50KB/s access to card.

More details of this (price, methods of purchase, etc) to follow. Please do not email me such letters anymore.

Responses to this idea are welcome in this thread


More Updates

  • T|C DAL had a few bugs. Some fixed, some pending, device chart has been updated
  • T|E2, T|C, and Zire31 AAL optimized and performance has increased 3x
  • The driver, unlike PalmOne's driver, will run till battery is 0%, and not shut off at 10%


Zire31 & T|C

Zire 31 is now fully supported. T|C is readonly-supported, write-experimental
Device support post has been updated


FAQ and Device support

To answer a lot of the same questions I keep getting and to clear up the device support I am making this post.


Q:When will the driver be released?
A:As soon as i feel that is it ready to be released. This will be soon.
Q:Does the driver has SDIO support?
A:This is being investigated, but for now it does not.
Q:Does the driver still support old non-SDHC cards?
A:Yes. SD, miniSD, microSD, transFlash, MMC, MMCPlus, MMCmobile, RS-MMC, and SDHC are supported by this driver.
Q:How fast is it?
A:The driver is significantly faster than the original PalmOne driver that your device currently has.
Q:Size limitations?
A:None. The driver supports SD cards up to 4GB, and SDHC cards up to any size.
Q:But my device does not support FAT32. Can I still use big cards?
A:You can get a working FAT32 driver (a slightly modified PalmOne driver) by doing a search on this forum. With this you can use FAT32 normally
Q:What applications support this new driver?
A:All of them! The driver integrates with the OS and thus automatically gets used by every application.
Q:My device is not listed as supported. What can I do to make it supported?
A:I will need at least 30-40 people with that device to pledge to buy the driver at its current price once it is done, and I will need to get my hands on a device of that type. You will need to get or loan me one for the time while I write the driver. Offering to test is useless, I need the device in my hands, no exceptions.

For driver architecture, which explains what "AAL" and "DAL" mean see here

T|Xdonedonefully supported
T|T5donedonefully supported
LifeDrivedonedonefully supported
Zire 72donedonefully supported
T|E2donedonefully supported
T|Cdonefixing OS bugswill support
Zire 31donedonefully supported
T|Ework in progressdonelimited to 16 Mbit/sec
T|T3awaiting documents from WinbondN/Asupport planned
Zodiacunsatisfactory performancework in progress - DRM gets in the waysupport planned
iQue3600work in progressAwaiting loaned devicesupport planned

if your device is not in this list, see the above FAQ for how to get it into this list.


Devices update

OK. My driver now supports all the devices it can out of the ones I have. Due to the device differences to support Device X, i need to have a Device X for a week or two. Remote testing doe snot help, so if your device is not in the following list and you want it supported, you need to figure out someone who can lend me one for a week or two, or a way to get me one in another manner. I have: T|E,T|E2, TX, LifeDrive, Zire72, Zire 31, T|T3, Zodiac. Without a device, the driver will be incomplete for your device and act badly. I can explain why:

The driver is composed of 3 Layers: The topmost is the SD/MMC layer that implements the SD/MMC protocol and is hardware-independent. The layer below it is the AAL - Architecture Abstraction Layer. It hides the device-independent SD interface details from the SD/MMC layer. Usually it is based on the SD/MMC controller in use. In most palms that is the processor. So for TX, T5, and LifeDrive the AAL is the same. Thus if you want, for example T|C supported, which has the same processor as the well-supported T|E2, I will not have to make a new AAL for T|C. The lowest level is the DAL - device abstraction layer. It is unique and different for each device. IT patches the OS to make it use the new driver, and talks directly to the hardware to check card lock state, check si card is inserted, and deals with the interrupts. This DAL is very hard to write without a device being present. It is possible that your device will work with a DAL from a similar device, but it will not be good. For example T|C can use the T|E2 DAL, but the device does not notice card insertion/removal and cannot use power management thus wasting battery power. I have decided to not support devices whose DALs I did not write and test well. So if your device is not in the above list of devices I have, and you want it supported, something needs to be done. Perhaps you know someone who can loan me one...


Tungsten E2 support

Ladies and gentlemen..please welcome the newest device to the PalmOS SDHC family: Tungsten E2. With a previous card size limit of just 1GB this device now eagerly uses 2GB and 4GB cards, and with FAT32 will gladly take even 16GB.


Beta Update #4

Beta it out to the testers who sent me the signed NDA.


Beta Testers Needed

Need one more tester for T5, One more for LifeDrive, and Two more for Zire 72.

Do not get excited yet, there are conditions and requirements!

  1. You must be old enough and willing to legally sign a nondisclosure agreement (NDA), which will disallow you from distributing the driver to anyone.
  2. You must reside in the USA(allows the NDA to be easily enforceable)
  3. You must have the device in question
  4. You must have SD and SDHC cards and commit to at least some daily use of each
  5. This is an unpaid position, and there is no compensation of any kind for this, including free copies of this driver
  6. The beta driver may expire before final is released

No exceptions!

If anyone is still interested, email dmitrygr@gmail.com with email subject of "SDHC BETA", in the email include:

  • your name
  • device type
  • state or province you reside in
  • cards you plan to test with
  • any other information that you think would convince me that you'd be a good person to test this

To everyone outside of the USA: sorry. I've been burned by too-open betas and piracy too badly to allow any chance of this happening again. Since i am not willing to deal with potential NDA breach in another country, I cannot allow this at this time. Please do not take this personally.


Thanks to Em, who tested the proposed beta version and gave a few interesting suggestions. They will be implemented and then beta will be given to testers. testers will be contacted soon with a link to the NDA to sign and a fax number to fax it to.

T|T3 will take a bit of time as there is a number of steps inside Winbond that need to happen before I am able to get the needed documentation.



Registration engine has been completely revamped to make it more user friendly - no UI and none of that annoying entering of random numbers. You just install a key file and the driver becomes registered. Trial version will be fully functional for some number of days (specific number not yet decided on), after which it will be speed-limited to about 50 KB/s and read-only. One may, of course, at any point delete it and switch to the original palm driver.

If all goes to plan, beta testing cards will be written and prepared for shipping tomorrow. Beta testers will also be selected from the pool pf applicants and sent the NDA to sign. When a tester signs the NDA, I will ship out the read-only SD card with the beta driver to him/her. The tester will then run it to obtain the device ID, which will be sent to me, in return a key file will be sent to the tester to enable unlimited operation.

Assuming no major bugs are found during the beta phase, it will run for a week or two, after which sales to the general public will begin.

I will continue perusing Zodiac and T|T3 support, since it seems those hold the majority of user interest among all the devices not currently supported by this driver.

Zodiac driver is written and works, but the DRM in the OS prevents its reliable operation. Turning the DRM completely off is currently not considered a good solution, and a better one is being researched.

T|T3 driver work will begin once I get the detailed specs for the T|T3's SD controller chip from Winbond (hopefully soon). Depending on the complexity of this interface and the intricacies of working with this chip, support for T|T3 could come in a week or in a month.

All other devices can be supported, but I will need a large-ish group of users of such devices to pledge to buy the driver before I set off working on support for that device.


T|T3 #7

T|T3 progress:

I heard from KC So. The spec will cost some money, but it is doable. You T|T3 owners better buy this driver enough to recoup this cost! You hear me??


Well, i will spend this weekend getting beta ready and sent out.

Beta includes users of TX, T|T5, LifeDrive, and Zire 72.
Beta testers will be notified around Sunday, if all goes well.


T|T3 #6 and zodiac #3

Zodiac drm is getting in the way a lot. zodiac development of the driver is suspended till i have time to waste

as for t3 - kc so from winbond has not gotten back to me yet. will call again tomorrow.

For Zodiac developers

If you want to diagnose Zodiac fatal exceptions, or crashes in your app, this post is for you. The slighty-informative fatal exception box can be expanded a LOT. It is simple. First, I will assume you're programming in ARM. Then do this:

void* oldState = installExpansion(&__call_expander_func);
crashing code

this will install expanded error handler function myExpander(). This function is for you to write, and has prototype void myExpander(ExceptionFrame* exc);
The usefullines is in the wealth of information that this function gets - it gets the full exception frame, including all registers, address that caused the error, etc... This can be very useful. See code lsiting below for more info

Additionally you'll need the following code listing:

typedef struct{

UInt32 zodFaultCategory;
UInt32 saved_user_R0;
UInt32 saved_user_R1;
UInt32 saved_user_R2;
UInt32 saved_user_R3;
UInt32 saved_user_R4;
UInt32 saved_user_R5;
UInt32 saved_user_R6;
UInt32 saved_user_R7;
UInt32 saved_user_R8;
UInt32 saved_user_R9;
UInt32 saved_user_R10;
UInt32 saved_user_R11;
UInt32 saved_user_R12;
UInt32 saved_user_SP;
UInt32 saved_user_LR;
UInt32 saved_user_CPSR;
UInt32 saved_svc_SP;
UInt32 saved_svc_LR;
UInt32 saved_svr_SPSR;
UInt32 saved_art_SP;
UInt32 saved_abt_LR;
UInt32 saved_abt_SPSR;
UInt32 saved_und_SP;
UInt32 saved_und_LR;
UInt32 saved_und_SPSR;
UInt32 saved_irq_SP;
UInt32 saved_irq_LR;
UInt32 saved_irq_SPSR;
UInt32 saved_fiq_R8;
UInt32 saved_fiq_R9;
UInt32 saved_fiq_R10;
UInt32 saved_fiq_R11;
UInt32 saved_fiq_R12;
UInt32 saved_fiq_SP;
UInt32 saved_fiq_LR;
UInt32 saved_fiq_SPSR;
UInt32 faultStatus;
UInt32 faultAddress;
UInt32 PC_whe_we_hit_error;
}ExceptionFrame; //for sys FatalAlert, at entry pointed to by R4

asm void* installExpansion(void* func){
LDR R1,[R9,#-12]
LDR R2,[R1,#0x444]
STR R0,[R1,#0x444]

asm void __call_expander_func(){
B myExpander


Zodiac #3

Well, the system is NOT liking the driver. stupid security is hanging the system on next app switch
now working on putting the security system out of its misery...

Zodiac #2

It works!!!

The solution was to just reset the controller after all data operations. This caused the maximum speed of transfers to fall, BUT now it works correctly. :-)


Did a lot of work on Zodiac, rewrote most of Zodiac's SdDAL module. It it is annoying that I can get it to work, but only if I do something that exactly matches the "do not do this" section of the processor's manual. If I do what it says to do, data gets lost. Obviously I will not be releasing code that is wrong, even if it works... Let's hope this is easily resolvable.


volumes over 4GB

Palm's API does not have support for volumes over 4GB. This is a problem. The following is a proposition-letter I sent to a few PalmOS developers, that will hopefully help fix this situation. Comments are welcome.


As you may already be aware I am writing an SDHC driver for all PalmOS
5 devices, due to be released soon. After that, I will release a FAT32
driver, to fix the horrific performance of palm's driver. This brings
into contrast PalmOS's VFS layer's problems in dealing with reporting
volume sizes and free sizes over 4GB. I plan to introduce a new API in
my driver, and would like to ask you to add support for it in your
products. It should be a very painless, and backwards compatible to do
so. The api consists of two parts. There is a Feature ('PpFs',
0x3137). If it is present and its value is 1 or greater, the device
has the driver and supports the new api. To call it, you need to call
the relevant filesystem library's CustomControl function. The creator
for the call should be 'PpFs' and the call id should be 0 to get total
card space and 1 to get free space. The parameter should be a pointer
to a UInt32 where the return value is stored. The return value is not
in bytes like palm's api, but in blocks of 512 bytes. Thus a return of
2048 after a call to get free space means that there is 1MB free on
the card.

Please reply with your opinion on adding support for this.



About speed of mine vs Palm's driver.
Vertical scale is the same in both graphs.
Test was done with a Sandisk 512MB card, on a Palm TX after a clean hard reset.




now seems to work read/write:)

T|T3 #5

UPDATE: Talked to KC So again. thanks to a user on 1src, who called him and found out some more information. The problem was that Winbond thought my project was open source. I have called them, and assured them otherwise, and KC So said he will try to help me get the spec sheet. Thank you everyone who's helped.

T|T3 #4

A very helpful person at Arrow, a distributor of Winbond's chips spent the last few days trying to help me get this spec sheet. He was unable, due to Winbond ignoring all requests for detailed sheet, but still he did all he could. Thank you very much, Brandon.

Reverse engineering effort will continue.

KC So, Winbond's director of marketing, USA said their support resources are stretched too thin to allow them to email me a single 3MB PDF file with the specs, even if I agree to pay for it, sign an N.D.A., and agree to not contact them with any further questions.

EDIT: talked to them again, things are looking better. See post above this one...

Specifically I need them to give me the non-public specification sheet for W86L488Y. The public spec sheet lists device registers on pages 15-17, but does not list the bits in those registers and what they do - making it useless. The detailed sheet they refuse to help with lists those.


Q: What's the largest supported card?
A: I've tested 16GB, and it works, anything larger will too *

Q: Besides this driver what do I need to use big cards
A: On TX and LideDrive - nothing.* On all other devices to use cards 8GB+ you need a FAT32 driver.*

Q: How fast is it?
A: Currently the driver is significantly faster than the stock driver for multi-block writes, but until I release my own FAT32 implementation you're unlikely to see much increase in speed since palm's version of FAT32 rarely uses multi-block writes, for some reason.

*: PalmOS cannot report free or total space of a device over 4GB. This is an architectural and an API limit. I am releasing a hack that would help legacy applications overcome it in at least some way, while at the same time I will release a more modern api and encourage all software developers to use it.


T|T3 #3

Still nothing from Winbond(I'll call KC So again tomorrow), but I made some progress on my own. Still nothing too exciting, but I expect to get command-response communication working soon.


T|T3 #2

Wow, i feel sort of stupid...

I went about reverse engineering how this chip works, and wasted lots of time on it. Today just for kicks I called up Winbond - the maker of the T3's SD chip and asked for the specs. They said call a distributor. I called a distributor of theirs, who took down my information and said they will contact me when you get me the specification! Hopefully this will go well, and save me countless more hours of reverse-engineering how this thing works...

EDIT: I called winbond again, and this time spoke with KC So, Marketing Director. This conversation differed from what I heard before, but he said he will see if he can get me the specification, so hopefully this will help.



T3's SD controller is as good as undocumented since no information on it can be obtained easily.

Most information on the 'net about is either useless(the public spec. sheet) or wrong(the palm Linux project driver). So I went on to figure out how it works. The original driver only uses part of the functionality, but I am determined to get it to work completely. So far I mostly figured out the command/response related registers, and the response FIFO. The data FIFO is still not working too well, but it will soon.

The cool part about this chip is that the FIFO shows how many bytes are in it, unlike other CPUs, where you just get a full/not full bit.

Bug A

Bug A is fixed :)


Looked long and hard at bug B, as a result more MMCs now work, 4-bit MMC mode now works, and multi-block MMC writes now work. Some MMCplus cards still continue to resist...

Bug A solution is becoming clearer...


Devices update

DeviceSupport levelNotes
TXFullKnown bugs A and B
Tungsten T5FullKnown bugs A and B
LifeDriveFullKnown bugs A and B
Zire 72Read OnlyKnown bugs A, B and C
ZodiacIn progress.Commands work, data transmission not yet. Right slot only.
Tungsten T3In progress.Mostly finished mapping out the undocumented SD chip. Driver work to begin soon

BugDescriptionPriorityCause known/Fix known
AInserting/removing card while device is off is not acknowlegedMediumYes/Partially
BMMC[plus] Cards are readonlyLowNo
C100% write CRC errors on Zire 72MediumYes/No



Welcome to the Palm SDHC project blog. Since there has been a tremendous interest in the project, and I am tired of answering all the questions about the status, this blog is being started. All updates and notes will be posted here. This blog is hereby the authoritative source of all news and latests updates to the project.